Update auto-generated mts files (without structs)
authorMatt Corallo <git@bluematt.me>
Wed, 5 Jan 2022 06:49:44 +0000 (06:49 +0000)
committerMatt Corallo <git@bluematt.me>
Fri, 7 Jan 2022 07:17:59 +0000 (07:17 +0000)
340 files changed:
ts/bindings.c
ts/bindings.c.body
ts/bindings.mts [new file with mode: 0644]
ts/bindings.ts [deleted file]
ts/enums/AccessError.mts [new file with mode: 0644]
ts/enums/AccessError.ts [deleted file]
ts/enums/COption_NoneZ.mts [new file with mode: 0644]
ts/enums/COption_NoneZ.ts [deleted file]
ts/enums/ChannelMonitorUpdateErr.mts [new file with mode: 0644]
ts/enums/ChannelMonitorUpdateErr.ts [deleted file]
ts/enums/ConfirmationTarget.mts [new file with mode: 0644]
ts/enums/ConfirmationTarget.ts [deleted file]
ts/enums/CreationError.ts [deleted file]
ts/enums/Currency.ts [deleted file]
ts/enums/IOError.ts [deleted file]
ts/enums/Level.mts [new file with mode: 0644]
ts/enums/Level.ts [deleted file]
ts/enums/Network.mts [new file with mode: 0644]
ts/enums/Network.ts [deleted file]
ts/enums/Secp256k1Error.mts [new file with mode: 0644]
ts/enums/Secp256k1Error.ts [deleted file]
ts/enums/SemanticError.ts [deleted file]
ts/enums/SiPrefix.ts [deleted file]
ts/node/fs.d.ts
ts/node/index.d.ts
ts/structs/APIError.ts [deleted file]
ts/structs/AcceptChannel.ts [deleted file]
ts/structs/Access.ts [deleted file]
ts/structs/AnnouncementSignatures.ts [deleted file]
ts/structs/BackgroundProcessor.ts [deleted file]
ts/structs/Balance.ts [deleted file]
ts/structs/BaseSign.ts [deleted file]
ts/structs/BestBlock.ts [deleted file]
ts/structs/BroadcasterInterface.ts [deleted file]
ts/structs/BuiltCommitmentTransaction.ts [deleted file]
ts/structs/ChainMonitor.ts [deleted file]
ts/structs/ChainParameters.ts [deleted file]
ts/structs/ChannelAnnouncement.ts [deleted file]
ts/structs/ChannelConfig.ts [deleted file]
ts/structs/ChannelCounterparty.ts [deleted file]
ts/structs/ChannelDetails.ts [deleted file]
ts/structs/ChannelFeatures.ts [deleted file]
ts/structs/ChannelHandshakeConfig.ts [deleted file]
ts/structs/ChannelHandshakeLimits.ts [deleted file]
ts/structs/ChannelInfo.ts [deleted file]
ts/structs/ChannelManager.ts [deleted file]
ts/structs/ChannelManagerPersister.ts [deleted file]
ts/structs/ChannelManagerReadArgs.ts [deleted file]
ts/structs/ChannelMessageHandler.ts [deleted file]
ts/structs/ChannelMonitor.ts [deleted file]
ts/structs/ChannelMonitorUpdate.ts [deleted file]
ts/structs/ChannelPublicKeys.ts [deleted file]
ts/structs/ChannelReestablish.ts [deleted file]
ts/structs/ChannelTransactionParameters.ts [deleted file]
ts/structs/ChannelTypeFeatures.ts [deleted file]
ts/structs/ChannelUpdate.ts [deleted file]
ts/structs/ClosingSigned.ts [deleted file]
ts/structs/ClosingSignedFeeRange.ts [deleted file]
ts/structs/ClosingTransaction.ts [deleted file]
ts/structs/ClosureReason.ts [deleted file]
ts/structs/CommitmentSigned.ts [deleted file]
ts/structs/CommitmentTransaction.ts [deleted file]
ts/structs/CommitmentUpdate.ts [deleted file]
ts/structs/CommonBase.ts [deleted file]
ts/structs/Confirm.ts [deleted file]
ts/structs/CounterpartyChannelTransactionParameters.ts [deleted file]
ts/structs/CounterpartyForwardingInfo.ts [deleted file]
ts/structs/CustomMessageHandler.ts [deleted file]
ts/structs/CustomMessageReader.ts [deleted file]
ts/structs/DataLossProtect.ts [deleted file]
ts/structs/DecodeError.ts [deleted file]
ts/structs/DefaultRouter.ts [deleted file]
ts/structs/DelayedPaymentOutputDescriptor.ts [deleted file]
ts/structs/Description.ts [deleted file]
ts/structs/DirectedChannelTransactionParameters.ts [deleted file]
ts/structs/DirectionalChannelInfo.ts [deleted file]
ts/structs/ErrorAction.ts [deleted file]
ts/structs/ErrorMessage.ts [deleted file]
ts/structs/ErroringMessageHandler.ts [deleted file]
ts/structs/Event.ts [deleted file]
ts/structs/EventHandler.ts [deleted file]
ts/structs/EventsProvider.ts [deleted file]
ts/structs/ExpiryTime.ts [deleted file]
ts/structs/Fallback.ts [deleted file]
ts/structs/FeeEstimator.ts [deleted file]
ts/structs/FilesystemPersister.ts [deleted file]
ts/structs/Filter.ts [deleted file]
ts/structs/FundingCreated.ts [deleted file]
ts/structs/FundingLocked.ts [deleted file]
ts/structs/FundingSigned.ts [deleted file]
ts/structs/GossipTimestampFilter.ts [deleted file]
ts/structs/HTLCOutputInCommitment.ts [deleted file]
ts/structs/HTLCUpdate.ts [deleted file]
ts/structs/HolderCommitmentTransaction.ts [deleted file]
ts/structs/IgnoringMessageHandler.ts [deleted file]
ts/structs/InMemorySigner.ts [deleted file]
ts/structs/Init.ts [deleted file]
ts/structs/InitFeatures.ts [deleted file]
ts/structs/InvalidShutdownScript.ts [deleted file]
ts/structs/Invoice.ts [deleted file]
ts/structs/InvoiceFeatures.ts [deleted file]
ts/structs/InvoicePayer.ts [deleted file]
ts/structs/InvoiceSignature.ts [deleted file]
ts/structs/KeysInterface.ts [deleted file]
ts/structs/KeysManager.ts [deleted file]
ts/structs/LightningError.ts [deleted file]
ts/structs/Listen.ts [deleted file]
ts/structs/LockableScore.ts [deleted file]
ts/structs/LockedChannelMonitor.ts [deleted file]
ts/structs/Logger.ts [deleted file]
ts/structs/MessageHandler.ts [deleted file]
ts/structs/MessageSendEvent.ts [deleted file]
ts/structs/MessageSendEventsProvider.ts [deleted file]
ts/structs/MinFinalCltvExpiry.ts [deleted file]
ts/structs/MonitorEvent.ts [deleted file]
ts/structs/MonitorUpdateId.ts [deleted file]
ts/structs/MultiThreadedLockableScore.ts [deleted file]
ts/structs/NetAddress.ts [deleted file]
ts/structs/NetGraphMsgHandler.ts [deleted file]
ts/structs/NetworkGraph.ts [deleted file]
ts/structs/NetworkUpdate.ts [deleted file]
ts/structs/NodeAnnouncement.ts [deleted file]
ts/structs/NodeAnnouncementInfo.ts [deleted file]
ts/structs/NodeFeatures.ts [deleted file]
ts/structs/NodeId.ts [deleted file]
ts/structs/NodeInfo.ts [deleted file]
ts/structs/OpenChannel.ts [deleted file]
ts/structs/Option_AccessZ.ts [deleted file]
ts/structs/Option_C2Tuple_usizeTransactionZZ.ts [deleted file]
ts/structs/Option_CVec_NetAddressZZ.ts [deleted file]
ts/structs/Option_ClosureReasonZ.ts [deleted file]
ts/structs/Option_EventZ.ts [deleted file]
ts/structs/Option_FilterZ.ts [deleted file]
ts/structs/Option_MonitorEventZ.ts [deleted file]
ts/structs/Option_NetworkUpdateZ.ts [deleted file]
ts/structs/Option_TypeZ.ts [deleted file]
ts/structs/Option_u16Z.ts [deleted file]
ts/structs/Option_u32Z.ts [deleted file]
ts/structs/Option_u64Z.ts [deleted file]
ts/structs/OutPoint.ts [deleted file]
ts/structs/Payee.ts [deleted file]
ts/structs/PayeePubKey.ts [deleted file]
ts/structs/Payer.ts [deleted file]
ts/structs/PaymentError.ts [deleted file]
ts/structs/PaymentPurpose.ts [deleted file]
ts/structs/PaymentSendFailure.ts [deleted file]
ts/structs/PeerHandleError.ts [deleted file]
ts/structs/PeerManager.ts [deleted file]
ts/structs/Persist.ts [deleted file]
ts/structs/Ping.ts [deleted file]
ts/structs/Pong.ts [deleted file]
ts/structs/PositiveTimestamp.ts [deleted file]
ts/structs/PrivateRoute.ts [deleted file]
ts/structs/QueryChannelRange.ts [deleted file]
ts/structs/QueryShortChannelIds.ts [deleted file]
ts/structs/RawDataPart.ts [deleted file]
ts/structs/RawInvoice.ts [deleted file]
ts/structs/ReadOnlyNetworkGraph.ts [deleted file]
ts/structs/Record.ts [deleted file]
ts/structs/ReplyChannelRange.ts [deleted file]
ts/structs/ReplyShortChannelIdsEnd.ts [deleted file]
ts/structs/Result_AcceptChannelDecodeErrorZ.ts [deleted file]
ts/structs/Result_AnnouncementSignaturesDecodeErrorZ.ts [deleted file]
ts/structs/Result_BuiltCommitmentTransactionDecodeErrorZ.ts [deleted file]
ts/structs/Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.ts [deleted file]
ts/structs/Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ.ts [deleted file]
ts/structs/Result_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ.ts [deleted file]
ts/structs/Result_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ.ts [deleted file]
ts/structs/Result_C2Tuple_PaymentHashPaymentSecretZNoneZ.ts [deleted file]
ts/structs/Result_C2Tuple_SignatureCVec_SignatureZZNoneZ.ts [deleted file]
ts/structs/Result_COption_ClosureReasonZDecodeErrorZ.ts [deleted file]
ts/structs/Result_COption_EventZDecodeErrorZ.ts [deleted file]
ts/structs/Result_COption_MonitorEventZDecodeErrorZ.ts [deleted file]
ts/structs/Result_COption_NetworkUpdateZDecodeErrorZ.ts [deleted file]
ts/structs/Result_COption_TypeZDecodeErrorZ.ts [deleted file]
ts/structs/Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ.ts [deleted file]
ts/structs/Result_CVec_CVec_u8ZZNoneZ.ts [deleted file]
ts/structs/Result_CVec_SignatureZNoneZ.ts [deleted file]
ts/structs/Result_CVec_u8ZPeerHandleErrorZ.ts [deleted file]
ts/structs/Result_ChannelAnnouncementDecodeErrorZ.ts [deleted file]
ts/structs/Result_ChannelConfigDecodeErrorZ.ts [deleted file]
ts/structs/Result_ChannelFeaturesDecodeErrorZ.ts [deleted file]
ts/structs/Result_ChannelInfoDecodeErrorZ.ts [deleted file]
ts/structs/Result_ChannelMonitorUpdateDecodeErrorZ.ts [deleted file]
ts/structs/Result_ChannelPublicKeysDecodeErrorZ.ts [deleted file]
ts/structs/Result_ChannelReestablishDecodeErrorZ.ts [deleted file]
ts/structs/Result_ChannelTransactionParametersDecodeErrorZ.ts [deleted file]
ts/structs/Result_ChannelTypeFeaturesDecodeErrorZ.ts [deleted file]
ts/structs/Result_ChannelUpdateDecodeErrorZ.ts [deleted file]
ts/structs/Result_ClosingSignedDecodeErrorZ.ts [deleted file]
ts/structs/Result_ClosingSignedFeeRangeDecodeErrorZ.ts [deleted file]
ts/structs/Result_CommitmentSignedDecodeErrorZ.ts [deleted file]
ts/structs/Result_CommitmentTransactionDecodeErrorZ.ts [deleted file]
ts/structs/Result_CounterpartyChannelTransactionParametersDecodeErrorZ.ts [deleted file]
ts/structs/Result_DelayedPaymentOutputDescriptorDecodeErrorZ.ts [deleted file]
ts/structs/Result_DescriptionCreationErrorZ.ts [deleted file]
ts/structs/Result_DirectionalChannelInfoDecodeErrorZ.ts [deleted file]
ts/structs/Result_ErrorMessageDecodeErrorZ.ts [deleted file]
ts/structs/Result_ExpiryTimeCreationErrorZ.ts [deleted file]
ts/structs/Result_FundingCreatedDecodeErrorZ.ts [deleted file]
ts/structs/Result_FundingLockedDecodeErrorZ.ts [deleted file]
ts/structs/Result_FundingSignedDecodeErrorZ.ts [deleted file]
ts/structs/Result_GossipTimestampFilterDecodeErrorZ.ts [deleted file]
ts/structs/Result_HTLCOutputInCommitmentDecodeErrorZ.ts [deleted file]
ts/structs/Result_HTLCUpdateDecodeErrorZ.ts [deleted file]
ts/structs/Result_HolderCommitmentTransactionDecodeErrorZ.ts [deleted file]
ts/structs/Result_InMemorySignerDecodeErrorZ.ts [deleted file]
ts/structs/Result_InitDecodeErrorZ.ts [deleted file]
ts/structs/Result_InitFeaturesDecodeErrorZ.ts [deleted file]
ts/structs/Result_InvoiceFeaturesDecodeErrorZ.ts [deleted file]
ts/structs/Result_InvoiceNoneZ.ts [deleted file]
ts/structs/Result_InvoiceSemanticErrorZ.ts [deleted file]
ts/structs/Result_InvoiceSignOrCreationErrorZ.ts [deleted file]
ts/structs/Result_LockedChannelMonitorNoneZ.ts [deleted file]
ts/structs/Result_NetAddressDecodeErrorZ.ts [deleted file]
ts/structs/Result_NetworkGraphDecodeErrorZ.ts [deleted file]
ts/structs/Result_NodeAnnouncementDecodeErrorZ.ts [deleted file]
ts/structs/Result_NodeAnnouncementInfoDecodeErrorZ.ts [deleted file]
ts/structs/Result_NodeFeaturesDecodeErrorZ.ts [deleted file]
ts/structs/Result_NodeIdDecodeErrorZ.ts [deleted file]
ts/structs/Result_NodeInfoDecodeErrorZ.ts [deleted file]
ts/structs/Result_NoneAPIErrorZ.ts [deleted file]
ts/structs/Result_NoneChannelMonitorUpdateErrZ.ts [deleted file]
ts/structs/Result_NoneErrorZ.ts [deleted file]
ts/structs/Result_NoneLightningErrorZ.ts [deleted file]
ts/structs/Result_NoneNoneZ.ts [deleted file]
ts/structs/Result_NonePaymentSendFailureZ.ts [deleted file]
ts/structs/Result_NonePeerHandleErrorZ.ts [deleted file]
ts/structs/Result_NoneSemanticErrorZ.ts [deleted file]
ts/structs/Result_OpenChannelDecodeErrorZ.ts [deleted file]
ts/structs/Result_OutPointDecodeErrorZ.ts [deleted file]
ts/structs/Result_PayeeDecodeErrorZ.ts [deleted file]
ts/structs/Result_PayeePubKeyErrorZ.ts [deleted file]
ts/structs/Result_PaymentIdPaymentErrorZ.ts [deleted file]
ts/structs/Result_PaymentIdPaymentSendFailureZ.ts [deleted file]
ts/structs/Result_PaymentPreimageAPIErrorZ.ts [deleted file]
ts/structs/Result_PaymentSecretAPIErrorZ.ts [deleted file]
ts/structs/Result_PaymentSecretNoneZ.ts [deleted file]
ts/structs/Result_PingDecodeErrorZ.ts [deleted file]
ts/structs/Result_PongDecodeErrorZ.ts [deleted file]
ts/structs/Result_PositiveTimestampCreationErrorZ.ts [deleted file]
ts/structs/Result_PrivateRouteCreationErrorZ.ts [deleted file]
ts/structs/Result_PublicKeyErrorZ.ts [deleted file]
ts/structs/Result_QueryChannelRangeDecodeErrorZ.ts [deleted file]
ts/structs/Result_QueryShortChannelIdsDecodeErrorZ.ts [deleted file]
ts/structs/Result_RecoverableSignatureNoneZ.ts [deleted file]
ts/structs/Result_ReplyChannelRangeDecodeErrorZ.ts [deleted file]
ts/structs/Result_ReplyShortChannelIdsEndDecodeErrorZ.ts [deleted file]
ts/structs/Result_RevokeAndACKDecodeErrorZ.ts [deleted file]
ts/structs/Result_RouteDecodeErrorZ.ts [deleted file]
ts/structs/Result_RouteHintDecodeErrorZ.ts [deleted file]
ts/structs/Result_RouteHintHopDecodeErrorZ.ts [deleted file]
ts/structs/Result_RouteHopDecodeErrorZ.ts [deleted file]
ts/structs/Result_RouteLightningErrorZ.ts [deleted file]
ts/structs/Result_RouteParametersDecodeErrorZ.ts [deleted file]
ts/structs/Result_RoutingFeesDecodeErrorZ.ts [deleted file]
ts/structs/Result_ScorerDecodeErrorZ.ts [deleted file]
ts/structs/Result_ScoringParametersDecodeErrorZ.ts [deleted file]
ts/structs/Result_SecretKeyErrorZ.ts [deleted file]
ts/structs/Result_ShutdownDecodeErrorZ.ts [deleted file]
ts/structs/Result_ShutdownScriptDecodeErrorZ.ts [deleted file]
ts/structs/Result_ShutdownScriptInvalidShutdownScriptZ.ts [deleted file]
ts/structs/Result_SiPrefixNoneZ.ts [deleted file]
ts/structs/Result_SignDecodeErrorZ.ts [deleted file]
ts/structs/Result_SignatureNoneZ.ts [deleted file]
ts/structs/Result_SignedRawInvoiceNoneZ.ts [deleted file]
ts/structs/Result_SpendableOutputDescriptorDecodeErrorZ.ts [deleted file]
ts/structs/Result_StaticPaymentOutputDescriptorDecodeErrorZ.ts [deleted file]
ts/structs/Result_StringErrorZ.ts [deleted file]
ts/structs/Result_TransactionNoneZ.ts [deleted file]
ts/structs/Result_TrustedClosingTransactionNoneZ.ts [deleted file]
ts/structs/Result_TrustedCommitmentTransactionNoneZ.ts [deleted file]
ts/structs/Result_TxCreationKeysDecodeErrorZ.ts [deleted file]
ts/structs/Result_TxCreationKeysErrorZ.ts [deleted file]
ts/structs/Result_TxOutAccessErrorZ.ts [deleted file]
ts/structs/Result_UnsignedChannelAnnouncementDecodeErrorZ.ts [deleted file]
ts/structs/Result_UnsignedChannelUpdateDecodeErrorZ.ts [deleted file]
ts/structs/Result_UnsignedNodeAnnouncementDecodeErrorZ.ts [deleted file]
ts/structs/Result_UpdateAddHTLCDecodeErrorZ.ts [deleted file]
ts/structs/Result_UpdateFailHTLCDecodeErrorZ.ts [deleted file]
ts/structs/Result_UpdateFailMalformedHTLCDecodeErrorZ.ts [deleted file]
ts/structs/Result_UpdateFeeDecodeErrorZ.ts [deleted file]
ts/structs/Result_UpdateFulfillHTLCDecodeErrorZ.ts [deleted file]
ts/structs/Result__u832APIErrorZ.ts [deleted file]
ts/structs/Result_boolLightningErrorZ.ts [deleted file]
ts/structs/Result_boolPeerHandleErrorZ.ts [deleted file]
ts/structs/RetryAttempts.ts [deleted file]
ts/structs/RevokeAndACK.ts [deleted file]
ts/structs/Route.ts [deleted file]
ts/structs/RouteHint.ts [deleted file]
ts/structs/RouteHintHop.ts [deleted file]
ts/structs/RouteHop.ts [deleted file]
ts/structs/RouteParameters.ts [deleted file]
ts/structs/Router.ts [deleted file]
ts/structs/RoutingFees.ts [deleted file]
ts/structs/RoutingMessageHandler.ts [deleted file]
ts/structs/Score.ts [deleted file]
ts/structs/Scorer.ts [deleted file]
ts/structs/ScoringParameters.ts [deleted file]
ts/structs/Sha256.ts [deleted file]
ts/structs/Shutdown.ts [deleted file]
ts/structs/ShutdownScript.ts [deleted file]
ts/structs/Sign.ts [deleted file]
ts/structs/SignOrCreationError.ts [deleted file]
ts/structs/SignedRawInvoice.ts [deleted file]
ts/structs/SocketDescriptor.ts [deleted file]
ts/structs/SpendableOutputDescriptor.ts [deleted file]
ts/structs/StaticPaymentOutputDescriptor.ts [deleted file]
ts/structs/ThreeTuple_ChannelAnnouncementChannelUpdateChannelUpdateZ.ts [deleted file]
ts/structs/ThreeTuple_RawInvoice_u832InvoiceSignatureZ.ts [deleted file]
ts/structs/TrustedClosingTransaction.ts [deleted file]
ts/structs/TrustedCommitmentTransaction.ts [deleted file]
ts/structs/TwoTuple_BlockHashChannelManagerZ.ts [deleted file]
ts/structs/TwoTuple_BlockHashChannelMonitorZ.ts [deleted file]
ts/structs/TwoTuple_OutPointScriptZ.ts [deleted file]
ts/structs/TwoTuple_PaymentHashPaymentIdZ.ts [deleted file]
ts/structs/TwoTuple_PaymentHashPaymentSecretZ.ts [deleted file]
ts/structs/TwoTuple_PublicKeyTypeZ.ts [deleted file]
ts/structs/TwoTuple_SignatureCVec_SignatureZZ.ts [deleted file]
ts/structs/TwoTuple_TxidCVec_C2Tuple_u32ScriptZZZ.ts [deleted file]
ts/structs/TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ.ts [deleted file]
ts/structs/TwoTuple_u32ScriptZ.ts [deleted file]
ts/structs/TwoTuple_u32TxOutZ.ts [deleted file]
ts/structs/TwoTuple_usizeTransactionZ.ts [deleted file]
ts/structs/TxCreationKeys.ts [deleted file]
ts/structs/TxOut.ts [deleted file]
ts/structs/Type.ts [deleted file]
ts/structs/UnsignedChannelAnnouncement.ts [deleted file]
ts/structs/UnsignedChannelUpdate.ts [deleted file]
ts/structs/UnsignedNodeAnnouncement.ts [deleted file]
ts/structs/UpdateAddHTLC.ts [deleted file]
ts/structs/UpdateFailHTLC.ts [deleted file]
ts/structs/UpdateFailMalformedHTLC.ts [deleted file]
ts/structs/UpdateFee.ts [deleted file]
ts/structs/UpdateFulfillHTLC.ts [deleted file]
ts/structs/UserConfig.ts [deleted file]
ts/structs/UtilMethods.ts [deleted file]
ts/structs/Watch.ts [deleted file]
ts/structs/WatchedOutput.ts [deleted file]
ts/version.mts [new file with mode: 0644]

index 0c274a486ef99f3816a20569f4782c585d7f9125..4bbbfc23b44d0c67f6f5067e10594ef41fb15233 100644 (file)
@@ -31,32 +31,37 @@ _Static_assert(offsetof(LDKCVec_u8Z, datalen) == offsetof(LDKu8slice, datalen),
 
 _Static_assert(sizeof(void*) == 4, "Pointers mut be 32 bits");
 
-typedef uint32_t int64_tArray;
-typedef uint32_t int8_tArray;
-typedef uint32_t uint32_tArray;
-typedef uint32_t ptrArray;
-typedef uint32_t jstring;
-
-static inline uint32_t init_arr(size_t arr_len, size_t elem_size, const char *type_desc) {
-       uint32_t *elems = (uint32_t*)MALLOC(arr_len * elem_size + 4, type_desc);
-       elems[0] = arr_len;
-       return (uint32_t)elems;
-}
+#define DECL_ARR_TYPE(ty, name) \
+       struct name##array { \
+               uint32_t arr_len; \
+               ty elems[]; \
+       }; \
+       typedef struct name##array * name##Array; \
+       static inline name##Array init_##name##Array(size_t arr_len) { \
+               name##Array arr = (name##Array)MALLOC(arr_len * sizeof(ty) + sizeof(uint32_t), "##name array init"); \
+               arr->arr_len = arr_len; \
+               return arr; \
+       }
+
+DECL_ARR_TYPE(int64_t, int64_t);
+DECL_ARR_TYPE(int8_t, int8_t);
+DECL_ARR_TYPE(uint32_t, uint32_t);
+DECL_ARR_TYPE(void*, ptr);
+DECL_ARR_TYPE(char, char);
+typedef charArray jstring;
 
 static inline jstring str_ref_to_ts(const char* chars, size_t len) {
-       char* err_buf = MALLOC(len + 4, "str conv buf");
-       *((uint32_t*)err_buf) = len;
-       memcpy(err_buf + 4, chars, len);
-       return (uint32_t) err_buf;
-}
-static inline LDKStr str_ref_to_owned_c(jstring str) {
-       uint32_t *str_len = (uint32_t*)str;
-       char* newchars = MALLOC(*str_len + 1, "String chars");
-       memcpy(newchars, (const char*)(str + 4), *str_len);
-       newchars[*str_len] = 0;
-       LDKStr res= {
+       charArray arr = init_charArray(len);
+       memcpy(arr->elems, chars, len);
+       return arr;
+}
+static inline LDKStr str_ref_to_owned_c(const jstring str) {
+       char* newchars = MALLOC(str->arr_len + 1, "String chars");
+       memcpy(newchars, str->elems, str->arr_len);
+       newchars[str->arr_len] = 0;
+       LDKStr res = {
                .chars = newchars,
-               .len = *str_len,
+               .len = str->arr_len,
                .chars_is_owned = true
        };
        return res;
@@ -129,92 +134,6 @@ static inline int32_t LDKConfirmationTarget_to_js(LDKConfirmationTarget val) {
                default: abort();
        }
 }
-static inline LDKCreationError LDKCreationError_from_js(int32_t ord) {
-       switch (ord) {
-               case 0: return LDKCreationError_DescriptionTooLong;
-               case 1: return LDKCreationError_RouteTooLong;
-               case 2: return LDKCreationError_TimestampOutOfBounds;
-               case 3: return LDKCreationError_ExpiryTimeOutOfBounds;
-               case 4: return LDKCreationError_InvalidAmount;
-       }
-       abort();
-}
-static inline int32_t LDKCreationError_to_js(LDKCreationError val) {
-       switch (val) {
-               case LDKCreationError_DescriptionTooLong: return 0;
-               case LDKCreationError_RouteTooLong: return 1;
-               case LDKCreationError_TimestampOutOfBounds: return 2;
-               case LDKCreationError_ExpiryTimeOutOfBounds: return 3;
-               case LDKCreationError_InvalidAmount: return 4;
-               default: abort();
-       }
-}
-static inline LDKCurrency LDKCurrency_from_js(int32_t ord) {
-       switch (ord) {
-               case 0: return LDKCurrency_Bitcoin;
-               case 1: return LDKCurrency_BitcoinTestnet;
-               case 2: return LDKCurrency_Regtest;
-               case 3: return LDKCurrency_Simnet;
-               case 4: return LDKCurrency_Signet;
-       }
-       abort();
-}
-static inline int32_t LDKCurrency_to_js(LDKCurrency val) {
-       switch (val) {
-               case LDKCurrency_Bitcoin: return 0;
-               case LDKCurrency_BitcoinTestnet: return 1;
-               case LDKCurrency_Regtest: return 2;
-               case LDKCurrency_Simnet: return 3;
-               case LDKCurrency_Signet: return 4;
-               default: abort();
-       }
-}
-static inline LDKIOError LDKIOError_from_js(int32_t ord) {
-       switch (ord) {
-               case 0: return LDKIOError_NotFound;
-               case 1: return LDKIOError_PermissionDenied;
-               case 2: return LDKIOError_ConnectionRefused;
-               case 3: return LDKIOError_ConnectionReset;
-               case 4: return LDKIOError_ConnectionAborted;
-               case 5: return LDKIOError_NotConnected;
-               case 6: return LDKIOError_AddrInUse;
-               case 7: return LDKIOError_AddrNotAvailable;
-               case 8: return LDKIOError_BrokenPipe;
-               case 9: return LDKIOError_AlreadyExists;
-               case 10: return LDKIOError_WouldBlock;
-               case 11: return LDKIOError_InvalidInput;
-               case 12: return LDKIOError_InvalidData;
-               case 13: return LDKIOError_TimedOut;
-               case 14: return LDKIOError_WriteZero;
-               case 15: return LDKIOError_Interrupted;
-               case 16: return LDKIOError_Other;
-               case 17: return LDKIOError_UnexpectedEof;
-       }
-       abort();
-}
-static inline int32_t LDKIOError_to_js(LDKIOError val) {
-       switch (val) {
-               case LDKIOError_NotFound: return 0;
-               case LDKIOError_PermissionDenied: return 1;
-               case LDKIOError_ConnectionRefused: return 2;
-               case LDKIOError_ConnectionReset: return 3;
-               case LDKIOError_ConnectionAborted: return 4;
-               case LDKIOError_NotConnected: return 5;
-               case LDKIOError_AddrInUse: return 6;
-               case LDKIOError_AddrNotAvailable: return 7;
-               case LDKIOError_BrokenPipe: return 8;
-               case LDKIOError_AlreadyExists: return 9;
-               case LDKIOError_WouldBlock: return 10;
-               case LDKIOError_InvalidInput: return 11;
-               case LDKIOError_InvalidData: return 12;
-               case LDKIOError_TimedOut: return 13;
-               case LDKIOError_WriteZero: return 14;
-               case LDKIOError_Interrupted: return 15;
-               case LDKIOError_Other: return 16;
-               case LDKIOError_UnexpectedEof: return 17;
-               default: abort();
-       }
-}
 static inline LDKLevel LDKLevel_from_js(int32_t ord) {
        switch (ord) {
                case 0: return LDKLevel_Gossip;
@@ -283,54 +202,6 @@ static inline int32_t LDKSecp256k1Error_to_js(LDKSecp256k1Error val) {
                default: abort();
        }
 }
-static inline LDKSemanticError LDKSemanticError_from_js(int32_t ord) {
-       switch (ord) {
-               case 0: return LDKSemanticError_NoPaymentHash;
-               case 1: return LDKSemanticError_MultiplePaymentHashes;
-               case 2: return LDKSemanticError_NoDescription;
-               case 3: return LDKSemanticError_MultipleDescriptions;
-               case 4: return LDKSemanticError_NoPaymentSecret;
-               case 5: return LDKSemanticError_MultiplePaymentSecrets;
-               case 6: return LDKSemanticError_InvalidFeatures;
-               case 7: return LDKSemanticError_InvalidRecoveryId;
-               case 8: return LDKSemanticError_InvalidSignature;
-               case 9: return LDKSemanticError_ImpreciseAmount;
-       }
-       abort();
-}
-static inline int32_t LDKSemanticError_to_js(LDKSemanticError val) {
-       switch (val) {
-               case LDKSemanticError_NoPaymentHash: return 0;
-               case LDKSemanticError_MultiplePaymentHashes: return 1;
-               case LDKSemanticError_NoDescription: return 2;
-               case LDKSemanticError_MultipleDescriptions: return 3;
-               case LDKSemanticError_NoPaymentSecret: return 4;
-               case LDKSemanticError_MultiplePaymentSecrets: return 5;
-               case LDKSemanticError_InvalidFeatures: return 6;
-               case LDKSemanticError_InvalidRecoveryId: return 7;
-               case LDKSemanticError_InvalidSignature: return 8;
-               case LDKSemanticError_ImpreciseAmount: return 9;
-               default: abort();
-       }
-}
-static inline LDKSiPrefix LDKSiPrefix_from_js(int32_t ord) {
-       switch (ord) {
-               case 0: return LDKSiPrefix_Milli;
-               case 1: return LDKSiPrefix_Micro;
-               case 2: return LDKSiPrefix_Nano;
-               case 3: return LDKSiPrefix_Pico;
-       }
-       abort();
-}
-static inline int32_t LDKSiPrefix_to_js(LDKSiPrefix val) {
-       switch (val) {
-               case LDKSiPrefix_Milli: return 0;
-               case LDKSiPrefix_Micro: return 1;
-               case LDKSiPrefix_Nano: return 2;
-               case LDKSiPrefix_Pico: return 3;
-               default: abort();
-       }
-}
 static inline LDKCVec_u8Z CVec_u8Z_clone(const LDKCVec_u8Z *orig) {
        LDKCVec_u8Z ret = { .data = MALLOC(sizeof(int8_t) * orig->datalen, "LDKCVec_u8Z clone bytes"), .datalen = orig->datalen };
        memcpy(ret.data, orig->data, sizeof(int8_t) * ret.datalen);
@@ -339,8 +210,8 @@ static inline LDKCVec_u8Z CVec_u8Z_clone(const LDKCVec_u8Z *orig) {
 struct LDKCVec_u8Z TxOut_get_script_pubkey (struct LDKTxOut* thing) {  return CVec_u8Z_clone(&thing->script_pubkey);}int8_tArray  __attribute__((visibility("default"))) TS_TxOut_get_script_pubkey(uint32_t thing) {
        LDKTxOut* thing_conv = (LDKTxOut*)(thing & ~1);
        LDKCVec_u8Z ret_var = TxOut_get_script_pubkey(thing_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
@@ -351,1981 +222,775 @@ uint64_t TxOut_get_value (struct LDKTxOut* thing) {    return thing->value;}int64_t
        return ret_val;
 }
 
-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;
-}
-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;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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;
+static inline struct LDKChannelConfig CResult_ChannelConfigDecodeErrorZ_get_ok(LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ChannelConfig_clone(&*owner->contents.result);
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKCOption_u32Z_ref_from_ptr(uint32_t ptr) {
-       LDKCOption_u32Z *obj = (LDKCOption_u32Z*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKCOption_u32Z_Some: {
-                       return 0 /* LDKCOption_u32Z - Some */; (void) obj->some;
-               }
-               case LDKCOption_u32Z_None: {
-                       return 0 /* LDKCOption_u32Z - None */;
-               }
-               default: abort();
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelConfigDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ChannelConfigDecodeErrorZ* owner_conv = (LDKCResult_ChannelConfigDecodeErrorZ*)(owner & ~1);
+       LDKChannelConfig ret_var = CResult_ChannelConfigDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_TrustedClosingTransactionNoneZ_get_ok(uint32_t arg) {
-       LDKCResult_TrustedClosingTransactionNoneZ *val = (LDKCResult_TrustedClosingTransactionNoneZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKTrustedClosingTransaction res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-void  __attribute__((visibility("default"))) TS_LDKCResult_TrustedClosingTransactionNoneZ_get_err(uint32_t arg) {
-       LDKCResult_TrustedClosingTransactionNoneZ *val = (LDKCResult_TrustedClosingTransactionNoneZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       return *val->contents.err;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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;
-}
-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 = NULL;
-       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 res_conv_12_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-               memcpy((uint8_t*)(res_conv_12_arr + 4), res_var.data[m].compact_form, 64);
-               res_arr_ptr[m] = res_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;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ShutdownScriptDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_ShutdownScriptDecodeErrorZ *val = (LDKCResult_ShutdownScriptDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKShutdownScript res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ShutdownScriptDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_ShutdownScriptDecodeErrorZ *val = (LDKCResult_ShutdownScriptDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ShutdownScriptInvalidShutdownScriptZ_get_ok(uint32_t arg) {
-       LDKCResult_ShutdownScriptInvalidShutdownScriptZ *val = (LDKCResult_ShutdownScriptInvalidShutdownScriptZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKShutdownScript res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ShutdownScriptInvalidShutdownScriptZ_get_err(uint32_t arg) {
-       LDKCResult_ShutdownScriptInvalidShutdownScriptZ *val = (LDKCResult_ShutdownScriptInvalidShutdownScriptZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKInvalidShutdownScript err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-void  __attribute__((visibility("default"))) TS_LDKCResult_NoneErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_NoneErrorZ *val = (LDKCResult_NoneErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       return *val->contents.result;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_NoneErrorZ_get_err(uint32_t arg) {
-       LDKCResult_NoneErrorZ *val = (LDKCResult_NoneErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint32_t err_conv = LDKIOError_to_js((*val->contents.err));
-       return err_conv;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_RouteHopDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_RouteHopDecodeErrorZ *val = (LDKCResult_RouteHopDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKRouteHop res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_RouteHopDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_RouteHopDecodeErrorZ *val = (LDKCResult_RouteHopDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
+
+static inline struct LDKDecodeError CResult_ChannelConfigDecodeErrorZ_get_err(LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-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]);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelConfigDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ChannelConfigDecodeErrorZ* owner_conv = (LDKCResult_ChannelConfigDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ChannelConfigDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret;
+       return ret_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]);
+
+static inline struct LDKOutPoint CResult_OutPointDecodeErrorZ_get_ok(LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return OutPoint_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_OutPointDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_OutPointDecodeErrorZ* owner_conv = (LDKCResult_OutPointDecodeErrorZ*)(owner & ~1);
+       LDKOutPoint ret_var = CResult_OutPointDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret;
+       return ret_ref;
 }
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_RouteParametersDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_RouteParametersDecodeErrorZ *val = (LDKCResult_RouteParametersDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKRouteParameters res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_RouteParametersDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_RouteParametersDecodeErrorZ *val = (LDKCResult_RouteParametersDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
+
+static inline struct LDKDecodeError CResult_OutPointDecodeErrorZ_get_err(LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-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]);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_OutPointDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_OutPointDecodeErrorZ* owner_conv = (LDKCResult_OutPointDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_OutPointDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret;
+       return ret_ref;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKCOption_u64Z_ref_from_ptr(uint32_t ptr) {
-       LDKCOption_u64Z *obj = (LDKCOption_u64Z*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKCOption_u64Z_Some: {
-                       return 0 /* LDKCOption_u64Z - Some */; (void) obj->some;
-               }
-               case LDKCOption_u64Z_None: {
-                       return 0 /* LDKCOption_u64Z - None */;
-               }
-               default: abort();
-       }
+
+static inline struct LDKSecretKey CResult_SecretKeyErrorZ_get_ok(LDKCResult_SecretKeyErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
 }
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PayeeDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_PayeeDecodeErrorZ *val = (LDKCResult_PayeeDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKPayee res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PayeeDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_PayeeDecodeErrorZ *val = (LDKCResult_PayeeDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_CResult_SecretKeyErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_SecretKeyErrorZ* owner_conv = (LDKCResult_SecretKeyErrorZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, CResult_SecretKeyErrorZ_get_ok(owner_conv).bytes, 32);
+       return ret_arr;
 }
-static inline LDKCVec_RouteHintHopZ CVec_RouteHintHopZ_clone(const LDKCVec_RouteHintHopZ *orig) {
-       LDKCVec_RouteHintHopZ ret = { .data = MALLOC(sizeof(LDKRouteHintHop) * orig->datalen, "LDKCVec_RouteHintHopZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = RouteHintHop_clone(&orig->data[i]);
+
+static inline enum LDKSecp256k1Error CResult_SecretKeyErrorZ_get_err(LDKCResult_SecretKeyErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_SecretKeyErrorZ_get_err(uint32_t owner) {
+       LDKCResult_SecretKeyErrorZ* owner_conv = (LDKCResult_SecretKeyErrorZ*)(owner & ~1);
+       uint32_t ret_conv = LDKSecp256k1Error_to_js(CResult_SecretKeyErrorZ_get_err(owner_conv));
+       return ret_conv;
+}
+
+static inline struct LDKPublicKey CResult_PublicKeyErrorZ_get_ok(LDKCResult_PublicKeyErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
+}
+int8_tArray  __attribute__((visibility("default"))) TS_CResult_PublicKeyErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_PublicKeyErrorZ* owner_conv = (LDKCResult_PublicKeyErrorZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, CResult_PublicKeyErrorZ_get_ok(owner_conv).compressed_form, 33);
+       return ret_arr;
+}
+
+static inline enum LDKSecp256k1Error CResult_PublicKeyErrorZ_get_err(LDKCResult_PublicKeyErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PublicKeyErrorZ_get_err(uint32_t owner) {
+       LDKCResult_PublicKeyErrorZ* owner_conv = (LDKCResult_PublicKeyErrorZ*)(owner & ~1);
+       uint32_t ret_conv = LDKSecp256k1Error_to_js(CResult_PublicKeyErrorZ_get_err(owner_conv));
+       return ret_conv;
+}
+
+static inline struct LDKTxCreationKeys CResult_TxCreationKeysDecodeErrorZ_get_ok(LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return TxCreationKeys_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_TxCreationKeysDecodeErrorZ* owner_conv = (LDKCResult_TxCreationKeysDecodeErrorZ*)(owner & ~1);
+       LDKTxCreationKeys ret_var = CResult_TxCreationKeysDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret;
+       return ret_ref;
 }
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_RouteHintDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_RouteHintDecodeErrorZ *val = (LDKCResult_RouteHintDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKRouteHint res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_RouteHintDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_RouteHintDecodeErrorZ *val = (LDKCResult_RouteHintDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_RouteHintHopDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_RouteHintHopDecodeErrorZ *val = (LDKCResult_RouteHintHopDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKRouteHintHop res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_RouteHintHopDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_RouteHintHopDecodeErrorZ *val = (LDKCResult_RouteHintHopDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
+
+static inline struct LDKDecodeError CResult_TxCreationKeysDecodeErrorZ_get_err(LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-static inline LDKCVec_ChannelDetailsZ CVec_ChannelDetailsZ_clone(const LDKCVec_ChannelDetailsZ *orig) {
-       LDKCVec_ChannelDetailsZ ret = { .data = MALLOC(sizeof(LDKChannelDetails) * orig->datalen, "LDKCVec_ChannelDetailsZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = ChannelDetails_clone(&orig->data[i]);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_TxCreationKeysDecodeErrorZ* owner_conv = (LDKCResult_TxCreationKeysDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_TxCreationKeysDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret;
+       return ret_ref;
 }
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_TxOutAccessErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_TxOutAccessErrorZ *val = (LDKCResult_TxOutAccessErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       uint64_t res_ref = ((uint64_t)&(*val->contents.result)) | 1;
-       return (uint64_t)res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_TxOutAccessErrorZ_get_err(uint32_t arg) {
-       LDKCResult_TxOutAccessErrorZ *val = (LDKCResult_TxOutAccessErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint32_t err_conv = LDKAccessError_to_js((*val->contents.err));
-       return err_conv;
-}
-static inline uintptr_t C2Tuple_usizeTransactionZ_get_a(LDKC2Tuple_usizeTransactionZ *NONNULL_PTR tuple){
-       return tuple->a;
-}
-int64_t  __attribute__((visibility("default"))) TS_C2Tuple_usizeTransactionZ_get_a(uint32_t tuple) {
-       LDKC2Tuple_usizeTransactionZ* tuple_conv = (LDKC2Tuple_usizeTransactionZ*)(tuple & ~1);
-       int64_t ret_val = C2Tuple_usizeTransactionZ_get_a(tuple_conv);
-       return ret_val;
-}
-
-static inline struct LDKTransaction C2Tuple_usizeTransactionZ_get_b(LDKC2Tuple_usizeTransactionZ *NONNULL_PTR tuple){
-       return tuple->b;
-}
-int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_usizeTransactionZ_get_b(uint32_t tuple) {
-       LDKC2Tuple_usizeTransactionZ* tuple_conv = (LDKC2Tuple_usizeTransactionZ*)(tuple & ~1);
-       LDKTransaction ret_var = C2Tuple_usizeTransactionZ_get_b(tuple_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       Transaction_free(ret_var);
-       return ret_arr;
+
+static inline struct LDKChannelPublicKeys CResult_ChannelPublicKeysDecodeErrorZ_get_ok(LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ChannelPublicKeys_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelPublicKeysDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ChannelPublicKeysDecodeErrorZ* owner_conv = (LDKCResult_ChannelPublicKeysDecodeErrorZ*)(owner & ~1);
+       LDKChannelPublicKeys ret_var = CResult_ChannelPublicKeysDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-static inline LDKCVec_C2Tuple_usizeTransactionZZ CVec_C2Tuple_usizeTransactionZZ_clone(const LDKCVec_C2Tuple_usizeTransactionZZ *orig) {
-       LDKCVec_C2Tuple_usizeTransactionZZ ret = { .data = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ) * orig->datalen, "LDKCVec_C2Tuple_usizeTransactionZZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = C2Tuple_usizeTransactionZ_clone(&orig->data[i]);
+static inline struct LDKDecodeError CResult_ChannelPublicKeysDecodeErrorZ_get_err(LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelPublicKeysDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ChannelPublicKeysDecodeErrorZ* owner_conv = (LDKCResult_ChannelPublicKeysDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ChannelPublicKeysDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret;
+       return ret_ref;
 }
-static inline LDKCVec_TxidZ CVec_ThirtyTwoBytesZ_clone(const LDKCVec_TxidZ *orig) {
-       LDKCVec_TxidZ ret = { .data = MALLOC(sizeof(LDKThirtyTwoBytes) * orig->datalen, "LDKCVec_TxidZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = ThirtyTwoBytes_clone(&orig->data[i]);
+
+static inline struct LDKTxCreationKeys CResult_TxCreationKeysErrorZ_get_ok(LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return TxCreationKeys_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_TxCreationKeysErrorZ* owner_conv = (LDKCResult_TxCreationKeysErrorZ*)(owner & ~1);
+       LDKTxCreationKeys ret_var = CResult_TxCreationKeysErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret;
+       return ret_ref;
 }
-void  __attribute__((visibility("default"))) TS_LDKCResult_NoneChannelMonitorUpdateErrZ_get_ok(uint32_t arg) {
-       LDKCResult_NoneChannelMonitorUpdateErrZ *val = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       return *val->contents.result;
+
+static inline enum LDKSecp256k1Error CResult_TxCreationKeysErrorZ_get_err(LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
 }
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_NoneChannelMonitorUpdateErrZ_get_err(uint32_t arg) {
-       LDKCResult_NoneChannelMonitorUpdateErrZ *val = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint32_t err_conv = LDKChannelMonitorUpdateErr_to_js((*val->contents.err));
-       return err_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysErrorZ_get_err(uint32_t owner) {
+       LDKCResult_TxCreationKeysErrorZ* owner_conv = (LDKCResult_TxCreationKeysErrorZ*)(owner & ~1);
+       uint32_t ret_conv = LDKSecp256k1Error_to_js(CResult_TxCreationKeysErrorZ_get_err(owner_conv));
+       return ret_conv;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKMonitorEvent_ref_from_ptr(uint32_t ptr) {
-       LDKMonitorEvent *obj = (LDKMonitorEvent*)(ptr & ~1);
+
+uint32_t __attribute__((visibility("default"))) TS_LDKCOption_u32Z_ref_from_ptr(uint32_t ptr) {
+       LDKCOption_u32Z *obj = (LDKCOption_u32Z*)(ptr & ~1);
        switch(obj->tag) {
-               case LDKMonitorEvent_HTLCEvent: {
-                       LDKHTLCUpdate htlc_event_var = obj->htlc_event;
-                       uint64_t htlc_event_ref = 0;
-                       CHECK((((uint64_t)htlc_event_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&htlc_event_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_event_var);
-                       htlc_event_ref = (uint64_t)htlc_event_var.inner & ~1;
-                       return 0 /* LDKMonitorEvent - HTLCEvent */; (void) htlc_event_ref;
-               }
-               case LDKMonitorEvent_CommitmentTxConfirmed: {
-                       LDKOutPoint commitment_tx_confirmed_var = obj->commitment_tx_confirmed;
-                       uint64_t commitment_tx_confirmed_ref = 0;
-                       CHECK((((uint64_t)commitment_tx_confirmed_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&commitment_tx_confirmed_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_tx_confirmed_var);
-                       commitment_tx_confirmed_ref = (uint64_t)commitment_tx_confirmed_var.inner & ~1;
-                       return 0 /* LDKMonitorEvent - CommitmentTxConfirmed */; (void) commitment_tx_confirmed_ref;
-               }
-               case LDKMonitorEvent_UpdateCompleted: {
-                       LDKOutPoint funding_txo_var = obj->update_completed.funding_txo;
-                       uint64_t funding_txo_ref = 0;
-                       CHECK((((uint64_t)funding_txo_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&funding_txo_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_var);
-                       funding_txo_ref = (uint64_t)funding_txo_var.inner & ~1;
-                       return 0 /* LDKMonitorEvent - UpdateCompleted */; (void) funding_txo_ref; (void) obj->update_completed.monitor_update_id;
+               case LDKCOption_u32Z_Some: {
+                       return 0 /* LDKCOption_u32Z - Some */; (void) obj->some;
                }
-               case LDKMonitorEvent_UpdateFailed: {
-                       LDKOutPoint update_failed_var = obj->update_failed;
-                       uint64_t update_failed_ref = 0;
-                       CHECK((((uint64_t)update_failed_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&update_failed_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_failed_var);
-                       update_failed_ref = (uint64_t)update_failed_var.inner & ~1;
-                       return 0 /* LDKMonitorEvent - UpdateFailed */; (void) update_failed_ref;
+               case LDKCOption_u32Z_None: {
+                       return 0 /* LDKCOption_u32Z - None */;
                }
                default: abort();
        }
 }
-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;
+static inline struct LDKHTLCOutputInCommitment CResult_HTLCOutputInCommitmentDecodeErrorZ_get_ok(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return HTLCOutputInCommitment_clone(&*owner->contents.result);
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKCOption_C2Tuple_usizeTransactionZZ_ref_from_ptr(uint32_t ptr) {
-       LDKCOption_C2Tuple_usizeTransactionZZ *obj = (LDKCOption_C2Tuple_usizeTransactionZZ*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKCOption_C2Tuple_usizeTransactionZZ_Some: {
-                       LDKC2Tuple_usizeTransactionZ* some_conv = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ), "LDKC2Tuple_usizeTransactionZ");
-                       *some_conv = obj->some;
-                       *some_conv = C2Tuple_usizeTransactionZ_clone(some_conv);
-                       return 0 /* LDKCOption_C2Tuple_usizeTransactionZZ - Some */; (void) ((uint64_t)some_conv);
-               }
-               case LDKCOption_C2Tuple_usizeTransactionZZ_None: {
-                       return 0 /* LDKCOption_C2Tuple_usizeTransactionZZ - None */;
-               }
-               default: abort();
+uint32_t  __attribute__((visibility("default"))) TS_CResult_HTLCOutputInCommitmentDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* owner_conv = (LDKCResult_HTLCOutputInCommitmentDecodeErrorZ*)(owner & ~1);
+       LDKHTLCOutputInCommitment ret_var = CResult_HTLCOutputInCommitmentDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKClosureReason_ref_from_ptr(uint32_t ptr) {
-       LDKClosureReason *obj = (LDKClosureReason*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKClosureReason_CounterpartyForceClosed: {
-                       LDKStr peer_msg_str = obj->counterparty_force_closed.peer_msg;
-                       jstring peer_msg_conv = str_ref_to_ts(peer_msg_str.chars, peer_msg_str.len);
-                       return 0 /* LDKClosureReason - CounterpartyForceClosed */; (void) peer_msg_conv;
-               }
-               case LDKClosureReason_HolderForceClosed: {
-                       return 0 /* LDKClosureReason - HolderForceClosed */;
-               }
-               case LDKClosureReason_CooperativeClosure: {
-                       return 0 /* LDKClosureReason - CooperativeClosure */;
-               }
-               case LDKClosureReason_CommitmentTxConfirmed: {
-                       return 0 /* LDKClosureReason - CommitmentTxConfirmed */;
-               }
-               case LDKClosureReason_FundingTimedOut: {
-                       return 0 /* LDKClosureReason - FundingTimedOut */;
-               }
-               case LDKClosureReason_ProcessingError: {
-                       LDKStr err_str = obj->processing_error.err;
-                       jstring err_conv = str_ref_to_ts(err_str.chars, err_str.len);
-                       return 0 /* LDKClosureReason - ProcessingError */; (void) err_conv;
-               }
-               case LDKClosureReason_DisconnectedPeer: {
-                       return 0 /* LDKClosureReason - DisconnectedPeer */;
-               }
-               case LDKClosureReason_OutdatedChannelManager: {
-                       return 0 /* LDKClosureReason - OutdatedChannelManager */;
-               }
-               default: abort();
+
+static inline struct LDKDecodeError CResult_HTLCOutputInCommitmentDecodeErrorZ_get_err(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_HTLCOutputInCommitmentDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* owner_conv = (LDKCResult_HTLCOutputInCommitmentDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_HTLCOutputInCommitmentDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKCOption_ClosureReasonZ_ref_from_ptr(uint32_t ptr) {
-       LDKCOption_ClosureReasonZ *obj = (LDKCOption_ClosureReasonZ*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKCOption_ClosureReasonZ_Some: {
-                       uint64_t some_ref = ((uint64_t)&obj->some) | 1;
-                       return 0 /* LDKCOption_ClosureReasonZ - Some */; (void) some_ref;
-               }
-               case LDKCOption_ClosureReasonZ_None: {
-                       return 0 /* LDKCOption_ClosureReasonZ - None */;
-               }
-               default: abort();
+
+static inline struct LDKCounterpartyChannelTransactionParameters CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_ok(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return CounterpartyChannelTransactionParameters_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* owner_conv = (LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ*)(owner & ~1);
+       LDKCounterpartyChannelTransactionParameters ret_var = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_COption_ClosureReasonZDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_COption_ClosureReasonZDecodeErrorZ *val = (LDKCResult_COption_ClosureReasonZDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       uint64_t res_ref = ((uint64_t)&(*val->contents.result)) | 1;
-       return res_ref;
+
+static inline struct LDKDecodeError CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_err(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_COption_ClosureReasonZDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_COption_ClosureReasonZDecodeErrorZ *val = (LDKCResult_COption_ClosureReasonZDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* owner_conv = (LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKNetworkUpdate_ref_from_ptr(uint32_t ptr) {
-       LDKNetworkUpdate *obj = (LDKNetworkUpdate*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKNetworkUpdate_ChannelUpdateMessage: {
-                       LDKChannelUpdate msg_var = obj->channel_update_message.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKNetworkUpdate - ChannelUpdateMessage */; (void) msg_ref;
-               }
-               case LDKNetworkUpdate_ChannelClosed: {
-                       return 0 /* LDKNetworkUpdate - ChannelClosed */; (void) obj->channel_closed.short_channel_id; (void) obj->channel_closed.is_permanent;
-               }
-               case LDKNetworkUpdate_NodeFailure: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->node_failure.node_id.compressed_form, 33);
-                       return 0 /* LDKNetworkUpdate - NodeFailure */; (void) node_id_arr; (void) obj->node_failure.is_permanent;
-               }
-               default: abort();
+
+static inline struct LDKChannelTransactionParameters CResult_ChannelTransactionParametersDecodeErrorZ_get_ok(LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ChannelTransactionParameters_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelTransactionParametersDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ChannelTransactionParametersDecodeErrorZ* owner_conv = (LDKCResult_ChannelTransactionParametersDecodeErrorZ*)(owner & ~1);
+       LDKChannelTransactionParameters ret_var = CResult_ChannelTransactionParametersDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKCOption_NetworkUpdateZ_ref_from_ptr(uint32_t ptr) {
-       LDKCOption_NetworkUpdateZ *obj = (LDKCOption_NetworkUpdateZ*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKCOption_NetworkUpdateZ_Some: {
-                       uint64_t some_ref = ((uint64_t)&obj->some) | 1;
-                       return 0 /* LDKCOption_NetworkUpdateZ - Some */; (void) some_ref;
-               }
-               case LDKCOption_NetworkUpdateZ_None: {
-                       return 0 /* LDKCOption_NetworkUpdateZ - None */;
-               }
-               default: abort();
+
+static inline struct LDKDecodeError CResult_ChannelTransactionParametersDecodeErrorZ_get_err(LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelTransactionParametersDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ChannelTransactionParametersDecodeErrorZ* owner_conv = (LDKCResult_ChannelTransactionParametersDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ChannelTransactionParametersDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKSpendableOutputDescriptor_ref_from_ptr(uint32_t ptr) {
-       LDKSpendableOutputDescriptor *obj = (LDKSpendableOutputDescriptor*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKSpendableOutputDescriptor_StaticOutput: {
-                       LDKOutPoint outpoint_var = obj->static_output.outpoint;
-                       uint64_t outpoint_ref = 0;
-                       CHECK((((uint64_t)outpoint_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&outpoint_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(outpoint_var);
-                       outpoint_ref = (uint64_t)outpoint_var.inner & ~1;
-                       uint64_t output_ref = ((uint64_t)&obj->static_output.output) | 1;
-                       return 0 /* LDKSpendableOutputDescriptor - StaticOutput */; (void) outpoint_ref; (void) (uint64_t)output_ref;
-               }
-               case LDKSpendableOutputDescriptor_DelayedPaymentOutput: {
-                       LDKDelayedPaymentOutputDescriptor delayed_payment_output_var = obj->delayed_payment_output;
-                       uint64_t delayed_payment_output_ref = 0;
-                       CHECK((((uint64_t)delayed_payment_output_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&delayed_payment_output_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(delayed_payment_output_var);
-                       delayed_payment_output_ref = (uint64_t)delayed_payment_output_var.inner & ~1;
-                       return 0 /* LDKSpendableOutputDescriptor - DelayedPaymentOutput */; (void) delayed_payment_output_ref;
-               }
-               case LDKSpendableOutputDescriptor_StaticPaymentOutput: {
-                       LDKStaticPaymentOutputDescriptor static_payment_output_var = obj->static_payment_output;
-                       uint64_t static_payment_output_ref = 0;
-                       CHECK((((uint64_t)static_payment_output_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&static_payment_output_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(static_payment_output_var);
-                       static_payment_output_ref = (uint64_t)static_payment_output_var.inner & ~1;
-                       return 0 /* LDKSpendableOutputDescriptor - StaticPaymentOutput */; (void) static_payment_output_ref;
-               }
-               default: abort();
+
+static inline struct LDKHolderCommitmentTransaction CResult_HolderCommitmentTransactionDecodeErrorZ_get_ok(LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return HolderCommitmentTransaction_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_HolderCommitmentTransactionDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_HolderCommitmentTransactionDecodeErrorZ* owner_conv = (LDKCResult_HolderCommitmentTransactionDecodeErrorZ*)(owner & ~1);
+       LDKHolderCommitmentTransaction ret_var = CResult_HolderCommitmentTransactionDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-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]);
+
+static inline struct LDKDecodeError CResult_HolderCommitmentTransactionDecodeErrorZ_get_err(LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_HolderCommitmentTransactionDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_HolderCommitmentTransactionDecodeErrorZ* owner_conv = (LDKCResult_HolderCommitmentTransactionDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_HolderCommitmentTransactionDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret;
+       return ret_ref;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKPaymentPurpose_ref_from_ptr(uint32_t ptr) {
-       LDKPaymentPurpose *obj = (LDKPaymentPurpose*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKPaymentPurpose_InvoicePayment: {
-                       int8_tArray payment_preimage_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(payment_preimage_arr + 4), obj->invoice_payment.payment_preimage.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->invoice_payment.payment_secret.data, 32);
-                       return 0 /* LDKPaymentPurpose - InvoicePayment */; (void) payment_preimage_arr; (void) payment_secret_arr;
-               }
-               case LDKPaymentPurpose_SpontaneousPayment: {
-                       int8_tArray spontaneous_payment_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(spontaneous_payment_arr + 4), obj->spontaneous_payment.data, 32);
-                       return 0 /* LDKPaymentPurpose - SpontaneousPayment */; (void) spontaneous_payment_arr;
-               }
-               default: abort();
+
+static inline struct LDKBuiltCommitmentTransaction CResult_BuiltCommitmentTransactionDecodeErrorZ_get_ok(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return BuiltCommitmentTransaction_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_BuiltCommitmentTransactionDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* owner_conv = (LDKCResult_BuiltCommitmentTransactionDecodeErrorZ*)(owner & ~1);
+       LDKBuiltCommitmentTransaction ret_var = CResult_BuiltCommitmentTransactionDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKEvent_ref_from_ptr(uint32_t ptr) {
-       LDKEvent *obj = (LDKEvent*)(ptr & ~1);
-       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_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);
-                       uint64_t purpose_ref = ((uint64_t)&obj->payment_received.purpose) | 1;
-                       return 0 /* LDKEvent - PaymentReceived */; (void) payment_hash_arr; (void) obj->payment_received.amt; (void) purpose_ref;
-               }
-               case LDKEvent_PaymentSent: {
-                       int8_tArray payment_id_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(payment_id_arr + 4), obj->payment_sent.payment_id.data, 32);
-                       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);
-                       int8_tArray payment_hash_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(payment_hash_arr + 4), obj->payment_sent.payment_hash.data, 32);
-                       uint64_t fee_paid_msat_ref = ((uint64_t)&obj->payment_sent.fee_paid_msat) | 1;
-                       return 0 /* LDKEvent - PaymentSent */; (void) payment_id_arr; (void) payment_preimage_arr; (void) payment_hash_arr; (void) fee_paid_msat_ref;
-               }
-               case LDKEvent_PaymentPathFailed: {
-                       int8_tArray payment_id_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(payment_id_arr + 4), obj->payment_path_failed.payment_id.data, 32);
-                       int8_tArray payment_hash_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(payment_hash_arr + 4), obj->payment_path_failed.payment_hash.data, 32);
-                       uint64_t network_update_ref = ((uint64_t)&obj->payment_path_failed.network_update) | 1;
-                       LDKCVec_RouteHopZ path_var = obj->payment_path_failed.path;
-                       uint32_tArray path_arr = NULL;
-                       path_arr = init_arr(path_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
-                       uint32_t *path_arr_ptr = (uint32_t*)(path_arr + 4);
-                       for (size_t k = 0; k < path_var.datalen; k++) {
-                               LDKRouteHop path_conv_10_var = path_var.data[k];
-                               uint64_t path_conv_10_ref = 0;
-                               CHECK((((uint64_t)path_conv_10_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                               CHECK((((uint64_t)&path_conv_10_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_var);
-                               path_conv_10_ref = (uint64_t)path_conv_10_var.inner & ~1;
-                               path_arr_ptr[k] = path_conv_10_ref;
-                       }
-                       
-                       uint64_t short_channel_id_ref = ((uint64_t)&obj->payment_path_failed.short_channel_id) | 1;
-                       LDKRouteParameters retry_var = obj->payment_path_failed.retry;
-                       uint64_t retry_ref = 0;
-                       if ((uint64_t)retry_var.inner > 4096) {
-                               CHECK((((uint64_t)retry_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                               CHECK((((uint64_t)&retry_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(retry_var);
-                               retry_ref = (uint64_t)retry_var.inner & ~1;
-                       }
-                       return 0 /* LDKEvent - PaymentPathFailed */; (void) payment_id_arr; (void) payment_hash_arr; (void) obj->payment_path_failed.rejected_by_dest; (void) network_update_ref; (void) obj->payment_path_failed.all_paths_failed; (void) path_arr; (void) short_channel_id_ref; (void) retry_ref;
-               }
-               case LDKEvent_PaymentFailed: {
-                       int8_tArray payment_id_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(payment_id_arr + 4), obj->payment_failed.payment_id.data, 32);
-                       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_id_arr; (void) payment_hash_arr;
-               }
-               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 = NULL;
-                       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++) {
-                               uint64_t outputs_conv_27_ref = ((uint64_t)&outputs_var.data[b]) | 1;
-                               outputs_arr_ptr[b] = outputs_conv_27_ref;
-                       }
-                       
-                       return 0 /* LDKEvent - SpendableOutputs */; (void) outputs_arr;
-               }
-               case LDKEvent_PaymentForwarded: {
-                       uint64_t fee_earned_msat_ref = ((uint64_t)&obj->payment_forwarded.fee_earned_msat) | 1;
-                       return 0 /* LDKEvent - PaymentForwarded */; (void) fee_earned_msat_ref; (void) obj->payment_forwarded.claim_from_onchain_tx;
-               }
-               case LDKEvent_ChannelClosed: {
-                       int8_tArray channel_id_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(channel_id_arr + 4), obj->channel_closed.channel_id.data, 32);
-                       uint64_t reason_ref = ((uint64_t)&obj->channel_closed.reason) | 1;
-                       return 0 /* LDKEvent - ChannelClosed */; (void) channel_id_arr; (void) obj->channel_closed.user_channel_id; (void) reason_ref;
-               }
-               case LDKEvent_DiscardFunding: {
-                       int8_tArray channel_id_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(channel_id_arr + 4), obj->discard_funding.channel_id.data, 32);
-                       LDKTransaction transaction_var = obj->discard_funding.transaction;
-                       int8_tArray transaction_arr = init_arr(transaction_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(transaction_arr + 4), transaction_var.data, transaction_var.datalen);
-                       return 0 /* LDKEvent - DiscardFunding */; (void) channel_id_arr; (void) transaction_arr;
-               }
-               case LDKEvent_PaymentPathSuccessful: {
-                       int8_tArray payment_id_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(payment_id_arr + 4), obj->payment_path_successful.payment_id.data, 32);
-                       int8_tArray payment_hash_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(payment_hash_arr + 4), obj->payment_path_successful.payment_hash.data, 32);
-                       LDKCVec_RouteHopZ path_var = obj->payment_path_successful.path;
-                       uint32_tArray path_arr = NULL;
-                       path_arr = init_arr(path_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
-                       uint32_t *path_arr_ptr = (uint32_t*)(path_arr + 4);
-                       for (size_t k = 0; k < path_var.datalen; k++) {
-                               LDKRouteHop path_conv_10_var = path_var.data[k];
-                               uint64_t path_conv_10_ref = 0;
-                               CHECK((((uint64_t)path_conv_10_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                               CHECK((((uint64_t)&path_conv_10_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_var);
-                               path_conv_10_ref = (uint64_t)path_conv_10_var.inner & ~1;
-                               path_arr_ptr[k] = path_conv_10_ref;
-                       }
-                       
-                       return 0 /* LDKEvent - PaymentPathSuccessful */; (void) payment_id_arr; (void) payment_hash_arr; (void) path_arr;
-               }
-               default: abort();
+
+static inline struct LDKDecodeError CResult_BuiltCommitmentTransactionDecodeErrorZ_get_err(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_BuiltCommitmentTransactionDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* owner_conv = (LDKCResult_BuiltCommitmentTransactionDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_BuiltCommitmentTransactionDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKCOption_EventZ_ref_from_ptr(uint32_t ptr) {
-       LDKCOption_EventZ *obj = (LDKCOption_EventZ*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKCOption_EventZ_Some: {
-                       uint64_t some_ref = ((uint64_t)&obj->some) | 1;
-                       return 0 /* LDKCOption_EventZ - Some */; (void) some_ref;
-               }
-               case LDKCOption_EventZ_None: {
-                       return 0 /* LDKCOption_EventZ - None */;
-               }
-               default: abort();
+
+static inline struct LDKTrustedClosingTransaction *CResult_TrustedClosingTransactionNoneZ_get_ok(LDKCResult_TrustedClosingTransactionNoneZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return &*owner->contents.result;
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_TrustedClosingTransactionNoneZ_get_ok(uint32_t owner) {
+       LDKCResult_TrustedClosingTransactionNoneZ* owner_conv = (LDKCResult_TrustedClosingTransactionNoneZ*)(owner & ~1);
+       LDKTrustedClosingTransaction ret_var = *CResult_TrustedClosingTransactionNoneZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner & ~1;
+       return ret_ref;
+}
+
+static inline void CResult_TrustedClosingTransactionNoneZ_get_err(LDKCResult_TrustedClosingTransactionNoneZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
+}
+void  __attribute__((visibility("default"))) TS_CResult_TrustedClosingTransactionNoneZ_get_err(uint32_t owner) {
+       LDKCResult_TrustedClosingTransactionNoneZ* owner_conv = (LDKCResult_TrustedClosingTransactionNoneZ*)(owner & ~1);
+       CResult_TrustedClosingTransactionNoneZ_get_err(owner_conv);
+}
+
+static inline struct LDKCommitmentTransaction CResult_CommitmentTransactionDecodeErrorZ_get_ok(LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return CommitmentTransaction_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_CommitmentTransactionDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_CommitmentTransactionDecodeErrorZ* owner_conv = (LDKCResult_CommitmentTransactionDecodeErrorZ*)(owner & ~1);
+       LDKCommitmentTransaction ret_var = CResult_CommitmentTransactionDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_COption_EventZDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_COption_EventZDecodeErrorZ *val = (LDKCResult_COption_EventZDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       uint64_t res_ref = ((uint64_t)&(*val->contents.result)) | 1;
-       return res_ref;
+
+static inline struct LDKDecodeError CResult_CommitmentTransactionDecodeErrorZ_get_err(LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_COption_EventZDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_COption_EventZDecodeErrorZ *val = (LDKCResult_COption_EventZDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_CommitmentTransactionDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_CommitmentTransactionDecodeErrorZ* owner_conv = (LDKCResult_CommitmentTransactionDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_CommitmentTransactionDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKErrorAction_ref_from_ptr(uint32_t ptr) {
-       LDKErrorAction *obj = (LDKErrorAction*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKErrorAction_DisconnectPeer: {
-                       LDKErrorMessage msg_var = obj->disconnect_peer.msg;
-                       uint64_t msg_ref = 0;
-                       if ((uint64_t)msg_var.inner > 4096) {
-                               CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                               CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                               msg_ref = (uint64_t)msg_var.inner & ~1;
-                       }
-                       return 0 /* LDKErrorAction - DisconnectPeer */; (void) msg_ref;
-               }
-               case LDKErrorAction_IgnoreError: {
-                       return 0 /* LDKErrorAction - IgnoreError */;
-               }
-               case LDKErrorAction_IgnoreAndLog: {
-                       uint32_t ignore_and_log_conv = LDKLevel_to_js(obj->ignore_and_log);
-                       return 0 /* LDKErrorAction - IgnoreAndLog */; (void) ignore_and_log_conv;
-               }
-               case LDKErrorAction_IgnoreDuplicateGossip: {
-                       return 0 /* LDKErrorAction - IgnoreDuplicateGossip */;
-               }
-               case LDKErrorAction_SendErrorMessage: {
-                       LDKErrorMessage msg_var = obj->send_error_message.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKErrorAction - SendErrorMessage */; (void) msg_ref;
-               }
-               default: abort();
+
+static inline struct LDKTrustedCommitmentTransaction *CResult_TrustedCommitmentTransactionNoneZ_get_ok(LDKCResult_TrustedCommitmentTransactionNoneZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return &*owner->contents.result;
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_TrustedCommitmentTransactionNoneZ_get_ok(uint32_t owner) {
+       LDKCResult_TrustedCommitmentTransactionNoneZ* owner_conv = (LDKCResult_TrustedCommitmentTransactionNoneZ*)(owner & ~1);
+       LDKTrustedCommitmentTransaction ret_var = *CResult_TrustedCommitmentTransactionNoneZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner & ~1;
+       return ret_ref;
+}
+
+static inline void CResult_TrustedCommitmentTransactionNoneZ_get_err(LDKCResult_TrustedCommitmentTransactionNoneZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
+}
+void  __attribute__((visibility("default"))) TS_CResult_TrustedCommitmentTransactionNoneZ_get_err(uint32_t owner) {
+       LDKCResult_TrustedCommitmentTransactionNoneZ* owner_conv = (LDKCResult_TrustedCommitmentTransactionNoneZ*)(owner & ~1);
+       CResult_TrustedCommitmentTransactionNoneZ_get_err(owner_conv);
+}
+
+static inline struct LDKCVec_SignatureZ CResult_CVec_SignatureZNoneZ_get_ok(LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
+}
+ptrArray  __attribute__((visibility("default"))) TS_CResult_CVec_SignatureZNoneZ_get_ok(uint32_t owner) {
+       LDKCResult_CVec_SignatureZNoneZ* owner_conv = (LDKCResult_CVec_SignatureZNoneZ*)(owner & ~1);
+       LDKCVec_SignatureZ ret_var = CResult_CVec_SignatureZNoneZ_get_ok(owner_conv);
+       ptrArray ret_arr = NULL;
+       ret_arr = init_ptrArray(ret_var.datalen);
+       int8_tArray *ret_arr_ptr = (int8_tArray*)(ret_arr + 4);
+       for (size_t m = 0; m < ret_var.datalen; m++) {
+               int8_tArray ret_conv_12_arr = init_int8_tArray(64);
+               memcpy(ret_conv_12_arr->elems, ret_var.data[m].compact_form, 64);
+               ret_arr_ptr[m] = ret_conv_12_arr;
        }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKMessageSendEvent_ref_from_ptr(uint32_t ptr) {
-       LDKMessageSendEvent *obj = (LDKMessageSendEvent*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKMessageSendEvent_SendAcceptChannel: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->send_accept_channel.node_id.compressed_form, 33);
-                       LDKAcceptChannel msg_var = obj->send_accept_channel.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - SendAcceptChannel */; (void) node_id_arr; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_SendOpenChannel: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->send_open_channel.node_id.compressed_form, 33);
-                       LDKOpenChannel msg_var = obj->send_open_channel.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - SendOpenChannel */; (void) node_id_arr; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_SendFundingCreated: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->send_funding_created.node_id.compressed_form, 33);
-                       LDKFundingCreated msg_var = obj->send_funding_created.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - SendFundingCreated */; (void) node_id_arr; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_SendFundingSigned: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->send_funding_signed.node_id.compressed_form, 33);
-                       LDKFundingSigned msg_var = obj->send_funding_signed.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - SendFundingSigned */; (void) node_id_arr; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_SendFundingLocked: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->send_funding_locked.node_id.compressed_form, 33);
-                       LDKFundingLocked msg_var = obj->send_funding_locked.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - SendFundingLocked */; (void) node_id_arr; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_SendAnnouncementSignatures: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->send_announcement_signatures.node_id.compressed_form, 33);
-                       LDKAnnouncementSignatures msg_var = obj->send_announcement_signatures.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - SendAnnouncementSignatures */; (void) node_id_arr; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_UpdateHTLCs: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->update_htl_cs.node_id.compressed_form, 33);
-                       LDKCommitmentUpdate updates_var = obj->update_htl_cs.updates;
-                       uint64_t updates_ref = 0;
-                       CHECK((((uint64_t)updates_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&updates_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(updates_var);
-                       updates_ref = (uint64_t)updates_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - UpdateHTLCs */; (void) node_id_arr; (void) updates_ref;
-               }
-               case LDKMessageSendEvent_SendRevokeAndACK: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->send_revoke_and_ack.node_id.compressed_form, 33);
-                       LDKRevokeAndACK msg_var = obj->send_revoke_and_ack.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - SendRevokeAndACK */; (void) node_id_arr; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_SendClosingSigned: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->send_closing_signed.node_id.compressed_form, 33);
-                       LDKClosingSigned msg_var = obj->send_closing_signed.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - SendClosingSigned */; (void) node_id_arr; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_SendShutdown: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->send_shutdown.node_id.compressed_form, 33);
-                       LDKShutdown msg_var = obj->send_shutdown.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - SendShutdown */; (void) node_id_arr; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_SendChannelReestablish: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->send_channel_reestablish.node_id.compressed_form, 33);
-                       LDKChannelReestablish msg_var = obj->send_channel_reestablish.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - SendChannelReestablish */; (void) node_id_arr; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_BroadcastChannelAnnouncement: {
-                       LDKChannelAnnouncement msg_var = obj->broadcast_channel_announcement.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       LDKChannelUpdate update_msg_var = obj->broadcast_channel_announcement.update_msg;
-                       uint64_t update_msg_ref = 0;
-                       CHECK((((uint64_t)update_msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&update_msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_msg_var);
-                       update_msg_ref = (uint64_t)update_msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - BroadcastChannelAnnouncement */; (void) msg_ref; (void) update_msg_ref;
-               }
-               case LDKMessageSendEvent_BroadcastNodeAnnouncement: {
-                       LDKNodeAnnouncement msg_var = obj->broadcast_node_announcement.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - BroadcastNodeAnnouncement */; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_BroadcastChannelUpdate: {
-                       LDKChannelUpdate msg_var = obj->broadcast_channel_update.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - BroadcastChannelUpdate */; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_SendChannelUpdate: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->send_channel_update.node_id.compressed_form, 33);
-                       LDKChannelUpdate msg_var = obj->send_channel_update.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - SendChannelUpdate */; (void) node_id_arr; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_HandleError: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->handle_error.node_id.compressed_form, 33);
-                       uint64_t action_ref = ((uint64_t)&obj->handle_error.action) | 1;
-                       return 0 /* LDKMessageSendEvent - HandleError */; (void) node_id_arr; (void) action_ref;
-               }
-               case LDKMessageSendEvent_SendChannelRangeQuery: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->send_channel_range_query.node_id.compressed_form, 33);
-                       LDKQueryChannelRange msg_var = obj->send_channel_range_query.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - SendChannelRangeQuery */; (void) node_id_arr; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_SendShortIdsQuery: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->send_short_ids_query.node_id.compressed_form, 33);
-                       LDKQueryShortChannelIds msg_var = obj->send_short_ids_query.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - SendShortIdsQuery */; (void) node_id_arr; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_SendReplyChannelRange: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->send_reply_channel_range.node_id.compressed_form, 33);
-                       LDKReplyChannelRange msg_var = obj->send_reply_channel_range.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - SendReplyChannelRange */; (void) node_id_arr; (void) msg_ref;
-               }
-               default: abort();
-       }
+
+static inline void CResult_CVec_SignatureZNoneZ_get_err(LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
 }
-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]);
+void  __attribute__((visibility("default"))) TS_CResult_CVec_SignatureZNoneZ_get_err(uint32_t owner) {
+       LDKCResult_CVec_SignatureZNoneZ* owner_conv = (LDKCResult_CVec_SignatureZNoneZ*)(owner & ~1);
+       CResult_CVec_SignatureZNoneZ_get_err(owner_conv);
+}
+
+static inline struct LDKShutdownScript CResult_ShutdownScriptDecodeErrorZ_get_ok(LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ShutdownScript_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ShutdownScriptDecodeErrorZ* owner_conv = (LDKCResult_ShutdownScriptDecodeErrorZ*)(owner & ~1);
+       LDKShutdownScript ret_var = CResult_ShutdownScriptDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret;
+       return ret_ref;
 }
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ScoringParametersDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_ScoringParametersDecodeErrorZ *val = (LDKCResult_ScoringParametersDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKScoringParameters res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ScoringParametersDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_ScoringParametersDecodeErrorZ *val = (LDKCResult_ScoringParametersDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ScorerDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_ScorerDecodeErrorZ *val = (LDKCResult_ScorerDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKScorer res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ScorerDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_ScorerDecodeErrorZ *val = (LDKCResult_ScorerDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_InvoiceFeaturesDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_InvoiceFeaturesDecodeErrorZ *val = (LDKCResult_InvoiceFeaturesDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKInvoiceFeatures res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_InvoiceFeaturesDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_InvoiceFeaturesDecodeErrorZ *val = (LDKCResult_InvoiceFeaturesDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ChannelTypeFeaturesDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_ChannelTypeFeaturesDecodeErrorZ *val = (LDKCResult_ChannelTypeFeaturesDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKChannelTypeFeatures res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ChannelTypeFeaturesDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_ChannelTypeFeaturesDecodeErrorZ *val = (LDKCResult_ChannelTypeFeaturesDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *val = (LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKDelayedPaymentOutputDescriptor res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *val = (LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *val = (LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKStaticPaymentOutputDescriptor res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *val = (LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_SpendableOutputDescriptorDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_SpendableOutputDescriptorDecodeErrorZ *val = (LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       uint64_t res_ref = ((uint64_t)&(*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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-void  __attribute__((visibility("default"))) TS_LDKCResult_NoneNoneZ_get_ok(uint32_t arg) {
-       LDKCResult_NoneNoneZ *val = (LDKCResult_NoneNoneZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       return *val->contents.result;
-}
-void  __attribute__((visibility("default"))) TS_LDKCResult_NoneNoneZ_get_err(uint32_t arg) {
-       LDKCResult_NoneNoneZ *val = (LDKCResult_NoneNoneZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       return *val->contents.err;
-}
-static inline struct LDKSignature C2Tuple_SignatureCVec_SignatureZZ_get_a(LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR tuple){
-       return tuple->a;
-}
-int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_SignatureCVec_SignatureZZ_get_a(uint32_t tuple) {
-       LDKC2Tuple_SignatureCVec_SignatureZZ* tuple_conv = (LDKC2Tuple_SignatureCVec_SignatureZZ*)(tuple & ~1);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), C2Tuple_SignatureCVec_SignatureZZ_get_a(tuple_conv).compact_form, 64);
-       return ret_arr;
-}
-
-static inline struct LDKCVec_SignatureZ C2Tuple_SignatureCVec_SignatureZZ_get_b(LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR tuple){
-       return tuple->b;
-}
-ptrArray  __attribute__((visibility("default"))) TS_C2Tuple_SignatureCVec_SignatureZZ_get_b(uint32_t tuple) {
-       LDKC2Tuple_SignatureCVec_SignatureZZ* tuple_conv = (LDKC2Tuple_SignatureCVec_SignatureZZ*)(tuple & ~1);
-       LDKCVec_SignatureZ ret_var = C2Tuple_SignatureCVec_SignatureZZ_get_b(tuple_conv);
-       ptrArray ret_arr = NULL;
-       ret_arr = init_arr(ret_var.datalen, sizeof(uint32_t), "Native ptrArray Bytes");
-       int8_tArray *ret_arr_ptr = (int8_tArray*)(ret_arr + 4);
-       for (size_t m = 0; m < ret_var.datalen; m++) {
-               int8_tArray ret_conv_12_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-               memcpy((uint8_t*)(ret_conv_12_arr + 4), ret_var.data[m].compact_form, 64);
-               ret_arr_ptr[m] = ret_conv_12_arr;
+
+static inline struct LDKDecodeError CResult_ShutdownScriptDecodeErrorZ_get_err(LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ShutdownScriptDecodeErrorZ* owner_conv = (LDKCResult_ShutdownScriptDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ShutdownScriptDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_ok(uint32_t arg) {
-       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *val = (LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKC2Tuple_SignatureCVec_SignatureZZ* res_conv = MALLOC(sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ), "LDKC2Tuple_SignatureCVec_SignatureZZ");
-       *res_conv = (*val->contents.result);
-       *res_conv = C2Tuple_SignatureCVec_SignatureZZ_clone(res_conv);
-       return ((uint64_t)res_conv);
+static inline struct LDKShutdownScript CResult_ShutdownScriptInvalidShutdownScriptZ_get_ok(LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ShutdownScript_clone(&*owner->contents.result);
 }
-void  __attribute__((visibility("default"))) TS_LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_err(uint32_t arg) {
-       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *val = (LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       return *val->contents.err;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptInvalidShutdownScriptZ_get_ok(uint32_t owner) {
+       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* owner_conv = (LDKCResult_ShutdownScriptInvalidShutdownScriptZ*)(owner & ~1);
+       LDKShutdownScript ret_var = CResult_ShutdownScriptInvalidShutdownScriptZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-int8_tArray  __attribute__((visibility("default"))) TS_LDKCResult_SignatureNoneZ_get_ok(uint32_t arg) {
-       LDKCResult_SignatureNoneZ *val = (LDKCResult_SignatureNoneZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       int8_tArray res_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(res_arr + 4), (*val->contents.result).compact_form, 64);
-       return res_arr;
+
+static inline struct LDKInvalidShutdownScript CResult_ShutdownScriptInvalidShutdownScriptZ_get_err(LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return InvalidShutdownScript_clone(&*owner->contents.err);
 }
-void  __attribute__((visibility("default"))) TS_LDKCResult_SignatureNoneZ_get_err(uint32_t arg) {
-       LDKCResult_SignatureNoneZ *val = (LDKCResult_SignatureNoneZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       return *val->contents.err;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptInvalidShutdownScriptZ_get_err(uint32_t owner) {
+       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* owner_conv = (LDKCResult_ShutdownScriptInvalidShutdownScriptZ*)(owner & ~1);
+       LDKInvalidShutdownScript ret_var = CResult_ShutdownScriptInvalidShutdownScriptZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-typedef struct LDKBaseSign_JCalls {
+
+typedef struct LDKType_JCalls {
        atomic_size_t refcnt;
-       uint32_t get_per_commitment_point_meth;
-       uint32_t release_commitment_secret_meth;
-       uint32_t validate_holder_commitment_meth;
-       uint32_t channel_keys_id_meth;
-       uint32_t sign_counterparty_commitment_meth;
-       uint32_t validate_counterparty_revocation_meth;
-       uint32_t sign_holder_commitment_and_htlcs_meth;
-       uint32_t sign_justice_revoked_output_meth;
-       uint32_t sign_justice_revoked_htlc_meth;
-       uint32_t sign_counterparty_htlc_transaction_meth;
-       uint32_t sign_closing_transaction_meth;
-       uint32_t sign_channel_announcement_meth;
-       uint32_t ready_channel_meth;
-} LDKBaseSign_JCalls;
-static void LDKBaseSign_JCalls_free(void* this_arg) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
+       uint32_t type_id_meth;
+       uint32_t debug_str_meth;
+       uint32_t write_meth;
+} LDKType_JCalls;
+static void LDKType_JCalls_free(void* this_arg) {
+       LDKType_JCalls *j_calls = (LDKType_JCalls*) this_arg;
        if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->get_per_commitment_point_meth);
-               js_free(j_calls->release_commitment_secret_meth);
-               js_free(j_calls->validate_holder_commitment_meth);
-               js_free(j_calls->channel_keys_id_meth);
-               js_free(j_calls->sign_counterparty_commitment_meth);
-               js_free(j_calls->validate_counterparty_revocation_meth);
-               js_free(j_calls->sign_holder_commitment_and_htlcs_meth);
-               js_free(j_calls->sign_justice_revoked_output_meth);
-               js_free(j_calls->sign_justice_revoked_htlc_meth);
-               js_free(j_calls->sign_counterparty_htlc_transaction_meth);
-               js_free(j_calls->sign_closing_transaction_meth);
-               js_free(j_calls->sign_channel_announcement_meth);
-               js_free(j_calls->ready_channel_meth);
+               js_free_function_ptr(j_calls->type_id_meth);
+               js_free_function_ptr(j_calls->debug_str_meth);
+               js_free_function_ptr(j_calls->write_meth);
                FREE(j_calls);
        }
 }
-LDKPublicKey get_per_commitment_point_LDKBaseSign_jcall(const void* this_arg, uint64_t idx) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
-       int8_tArray ret = js_invoke_function_1(j_calls->get_per_commitment_point_meth, idx);
-       LDKPublicKey ret_ref;
-       CHECK(*((uint32_t*)ret) == 33);
-       memcpy(ret_ref.compressed_form, (uint8_t*)(ret + 4), 33);
-       return ret_ref;
-}
-LDKThirtyTwoBytes release_commitment_secret_LDKBaseSign_jcall(const void* this_arg, uint64_t idx) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
-       int8_tArray ret = js_invoke_function_1(j_calls->release_commitment_secret_meth, idx);
-       LDKThirtyTwoBytes ret_ref;
-       CHECK(*((uint32_t*)ret) == 32);
-       memcpy(ret_ref.data, (uint8_t*)(ret + 4), 32);
-       return ret_ref;
+uint16_t type_id_LDKType_jcall(const void* this_arg) {
+       LDKType_JCalls *j_calls = (LDKType_JCalls*) this_arg;
+       return js_invoke_function_0(j_calls->type_id_meth);
 }
-LDKCResult_NoneNoneZ validate_holder_commitment_LDKBaseSign_jcall(const void* this_arg, const LDKHolderCommitmentTransaction * holder_tx) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
-       LDKHolderCommitmentTransaction holder_tx_var = *holder_tx;
-       uint64_t holder_tx_ref = 0;
-       holder_tx_var = HolderCommitmentTransaction_clone(holder_tx);
-       CHECK((((uint64_t)holder_tx_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&holder_tx_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(holder_tx_var);
-       holder_tx_ref = (uint64_t)holder_tx_var.inner;
-       if (holder_tx_var.is_owned) {
-               holder_tx_ref |= 1;
-       }
-       uint32_t ret = js_invoke_function_1(j_calls->validate_holder_commitment_meth, holder_tx_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_NoneNoneZ ret_conv = *(LDKCResult_NoneNoneZ*)(ret_ptr);
-       FREE((void*)ret);
+LDKStr debug_str_LDKType_jcall(const void* this_arg) {
+       LDKType_JCalls *j_calls = (LDKType_JCalls*) this_arg;
+       jstring ret = (jstring)js_invoke_function_0(j_calls->debug_str_meth);
+       LDKStr ret_conv = str_ref_to_owned_c(ret);
        return ret_conv;
 }
-LDKThirtyTwoBytes channel_keys_id_LDKBaseSign_jcall(const void* this_arg) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
-       int8_tArray ret = js_invoke_function_0(j_calls->channel_keys_id_meth);
-       LDKThirtyTwoBytes ret_ref;
-       CHECK(*((uint32_t*)ret) == 32);
-       memcpy(ret_ref.data, (uint8_t*)(ret + 4), 32);
+LDKCVec_u8Z write_LDKType_jcall(const void* this_arg) {
+       LDKType_JCalls *j_calls = (LDKType_JCalls*) this_arg;
+       int8_tArray ret = (int8_tArray)js_invoke_function_0(j_calls->write_meth);
+       LDKCVec_u8Z ret_ref;
+       ret_ref.datalen = ret->arr_len;
+       ret_ref.data = MALLOC(ret_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(ret_ref.data, ret->elems, ret_ref.datalen);
        return ret_ref;
 }
-LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_counterparty_commitment_LDKBaseSign_jcall(const void* this_arg, const LDKCommitmentTransaction * commitment_tx) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
-       LDKCommitmentTransaction commitment_tx_var = *commitment_tx;
-       uint64_t commitment_tx_ref = 0;
-       commitment_tx_var = CommitmentTransaction_clone(commitment_tx);
-       CHECK((((uint64_t)commitment_tx_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&commitment_tx_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_tx_var);
-       commitment_tx_ref = (uint64_t)commitment_tx_var.inner;
-       if (commitment_tx_var.is_owned) {
-               commitment_tx_ref |= 1;
-       }
-       uint32_t ret = js_invoke_function_1(j_calls->sign_counterparty_commitment_meth, commitment_tx_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret_conv = *(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+static void LDKType_JCalls_cloned(LDKType* new_obj) {
+       LDKType_JCalls *j_calls = (LDKType_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
-LDKCResult_NoneNoneZ validate_counterparty_revocation_LDKBaseSign_jcall(const void* this_arg, uint64_t idx, const uint8_t (* secret)[32]) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
-       int8_tArray secret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(secret_arr + 4), *secret, 32);
-       uint32_t ret = js_invoke_function_2(j_calls->validate_counterparty_revocation_meth, idx, secret_arr);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_NoneNoneZ ret_conv = *(LDKCResult_NoneNoneZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+static inline LDKType LDKType_init (/*TODO: JS Object Reference */void* o) {
+       LDKType_JCalls *calls = MALLOC(sizeof(LDKType_JCalls), "LDKType_JCalls");
+       atomic_init(&calls->refcnt, 1);
+       //TODO: Assign calls->o from o
+
+       LDKType ret = {
+               .this_arg = (void*) calls,
+               .type_id = type_id_LDKType_jcall,
+               .debug_str = debug_str_LDKType_jcall,
+               .write = write_LDKType_jcall,
+               .cloned = LDKType_JCalls_cloned,
+               .free = LDKType_JCalls_free,
+       };
+       return ret;
 }
-LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_holder_commitment_and_htlcs_LDKBaseSign_jcall(const void* this_arg, const LDKHolderCommitmentTransaction * commitment_tx) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
-       LDKHolderCommitmentTransaction commitment_tx_var = *commitment_tx;
-       uint64_t commitment_tx_ref = 0;
-       commitment_tx_var = HolderCommitmentTransaction_clone(commitment_tx);
-       CHECK((((uint64_t)commitment_tx_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&commitment_tx_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_tx_var);
-       commitment_tx_ref = (uint64_t)commitment_tx_var.inner;
-       if (commitment_tx_var.is_owned) {
-               commitment_tx_ref |= 1;
-       }
-       uint32_t ret = js_invoke_function_1(j_calls->sign_holder_commitment_and_htlcs_meth, commitment_tx_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret_conv = *(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+long  __attribute__((visibility("default"))) TS_LDKType_new(/*TODO: JS Object Reference */void* o) {
+       LDKType *res_ptr = MALLOC(sizeof(LDKType), "LDKType");
+       *res_ptr = LDKType_init(o);
+       return (long)res_ptr;
 }
-LDKCResult_SignatureNoneZ sign_justice_revoked_output_LDKBaseSign_jcall(const void* this_arg, LDKTransaction justice_tx, uintptr_t input, uint64_t amount, const uint8_t (* per_commitment_key)[32]) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
-       LDKTransaction justice_tx_var = justice_tx;
-       int8_tArray justice_tx_arr = init_arr(justice_tx_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(justice_tx_arr + 4), justice_tx_var.data, justice_tx_var.datalen);
-       Transaction_free(justice_tx_var);
-       int8_tArray per_commitment_key_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(per_commitment_key_arr + 4), *per_commitment_key, 32);
-       uint32_t ret = js_invoke_function_4(j_calls->sign_justice_revoked_output_meth, justice_tx_arr, input, amount, per_commitment_key_arr);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_SignatureNoneZ ret_conv = *(LDKCResult_SignatureNoneZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
-}
-LDKCResult_SignatureNoneZ sign_justice_revoked_htlc_LDKBaseSign_jcall(const void* this_arg, LDKTransaction justice_tx, uintptr_t input, uint64_t amount, const uint8_t (* per_commitment_key)[32], const LDKHTLCOutputInCommitment * htlc) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
-       LDKTransaction justice_tx_var = justice_tx;
-       int8_tArray justice_tx_arr = init_arr(justice_tx_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(justice_tx_arr + 4), justice_tx_var.data, justice_tx_var.datalen);
-       Transaction_free(justice_tx_var);
-       int8_tArray per_commitment_key_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(per_commitment_key_arr + 4), *per_commitment_key, 32);
-       LDKHTLCOutputInCommitment htlc_var = *htlc;
-       uint64_t htlc_ref = 0;
-       htlc_var = HTLCOutputInCommitment_clone(htlc);
-       CHECK((((uint64_t)htlc_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&htlc_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_var);
-       htlc_ref = (uint64_t)htlc_var.inner;
-       if (htlc_var.is_owned) {
-               htlc_ref |= 1;
-       }
-       uint32_t ret = js_invoke_function_5(j_calls->sign_justice_revoked_htlc_meth, justice_tx_arr, input, amount, per_commitment_key_arr, htlc_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_SignatureNoneZ ret_conv = *(LDKCResult_SignatureNoneZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
-}
-LDKCResult_SignatureNoneZ sign_counterparty_htlc_transaction_LDKBaseSign_jcall(const void* this_arg, LDKTransaction htlc_tx, uintptr_t input, uint64_t amount, LDKPublicKey per_commitment_point, const LDKHTLCOutputInCommitment * htlc) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
-       LDKTransaction htlc_tx_var = htlc_tx;
-       int8_tArray htlc_tx_arr = init_arr(htlc_tx_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(htlc_tx_arr + 4), htlc_tx_var.data, htlc_tx_var.datalen);
-       Transaction_free(htlc_tx_var);
-       int8_tArray per_commitment_point_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(per_commitment_point_arr + 4), per_commitment_point.compressed_form, 33);
-       LDKHTLCOutputInCommitment htlc_var = *htlc;
-       uint64_t htlc_ref = 0;
-       htlc_var = HTLCOutputInCommitment_clone(htlc);
-       CHECK((((uint64_t)htlc_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&htlc_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_var);
-       htlc_ref = (uint64_t)htlc_var.inner;
-       if (htlc_var.is_owned) {
-               htlc_ref |= 1;
-       }
-       uint32_t ret = js_invoke_function_5(j_calls->sign_counterparty_htlc_transaction_meth, htlc_tx_arr, input, amount, per_commitment_point_arr, htlc_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_SignatureNoneZ ret_conv = *(LDKCResult_SignatureNoneZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
-}
-LDKCResult_SignatureNoneZ sign_closing_transaction_LDKBaseSign_jcall(const void* this_arg, const LDKClosingTransaction * closing_tx) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
-       LDKClosingTransaction closing_tx_var = *closing_tx;
-       uint64_t closing_tx_ref = 0;
-       closing_tx_var = ClosingTransaction_clone(closing_tx);
-       CHECK((((uint64_t)closing_tx_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&closing_tx_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(closing_tx_var);
-       closing_tx_ref = (uint64_t)closing_tx_var.inner;
-       if (closing_tx_var.is_owned) {
-               closing_tx_ref |= 1;
-       }
-       uint32_t ret = js_invoke_function_1(j_calls->sign_closing_transaction_meth, closing_tx_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_SignatureNoneZ ret_conv = *(LDKCResult_SignatureNoneZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
-}
-LDKCResult_SignatureNoneZ sign_channel_announcement_LDKBaseSign_jcall(const void* this_arg, const LDKUnsignedChannelAnnouncement * msg) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
-       LDKUnsignedChannelAnnouncement msg_var = *msg;
-       uint64_t msg_ref = 0;
-       msg_var = UnsignedChannelAnnouncement_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
-       }
-       uint32_t ret = js_invoke_function_1(j_calls->sign_channel_announcement_meth, msg_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_SignatureNoneZ ret_conv = *(LDKCResult_SignatureNoneZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
-}
-void ready_channel_LDKBaseSign_jcall(void* this_arg, const LDKChannelTransactionParameters * channel_parameters) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
-       LDKChannelTransactionParameters channel_parameters_var = *channel_parameters;
-       uint64_t channel_parameters_ref = 0;
-       channel_parameters_var = ChannelTransactionParameters_clone(channel_parameters);
-       CHECK((((uint64_t)channel_parameters_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&channel_parameters_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_parameters_var);
-       channel_parameters_ref = (uint64_t)channel_parameters_var.inner;
-       if (channel_parameters_var.is_owned) {
-               channel_parameters_ref |= 1;
-       }
-       js_invoke_function_1(j_calls->ready_channel_meth, channel_parameters_ref);
-}
-static void LDKBaseSign_JCalls_cloned(LDKBaseSign* new_obj) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
-}
-static inline LDKBaseSign LDKBaseSign_init (/*TODO: JS Object Reference */void* o, uint32_t pubkeys) {
-       LDKBaseSign_JCalls *calls = MALLOC(sizeof(LDKBaseSign_JCalls), "LDKBaseSign_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
-
-       LDKChannelPublicKeys pubkeys_conv;
-       pubkeys_conv.inner = (void*)(pubkeys & (~1));
-       pubkeys_conv.is_owned = (pubkeys & 1) || (pubkeys == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(pubkeys_conv);
-
-       LDKBaseSign ret = {
-               .this_arg = (void*) calls,
-               .get_per_commitment_point = get_per_commitment_point_LDKBaseSign_jcall,
-               .release_commitment_secret = release_commitment_secret_LDKBaseSign_jcall,
-               .validate_holder_commitment = validate_holder_commitment_LDKBaseSign_jcall,
-               .channel_keys_id = channel_keys_id_LDKBaseSign_jcall,
-               .sign_counterparty_commitment = sign_counterparty_commitment_LDKBaseSign_jcall,
-               .validate_counterparty_revocation = validate_counterparty_revocation_LDKBaseSign_jcall,
-               .sign_holder_commitment_and_htlcs = sign_holder_commitment_and_htlcs_LDKBaseSign_jcall,
-               .sign_justice_revoked_output = sign_justice_revoked_output_LDKBaseSign_jcall,
-               .sign_justice_revoked_htlc = sign_justice_revoked_htlc_LDKBaseSign_jcall,
-               .sign_counterparty_htlc_transaction = sign_counterparty_htlc_transaction_LDKBaseSign_jcall,
-               .sign_closing_transaction = sign_closing_transaction_LDKBaseSign_jcall,
-               .sign_channel_announcement = sign_channel_announcement_LDKBaseSign_jcall,
-               .ready_channel = ready_channel_LDKBaseSign_jcall,
-               .free = LDKBaseSign_JCalls_free,
-               .pubkeys = pubkeys_conv,
-               .set_pubkeys = NULL,
-       };
-       return ret;
-}
-long  __attribute__((visibility("default"))) TS_LDKBaseSign_new(/*TODO: JS Object Reference */void* o, uint32_t pubkeys) {
-       LDKBaseSign *res_ptr = MALLOC(sizeof(LDKBaseSign), "LDKBaseSign");
-       *res_ptr = LDKBaseSign_init(o, pubkeys);
-       return (long)res_ptr;
-}
-int8_tArray  __attribute__((visibility("default"))) TS_BaseSign_get_per_commitment_point(uint32_t this_arg, int64_t idx) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), (this_arg_conv->get_per_commitment_point)(this_arg_conv->this_arg, idx).compressed_form, 33);
-       return ret_arr;
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_BaseSign_release_commitment_secret(uint32_t this_arg, int64_t idx) {
+int16_t  __attribute__((visibility("default"))) TS_Type_type_id(uint32_t this_arg) {
        void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
        if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), (this_arg_conv->release_commitment_secret)(this_arg_conv->this_arg, idx).data, 32);
-       return ret_arr;
+       LDKType* this_arg_conv = (LDKType*)this_arg_ptr;
+       int16_t ret_val = (this_arg_conv->type_id)(this_arg_conv->this_arg);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_BaseSign_validate_holder_commitment(uint32_t this_arg, uint32_t holder_tx) {
+jstring  __attribute__((visibility("default"))) TS_Type_debug_str(uint32_t this_arg) {
        void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
        if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
-       LDKHolderCommitmentTransaction holder_tx_conv;
-       holder_tx_conv.inner = (void*)(holder_tx & (~1));
-       holder_tx_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(holder_tx_conv);
-       LDKCResult_NoneNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneNoneZ), "LDKCResult_NoneNoneZ");
-       *ret_conv = (this_arg_conv->validate_holder_commitment)(this_arg_conv->this_arg, &holder_tx_conv);
-       return (uint64_t)ret_conv;
+       LDKType* this_arg_conv = (LDKType*)this_arg_ptr;
+       LDKStr ret_str = (this_arg_conv->debug_str)(this_arg_conv->this_arg);
+       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
+       Str_free(ret_str);
+       return ret_conv;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_BaseSign_channel_keys_id(uint32_t this_arg) {
+int8_tArray  __attribute__((visibility("default"))) TS_Type_write(uint32_t this_arg) {
        void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
        if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), (this_arg_conv->channel_keys_id)(this_arg_conv->this_arg).data, 32);
+       LDKType* this_arg_conv = (LDKType*)this_arg_ptr;
+       LDKCVec_u8Z ret_var = (this_arg_conv->write)(this_arg_conv->this_arg);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_BaseSign_sign_counterparty_commitment(uint32_t this_arg, uint32_t commitment_tx) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
-       LDKCommitmentTransaction commitment_tx_conv;
-       commitment_tx_conv.inner = (void*)(commitment_tx & (~1));
-       commitment_tx_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_tx_conv);
-       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ), "LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ");
-       *ret_conv = (this_arg_conv->sign_counterparty_commitment)(this_arg_conv->this_arg, &commitment_tx_conv);
-       return (uint64_t)ret_conv;
+uint32_t __attribute__((visibility("default"))) TS_LDKCOption_TypeZ_ref_from_ptr(uint32_t ptr) {
+       LDKCOption_TypeZ *obj = (LDKCOption_TypeZ*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKCOption_TypeZ_Some: {
+                       LDKType* some_ret = MALLOC(sizeof(LDKType), "LDKType");
+                       *some_ret = Type_clone(&obj->some);
+                       return 0 /* LDKCOption_TypeZ - Some */; (void) (uint64_t)some_ret;
+               }
+               case LDKCOption_TypeZ_None: {
+                       return 0 /* LDKCOption_TypeZ - None */;
+               }
+               default: abort();
+       }
+}
+static inline struct LDKCOption_TypeZ CResult_COption_TypeZDecodeErrorZ_get_ok(LDKCResult_COption_TypeZDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return COption_TypeZ_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_TypeZDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_COption_TypeZDecodeErrorZ* owner_conv = (LDKCResult_COption_TypeZDecodeErrorZ*)(owner & ~1);
+       LDKCOption_TypeZ *ret_copy = MALLOC(sizeof(LDKCOption_TypeZ), "LDKCOption_TypeZ");
+       *ret_copy = CResult_COption_TypeZDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_BaseSign_validate_counterparty_revocation(uint32_t this_arg, int64_t idx, int8_tArray secret) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
-       unsigned char secret_arr[32];
-       CHECK(*((uint32_t*)secret) == 32);
-       memcpy(secret_arr, (uint8_t*)(secret + 4), 32);
-       unsigned char (*secret_ref)[32] = &secret_arr;
-       LDKCResult_NoneNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneNoneZ), "LDKCResult_NoneNoneZ");
-       *ret_conv = (this_arg_conv->validate_counterparty_revocation)(this_arg_conv->this_arg, idx, secret_ref);
-       return (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_COption_TypeZDecodeErrorZ_get_err(LDKCResult_COption_TypeZDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_TypeZDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_COption_TypeZDecodeErrorZ* owner_conv = (LDKCResult_COption_TypeZDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_COption_TypeZDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_BaseSign_sign_holder_commitment_and_htlcs(uint32_t this_arg, uint32_t commitment_tx) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
-       LDKHolderCommitmentTransaction commitment_tx_conv;
-       commitment_tx_conv.inner = (void*)(commitment_tx & (~1));
-       commitment_tx_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_tx_conv);
-       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ), "LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ");
-       *ret_conv = (this_arg_conv->sign_holder_commitment_and_htlcs)(this_arg_conv->this_arg, &commitment_tx_conv);
-       return (uint64_t)ret_conv;
+static inline struct LDKStr CResult_StringErrorZ_get_ok(LDKCResult_StringErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
+}
+jstring  __attribute__((visibility("default"))) TS_CResult_StringErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_StringErrorZ* owner_conv = (LDKCResult_StringErrorZ*)(owner & ~1);
+       LDKStr ret_str = CResult_StringErrorZ_get_ok(owner_conv);
+       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
+       Str_free(ret_str);
+       return ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_BaseSign_sign_justice_revoked_output(uint32_t this_arg, int8_tArray justice_tx, int64_t input, int64_t amount, int8_tArray per_commitment_key) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
-       LDKTransaction justice_tx_ref;
-       justice_tx_ref.datalen = *((uint32_t*)justice_tx);
-       justice_tx_ref.data = MALLOC(justice_tx_ref.datalen, "LDKTransaction Bytes");
-       memcpy(justice_tx_ref.data, (uint8_t*)(justice_tx + 4), justice_tx_ref.datalen);
-       justice_tx_ref.data_is_owned = true;
-       unsigned char per_commitment_key_arr[32];
-       CHECK(*((uint32_t*)per_commitment_key) == 32);
-       memcpy(per_commitment_key_arr, (uint8_t*)(per_commitment_key + 4), 32);
-       unsigned char (*per_commitment_key_ref)[32] = &per_commitment_key_arr;
-       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
-       *ret_conv = (this_arg_conv->sign_justice_revoked_output)(this_arg_conv->this_arg, justice_tx_ref, input, amount, per_commitment_key_ref);
-       return (uint64_t)ret_conv;
+static inline enum LDKSecp256k1Error CResult_StringErrorZ_get_err(LDKCResult_StringErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_StringErrorZ_get_err(uint32_t owner) {
+       LDKCResult_StringErrorZ* owner_conv = (LDKCResult_StringErrorZ*)(owner & ~1);
+       uint32_t ret_conv = LDKSecp256k1Error_to_js(CResult_StringErrorZ_get_err(owner_conv));
+       return ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_BaseSign_sign_justice_revoked_htlc(uint32_t this_arg, int8_tArray justice_tx, int64_t input, int64_t amount, int8_tArray per_commitment_key, uint32_t htlc) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
-       LDKTransaction justice_tx_ref;
-       justice_tx_ref.datalen = *((uint32_t*)justice_tx);
-       justice_tx_ref.data = MALLOC(justice_tx_ref.datalen, "LDKTransaction Bytes");
-       memcpy(justice_tx_ref.data, (uint8_t*)(justice_tx + 4), justice_tx_ref.datalen);
-       justice_tx_ref.data_is_owned = true;
-       unsigned char per_commitment_key_arr[32];
-       CHECK(*((uint32_t*)per_commitment_key) == 32);
-       memcpy(per_commitment_key_arr, (uint8_t*)(per_commitment_key + 4), 32);
-       unsigned char (*per_commitment_key_ref)[32] = &per_commitment_key_arr;
-       LDKHTLCOutputInCommitment htlc_conv;
-       htlc_conv.inner = (void*)(htlc & (~1));
-       htlc_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_conv);
-       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
-       *ret_conv = (this_arg_conv->sign_justice_revoked_htlc)(this_arg_conv->this_arg, justice_tx_ref, input, amount, per_commitment_key_ref, &htlc_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_BaseSign_sign_counterparty_htlc_transaction(uint32_t this_arg, int8_tArray htlc_tx, int64_t input, int64_t amount, int8_tArray per_commitment_point, uint32_t htlc) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
-       LDKTransaction htlc_tx_ref;
-       htlc_tx_ref.datalen = *((uint32_t*)htlc_tx);
-       htlc_tx_ref.data = MALLOC(htlc_tx_ref.datalen, "LDKTransaction Bytes");
-       memcpy(htlc_tx_ref.data, (uint8_t*)(htlc_tx + 4), htlc_tx_ref.datalen);
-       htlc_tx_ref.data_is_owned = true;
-       LDKPublicKey per_commitment_point_ref;
-       CHECK(*((uint32_t*)per_commitment_point) == 33);
-       memcpy(per_commitment_point_ref.compressed_form, (uint8_t*)(per_commitment_point + 4), 33);
-       LDKHTLCOutputInCommitment htlc_conv;
-       htlc_conv.inner = (void*)(htlc & (~1));
-       htlc_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_conv);
-       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
-       *ret_conv = (this_arg_conv->sign_counterparty_htlc_transaction)(this_arg_conv->this_arg, htlc_tx_ref, input, amount, per_commitment_point_ref, &htlc_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_BaseSign_sign_closing_transaction(uint32_t this_arg, uint32_t closing_tx) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
-       LDKClosingTransaction closing_tx_conv;
-       closing_tx_conv.inner = (void*)(closing_tx & (~1));
-       closing_tx_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(closing_tx_conv);
-       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
-       *ret_conv = (this_arg_conv->sign_closing_transaction)(this_arg_conv->this_arg, &closing_tx_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_BaseSign_sign_channel_announcement(uint32_t this_arg, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
-       LDKUnsignedChannelAnnouncement msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
-       *ret_conv = (this_arg_conv->sign_channel_announcement)(this_arg_conv->this_arg, &msg_conv);
-       return (uint64_t)ret_conv;
+static inline struct LDKChannelMonitorUpdate CResult_ChannelMonitorUpdateDecodeErrorZ_get_ok(LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ChannelMonitorUpdate_clone(&*owner->contents.result);
 }
-
-void  __attribute__((visibility("default"))) TS_BaseSign_ready_channel(uint32_t this_arg, uint32_t channel_parameters) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
-       LDKChannelTransactionParameters channel_parameters_conv;
-       channel_parameters_conv.inner = (void*)(channel_parameters & (~1));
-       channel_parameters_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_parameters_conv);
-       (this_arg_conv->ready_channel)(this_arg_conv->this_arg, &channel_parameters_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelMonitorUpdateDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ChannelMonitorUpdateDecodeErrorZ* owner_conv = (LDKCResult_ChannelMonitorUpdateDecodeErrorZ*)(owner & ~1);
+       LDKChannelMonitorUpdate ret_var = CResult_ChannelMonitorUpdateDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-LDKChannelPublicKeys LDKBaseSign_set_get_pubkeys(LDKBaseSign* this_arg) {
-       if (this_arg->set_pubkeys != NULL)
-               this_arg->set_pubkeys(this_arg);
-       return this_arg->pubkeys;
+static inline struct LDKDecodeError CResult_ChannelMonitorUpdateDecodeErrorZ_get_err(LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-uint32_t  __attribute__((visibility("default"))) TS_BaseSign_get_pubkeys(uint32_t this_arg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
-       LDKChannelPublicKeys ret_var = LDKBaseSign_set_get_pubkeys(this_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelMonitorUpdateDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ChannelMonitorUpdateDecodeErrorZ* owner_conv = (LDKCResult_ChannelMonitorUpdateDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ChannelMonitorUpdateDecodeErrorZ_get_err(owner_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -2337,184 +1002,151 @@ uint32_t  __attribute__((visibility("default"))) TS_BaseSign_get_pubkeys(uint32_
        return ret_ref;
 }
 
-typedef struct LDKSign_JCalls {
-       atomic_size_t refcnt;
-       LDKBaseSign_JCalls* BaseSign;
-       uint32_t write_meth;
-} LDKSign_JCalls;
-static void LDKSign_JCalls_free(void* this_arg) {
-       LDKSign_JCalls *j_calls = (LDKSign_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->write_meth);
-               FREE(j_calls);
+uint32_t __attribute__((visibility("default"))) TS_LDKMonitorEvent_ref_from_ptr(uint32_t ptr) {
+       LDKMonitorEvent *obj = (LDKMonitorEvent*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKMonitorEvent_HTLCEvent: {
+                       LDKHTLCUpdate htlc_event_var = obj->htlc_event;
+                       uint64_t htlc_event_ref = 0;
+                       CHECK((((uint64_t)htlc_event_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&htlc_event_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_event_var);
+                       htlc_event_ref = (uint64_t)htlc_event_var.inner & ~1;
+                       return 0 /* LDKMonitorEvent - HTLCEvent */; (void) htlc_event_ref;
+               }
+               case LDKMonitorEvent_CommitmentTxConfirmed: {
+                       LDKOutPoint commitment_tx_confirmed_var = obj->commitment_tx_confirmed;
+                       uint64_t commitment_tx_confirmed_ref = 0;
+                       CHECK((((uint64_t)commitment_tx_confirmed_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&commitment_tx_confirmed_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_tx_confirmed_var);
+                       commitment_tx_confirmed_ref = (uint64_t)commitment_tx_confirmed_var.inner & ~1;
+                       return 0 /* LDKMonitorEvent - CommitmentTxConfirmed */; (void) commitment_tx_confirmed_ref;
+               }
+               case LDKMonitorEvent_UpdateCompleted: {
+                       LDKOutPoint funding_txo_var = obj->update_completed.funding_txo;
+                       uint64_t funding_txo_ref = 0;
+                       CHECK((((uint64_t)funding_txo_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&funding_txo_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_var);
+                       funding_txo_ref = (uint64_t)funding_txo_var.inner & ~1;
+                       return 0 /* LDKMonitorEvent - UpdateCompleted */; (void) funding_txo_ref; (void) obj->update_completed.monitor_update_id;
+               }
+               case LDKMonitorEvent_UpdateFailed: {
+                       LDKOutPoint update_failed_var = obj->update_failed;
+                       uint64_t update_failed_ref = 0;
+                       CHECK((((uint64_t)update_failed_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&update_failed_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_failed_var);
+                       update_failed_ref = (uint64_t)update_failed_var.inner & ~1;
+                       return 0 /* LDKMonitorEvent - UpdateFailed */; (void) update_failed_ref;
+               }
+               default: abort();
        }
 }
-LDKCVec_u8Z write_LDKSign_jcall(const void* this_arg) {
-       LDKSign_JCalls *j_calls = (LDKSign_JCalls*) this_arg;
-       int8_tArray ret = js_invoke_function_0(j_calls->write_meth);
-       LDKCVec_u8Z ret_ref;
-       ret_ref.datalen = *((uint32_t*)ret);
-       ret_ref.data = MALLOC(ret_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(ret_ref.data, (uint8_t*)(ret + 4), ret_ref.datalen);
-       return ret_ref;
+uint32_t __attribute__((visibility("default"))) TS_LDKCOption_MonitorEventZ_ref_from_ptr(uint32_t ptr) {
+       LDKCOption_MonitorEventZ *obj = (LDKCOption_MonitorEventZ*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKCOption_MonitorEventZ_Some: {
+                       uint64_t some_ref = ((uint64_t)&obj->some) | 1;
+                       return 0 /* LDKCOption_MonitorEventZ - Some */; (void) some_ref;
+               }
+               case LDKCOption_MonitorEventZ_None: {
+                       return 0 /* LDKCOption_MonitorEventZ - None */;
+               }
+               default: abort();
+       }
 }
-static void LDKSign_JCalls_cloned(LDKSign* new_obj) {
-       LDKSign_JCalls *j_calls = (LDKSign_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
-       atomic_fetch_add_explicit(&j_calls->BaseSign->refcnt, 1, memory_order_release);
+static inline struct LDKCOption_MonitorEventZ CResult_COption_MonitorEventZDecodeErrorZ_get_ok(LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return COption_MonitorEventZ_clone(&*owner->contents.result);
 }
-static inline LDKSign LDKSign_init (/*TODO: JS Object Reference */void* o, /*TODO: JS Object Reference */void* BaseSign, uint32_t pubkeys) {
-       LDKSign_JCalls *calls = MALLOC(sizeof(LDKSign_JCalls), "LDKSign_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
-
-       LDKChannelPublicKeys pubkeys_conv;
-       pubkeys_conv.inner = (void*)(pubkeys & (~1));
-       pubkeys_conv.is_owned = (pubkeys & 1) || (pubkeys == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(pubkeys_conv);
-
-       LDKSign ret = {
-               .this_arg = (void*) calls,
-               .write = write_LDKSign_jcall,
-               .cloned = LDKSign_JCalls_cloned,
-               .free = LDKSign_JCalls_free,
-               .BaseSign = LDKBaseSign_init(BaseSign, pubkeys),
-       };
-       calls->BaseSign = ret.BaseSign.this_arg;
-       return ret;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_MonitorEventZDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_COption_MonitorEventZDecodeErrorZ* owner_conv = (LDKCResult_COption_MonitorEventZDecodeErrorZ*)(owner & ~1);
+       LDKCOption_MonitorEventZ *ret_copy = MALLOC(sizeof(LDKCOption_MonitorEventZ), "LDKCOption_MonitorEventZ");
+       *ret_copy = CResult_COption_MonitorEventZDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
-long  __attribute__((visibility("default"))) TS_LDKSign_new(/*TODO: JS Object Reference */void* o, /*TODO: JS Object Reference */ void* BaseSign, uint32_t pubkeys) {
-       LDKSign *res_ptr = MALLOC(sizeof(LDKSign), "LDKSign");
-       *res_ptr = LDKSign_init(o, BaseSign, pubkeys);
-       return (long)res_ptr;
+
+static inline struct LDKDecodeError CResult_COption_MonitorEventZDecodeErrorZ_get_err(LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-int8_tArray  __attribute__((visibility("default"))) TS_Sign_write(uint32_t this_arg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKSign* this_arg_conv = (LDKSign*)this_arg_ptr;
-       LDKCVec_u8Z ret_var = (this_arg_conv->write)(this_arg_conv->this_arg);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_MonitorEventZDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_COption_MonitorEventZDecodeErrorZ* owner_conv = (LDKCResult_COption_MonitorEventZDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_COption_MonitorEventZDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_SignDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_SignDecodeErrorZ *val = (LDKCResult_SignDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKSign* res_ret = MALLOC(sizeof(LDKSign), "LDKSign");
-       *res_ret = Sign_clone(&(*val->contents.result));
-       return (uint64_t)res_ret;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_SignDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_SignDecodeErrorZ *val = (LDKCResult_SignDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-int8_tArray  __attribute__((visibility("default"))) TS_LDKCResult_RecoverableSignatureNoneZ_get_ok(uint32_t arg) {
-       LDKCResult_RecoverableSignatureNoneZ *val = (LDKCResult_RecoverableSignatureNoneZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       int8_tArray es_arr = init_arr(68, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(es_arr + 4), (*val->contents.result).serialized_form, 68);
-       return es_arr;
-}
-void  __attribute__((visibility("default"))) TS_LDKCResult_RecoverableSignatureNoneZ_get_err(uint32_t arg) {
-       LDKCResult_RecoverableSignatureNoneZ *val = (LDKCResult_RecoverableSignatureNoneZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       return *val->contents.err;
+static inline struct LDKHTLCUpdate CResult_HTLCUpdateDecodeErrorZ_get_ok(LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return HTLCUpdate_clone(&*owner->contents.result);
 }
-static inline LDKCVec_CVec_u8ZZ CVec_CVec_u8ZZ_clone(const LDKCVec_CVec_u8ZZ *orig) {
-       LDKCVec_CVec_u8ZZ ret = { .data = MALLOC(sizeof(LDKCVec_u8Z) * orig->datalen, "LDKCVec_CVec_u8ZZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = CVec_u8Z_clone(&orig->data[i]);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_HTLCUpdateDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_HTLCUpdateDecodeErrorZ* owner_conv = (LDKCResult_HTLCUpdateDecodeErrorZ*)(owner & ~1);
+       LDKHTLCUpdate ret_var = CResult_HTLCUpdateDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret;
+       return ret_ref;
 }
-ptrArray  __attribute__((visibility("default"))) TS_LDKCResult_CVec_CVec_u8ZZNoneZ_get_ok(uint32_t arg) {
-       LDKCResult_CVec_CVec_u8ZZNoneZ *val = (LDKCResult_CVec_CVec_u8ZZNoneZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKCVec_CVec_u8ZZ res_var = (*val->contents.result);
-       ptrArray res_arr = NULL;
-       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++) {
-               LDKCVec_u8Z res_conv_12_var = res_var.data[m];
-               int8_tArray res_conv_12_arr = init_arr(res_conv_12_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-               memcpy((uint8_t*)(res_conv_12_arr + 4), res_conv_12_var.data, res_conv_12_var.datalen);
-               res_arr_ptr[m] = res_conv_12_arr;
-       }
-       
-       return res_arr;
-}
-void  __attribute__((visibility("default"))) TS_LDKCResult_CVec_CVec_u8ZZNoneZ_get_err(uint32_t arg) {
-       LDKCResult_CVec_CVec_u8ZZNoneZ *val = (LDKCResult_CVec_CVec_u8ZZNoneZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       return *val->contents.err;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_InMemorySignerDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_InMemorySignerDecodeErrorZ *val = (LDKCResult_InMemorySignerDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKInMemorySigner res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_InMemorySignerDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_InMemorySignerDecodeErrorZ *val = (LDKCResult_InMemorySignerDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
+
+static inline struct LDKDecodeError CResult_HTLCUpdateDecodeErrorZ_get_err(LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-static inline LDKCVec_TxOutZ CVec_TxOutZ_clone(const LDKCVec_TxOutZ *orig) {
-       LDKCVec_TxOutZ ret = { .data = MALLOC(sizeof(LDKTxOut) * orig->datalen, "LDKCVec_TxOutZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = TxOut_clone(&orig->data[i]);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_HTLCUpdateDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_HTLCUpdateDecodeErrorZ* owner_conv = (LDKCResult_HTLCUpdateDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_HTLCUpdateDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret;
+       return ret_ref;
 }
-int8_tArray  __attribute__((visibility("default"))) TS_LDKCResult_TransactionNoneZ_get_ok(uint32_t arg) {
-       LDKCResult_TransactionNoneZ *val = (LDKCResult_TransactionNoneZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKTransaction 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;
+
+static inline void CResult_NoneNoneZ_get_ok(LDKCResult_NoneNoneZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
 }
-void  __attribute__((visibility("default"))) TS_LDKCResult_TransactionNoneZ_get_err(uint32_t arg) {
-       LDKCResult_TransactionNoneZ *val = (LDKCResult_TransactionNoneZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       return *val->contents.err;
+void  __attribute__((visibility("default"))) TS_CResult_NoneNoneZ_get_ok(uint32_t owner) {
+       LDKCResult_NoneNoneZ* owner_conv = (LDKCResult_NoneNoneZ*)(owner & ~1);
+       CResult_NoneNoneZ_get_ok(owner_conv);
 }
-static inline struct LDKThirtyTwoBytes C2Tuple_BlockHashChannelMonitorZ_get_a(LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR tuple){
-       return ThirtyTwoBytes_clone(&tuple->a);
+
+static inline void CResult_NoneNoneZ_get_err(LDKCResult_NoneNoneZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
 }
-int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_get_a(uint32_t tuple) {
-       LDKC2Tuple_BlockHashChannelMonitorZ* tuple_conv = (LDKC2Tuple_BlockHashChannelMonitorZ*)(tuple & ~1);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), C2Tuple_BlockHashChannelMonitorZ_get_a(tuple_conv).data, 32);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_CResult_NoneNoneZ_get_err(uint32_t owner) {
+       LDKCResult_NoneNoneZ* owner_conv = (LDKCResult_NoneNoneZ*)(owner & ~1);
+       CResult_NoneNoneZ_get_err(owner_conv);
 }
 
-static inline struct LDKChannelMonitor C2Tuple_BlockHashChannelMonitorZ_get_b(LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR tuple){
-       return ChannelMonitor_clone(&tuple->b);
+static inline struct LDKOutPoint C2Tuple_OutPointScriptZ_get_a(LDKC2Tuple_OutPointScriptZ *NONNULL_PTR owner){
+       return OutPoint_clone(&owner->a);
 }
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_get_b(uint32_t tuple) {
-       LDKC2Tuple_BlockHashChannelMonitorZ* tuple_conv = (LDKC2Tuple_BlockHashChannelMonitorZ*)(tuple & ~1);
-       LDKChannelMonitor ret_var = C2Tuple_BlockHashChannelMonitorZ_get_b(tuple_conv);
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_OutPointScriptZ_get_a(uint32_t owner) {
+       LDKC2Tuple_OutPointScriptZ* owner_conv = (LDKC2Tuple_OutPointScriptZ*)(owner & ~1);
+       LDKOutPoint ret_var = C2Tuple_OutPointScriptZ_get_a(owner_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -2526,1186 +1158,1103 @@ uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMoni
        return ret_ref;
 }
 
-static inline LDKCVec_C2Tuple_BlockHashChannelMonitorZZ CVec_C2Tuple_BlockHashChannelMonitorZZ_clone(const LDKCVec_C2Tuple_BlockHashChannelMonitorZZ *orig) {
-       LDKCVec_C2Tuple_BlockHashChannelMonitorZZ ret = { .data = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelMonitorZ) * orig->datalen, "LDKCVec_C2Tuple_BlockHashChannelMonitorZZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = C2Tuple_BlockHashChannelMonitorZ_clone(&orig->data[i]);
-       }
-       return ret;
+static inline struct LDKCVec_u8Z C2Tuple_OutPointScriptZ_get_b(LDKC2Tuple_OutPointScriptZ *NONNULL_PTR owner){
+       return CVec_u8Z_clone(&owner->b);
 }
-uint32_tArray  __attribute__((visibility("default"))) TS_LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ *val = (LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKCVec_C2Tuple_BlockHashChannelMonitorZZ res_var = (*val->contents.result);
-       uint32_tArray res_arr = NULL;
-       res_arr = init_arr(res_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
-       uint32_t *res_arr_ptr = (uint32_t*)(res_arr + 4);
-       for (size_t j = 0; j < res_var.datalen; j++) {
-               LDKC2Tuple_BlockHashChannelMonitorZ* res_conv_35_conv = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelMonitorZ), "LDKC2Tuple_BlockHashChannelMonitorZ");
-               *res_conv_35_conv = res_var.data[j];
-               *res_conv_35_conv = C2Tuple_BlockHashChannelMonitorZ_clone(res_conv_35_conv);
-               res_arr_ptr[j] = ((uint64_t)res_conv_35_conv);
-       }
-       
-       return res_arr;
+int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_OutPointScriptZ_get_b(uint32_t owner) {
+       LDKC2Tuple_OutPointScriptZ* owner_conv = (LDKC2Tuple_OutPointScriptZ*)(owner & ~1);
+       LDKCVec_u8Z ret_var = C2Tuple_OutPointScriptZ_get_b(owner_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_get_err(uint32_t arg) {
-       LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ *val = (LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint32_t err_conv = LDKIOError_to_js((*val->contents.err));
-       return err_conv;
+
+static inline uint32_t C2Tuple_u32ScriptZ_get_a(LDKC2Tuple_u32ScriptZ *NONNULL_PTR owner){
+       return owner->a;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKCOption_u16Z_ref_from_ptr(uint32_t ptr) {
-       LDKCOption_u16Z *obj = (LDKCOption_u16Z*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKCOption_u16Z_Some: {
-                       return 0 /* LDKCOption_u16Z - Some */; (void) obj->some;
-               }
-               case LDKCOption_u16Z_None: {
-                       return 0 /* LDKCOption_u16Z - None */;
-               }
-               default: abort();
-       }
+int32_t  __attribute__((visibility("default"))) TS_C2Tuple_u32ScriptZ_get_a(uint32_t owner) {
+       LDKC2Tuple_u32ScriptZ* owner_conv = (LDKC2Tuple_u32ScriptZ*)(owner & ~1);
+       int32_t ret_val = C2Tuple_u32ScriptZ_get_a(owner_conv);
+       return ret_val;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKAPIError_ref_from_ptr(uint32_t ptr) {
-       LDKAPIError *obj = (LDKAPIError*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKAPIError_APIMisuseError: {
-                       LDKStr err_str = obj->api_misuse_error.err;
-                       jstring err_conv = str_ref_to_ts(err_str.chars, err_str.len);
-                       return 0 /* LDKAPIError - APIMisuseError */; (void) err_conv;
-               }
-               case LDKAPIError_FeeRateTooHigh: {
-                       LDKStr err_str = obj->fee_rate_too_high.err;
-                       jstring err_conv = str_ref_to_ts(err_str.chars, err_str.len);
-                       return 0 /* LDKAPIError - FeeRateTooHigh */; (void) err_conv; (void) obj->fee_rate_too_high.feerate;
-               }
-               case LDKAPIError_RouteError: {
-                       LDKStr err_str = obj->route_error.err;
-                       jstring err_conv = str_ref_to_ts(err_str.chars, err_str.len);
-                       return 0 /* LDKAPIError - RouteError */; (void) err_conv;
-               }
-               case LDKAPIError_ChannelUnavailable: {
-                       LDKStr err_str = obj->channel_unavailable.err;
-                       jstring err_conv = str_ref_to_ts(err_str.chars, err_str.len);
-                       return 0 /* LDKAPIError - ChannelUnavailable */; (void) err_conv;
-               }
-               case LDKAPIError_MonitorUpdateFailed: {
-                       return 0 /* LDKAPIError - MonitorUpdateFailed */;
-               }
-               case LDKAPIError_IncompatibleShutdownScript: {
-                       LDKShutdownScript script_var = obj->incompatible_shutdown_script.script;
-                       uint64_t script_ref = 0;
-                       CHECK((((uint64_t)script_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&script_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(script_var);
-                       script_ref = (uint64_t)script_var.inner & ~1;
-                       return 0 /* LDKAPIError - IncompatibleShutdownScript */; (void) script_ref;
-               }
-               default: abort();
-       }
+
+static inline struct LDKCVec_u8Z C2Tuple_u32ScriptZ_get_b(LDKC2Tuple_u32ScriptZ *NONNULL_PTR owner){
+       return CVec_u8Z_clone(&owner->b);
 }
-void  __attribute__((visibility("default"))) TS_LDKCResult_NoneAPIErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_NoneAPIErrorZ *val = (LDKCResult_NoneAPIErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       return *val->contents.result;
+int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_u32ScriptZ_get_b(uint32_t owner) {
+       LDKC2Tuple_u32ScriptZ* owner_conv = (LDKC2Tuple_u32ScriptZ*)(owner & ~1);
+       LDKCVec_u8Z ret_var = C2Tuple_u32ScriptZ_get_b(owner_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_NoneAPIErrorZ_get_err(uint32_t arg) {
-       LDKCResult_NoneAPIErrorZ *val = (LDKCResult_NoneAPIErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint64_t err_ref = ((uint64_t)&(*val->contents.err)) | 1;
-       return err_ref;
+
+static inline struct LDKThirtyTwoBytes C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_a(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR owner){
+       return ThirtyTwoBytes_clone(&owner->a);
 }
-static inline LDKCVec_CResult_NoneAPIErrorZZ CVec_CResult_NoneAPIErrorZZ_clone(const LDKCVec_CResult_NoneAPIErrorZZ *orig) {
-       LDKCVec_CResult_NoneAPIErrorZZ ret = { .data = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ) * orig->datalen, "LDKCVec_CResult_NoneAPIErrorZZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = CResult_NoneAPIErrorZ_clone(&orig->data[i]);
+int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_a(uint32_t owner) {
+       LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* owner_conv = (LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_a(owner_conv).data, 32);
+       return ret_arr;
+}
+
+static inline struct LDKCVec_C2Tuple_u32ScriptZZ C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_b(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR owner){
+       return owner->b;
+}
+uint32_tArray  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_b(uint32_t owner) {
+       LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* owner_conv = (LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ*)(owner & ~1);
+       LDKCVec_C2Tuple_u32ScriptZZ ret_var = C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_b(owner_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t v = 0; v < ret_var.datalen; v++) {
+               LDKC2Tuple_u32ScriptZ* ret_conv_21_conv = MALLOC(sizeof(LDKC2Tuple_u32ScriptZ), "LDKC2Tuple_u32ScriptZ");
+               *ret_conv_21_conv = ret_var.data[v];
+               ret_arr_ptr[v] = ((uint64_t)ret_conv_21_conv);
        }
-       return ret;
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
-static inline LDKCVec_APIErrorZ CVec_APIErrorZ_clone(const LDKCVec_APIErrorZ *orig) {
-       LDKCVec_APIErrorZ ret = { .data = MALLOC(sizeof(LDKAPIError) * orig->datalen, "LDKCVec_APIErrorZ clone bytes"), .datalen = orig->datalen };
+
+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] = APIError_clone(&orig->data[i]);
+               ret.data[i] = MonitorEvent_clone(&orig->data[i]);
        }
        return ret;
 }
-int8_tArray  __attribute__((visibility("default"))) TS_LDKCResult__u832APIErrorZ_get_ok(uint32_t arg) {
-       LDKCResult__u832APIErrorZ *val = (LDKCResult__u832APIErrorZ*)(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).data, 32);
-       return res_arr;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult__u832APIErrorZ_get_err(uint32_t arg) {
-       LDKCResult__u832APIErrorZ *val = (LDKCResult__u832APIErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint64_t err_ref = ((uint64_t)&(*val->contents.err)) | 1;
-       return err_ref;
-}
-uint32_t __attribute__((visibility("default"))) TS_LDKPaymentSendFailure_ref_from_ptr(uint32_t ptr) {
-       LDKPaymentSendFailure *obj = (LDKPaymentSendFailure*)(ptr & ~1);
+uint32_t __attribute__((visibility("default"))) TS_LDKPaymentPurpose_ref_from_ptr(uint32_t ptr) {
+       LDKPaymentPurpose *obj = (LDKPaymentPurpose*)(ptr & ~1);
        switch(obj->tag) {
-               case LDKPaymentSendFailure_ParameterError: {
-                       uint64_t parameter_error_ref = ((uint64_t)&obj->parameter_error) | 1;
-                       return 0 /* LDKPaymentSendFailure - ParameterError */; (void) parameter_error_ref;
+               case LDKPaymentPurpose_InvoicePayment: {
+                       int8_tArray payment_preimage_arr = init_int8_tArray(32);
+                       memcpy(payment_preimage_arr->elems, obj->invoice_payment.payment_preimage.data, 32);
+                       int8_tArray payment_secret_arr = init_int8_tArray(32);
+                       memcpy(payment_secret_arr->elems, obj->invoice_payment.payment_secret.data, 32);
+                       return 0 /* LDKPaymentPurpose - InvoicePayment */; (void) payment_preimage_arr; (void) payment_secret_arr;
                }
-               case LDKPaymentSendFailure_PathParameterError: {
-                       LDKCVec_CResult_NoneAPIErrorZZ path_parameter_error_var = obj->path_parameter_error;
-                       uint32_tArray path_parameter_error_arr = NULL;
-                       path_parameter_error_arr = init_arr(path_parameter_error_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
-                       uint32_t *path_parameter_error_arr_ptr = (uint32_t*)(path_parameter_error_arr + 4);
-                       for (size_t w = 0; w < path_parameter_error_var.datalen; w++) {
-                               LDKCResult_NoneAPIErrorZ* path_parameter_error_conv_22_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
-                               *path_parameter_error_conv_22_conv = path_parameter_error_var.data[w];
-                               *path_parameter_error_conv_22_conv = CResult_NoneAPIErrorZ_clone(path_parameter_error_conv_22_conv);
-                               path_parameter_error_arr_ptr[w] = (uint64_t)path_parameter_error_conv_22_conv;
-                       }
-                       
-                       return 0 /* LDKPaymentSendFailure - PathParameterError */; (void) path_parameter_error_arr;
+               case LDKPaymentPurpose_SpontaneousPayment: {
+                       int8_tArray spontaneous_payment_arr = init_int8_tArray(32);
+                       memcpy(spontaneous_payment_arr->elems, obj->spontaneous_payment.data, 32);
+                       return 0 /* LDKPaymentPurpose - SpontaneousPayment */; (void) spontaneous_payment_arr;
                }
-               case LDKPaymentSendFailure_AllFailedRetrySafe: {
-                       LDKCVec_APIErrorZ all_failed_retry_safe_var = obj->all_failed_retry_safe;
-                       uint32_tArray all_failed_retry_safe_arr = NULL;
-                       all_failed_retry_safe_arr = init_arr(all_failed_retry_safe_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
-                       uint32_t *all_failed_retry_safe_arr_ptr = (uint32_t*)(all_failed_retry_safe_arr + 4);
-                       for (size_t k = 0; k < all_failed_retry_safe_var.datalen; k++) {
-                               uint64_t all_failed_retry_safe_conv_10_ref = ((uint64_t)&all_failed_retry_safe_var.data[k]) | 1;
-                               all_failed_retry_safe_arr_ptr[k] = all_failed_retry_safe_conv_10_ref;
-                       }
-                       
-                       return 0 /* LDKPaymentSendFailure - AllFailedRetrySafe */; (void) all_failed_retry_safe_arr;
+               default: abort();
+       }
+}
+uint32_t __attribute__((visibility("default"))) TS_LDKCOption_u64Z_ref_from_ptr(uint32_t ptr) {
+       LDKCOption_u64Z *obj = (LDKCOption_u64Z*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKCOption_u64Z_Some: {
+                       return 0 /* LDKCOption_u64Z - Some */; (void) obj->some;
                }
-               case LDKPaymentSendFailure_PartialFailure: {
-                       LDKCVec_CResult_NoneAPIErrorZZ results_var = obj->partial_failure.results;
-                       uint32_tArray results_arr = NULL;
-                       results_arr = init_arr(results_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
-                       uint32_t *results_arr_ptr = (uint32_t*)(results_arr + 4);
-                       for (size_t w = 0; w < results_var.datalen; w++) {
-                               LDKCResult_NoneAPIErrorZ* results_conv_22_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
-                               *results_conv_22_conv = results_var.data[w];
-                               *results_conv_22_conv = CResult_NoneAPIErrorZ_clone(results_conv_22_conv);
-                               results_arr_ptr[w] = (uint64_t)results_conv_22_conv;
-                       }
-                       
-                       LDKRouteParameters failed_paths_retry_var = obj->partial_failure.failed_paths_retry;
-                       uint64_t failed_paths_retry_ref = 0;
-                       if ((uint64_t)failed_paths_retry_var.inner > 4096) {
-                               CHECK((((uint64_t)failed_paths_retry_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                               CHECK((((uint64_t)&failed_paths_retry_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(failed_paths_retry_var);
-                               failed_paths_retry_ref = (uint64_t)failed_paths_retry_var.inner & ~1;
-                       }
-                       int8_tArray payment_id_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(payment_id_arr + 4), obj->partial_failure.payment_id.data, 32);
-                       return 0 /* LDKPaymentSendFailure - PartialFailure */; (void) results_arr; (void) failed_paths_retry_ref; (void) payment_id_arr;
+               case LDKCOption_u64Z_None: {
+                       return 0 /* LDKCOption_u64Z - None */;
                }
                default: abort();
        }
 }
-int8_tArray  __attribute__((visibility("default"))) TS_LDKCResult_PaymentIdPaymentSendFailureZ_get_ok(uint32_t arg) {
-       LDKCResult_PaymentIdPaymentSendFailureZ *val = (LDKCResult_PaymentIdPaymentSendFailureZ*)(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).data, 32);
-       return res_arr;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PaymentIdPaymentSendFailureZ_get_err(uint32_t arg) {
-       LDKCResult_PaymentIdPaymentSendFailureZ *val = (LDKCResult_PaymentIdPaymentSendFailureZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint64_t err_ref = ((uint64_t)&(*val->contents.err)) | 1;
-       return err_ref;
-}
-void  __attribute__((visibility("default"))) TS_LDKCResult_NonePaymentSendFailureZ_get_ok(uint32_t arg) {
-       LDKCResult_NonePaymentSendFailureZ *val = (LDKCResult_NonePaymentSendFailureZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       return *val->contents.result;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_NonePaymentSendFailureZ_get_err(uint32_t arg) {
-       LDKCResult_NonePaymentSendFailureZ *val = (LDKCResult_NonePaymentSendFailureZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint64_t err_ref = ((uint64_t)&(*val->contents.err)) | 1;
-       return err_ref;
-}
-static inline struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentIdZ_get_a(LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR tuple){
-       return ThirtyTwoBytes_clone(&tuple->a);
-}
-int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentIdZ_get_a(uint32_t tuple) {
-       LDKC2Tuple_PaymentHashPaymentIdZ* tuple_conv = (LDKC2Tuple_PaymentHashPaymentIdZ*)(tuple & ~1);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), C2Tuple_PaymentHashPaymentIdZ_get_a(tuple_conv).data, 32);
-       return ret_arr;
-}
-
-static inline struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentIdZ_get_b(LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR tuple){
-       return ThirtyTwoBytes_clone(&tuple->b);
-}
-int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentIdZ_get_b(uint32_t tuple) {
-       LDKC2Tuple_PaymentHashPaymentIdZ* tuple_conv = (LDKC2Tuple_PaymentHashPaymentIdZ*)(tuple & ~1);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), C2Tuple_PaymentHashPaymentIdZ_get_b(tuple_conv).data, 32);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_ok(uint32_t arg) {
-       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *val = (LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKC2Tuple_PaymentHashPaymentIdZ* res_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentIdZ), "LDKC2Tuple_PaymentHashPaymentIdZ");
-       *res_conv = (*val->contents.result);
-       *res_conv = C2Tuple_PaymentHashPaymentIdZ_clone(res_conv);
-       return ((uint64_t)res_conv);
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_err(uint32_t arg) {
-       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *val = (LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint64_t err_ref = ((uint64_t)&(*val->contents.err)) | 1;
-       return err_ref;
-}
-uint32_t __attribute__((visibility("default"))) TS_LDKNetAddress_ref_from_ptr(uint32_t ptr) {
-       LDKNetAddress *obj = (LDKNetAddress*)(ptr & ~1);
+uint32_t __attribute__((visibility("default"))) TS_LDKNetworkUpdate_ref_from_ptr(uint32_t ptr) {
+       LDKNetworkUpdate *obj = (LDKNetworkUpdate*)(ptr & ~1);
        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 LDKNetworkUpdate_ChannelUpdateMessage: {
+                       LDKChannelUpdate msg_var = obj->channel_update_message.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKNetworkUpdate - ChannelUpdateMessage */; (void) msg_ref;
                }
-               case LDKNetAddress_OnionV2: {
-                       int8_tArray onion_v2_arr = init_arr(12, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(onion_v2_arr + 4), obj->onion_v2.data, 12);
-                       return 0 /* LDKNetAddress - OnionV2 */; (void) onion_v2_arr;
+               case LDKNetworkUpdate_ChannelClosed: {
+                       return 0 /* LDKNetworkUpdate - ChannelClosed */; (void) obj->channel_closed.short_channel_id; (void) obj->channel_closed.is_permanent;
                }
-               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;
+               case LDKNetworkUpdate_NodeFailure: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->node_failure.node_id.compressed_form, 33);
+                       return 0 /* LDKNetworkUpdate - NodeFailure */; (void) node_id_arr; (void) obj->node_failure.is_permanent;
                }
                default: abort();
        }
 }
-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]);
+uint32_t __attribute__((visibility("default"))) TS_LDKCOption_NetworkUpdateZ_ref_from_ptr(uint32_t ptr) {
+       LDKCOption_NetworkUpdateZ *obj = (LDKCOption_NetworkUpdateZ*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKCOption_NetworkUpdateZ_Some: {
+                       uint64_t some_ref = ((uint64_t)&obj->some) | 1;
+                       return 0 /* LDKCOption_NetworkUpdateZ - Some */; (void) some_ref;
+               }
+               case LDKCOption_NetworkUpdateZ_None: {
+                       return 0 /* LDKCOption_NetworkUpdateZ - None */;
+               }
+               default: abort();
        }
-       return ret;
 }
-static inline struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentSecretZ_get_a(LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR tuple){
-       return ThirtyTwoBytes_clone(&tuple->a);
-}
-int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentSecretZ_get_a(uint32_t tuple) {
-       LDKC2Tuple_PaymentHashPaymentSecretZ* tuple_conv = (LDKC2Tuple_PaymentHashPaymentSecretZ*)(tuple & ~1);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), C2Tuple_PaymentHashPaymentSecretZ_get_a(tuple_conv).data, 32);
-       return ret_arr;
-}
-
-static inline struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentSecretZ_get_b(LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR tuple){
-       return ThirtyTwoBytes_clone(&tuple->b);
-}
-int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentSecretZ_get_b(uint32_t tuple) {
-       LDKC2Tuple_PaymentHashPaymentSecretZ* tuple_conv = (LDKC2Tuple_PaymentHashPaymentSecretZ*)(tuple & ~1);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), C2Tuple_PaymentHashPaymentSecretZ_get_b(tuple_conv).data, 32);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_get_ok(uint32_t arg) {
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *val = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKC2Tuple_PaymentHashPaymentSecretZ* res_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ), "LDKC2Tuple_PaymentHashPaymentSecretZ");
-       *res_conv = (*val->contents.result);
-       *res_conv = C2Tuple_PaymentHashPaymentSecretZ_clone(res_conv);
-       return ((uint64_t)res_conv);
-}
-void  __attribute__((visibility("default"))) TS_LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_get_err(uint32_t arg) {
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *val = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       return *val->contents.err;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *val = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKC2Tuple_PaymentHashPaymentSecretZ* res_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ), "LDKC2Tuple_PaymentHashPaymentSecretZ");
-       *res_conv = (*val->contents.result);
-       *res_conv = C2Tuple_PaymentHashPaymentSecretZ_clone(res_conv);
-       return ((uint64_t)res_conv);
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_err(uint32_t arg) {
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *val = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint64_t err_ref = ((uint64_t)&(*val->contents.err)) | 1;
-       return err_ref;
-}
-int8_tArray  __attribute__((visibility("default"))) TS_LDKCResult_PaymentSecretNoneZ_get_ok(uint32_t arg) {
-       LDKCResult_PaymentSecretNoneZ *val = (LDKCResult_PaymentSecretNoneZ*)(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).data, 32);
-       return res_arr;
-}
-void  __attribute__((visibility("default"))) TS_LDKCResult_PaymentSecretNoneZ_get_err(uint32_t arg) {
-       LDKCResult_PaymentSecretNoneZ *val = (LDKCResult_PaymentSecretNoneZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       return *val->contents.err;
-}
-int8_tArray  __attribute__((visibility("default"))) TS_LDKCResult_PaymentSecretAPIErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_PaymentSecretAPIErrorZ *val = (LDKCResult_PaymentSecretAPIErrorZ*)(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).data, 32);
-       return res_arr;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PaymentSecretAPIErrorZ_get_err(uint32_t arg) {
-       LDKCResult_PaymentSecretAPIErrorZ *val = (LDKCResult_PaymentSecretAPIErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint64_t err_ref = ((uint64_t)&(*val->contents.err)) | 1;
-       return err_ref;
-}
-int8_tArray  __attribute__((visibility("default"))) TS_LDKCResult_PaymentPreimageAPIErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_PaymentPreimageAPIErrorZ *val = (LDKCResult_PaymentPreimageAPIErrorZ*)(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).data, 32);
-       return res_arr;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PaymentPreimageAPIErrorZ_get_err(uint32_t arg) {
-       LDKCResult_PaymentPreimageAPIErrorZ *val = (LDKCResult_PaymentPreimageAPIErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint64_t err_ref = ((uint64_t)&(*val->contents.err)) | 1;
-       return err_ref;
-}
-static inline LDKCVec_ChannelMonitorZ CVec_ChannelMonitorZ_clone(const LDKCVec_ChannelMonitorZ *orig) {
-       LDKCVec_ChannelMonitorZ ret = { .data = MALLOC(sizeof(LDKChannelMonitor) * orig->datalen, "LDKCVec_ChannelMonitorZ clone bytes"), .datalen = orig->datalen };
+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] = ChannelMonitor_clone(&orig->data[i]);
+               ret.data[i] = RouteHop_clone(&orig->data[i]);
        }
        return ret;
 }
-typedef struct LDKWatch_JCalls {
-       atomic_size_t refcnt;
-       uint32_t watch_channel_meth;
-       uint32_t update_channel_meth;
-       uint32_t release_pending_monitor_events_meth;
-} LDKWatch_JCalls;
-static void LDKWatch_JCalls_free(void* this_arg) {
-       LDKWatch_JCalls *j_calls = (LDKWatch_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->watch_channel_meth);
-               js_free(j_calls->update_channel_meth);
-               js_free(j_calls->release_pending_monitor_events_meth);
-               FREE(j_calls);
+uint32_t __attribute__((visibility("default"))) TS_LDKSpendableOutputDescriptor_ref_from_ptr(uint32_t ptr) {
+       LDKSpendableOutputDescriptor *obj = (LDKSpendableOutputDescriptor*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKSpendableOutputDescriptor_StaticOutput: {
+                       LDKOutPoint outpoint_var = obj->static_output.outpoint;
+                       uint64_t outpoint_ref = 0;
+                       CHECK((((uint64_t)outpoint_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&outpoint_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(outpoint_var);
+                       outpoint_ref = (uint64_t)outpoint_var.inner & ~1;
+                       uint64_t output_ref = ((uint64_t)&obj->static_output.output) | 1;
+                       return 0 /* LDKSpendableOutputDescriptor - StaticOutput */; (void) outpoint_ref; (void) (uint64_t)output_ref;
+               }
+               case LDKSpendableOutputDescriptor_DelayedPaymentOutput: {
+                       LDKDelayedPaymentOutputDescriptor delayed_payment_output_var = obj->delayed_payment_output;
+                       uint64_t delayed_payment_output_ref = 0;
+                       CHECK((((uint64_t)delayed_payment_output_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&delayed_payment_output_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(delayed_payment_output_var);
+                       delayed_payment_output_ref = (uint64_t)delayed_payment_output_var.inner & ~1;
+                       return 0 /* LDKSpendableOutputDescriptor - DelayedPaymentOutput */; (void) delayed_payment_output_ref;
+               }
+               case LDKSpendableOutputDescriptor_StaticPaymentOutput: {
+                       LDKStaticPaymentOutputDescriptor static_payment_output_var = obj->static_payment_output;
+                       uint64_t static_payment_output_ref = 0;
+                       CHECK((((uint64_t)static_payment_output_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&static_payment_output_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(static_payment_output_var);
+                       static_payment_output_ref = (uint64_t)static_payment_output_var.inner & ~1;
+                       return 0 /* LDKSpendableOutputDescriptor - StaticPaymentOutput */; (void) static_payment_output_ref;
+               }
+               default: abort();
        }
 }
-LDKCResult_NoneChannelMonitorUpdateErrZ watch_channel_LDKWatch_jcall(const void* this_arg, LDKOutPoint funding_txo, LDKChannelMonitor monitor) {
-       LDKWatch_JCalls *j_calls = (LDKWatch_JCalls*) this_arg;
-       LDKOutPoint funding_txo_var = funding_txo;
-       uint64_t funding_txo_ref = 0;
-       CHECK((((uint64_t)funding_txo_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&funding_txo_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_var);
-       funding_txo_ref = (uint64_t)funding_txo_var.inner;
-       if (funding_txo_var.is_owned) {
-               funding_txo_ref |= 1;
-       }
-       LDKChannelMonitor monitor_var = monitor;
-       uint64_t monitor_ref = 0;
-       CHECK((((uint64_t)monitor_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&monitor_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(monitor_var);
-       monitor_ref = (uint64_t)monitor_var.inner;
-       if (monitor_var.is_owned) {
-               monitor_ref |= 1;
+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]);
        }
-       uint32_t ret = js_invoke_function_2(j_calls->watch_channel_meth, funding_txo_ref, monitor_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_NoneChannelMonitorUpdateErrZ ret_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+       return ret;
 }
-LDKCResult_NoneChannelMonitorUpdateErrZ update_channel_LDKWatch_jcall(const void* this_arg, LDKOutPoint funding_txo, LDKChannelMonitorUpdate update) {
-       LDKWatch_JCalls *j_calls = (LDKWatch_JCalls*) this_arg;
-       LDKOutPoint funding_txo_var = funding_txo;
-       uint64_t funding_txo_ref = 0;
-       CHECK((((uint64_t)funding_txo_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&funding_txo_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_var);
-       funding_txo_ref = (uint64_t)funding_txo_var.inner;
-       if (funding_txo_var.is_owned) {
-               funding_txo_ref |= 1;
+uint32_t __attribute__((visibility("default"))) TS_LDKClosureReason_ref_from_ptr(uint32_t ptr) {
+       LDKClosureReason *obj = (LDKClosureReason*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKClosureReason_CounterpartyForceClosed: {
+                       LDKStr peer_msg_str = obj->counterparty_force_closed.peer_msg;
+                       jstring peer_msg_conv = str_ref_to_ts(peer_msg_str.chars, peer_msg_str.len);
+                       return 0 /* LDKClosureReason - CounterpartyForceClosed */; (void) peer_msg_conv;
+               }
+               case LDKClosureReason_HolderForceClosed: {
+                       return 0 /* LDKClosureReason - HolderForceClosed */;
+               }
+               case LDKClosureReason_CooperativeClosure: {
+                       return 0 /* LDKClosureReason - CooperativeClosure */;
+               }
+               case LDKClosureReason_CommitmentTxConfirmed: {
+                       return 0 /* LDKClosureReason - CommitmentTxConfirmed */;
+               }
+               case LDKClosureReason_FundingTimedOut: {
+                       return 0 /* LDKClosureReason - FundingTimedOut */;
+               }
+               case LDKClosureReason_ProcessingError: {
+                       LDKStr err_str = obj->processing_error.err;
+                       jstring err_conv = str_ref_to_ts(err_str.chars, err_str.len);
+                       return 0 /* LDKClosureReason - ProcessingError */; (void) err_conv;
+               }
+               case LDKClosureReason_DisconnectedPeer: {
+                       return 0 /* LDKClosureReason - DisconnectedPeer */;
+               }
+               case LDKClosureReason_OutdatedChannelManager: {
+                       return 0 /* LDKClosureReason - OutdatedChannelManager */;
+               }
+               default: abort();
        }
-       LDKChannelMonitorUpdate update_var = update;
-       uint64_t update_ref = 0;
-       CHECK((((uint64_t)update_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&update_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_var);
-       update_ref = (uint64_t)update_var.inner;
-       if (update_var.is_owned) {
-               update_ref |= 1;
+}
+uint32_t __attribute__((visibility("default"))) TS_LDKEvent_ref_from_ptr(uint32_t ptr) {
+       LDKEvent *obj = (LDKEvent*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKEvent_FundingGenerationReady: {
+                       int8_tArray temporary_channel_id_arr = init_int8_tArray(32);
+                       memcpy(temporary_channel_id_arr->elems, 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_int8_tArray(output_script_var.datalen);
+                       memcpy(output_script_arr->elems, 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_PaymentReceived: {
+                       int8_tArray payment_hash_arr = init_int8_tArray(32);
+                       memcpy(payment_hash_arr->elems, obj->payment_received.payment_hash.data, 32);
+                       uint64_t purpose_ref = ((uint64_t)&obj->payment_received.purpose) | 1;
+                       return 0 /* LDKEvent - PaymentReceived */; (void) payment_hash_arr; (void) obj->payment_received.amt; (void) purpose_ref;
+               }
+               case LDKEvent_PaymentSent: {
+                       int8_tArray payment_id_arr = init_int8_tArray(32);
+                       memcpy(payment_id_arr->elems, obj->payment_sent.payment_id.data, 32);
+                       int8_tArray payment_preimage_arr = init_int8_tArray(32);
+                       memcpy(payment_preimage_arr->elems, obj->payment_sent.payment_preimage.data, 32);
+                       int8_tArray payment_hash_arr = init_int8_tArray(32);
+                       memcpy(payment_hash_arr->elems, obj->payment_sent.payment_hash.data, 32);
+                       uint64_t fee_paid_msat_ref = ((uint64_t)&obj->payment_sent.fee_paid_msat) | 1;
+                       return 0 /* LDKEvent - PaymentSent */; (void) payment_id_arr; (void) payment_preimage_arr; (void) payment_hash_arr; (void) fee_paid_msat_ref;
+               }
+               case LDKEvent_PaymentPathFailed: {
+                       int8_tArray payment_id_arr = init_int8_tArray(32);
+                       memcpy(payment_id_arr->elems, obj->payment_path_failed.payment_id.data, 32);
+                       int8_tArray payment_hash_arr = init_int8_tArray(32);
+                       memcpy(payment_hash_arr->elems, obj->payment_path_failed.payment_hash.data, 32);
+                       uint64_t network_update_ref = ((uint64_t)&obj->payment_path_failed.network_update) | 1;
+                       LDKCVec_RouteHopZ path_var = obj->payment_path_failed.path;
+                       uint32_tArray path_arr = NULL;
+                       path_arr = init_uint32_tArray(path_var.datalen);
+                       uint32_t *path_arr_ptr = (uint32_t*)(path_arr + 4);
+                       for (size_t k = 0; k < path_var.datalen; k++) {
+                               LDKRouteHop path_conv_10_var = path_var.data[k];
+                               uint64_t path_conv_10_ref = 0;
+                               CHECK((((uint64_t)path_conv_10_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                               CHECK((((uint64_t)&path_conv_10_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_var);
+                               path_conv_10_ref = (uint64_t)path_conv_10_var.inner & ~1;
+                               path_arr_ptr[k] = path_conv_10_ref;
+                       }
+                       
+                       uint64_t short_channel_id_ref = ((uint64_t)&obj->payment_path_failed.short_channel_id) | 1;
+                       LDKRouteParameters retry_var = obj->payment_path_failed.retry;
+                       uint64_t retry_ref = 0;
+                       if ((uint64_t)retry_var.inner > 4096) {
+                               CHECK((((uint64_t)retry_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                               CHECK((((uint64_t)&retry_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(retry_var);
+                               retry_ref = (uint64_t)retry_var.inner & ~1;
+                       }
+                       return 0 /* LDKEvent - PaymentPathFailed */; (void) payment_id_arr; (void) payment_hash_arr; (void) obj->payment_path_failed.rejected_by_dest; (void) network_update_ref; (void) obj->payment_path_failed.all_paths_failed; (void) path_arr; (void) short_channel_id_ref; (void) retry_ref;
+               }
+               case LDKEvent_PaymentFailed: {
+                       int8_tArray payment_id_arr = init_int8_tArray(32);
+                       memcpy(payment_id_arr->elems, obj->payment_failed.payment_id.data, 32);
+                       int8_tArray payment_hash_arr = init_int8_tArray(32);
+                       memcpy(payment_hash_arr->elems, obj->payment_failed.payment_hash.data, 32);
+                       return 0 /* LDKEvent - PaymentFailed */; (void) payment_id_arr; (void) payment_hash_arr;
+               }
+               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 = NULL;
+                       outputs_arr = init_uint32_tArray(outputs_var.datalen);
+                       uint32_t *outputs_arr_ptr = (uint32_t*)(outputs_arr + 4);
+                       for (size_t b = 0; b < outputs_var.datalen; b++) {
+                               uint64_t outputs_conv_27_ref = ((uint64_t)&outputs_var.data[b]) | 1;
+                               outputs_arr_ptr[b] = outputs_conv_27_ref;
+                       }
+                       
+                       return 0 /* LDKEvent - SpendableOutputs */; (void) outputs_arr;
+               }
+               case LDKEvent_PaymentForwarded: {
+                       uint64_t fee_earned_msat_ref = ((uint64_t)&obj->payment_forwarded.fee_earned_msat) | 1;
+                       return 0 /* LDKEvent - PaymentForwarded */; (void) fee_earned_msat_ref; (void) obj->payment_forwarded.claim_from_onchain_tx;
+               }
+               case LDKEvent_ChannelClosed: {
+                       int8_tArray channel_id_arr = init_int8_tArray(32);
+                       memcpy(channel_id_arr->elems, obj->channel_closed.channel_id.data, 32);
+                       uint64_t reason_ref = ((uint64_t)&obj->channel_closed.reason) | 1;
+                       return 0 /* LDKEvent - ChannelClosed */; (void) channel_id_arr; (void) obj->channel_closed.user_channel_id; (void) reason_ref;
+               }
+               case LDKEvent_DiscardFunding: {
+                       int8_tArray channel_id_arr = init_int8_tArray(32);
+                       memcpy(channel_id_arr->elems, obj->discard_funding.channel_id.data, 32);
+                       LDKTransaction transaction_var = obj->discard_funding.transaction;
+                       int8_tArray transaction_arr = init_int8_tArray(transaction_var.datalen);
+                       memcpy(transaction_arr->elems, transaction_var.data, transaction_var.datalen);
+                       return 0 /* LDKEvent - DiscardFunding */; (void) channel_id_arr; (void) transaction_arr;
+               }
+               case LDKEvent_PaymentPathSuccessful: {
+                       int8_tArray payment_id_arr = init_int8_tArray(32);
+                       memcpy(payment_id_arr->elems, obj->payment_path_successful.payment_id.data, 32);
+                       int8_tArray payment_hash_arr = init_int8_tArray(32);
+                       memcpy(payment_hash_arr->elems, obj->payment_path_successful.payment_hash.data, 32);
+                       LDKCVec_RouteHopZ path_var = obj->payment_path_successful.path;
+                       uint32_tArray path_arr = NULL;
+                       path_arr = init_uint32_tArray(path_var.datalen);
+                       uint32_t *path_arr_ptr = (uint32_t*)(path_arr + 4);
+                       for (size_t k = 0; k < path_var.datalen; k++) {
+                               LDKRouteHop path_conv_10_var = path_var.data[k];
+                               uint64_t path_conv_10_ref = 0;
+                               CHECK((((uint64_t)path_conv_10_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                               CHECK((((uint64_t)&path_conv_10_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_var);
+                               path_conv_10_ref = (uint64_t)path_conv_10_var.inner & ~1;
+                               path_arr_ptr[k] = path_conv_10_ref;
+                       }
+                       
+                       return 0 /* LDKEvent - PaymentPathSuccessful */; (void) payment_id_arr; (void) payment_hash_arr; (void) path_arr;
+               }
+               default: abort();
        }
-       uint32_t ret = js_invoke_function_2(j_calls->update_channel_meth, funding_txo_ref, update_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_NoneChannelMonitorUpdateErrZ ret_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
 }
-LDKCVec_MonitorEventZ release_pending_monitor_events_LDKWatch_jcall(const void* this_arg) {
-       LDKWatch_JCalls *j_calls = (LDKWatch_JCalls*) this_arg;
-       uint32_tArray ret = js_invoke_function_0(j_calls->release_pending_monitor_events_meth);
-       LDKCVec_MonitorEventZ ret_constr;
-       ret_constr.datalen = *((uint32_t*)ret);
-       if (ret_constr.datalen > 0)
-               ret_constr.data = MALLOC(ret_constr.datalen * sizeof(LDKMonitorEvent), "LDKCVec_MonitorEventZ Elements");
-       else
-               ret_constr.data = NULL;
-       uint32_t* ret_vals = (uint32_t*)(ret + 4);
-       for (size_t o = 0; o < ret_constr.datalen; o++) {
-               uint32_t ret_conv_14 = ret_vals[o];
-               void* ret_conv_14_ptr = (void*)(((uint64_t)ret_conv_14) & ~1);
-               CHECK_ACCESS(ret_conv_14_ptr);
-               LDKMonitorEvent ret_conv_14_conv = *(LDKMonitorEvent*)(ret_conv_14_ptr);
-               FREE((void*)ret_conv_14);
-               ret_constr.data[o] = ret_conv_14_conv;
+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] = Event_clone(&orig->data[i]);
        }
-       return ret_constr;
+       return ret;
 }
-static void LDKWatch_JCalls_cloned(LDKWatch* new_obj) {
-       LDKWatch_JCalls *j_calls = (LDKWatch_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+static inline uintptr_t C2Tuple_usizeTransactionZ_get_a(LDKC2Tuple_usizeTransactionZ *NONNULL_PTR owner){
+       return owner->a;
+}
+int64_t  __attribute__((visibility("default"))) TS_C2Tuple_usizeTransactionZ_get_a(uint32_t owner) {
+       LDKC2Tuple_usizeTransactionZ* owner_conv = (LDKC2Tuple_usizeTransactionZ*)(owner & ~1);
+       int64_t ret_val = C2Tuple_usizeTransactionZ_get_a(owner_conv);
+       return ret_val;
 }
-static inline LDKWatch LDKWatch_init (/*TODO: JS Object Reference */void* o) {
-       LDKWatch_JCalls *calls = MALLOC(sizeof(LDKWatch_JCalls), "LDKWatch_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
 
-       LDKWatch ret = {
-               .this_arg = (void*) calls,
-               .watch_channel = watch_channel_LDKWatch_jcall,
-               .update_channel = update_channel_LDKWatch_jcall,
-               .release_pending_monitor_events = release_pending_monitor_events_LDKWatch_jcall,
-               .free = LDKWatch_JCalls_free,
-       };
+static inline struct LDKTransaction C2Tuple_usizeTransactionZ_get_b(LDKC2Tuple_usizeTransactionZ *NONNULL_PTR owner){
+       return owner->b;
+}
+int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_usizeTransactionZ_get_b(uint32_t owner) {
+       LDKC2Tuple_usizeTransactionZ* owner_conv = (LDKC2Tuple_usizeTransactionZ*)(owner & ~1);
+       LDKTransaction ret_var = C2Tuple_usizeTransactionZ_get_b(owner_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       Transaction_free(ret_var);
+       return ret_arr;
+}
+
+static inline LDKCVec_C2Tuple_usizeTransactionZZ CVec_C2Tuple_usizeTransactionZZ_clone(const LDKCVec_C2Tuple_usizeTransactionZZ *orig) {
+       LDKCVec_C2Tuple_usizeTransactionZZ ret = { .data = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ) * orig->datalen, "LDKCVec_C2Tuple_usizeTransactionZZ clone bytes"), .datalen = orig->datalen };
+       for (size_t i = 0; i < ret.datalen; i++) {
+               ret.data[i] = C2Tuple_usizeTransactionZ_clone(&orig->data[i]);
+       }
        return ret;
 }
-long  __attribute__((visibility("default"))) TS_LDKWatch_new(/*TODO: JS Object Reference */void* o) {
-       LDKWatch *res_ptr = MALLOC(sizeof(LDKWatch), "LDKWatch");
-       *res_ptr = LDKWatch_init(o);
-       return (long)res_ptr;
+static inline uint32_t C2Tuple_u32TxOutZ_get_a(LDKC2Tuple_u32TxOutZ *NONNULL_PTR owner){
+       return owner->a;
 }
-uint32_t  __attribute__((visibility("default"))) TS_Watch_watch_channel(uint32_t this_arg, uint32_t funding_txo, uint32_t monitor) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKWatch* this_arg_conv = (LDKWatch*)this_arg_ptr;
-       LDKOutPoint funding_txo_conv;
-       funding_txo_conv.inner = (void*)(funding_txo & (~1));
-       funding_txo_conv.is_owned = (funding_txo & 1) || (funding_txo == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_conv);
-       funding_txo_conv = OutPoint_clone(&funding_txo_conv);
-       LDKChannelMonitor monitor_conv;
-       monitor_conv.inner = (void*)(monitor & (~1));
-       monitor_conv.is_owned = (monitor & 1) || (monitor == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(monitor_conv);
-       monitor_conv = ChannelMonitor_clone(&monitor_conv);
-       LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ");
-       *ret_conv = (this_arg_conv->watch_channel)(this_arg_conv->this_arg, funding_txo_conv, monitor_conv);
-       return (uint64_t)ret_conv;
+int32_t  __attribute__((visibility("default"))) TS_C2Tuple_u32TxOutZ_get_a(uint32_t owner) {
+       LDKC2Tuple_u32TxOutZ* owner_conv = (LDKC2Tuple_u32TxOutZ*)(owner & ~1);
+       int32_t ret_val = C2Tuple_u32TxOutZ_get_a(owner_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Watch_update_channel(uint32_t this_arg, uint32_t funding_txo, uint32_t update) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKWatch* this_arg_conv = (LDKWatch*)this_arg_ptr;
-       LDKOutPoint funding_txo_conv;
-       funding_txo_conv.inner = (void*)(funding_txo & (~1));
-       funding_txo_conv.is_owned = (funding_txo & 1) || (funding_txo == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_conv);
-       funding_txo_conv = OutPoint_clone(&funding_txo_conv);
-       LDKChannelMonitorUpdate update_conv;
-       update_conv.inner = (void*)(update & (~1));
-       update_conv.is_owned = (update & 1) || (update == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_conv);
-       update_conv = ChannelMonitorUpdate_clone(&update_conv);
-       LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ");
-       *ret_conv = (this_arg_conv->update_channel)(this_arg_conv->this_arg, funding_txo_conv, update_conv);
-       return (uint64_t)ret_conv;
+static inline struct LDKTxOut C2Tuple_u32TxOutZ_get_b(LDKC2Tuple_u32TxOutZ *NONNULL_PTR owner){
+       return TxOut_clone(&owner->b);
+}
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_u32TxOutZ_get_b(uint32_t owner) {
+       LDKC2Tuple_u32TxOutZ* owner_conv = (LDKC2Tuple_u32TxOutZ*)(owner & ~1);
+       LDKTxOut* ret_ref = MALLOC(sizeof(LDKTxOut), "LDKTxOut");
+       *ret_ref = C2Tuple_u32TxOutZ_get_b(owner_conv);
+       return (uint64_t)ret_ref;
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_Watch_release_pending_monitor_events(uint32_t this_arg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKWatch* this_arg_conv = (LDKWatch*)this_arg_ptr;
-       LDKCVec_MonitorEventZ ret_var = (this_arg_conv->release_pending_monitor_events)(this_arg_conv->this_arg);
+static inline LDKCVec_C2Tuple_u32TxOutZZ CVec_C2Tuple_u32TxOutZZ_clone(const LDKCVec_C2Tuple_u32TxOutZZ *orig) {
+       LDKCVec_C2Tuple_u32TxOutZZ ret = { .data = MALLOC(sizeof(LDKC2Tuple_u32TxOutZ) * orig->datalen, "LDKCVec_C2Tuple_u32TxOutZZ clone bytes"), .datalen = orig->datalen };
+       for (size_t i = 0; i < ret.datalen; i++) {
+               ret.data[i] = C2Tuple_u32TxOutZ_clone(&orig->data[i]);
+       }
+       return ret;
+}
+static inline struct LDKThirtyTwoBytes C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_a(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR owner){
+       return ThirtyTwoBytes_clone(&owner->a);
+}
+int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_a(uint32_t owner) {
+       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* owner_conv = (LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_a(owner_conv).data, 32);
+       return ret_arr;
+}
+
+static inline struct LDKCVec_C2Tuple_u32TxOutZZ C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_b(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR owner){
+       return CVec_C2Tuple_u32TxOutZZ_clone(&owner->b);
+}
+uint32_tArray  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_b(uint32_t owner) {
+       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* owner_conv = (LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ*)(owner & ~1);
+       LDKCVec_C2Tuple_u32TxOutZZ ret_var = C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_b(owner_conv);
        uint32_tArray ret_arr = NULL;
-       ret_arr = init_arr(ret_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
+       ret_arr = init_uint32_tArray(ret_var.datalen);
        uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
-       for (size_t o = 0; o < ret_var.datalen; o++) {
-               LDKMonitorEvent *ret_conv_14_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
-               *ret_conv_14_copy = ret_var.data[o];
-               uint64_t ret_conv_14_ref = (uint64_t)ret_conv_14_copy;
-               ret_arr_ptr[o] = ret_conv_14_ref;
+       for (size_t u = 0; u < ret_var.datalen; u++) {
+               LDKC2Tuple_u32TxOutZ* ret_conv_20_conv = MALLOC(sizeof(LDKC2Tuple_u32TxOutZ), "LDKC2Tuple_u32TxOutZ");
+               *ret_conv_20_conv = ret_var.data[u];
+               ret_arr_ptr[u] = ((uint64_t)ret_conv_20_conv);
        }
        
        FREE(ret_var.data);
        return ret_arr;
 }
 
-typedef struct LDKBroadcasterInterface_JCalls {
-       atomic_size_t refcnt;
-       uint32_t broadcast_transaction_meth;
-} LDKBroadcasterInterface_JCalls;
-static void LDKBroadcasterInterface_JCalls_free(void* this_arg) {
-       LDKBroadcasterInterface_JCalls *j_calls = (LDKBroadcasterInterface_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->broadcast_transaction_meth);
-               FREE(j_calls);
+static inline LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_clone(const LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ *orig) {
+       LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ret = { .data = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ) * orig->datalen, "LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ clone bytes"), .datalen = orig->datalen };
+       for (size_t i = 0; i < ret.datalen; i++) {
+               ret.data[i] = C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone(&orig->data[i]);
        }
+       return ret;
 }
-void broadcast_transaction_LDKBroadcasterInterface_jcall(const void* this_arg, LDKTransaction tx) {
-       LDKBroadcasterInterface_JCalls *j_calls = (LDKBroadcasterInterface_JCalls*) this_arg;
-       LDKTransaction tx_var = tx;
-       int8_tArray tx_arr = init_arr(tx_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(tx_arr + 4), tx_var.data, tx_var.datalen);
-       Transaction_free(tx_var);
-       js_invoke_function_1(j_calls->broadcast_transaction_meth, tx_arr);
+static inline LDKCVec_TxidZ CVec_ThirtyTwoBytesZ_clone(const LDKCVec_TxidZ *orig) {
+       LDKCVec_TxidZ ret = { .data = MALLOC(sizeof(LDKThirtyTwoBytes) * orig->datalen, "LDKCVec_TxidZ clone bytes"), .datalen = orig->datalen };
+       for (size_t i = 0; i < ret.datalen; i++) {
+               ret.data[i] = ThirtyTwoBytes_clone(&orig->data[i]);
+       }
+       return ret;
 }
-static void LDKBroadcasterInterface_JCalls_cloned(LDKBroadcasterInterface* new_obj) {
-       LDKBroadcasterInterface_JCalls *j_calls = (LDKBroadcasterInterface_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+uint32_t __attribute__((visibility("default"))) TS_LDKBalance_ref_from_ptr(uint32_t ptr) {
+       LDKBalance *obj = (LDKBalance*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKBalance_ClaimableOnChannelClose: {
+                       return 0 /* LDKBalance - ClaimableOnChannelClose */; (void) obj->claimable_on_channel_close.claimable_amount_satoshis;
+               }
+               case LDKBalance_ClaimableAwaitingConfirmations: {
+                       return 0 /* LDKBalance - ClaimableAwaitingConfirmations */; (void) obj->claimable_awaiting_confirmations.claimable_amount_satoshis; (void) obj->claimable_awaiting_confirmations.confirmation_height;
+               }
+               case LDKBalance_ContentiousClaimable: {
+                       return 0 /* LDKBalance - ContentiousClaimable */; (void) obj->contentious_claimable.claimable_amount_satoshis; (void) obj->contentious_claimable.timeout_height;
+               }
+               case LDKBalance_MaybeClaimableHTLCAwaitingTimeout: {
+                       return 0 /* LDKBalance - MaybeClaimableHTLCAwaitingTimeout */; (void) obj->maybe_claimable_htlc_awaiting_timeout.claimable_amount_satoshis; (void) obj->maybe_claimable_htlc_awaiting_timeout.claimable_height;
+               }
+               default: abort();
+       }
 }
-static inline LDKBroadcasterInterface LDKBroadcasterInterface_init (/*TODO: JS Object Reference */void* o) {
-       LDKBroadcasterInterface_JCalls *calls = MALLOC(sizeof(LDKBroadcasterInterface_JCalls), "LDKBroadcasterInterface_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
-
-       LDKBroadcasterInterface ret = {
-               .this_arg = (void*) calls,
-               .broadcast_transaction = broadcast_transaction_LDKBroadcasterInterface_jcall,
-               .free = LDKBroadcasterInterface_JCalls_free,
-       };
+static inline LDKCVec_BalanceZ CVec_BalanceZ_clone(const LDKCVec_BalanceZ *orig) {
+       LDKCVec_BalanceZ ret = { .data = MALLOC(sizeof(LDKBalance) * orig->datalen, "LDKCVec_BalanceZ clone bytes"), .datalen = orig->datalen };
+       for (size_t i = 0; i < ret.datalen; i++) {
+               ret.data[i] = Balance_clone(&orig->data[i]);
+       }
        return ret;
 }
-long  __attribute__((visibility("default"))) TS_LDKBroadcasterInterface_new(/*TODO: JS Object Reference */void* o) {
-       LDKBroadcasterInterface *res_ptr = MALLOC(sizeof(LDKBroadcasterInterface), "LDKBroadcasterInterface");
-       *res_ptr = LDKBroadcasterInterface_init(o);
-       return (long)res_ptr;
+static inline struct LDKSignature C2Tuple_SignatureCVec_SignatureZZ_get_a(LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR owner){
+       return owner->a;
 }
-void  __attribute__((visibility("default"))) TS_BroadcasterInterface_broadcast_transaction(uint32_t this_arg, int8_tArray tx) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBroadcasterInterface* this_arg_conv = (LDKBroadcasterInterface*)this_arg_ptr;
-       LDKTransaction tx_ref;
-       tx_ref.datalen = *((uint32_t*)tx);
-       tx_ref.data = MALLOC(tx_ref.datalen, "LDKTransaction Bytes");
-       memcpy(tx_ref.data, (uint8_t*)(tx + 4), tx_ref.datalen);
-       tx_ref.data_is_owned = true;
-       (this_arg_conv->broadcast_transaction)(this_arg_conv->this_arg, tx_ref);
+int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_SignatureCVec_SignatureZZ_get_a(uint32_t owner) {
+       LDKC2Tuple_SignatureCVec_SignatureZZ* owner_conv = (LDKC2Tuple_SignatureCVec_SignatureZZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, C2Tuple_SignatureCVec_SignatureZZ_get_a(owner_conv).compact_form, 64);
+       return ret_arr;
 }
 
-typedef struct LDKKeysInterface_JCalls {
+static inline struct LDKCVec_SignatureZ C2Tuple_SignatureCVec_SignatureZZ_get_b(LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR owner){
+       return owner->b;
+}
+ptrArray  __attribute__((visibility("default"))) TS_C2Tuple_SignatureCVec_SignatureZZ_get_b(uint32_t owner) {
+       LDKC2Tuple_SignatureCVec_SignatureZZ* owner_conv = (LDKC2Tuple_SignatureCVec_SignatureZZ*)(owner & ~1);
+       LDKCVec_SignatureZ ret_var = C2Tuple_SignatureCVec_SignatureZZ_get_b(owner_conv);
+       ptrArray ret_arr = NULL;
+       ret_arr = init_ptrArray(ret_var.datalen);
+       int8_tArray *ret_arr_ptr = (int8_tArray*)(ret_arr + 4);
+       for (size_t m = 0; m < ret_var.datalen; m++) {
+               int8_tArray ret_conv_12_arr = init_int8_tArray(64);
+               memcpy(ret_conv_12_arr->elems, ret_var.data[m].compact_form, 64);
+               ret_arr_ptr[m] = ret_conv_12_arr;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
+}
+
+static inline struct LDKC2Tuple_SignatureCVec_SignatureZZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_ok(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return C2Tuple_SignatureCVec_SignatureZZ_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_ok(uint32_t owner) {
+       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* owner_conv = (LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(owner & ~1);
+       LDKC2Tuple_SignatureCVec_SignatureZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ), "LDKC2Tuple_SignatureCVec_SignatureZZ");
+       *ret_conv = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_ok(owner_conv);
+       return ((uint64_t)ret_conv);
+}
+
+static inline void CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_err(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
+}
+void  __attribute__((visibility("default"))) TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_err(uint32_t owner) {
+       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* owner_conv = (LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(owner & ~1);
+       CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_err(owner_conv);
+}
+
+static inline struct LDKSignature CResult_SignatureNoneZ_get_ok(LDKCResult_SignatureNoneZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
+}
+int8_tArray  __attribute__((visibility("default"))) TS_CResult_SignatureNoneZ_get_ok(uint32_t owner) {
+       LDKCResult_SignatureNoneZ* owner_conv = (LDKCResult_SignatureNoneZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, CResult_SignatureNoneZ_get_ok(owner_conv).compact_form, 64);
+       return ret_arr;
+}
+
+static inline void CResult_SignatureNoneZ_get_err(LDKCResult_SignatureNoneZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
+}
+void  __attribute__((visibility("default"))) TS_CResult_SignatureNoneZ_get_err(uint32_t owner) {
+       LDKCResult_SignatureNoneZ* owner_conv = (LDKCResult_SignatureNoneZ*)(owner & ~1);
+       CResult_SignatureNoneZ_get_err(owner_conv);
+}
+
+typedef struct LDKBaseSign_JCalls {
        atomic_size_t refcnt;
-       uint32_t get_node_secret_meth;
-       uint32_t get_destination_script_meth;
-       uint32_t get_shutdown_scriptpubkey_meth;
-       uint32_t get_channel_signer_meth;
-       uint32_t get_secure_random_bytes_meth;
-       uint32_t read_chan_signer_meth;
-       uint32_t sign_invoice_meth;
-       uint32_t get_inbound_payment_key_material_meth;
-} LDKKeysInterface_JCalls;
-static void LDKKeysInterface_JCalls_free(void* this_arg) {
-       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
+       uint32_t get_per_commitment_point_meth;
+       uint32_t release_commitment_secret_meth;
+       uint32_t validate_holder_commitment_meth;
+       uint32_t channel_keys_id_meth;
+       uint32_t sign_counterparty_commitment_meth;
+       uint32_t validate_counterparty_revocation_meth;
+       uint32_t sign_holder_commitment_and_htlcs_meth;
+       uint32_t sign_justice_revoked_output_meth;
+       uint32_t sign_justice_revoked_htlc_meth;
+       uint32_t sign_counterparty_htlc_transaction_meth;
+       uint32_t sign_closing_transaction_meth;
+       uint32_t sign_channel_announcement_meth;
+       uint32_t ready_channel_meth;
+} LDKBaseSign_JCalls;
+static void LDKBaseSign_JCalls_free(void* this_arg) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
        if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->get_node_secret_meth);
-               js_free(j_calls->get_destination_script_meth);
-               js_free(j_calls->get_shutdown_scriptpubkey_meth);
-               js_free(j_calls->get_channel_signer_meth);
-               js_free(j_calls->get_secure_random_bytes_meth);
-               js_free(j_calls->read_chan_signer_meth);
-               js_free(j_calls->sign_invoice_meth);
-               js_free(j_calls->get_inbound_payment_key_material_meth);
+               js_free_function_ptr(j_calls->get_per_commitment_point_meth);
+               js_free_function_ptr(j_calls->release_commitment_secret_meth);
+               js_free_function_ptr(j_calls->validate_holder_commitment_meth);
+               js_free_function_ptr(j_calls->channel_keys_id_meth);
+               js_free_function_ptr(j_calls->sign_counterparty_commitment_meth);
+               js_free_function_ptr(j_calls->validate_counterparty_revocation_meth);
+               js_free_function_ptr(j_calls->sign_holder_commitment_and_htlcs_meth);
+               js_free_function_ptr(j_calls->sign_justice_revoked_output_meth);
+               js_free_function_ptr(j_calls->sign_justice_revoked_htlc_meth);
+               js_free_function_ptr(j_calls->sign_counterparty_htlc_transaction_meth);
+               js_free_function_ptr(j_calls->sign_closing_transaction_meth);
+               js_free_function_ptr(j_calls->sign_channel_announcement_meth);
+               js_free_function_ptr(j_calls->ready_channel_meth);
                FREE(j_calls);
        }
 }
-LDKSecretKey get_node_secret_LDKKeysInterface_jcall(const void* this_arg) {
-       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
-       int8_tArray ret = js_invoke_function_0(j_calls->get_node_secret_meth);
-       LDKSecretKey ret_ref;
-       CHECK(*((uint32_t*)ret) == 32);
-       memcpy(ret_ref.bytes, (uint8_t*)(ret + 4), 32);
+LDKPublicKey get_per_commitment_point_LDKBaseSign_jcall(const void* this_arg, uint64_t idx) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
+       int8_tArray ret = (int8_tArray)js_invoke_function_1(j_calls->get_per_commitment_point_meth, (uint32_t)idx);
+       LDKPublicKey ret_ref;
+       CHECK(ret->arr_len == 33);
+       memcpy(ret_ref.compressed_form, ret->elems, 33);
        return ret_ref;
 }
-LDKCVec_u8Z get_destination_script_LDKKeysInterface_jcall(const void* this_arg) {
-       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
-       int8_tArray ret = js_invoke_function_0(j_calls->get_destination_script_meth);
-       LDKCVec_u8Z ret_ref;
-       ret_ref.datalen = *((uint32_t*)ret);
-       ret_ref.data = MALLOC(ret_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(ret_ref.data, (uint8_t*)(ret + 4), ret_ref.datalen);
+LDKThirtyTwoBytes release_commitment_secret_LDKBaseSign_jcall(const void* this_arg, uint64_t idx) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
+       int8_tArray ret = (int8_tArray)js_invoke_function_1(j_calls->release_commitment_secret_meth, (uint32_t)idx);
+       LDKThirtyTwoBytes ret_ref;
+       CHECK(ret->arr_len == 32);
+       memcpy(ret_ref.data, ret->elems, 32);
        return ret_ref;
 }
-LDKShutdownScript get_shutdown_scriptpubkey_LDKKeysInterface_jcall(const void* this_arg) {
-       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
-       uint32_t ret = js_invoke_function_0(j_calls->get_shutdown_scriptpubkey_meth);
-       LDKShutdownScript ret_conv;
-       ret_conv.inner = (void*)(ret & (~1));
-       ret_conv.is_owned = (ret & 1) || (ret == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv);
-       return ret_conv;
-}
-LDKSign get_channel_signer_LDKKeysInterface_jcall(const void* this_arg, bool inbound, uint64_t channel_value_satoshis) {
-       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
-       uint32_t ret = js_invoke_function_2(j_calls->get_channel_signer_meth, inbound, channel_value_satoshis);
+LDKCResult_NoneNoneZ validate_holder_commitment_LDKBaseSign_jcall(const void* this_arg, const LDKHolderCommitmentTransaction * holder_tx) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
+       LDKHolderCommitmentTransaction holder_tx_var = *holder_tx;
+       uint64_t holder_tx_ref = 0;
+       holder_tx_var = HolderCommitmentTransaction_clone(holder_tx);
+       CHECK((((uint64_t)holder_tx_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&holder_tx_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(holder_tx_var);
+       holder_tx_ref = (uint64_t)holder_tx_var.inner;
+       if (holder_tx_var.is_owned) {
+               holder_tx_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_1(j_calls->validate_holder_commitment_meth, (uint32_t)holder_tx_ref);
        void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
        CHECK_ACCESS(ret_ptr);
-       LDKSign ret_conv = *(LDKSign*)(ret_ptr);
+       LDKCResult_NoneNoneZ ret_conv = *(LDKCResult_NoneNoneZ*)(ret_ptr);
        FREE((void*)ret);
        return ret_conv;
 }
-LDKThirtyTwoBytes get_secure_random_bytes_LDKKeysInterface_jcall(const void* this_arg) {
-       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
-       int8_tArray ret = js_invoke_function_0(j_calls->get_secure_random_bytes_meth);
+LDKThirtyTwoBytes channel_keys_id_LDKBaseSign_jcall(const void* this_arg) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
+       int8_tArray ret = (int8_tArray)js_invoke_function_0(j_calls->channel_keys_id_meth);
        LDKThirtyTwoBytes ret_ref;
-       CHECK(*((uint32_t*)ret) == 32);
-       memcpy(ret_ref.data, (uint8_t*)(ret + 4), 32);
+       CHECK(ret->arr_len == 32);
+       memcpy(ret_ref.data, ret->elems, 32);
        return ret_ref;
 }
-LDKCResult_SignDecodeErrorZ read_chan_signer_LDKKeysInterface_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);
-       uint32_t ret = js_invoke_function_1(j_calls->read_chan_signer_meth, reader_arr);
+LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_counterparty_commitment_LDKBaseSign_jcall(const void* this_arg, const LDKCommitmentTransaction * commitment_tx) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
+       LDKCommitmentTransaction commitment_tx_var = *commitment_tx;
+       uint64_t commitment_tx_ref = 0;
+       commitment_tx_var = CommitmentTransaction_clone(commitment_tx);
+       CHECK((((uint64_t)commitment_tx_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&commitment_tx_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_tx_var);
+       commitment_tx_ref = (uint64_t)commitment_tx_var.inner;
+       if (commitment_tx_var.is_owned) {
+               commitment_tx_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_1(j_calls->sign_counterparty_commitment_meth, (uint32_t)commitment_tx_ref);
        void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
        CHECK_ACCESS(ret_ptr);
-       LDKCResult_SignDecodeErrorZ ret_conv = *(LDKCResult_SignDecodeErrorZ*)(ret_ptr);
+       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret_conv = *(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(ret_ptr);
        FREE((void*)ret);
        return ret_conv;
 }
-LDKCResult_RecoverableSignatureNoneZ sign_invoice_LDKKeysInterface_jcall(const void* this_arg, LDKCVec_u8Z invoice_preimage) {
-       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
-       LDKCVec_u8Z invoice_preimage_var = invoice_preimage;
-       int8_tArray invoice_preimage_arr = init_arr(invoice_preimage_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(invoice_preimage_arr + 4), invoice_preimage_var.data, invoice_preimage_var.datalen);
-       CVec_u8Z_free(invoice_preimage_var);
-       uint32_t ret = js_invoke_function_1(j_calls->sign_invoice_meth, invoice_preimage_arr);
+LDKCResult_NoneNoneZ validate_counterparty_revocation_LDKBaseSign_jcall(const void* this_arg, uint64_t idx, const uint8_t (* secret)[32]) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
+       int8_tArray secret_arr = init_int8_tArray(32);
+       memcpy(secret_arr->elems, *secret, 32);
+       uint32_t ret = js_invoke_function_2(j_calls->validate_counterparty_revocation_meth, (uint32_t)idx, (uint32_t)secret_arr);
        void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
        CHECK_ACCESS(ret_ptr);
-       LDKCResult_RecoverableSignatureNoneZ ret_conv = *(LDKCResult_RecoverableSignatureNoneZ*)(ret_ptr);
+       LDKCResult_NoneNoneZ ret_conv = *(LDKCResult_NoneNoneZ*)(ret_ptr);
        FREE((void*)ret);
        return ret_conv;
 }
-LDKThirtyTwoBytes get_inbound_payment_key_material_LDKKeysInterface_jcall(const void* this_arg) {
-       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
-       int8_tArray ret = js_invoke_function_0(j_calls->get_inbound_payment_key_material_meth);
-       LDKThirtyTwoBytes ret_ref;
-       CHECK(*((uint32_t*)ret) == 32);
-       memcpy(ret_ref.data, (uint8_t*)(ret + 4), 32);
-       return ret_ref;
-}
-static void LDKKeysInterface_JCalls_cloned(LDKKeysInterface* new_obj) {
-       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
-}
-static inline LDKKeysInterface LDKKeysInterface_init (/*TODO: JS Object Reference */void* o) {
-       LDKKeysInterface_JCalls *calls = MALLOC(sizeof(LDKKeysInterface_JCalls), "LDKKeysInterface_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
-
-       LDKKeysInterface ret = {
-               .this_arg = (void*) calls,
-               .get_node_secret = get_node_secret_LDKKeysInterface_jcall,
-               .get_destination_script = get_destination_script_LDKKeysInterface_jcall,
-               .get_shutdown_scriptpubkey = get_shutdown_scriptpubkey_LDKKeysInterface_jcall,
-               .get_channel_signer = get_channel_signer_LDKKeysInterface_jcall,
-               .get_secure_random_bytes = get_secure_random_bytes_LDKKeysInterface_jcall,
-               .read_chan_signer = read_chan_signer_LDKKeysInterface_jcall,
-               .sign_invoice = sign_invoice_LDKKeysInterface_jcall,
-               .get_inbound_payment_key_material = get_inbound_payment_key_material_LDKKeysInterface_jcall,
-               .free = LDKKeysInterface_JCalls_free,
-       };
-       return ret;
-}
-long  __attribute__((visibility("default"))) TS_LDKKeysInterface_new(/*TODO: JS Object Reference */void* o) {
-       LDKKeysInterface *res_ptr = MALLOC(sizeof(LDKKeysInterface), "LDKKeysInterface");
-       *res_ptr = LDKKeysInterface_init(o);
-       return (long)res_ptr;
+LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_holder_commitment_and_htlcs_LDKBaseSign_jcall(const void* this_arg, const LDKHolderCommitmentTransaction * commitment_tx) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
+       LDKHolderCommitmentTransaction commitment_tx_var = *commitment_tx;
+       uint64_t commitment_tx_ref = 0;
+       commitment_tx_var = HolderCommitmentTransaction_clone(commitment_tx);
+       CHECK((((uint64_t)commitment_tx_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&commitment_tx_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_tx_var);
+       commitment_tx_ref = (uint64_t)commitment_tx_var.inner;
+       if (commitment_tx_var.is_owned) {
+               commitment_tx_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_1(j_calls->sign_holder_commitment_and_htlcs_meth, (uint32_t)commitment_tx_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret_conv = *(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
 }
-int8_tArray  __attribute__((visibility("default"))) TS_KeysInterface_get_node_secret(uint32_t this_arg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), (this_arg_conv->get_node_secret)(this_arg_conv->this_arg).bytes, 32);
-       return ret_arr;
+LDKCResult_SignatureNoneZ sign_justice_revoked_output_LDKBaseSign_jcall(const void* this_arg, LDKTransaction justice_tx, uintptr_t input, uint64_t amount, const uint8_t (* per_commitment_key)[32]) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
+       LDKTransaction justice_tx_var = justice_tx;
+       int8_tArray justice_tx_arr = init_int8_tArray(justice_tx_var.datalen);
+       memcpy(justice_tx_arr->elems, justice_tx_var.data, justice_tx_var.datalen);
+       Transaction_free(justice_tx_var);
+       int8_tArray per_commitment_key_arr = init_int8_tArray(32);
+       memcpy(per_commitment_key_arr->elems, *per_commitment_key, 32);
+       uint32_t ret = js_invoke_function_4(j_calls->sign_justice_revoked_output_meth, (uint32_t)justice_tx_arr, (uint32_t)input, (uint32_t)amount, (uint32_t)per_commitment_key_arr);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_SignatureNoneZ ret_conv = *(LDKCResult_SignatureNoneZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
 }
-
-int8_tArray  __attribute__((visibility("default"))) TS_KeysInterface_get_destination_script(uint32_t this_arg) {
+LDKCResult_SignatureNoneZ sign_justice_revoked_htlc_LDKBaseSign_jcall(const void* this_arg, LDKTransaction justice_tx, uintptr_t input, uint64_t amount, const uint8_t (* per_commitment_key)[32], const LDKHTLCOutputInCommitment * htlc) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
+       LDKTransaction justice_tx_var = justice_tx;
+       int8_tArray justice_tx_arr = init_int8_tArray(justice_tx_var.datalen);
+       memcpy(justice_tx_arr->elems, justice_tx_var.data, justice_tx_var.datalen);
+       Transaction_free(justice_tx_var);
+       int8_tArray per_commitment_key_arr = init_int8_tArray(32);
+       memcpy(per_commitment_key_arr->elems, *per_commitment_key, 32);
+       LDKHTLCOutputInCommitment htlc_var = *htlc;
+       uint64_t htlc_ref = 0;
+       htlc_var = HTLCOutputInCommitment_clone(htlc);
+       CHECK((((uint64_t)htlc_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&htlc_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_var);
+       htlc_ref = (uint64_t)htlc_var.inner;
+       if (htlc_var.is_owned) {
+               htlc_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_5(j_calls->sign_justice_revoked_htlc_meth, (uint32_t)justice_tx_arr, (uint32_t)input, (uint32_t)amount, (uint32_t)per_commitment_key_arr, (uint32_t)htlc_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_SignatureNoneZ ret_conv = *(LDKCResult_SignatureNoneZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
+}
+LDKCResult_SignatureNoneZ sign_counterparty_htlc_transaction_LDKBaseSign_jcall(const void* this_arg, LDKTransaction htlc_tx, uintptr_t input, uint64_t amount, LDKPublicKey per_commitment_point, const LDKHTLCOutputInCommitment * htlc) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
+       LDKTransaction htlc_tx_var = htlc_tx;
+       int8_tArray htlc_tx_arr = init_int8_tArray(htlc_tx_var.datalen);
+       memcpy(htlc_tx_arr->elems, htlc_tx_var.data, htlc_tx_var.datalen);
+       Transaction_free(htlc_tx_var);
+       int8_tArray per_commitment_point_arr = init_int8_tArray(33);
+       memcpy(per_commitment_point_arr->elems, per_commitment_point.compressed_form, 33);
+       LDKHTLCOutputInCommitment htlc_var = *htlc;
+       uint64_t htlc_ref = 0;
+       htlc_var = HTLCOutputInCommitment_clone(htlc);
+       CHECK((((uint64_t)htlc_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&htlc_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_var);
+       htlc_ref = (uint64_t)htlc_var.inner;
+       if (htlc_var.is_owned) {
+               htlc_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_5(j_calls->sign_counterparty_htlc_transaction_meth, (uint32_t)htlc_tx_arr, (uint32_t)input, (uint32_t)amount, (uint32_t)per_commitment_point_arr, (uint32_t)htlc_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_SignatureNoneZ ret_conv = *(LDKCResult_SignatureNoneZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
+}
+LDKCResult_SignatureNoneZ sign_closing_transaction_LDKBaseSign_jcall(const void* this_arg, const LDKClosingTransaction * closing_tx) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
+       LDKClosingTransaction closing_tx_var = *closing_tx;
+       uint64_t closing_tx_ref = 0;
+       closing_tx_var = ClosingTransaction_clone(closing_tx);
+       CHECK((((uint64_t)closing_tx_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&closing_tx_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(closing_tx_var);
+       closing_tx_ref = (uint64_t)closing_tx_var.inner;
+       if (closing_tx_var.is_owned) {
+               closing_tx_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_1(j_calls->sign_closing_transaction_meth, (uint32_t)closing_tx_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_SignatureNoneZ ret_conv = *(LDKCResult_SignatureNoneZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
+}
+LDKCResult_SignatureNoneZ sign_channel_announcement_LDKBaseSign_jcall(const void* this_arg, const LDKUnsignedChannelAnnouncement * msg) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
+       LDKUnsignedChannelAnnouncement msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = UnsignedChannelAnnouncement_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_1(j_calls->sign_channel_announcement_meth, (uint32_t)msg_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_SignatureNoneZ ret_conv = *(LDKCResult_SignatureNoneZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
+}
+void ready_channel_LDKBaseSign_jcall(void* this_arg, const LDKChannelTransactionParameters * channel_parameters) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
+       LDKChannelTransactionParameters channel_parameters_var = *channel_parameters;
+       uint64_t channel_parameters_ref = 0;
+       channel_parameters_var = ChannelTransactionParameters_clone(channel_parameters);
+       CHECK((((uint64_t)channel_parameters_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&channel_parameters_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_parameters_var);
+       channel_parameters_ref = (uint64_t)channel_parameters_var.inner;
+       if (channel_parameters_var.is_owned) {
+               channel_parameters_ref |= 1;
+       }
+       js_invoke_function_1(j_calls->ready_channel_meth, (uint32_t)channel_parameters_ref);
+}
+static void LDKBaseSign_JCalls_cloned(LDKBaseSign* new_obj) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+}
+static inline LDKBaseSign LDKBaseSign_init (/*TODO: JS Object Reference */void* o, uint32_t pubkeys) {
+       LDKBaseSign_JCalls *calls = MALLOC(sizeof(LDKBaseSign_JCalls), "LDKBaseSign_JCalls");
+       atomic_init(&calls->refcnt, 1);
+       //TODO: Assign calls->o from o
+
+       LDKChannelPublicKeys pubkeys_conv;
+       pubkeys_conv.inner = (void*)(pubkeys & (~1));
+       pubkeys_conv.is_owned = (pubkeys & 1) || (pubkeys == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(pubkeys_conv);
+
+       LDKBaseSign ret = {
+               .this_arg = (void*) calls,
+               .get_per_commitment_point = get_per_commitment_point_LDKBaseSign_jcall,
+               .release_commitment_secret = release_commitment_secret_LDKBaseSign_jcall,
+               .validate_holder_commitment = validate_holder_commitment_LDKBaseSign_jcall,
+               .channel_keys_id = channel_keys_id_LDKBaseSign_jcall,
+               .sign_counterparty_commitment = sign_counterparty_commitment_LDKBaseSign_jcall,
+               .validate_counterparty_revocation = validate_counterparty_revocation_LDKBaseSign_jcall,
+               .sign_holder_commitment_and_htlcs = sign_holder_commitment_and_htlcs_LDKBaseSign_jcall,
+               .sign_justice_revoked_output = sign_justice_revoked_output_LDKBaseSign_jcall,
+               .sign_justice_revoked_htlc = sign_justice_revoked_htlc_LDKBaseSign_jcall,
+               .sign_counterparty_htlc_transaction = sign_counterparty_htlc_transaction_LDKBaseSign_jcall,
+               .sign_closing_transaction = sign_closing_transaction_LDKBaseSign_jcall,
+               .sign_channel_announcement = sign_channel_announcement_LDKBaseSign_jcall,
+               .ready_channel = ready_channel_LDKBaseSign_jcall,
+               .free = LDKBaseSign_JCalls_free,
+               .pubkeys = pubkeys_conv,
+               .set_pubkeys = NULL,
+       };
+       return ret;
+}
+long  __attribute__((visibility("default"))) TS_LDKBaseSign_new(/*TODO: JS Object Reference */void* o, uint32_t pubkeys) {
+       LDKBaseSign *res_ptr = MALLOC(sizeof(LDKBaseSign), "LDKBaseSign");
+       *res_ptr = LDKBaseSign_init(o, pubkeys);
+       return (long)res_ptr;
+}
+int8_tArray  __attribute__((visibility("default"))) TS_BaseSign_get_per_commitment_point(uint32_t this_arg, int64_t idx) {
        void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
        if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
-       LDKCVec_u8Z ret_var = (this_arg_conv->get_destination_script)(this_arg_conv->this_arg);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, (this_arg_conv->get_per_commitment_point)(this_arg_conv->this_arg, idx).compressed_form, 33);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_KeysInterface_get_shutdown_scriptpubkey(uint32_t this_arg) {
+int8_tArray  __attribute__((visibility("default"))) TS_BaseSign_release_commitment_secret(uint32_t this_arg, int64_t idx) {
        void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
        if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
-       LDKShutdownScript ret_var = (this_arg_conv->get_shutdown_scriptpubkey)(this_arg_conv->this_arg);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, (this_arg_conv->release_commitment_secret)(this_arg_conv->this_arg, idx).data, 32);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_KeysInterface_get_channel_signer(uint32_t this_arg, jboolean inbound, int64_t channel_value_satoshis) {
+uint32_t  __attribute__((visibility("default"))) TS_BaseSign_validate_holder_commitment(uint32_t this_arg, uint32_t holder_tx) {
        void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
        if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
-       LDKSign* ret_ret = MALLOC(sizeof(LDKSign), "LDKSign");
-       *ret_ret = (this_arg_conv->get_channel_signer)(this_arg_conv->this_arg, inbound, channel_value_satoshis);
-       return (uint64_t)ret_ret;
+       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
+       LDKHolderCommitmentTransaction holder_tx_conv;
+       holder_tx_conv.inner = (void*)(holder_tx & (~1));
+       holder_tx_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(holder_tx_conv);
+       LDKCResult_NoneNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneNoneZ), "LDKCResult_NoneNoneZ");
+       *ret_conv = (this_arg_conv->validate_holder_commitment)(this_arg_conv->this_arg, &holder_tx_conv);
+       return (uint64_t)ret_conv;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_KeysInterface_get_secure_random_bytes(uint32_t this_arg) {
+int8_tArray  __attribute__((visibility("default"))) TS_BaseSign_channel_keys_id(uint32_t this_arg) {
        void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
        if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), (this_arg_conv->get_secure_random_bytes)(this_arg_conv->this_arg).data, 32);
+       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, (this_arg_conv->channel_keys_id)(this_arg_conv->this_arg).data, 32);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_KeysInterface_read_chan_signer(uint32_t this_arg, int8_tArray reader) {
+uint32_t  __attribute__((visibility("default"))) TS_BaseSign_sign_counterparty_commitment(uint32_t this_arg, uint32_t commitment_tx) {
        void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
        if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
-       LDKu8slice reader_ref;
-       reader_ref.datalen = *((uint32_t*)reader);
-       reader_ref.data = (int8_t*)(reader + 4);
-       LDKCResult_SignDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SignDecodeErrorZ), "LDKCResult_SignDecodeErrorZ");
-       *ret_conv = (this_arg_conv->read_chan_signer)(this_arg_conv->this_arg, reader_ref);
+       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
+       LDKCommitmentTransaction commitment_tx_conv;
+       commitment_tx_conv.inner = (void*)(commitment_tx & (~1));
+       commitment_tx_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_tx_conv);
+       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ), "LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ");
+       *ret_conv = (this_arg_conv->sign_counterparty_commitment)(this_arg_conv->this_arg, &commitment_tx_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_KeysInterface_sign_invoice(uint32_t this_arg, int8_tArray invoice_preimage) {
+uint32_t  __attribute__((visibility("default"))) TS_BaseSign_validate_counterparty_revocation(uint32_t this_arg, int64_t idx, int8_tArray secret) {
        void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
        if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
-       LDKCVec_u8Z invoice_preimage_ref;
-       invoice_preimage_ref.datalen = *((uint32_t*)invoice_preimage);
-       invoice_preimage_ref.data = MALLOC(invoice_preimage_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(invoice_preimage_ref.data, (uint8_t*)(invoice_preimage + 4), invoice_preimage_ref.datalen);
-       LDKCResult_RecoverableSignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_RecoverableSignatureNoneZ), "LDKCResult_RecoverableSignatureNoneZ");
-       *ret_conv = (this_arg_conv->sign_invoice)(this_arg_conv->this_arg, invoice_preimage_ref);
+       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
+       unsigned char secret_arr[32];
+       CHECK(secret->arr_len == 32);
+       memcpy(secret_arr, secret->elems, 32);
+       unsigned char (*secret_ref)[32] = &secret_arr;
+       LDKCResult_NoneNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneNoneZ), "LDKCResult_NoneNoneZ");
+       *ret_conv = (this_arg_conv->validate_counterparty_revocation)(this_arg_conv->this_arg, idx, secret_ref);
        return (uint64_t)ret_conv;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_KeysInterface_get_inbound_payment_key_material(uint32_t this_arg) {
+uint32_t  __attribute__((visibility("default"))) TS_BaseSign_sign_holder_commitment_and_htlcs(uint32_t this_arg, uint32_t commitment_tx) {
        void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
        if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), (this_arg_conv->get_inbound_payment_key_material)(this_arg_conv->this_arg).data, 32);
-       return ret_arr;
-}
-
-typedef struct LDKFeeEstimator_JCalls {
-       atomic_size_t refcnt;
-       uint32_t get_est_sat_per_1000_weight_meth;
-} LDKFeeEstimator_JCalls;
-static void LDKFeeEstimator_JCalls_free(void* this_arg) {
-       LDKFeeEstimator_JCalls *j_calls = (LDKFeeEstimator_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->get_est_sat_per_1000_weight_meth);
-               FREE(j_calls);
-       }
-}
-uint32_t get_est_sat_per_1000_weight_LDKFeeEstimator_jcall(const void* this_arg, LDKConfirmationTarget confirmation_target) {
-       LDKFeeEstimator_JCalls *j_calls = (LDKFeeEstimator_JCalls*) this_arg;
-       uint32_t confirmation_target_conv = LDKConfirmationTarget_to_js(confirmation_target);
-       return js_invoke_function_1(j_calls->get_est_sat_per_1000_weight_meth, confirmation_target_conv);
-}
-static void LDKFeeEstimator_JCalls_cloned(LDKFeeEstimator* new_obj) {
-       LDKFeeEstimator_JCalls *j_calls = (LDKFeeEstimator_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
+       LDKHolderCommitmentTransaction commitment_tx_conv;
+       commitment_tx_conv.inner = (void*)(commitment_tx & (~1));
+       commitment_tx_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_tx_conv);
+       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ), "LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ");
+       *ret_conv = (this_arg_conv->sign_holder_commitment_and_htlcs)(this_arg_conv->this_arg, &commitment_tx_conv);
+       return (uint64_t)ret_conv;
 }
-static inline LDKFeeEstimator LDKFeeEstimator_init (/*TODO: JS Object Reference */void* o) {
-       LDKFeeEstimator_JCalls *calls = MALLOC(sizeof(LDKFeeEstimator_JCalls), "LDKFeeEstimator_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
 
-       LDKFeeEstimator ret = {
-               .this_arg = (void*) calls,
-               .get_est_sat_per_1000_weight = get_est_sat_per_1000_weight_LDKFeeEstimator_jcall,
-               .free = LDKFeeEstimator_JCalls_free,
-       };
-       return ret;
-}
-long  __attribute__((visibility("default"))) TS_LDKFeeEstimator_new(/*TODO: JS Object Reference */void* o) {
-       LDKFeeEstimator *res_ptr = MALLOC(sizeof(LDKFeeEstimator), "LDKFeeEstimator");
-       *res_ptr = LDKFeeEstimator_init(o);
-       return (long)res_ptr;
-}
-int32_t  __attribute__((visibility("default"))) TS_FeeEstimator_get_est_sat_per_1000_weight(uint32_t this_arg, uint32_t confirmation_target) {
+uint32_t  __attribute__((visibility("default"))) TS_BaseSign_sign_justice_revoked_output(uint32_t this_arg, int8_tArray justice_tx, int64_t input, int64_t amount, int8_tArray per_commitment_key) {
        void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
        if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKFeeEstimator* this_arg_conv = (LDKFeeEstimator*)this_arg_ptr;
-       LDKConfirmationTarget confirmation_target_conv = LDKConfirmationTarget_from_js(confirmation_target);
-       int32_t ret_val = (this_arg_conv->get_est_sat_per_1000_weight)(this_arg_conv->this_arg, confirmation_target_conv);
-       return ret_val;
+       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
+       LDKTransaction justice_tx_ref;
+       justice_tx_ref.datalen = justice_tx->arr_len;
+       justice_tx_ref.data = MALLOC(justice_tx_ref.datalen, "LDKTransaction Bytes");
+       memcpy(justice_tx_ref.data, justice_tx->elems, justice_tx_ref.datalen);
+       justice_tx_ref.data_is_owned = true;
+       unsigned char per_commitment_key_arr[32];
+       CHECK(per_commitment_key->arr_len == 32);
+       memcpy(per_commitment_key_arr, per_commitment_key->elems, 32);
+       unsigned char (*per_commitment_key_ref)[32] = &per_commitment_key_arr;
+       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
+       *ret_conv = (this_arg_conv->sign_justice_revoked_output)(this_arg_conv->this_arg, justice_tx_ref, input, amount, per_commitment_key_ref);
+       return (uint64_t)ret_conv;
 }
 
-typedef struct LDKLogger_JCalls {
-       atomic_size_t refcnt;
-       uint32_t log_meth;
-} LDKLogger_JCalls;
-static void LDKLogger_JCalls_free(void* this_arg) {
-       LDKLogger_JCalls *j_calls = (LDKLogger_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->log_meth);
-               FREE(j_calls);
-       }
-}
-void log_LDKLogger_jcall(const void* this_arg, const LDKRecord * record) {
-       LDKLogger_JCalls *j_calls = (LDKLogger_JCalls*) this_arg;
-       LDKRecord record_var = *record;
-       uint64_t record_ref = 0;
-       record_var = Record_clone(record);
-       CHECK((((uint64_t)record_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&record_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(record_var);
-       record_ref = (uint64_t)record_var.inner;
-       if (record_var.is_owned) {
-               record_ref |= 1;
-       }
-       js_invoke_function_1(j_calls->log_meth, record_ref);
-}
-static void LDKLogger_JCalls_cloned(LDKLogger* new_obj) {
-       LDKLogger_JCalls *j_calls = (LDKLogger_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+uint32_t  __attribute__((visibility("default"))) TS_BaseSign_sign_justice_revoked_htlc(uint32_t this_arg, int8_tArray justice_tx, int64_t input, int64_t amount, int8_tArray per_commitment_key, uint32_t htlc) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
+       LDKTransaction justice_tx_ref;
+       justice_tx_ref.datalen = justice_tx->arr_len;
+       justice_tx_ref.data = MALLOC(justice_tx_ref.datalen, "LDKTransaction Bytes");
+       memcpy(justice_tx_ref.data, justice_tx->elems, justice_tx_ref.datalen);
+       justice_tx_ref.data_is_owned = true;
+       unsigned char per_commitment_key_arr[32];
+       CHECK(per_commitment_key->arr_len == 32);
+       memcpy(per_commitment_key_arr, per_commitment_key->elems, 32);
+       unsigned char (*per_commitment_key_ref)[32] = &per_commitment_key_arr;
+       LDKHTLCOutputInCommitment htlc_conv;
+       htlc_conv.inner = (void*)(htlc & (~1));
+       htlc_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_conv);
+       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
+       *ret_conv = (this_arg_conv->sign_justice_revoked_htlc)(this_arg_conv->this_arg, justice_tx_ref, input, amount, per_commitment_key_ref, &htlc_conv);
+       return (uint64_t)ret_conv;
 }
-static inline LDKLogger LDKLogger_init (/*TODO: JS Object Reference */void* o) {
-       LDKLogger_JCalls *calls = MALLOC(sizeof(LDKLogger_JCalls), "LDKLogger_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
 
-       LDKLogger ret = {
-               .this_arg = (void*) calls,
-               .log = log_LDKLogger_jcall,
-               .free = LDKLogger_JCalls_free,
-       };
-       return ret;
+uint32_t  __attribute__((visibility("default"))) TS_BaseSign_sign_counterparty_htlc_transaction(uint32_t this_arg, int8_tArray htlc_tx, int64_t input, int64_t amount, int8_tArray per_commitment_point, uint32_t htlc) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
+       LDKTransaction htlc_tx_ref;
+       htlc_tx_ref.datalen = htlc_tx->arr_len;
+       htlc_tx_ref.data = MALLOC(htlc_tx_ref.datalen, "LDKTransaction Bytes");
+       memcpy(htlc_tx_ref.data, htlc_tx->elems, htlc_tx_ref.datalen);
+       htlc_tx_ref.data_is_owned = true;
+       LDKPublicKey per_commitment_point_ref;
+       CHECK(per_commitment_point->arr_len == 33);
+       memcpy(per_commitment_point_ref.compressed_form, per_commitment_point->elems, 33);
+       LDKHTLCOutputInCommitment htlc_conv;
+       htlc_conv.inner = (void*)(htlc & (~1));
+       htlc_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_conv);
+       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
+       *ret_conv = (this_arg_conv->sign_counterparty_htlc_transaction)(this_arg_conv->this_arg, htlc_tx_ref, input, amount, per_commitment_point_ref, &htlc_conv);
+       return (uint64_t)ret_conv;
 }
-long  __attribute__((visibility("default"))) TS_LDKLogger_new(/*TODO: JS Object Reference */void* o) {
-       LDKLogger *res_ptr = MALLOC(sizeof(LDKLogger), "LDKLogger");
-       *res_ptr = LDKLogger_init(o);
-       return (long)res_ptr;
+
+uint32_t  __attribute__((visibility("default"))) TS_BaseSign_sign_closing_transaction(uint32_t this_arg, uint32_t closing_tx) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
+       LDKClosingTransaction closing_tx_conv;
+       closing_tx_conv.inner = (void*)(closing_tx & (~1));
+       closing_tx_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(closing_tx_conv);
+       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
+       *ret_conv = (this_arg_conv->sign_closing_transaction)(this_arg_conv->this_arg, &closing_tx_conv);
+       return (uint64_t)ret_conv;
 }
-static inline struct LDKThirtyTwoBytes C2Tuple_BlockHashChannelManagerZ_get_a(LDKC2Tuple_BlockHashChannelManagerZ *NONNULL_PTR tuple){
-       return ThirtyTwoBytes_clone(&tuple->a);
+
+uint32_t  __attribute__((visibility("default"))) TS_BaseSign_sign_channel_announcement(uint32_t this_arg, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
+       LDKUnsignedChannelAnnouncement msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
+       *ret_conv = (this_arg_conv->sign_channel_announcement)(this_arg_conv->this_arg, &msg_conv);
+       return (uint64_t)ret_conv;
 }
-int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelManagerZ_get_a(uint32_t tuple) {
-       LDKC2Tuple_BlockHashChannelManagerZ* tuple_conv = (LDKC2Tuple_BlockHashChannelManagerZ*)(tuple & ~1);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), C2Tuple_BlockHashChannelManagerZ_get_a(tuple_conv).data, 32);
-       return ret_arr;
+
+void  __attribute__((visibility("default"))) TS_BaseSign_ready_channel(uint32_t this_arg, uint32_t channel_parameters) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
+       LDKChannelTransactionParameters channel_parameters_conv;
+       channel_parameters_conv.inner = (void*)(channel_parameters & (~1));
+       channel_parameters_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_parameters_conv);
+       (this_arg_conv->ready_channel)(this_arg_conv->this_arg, &channel_parameters_conv);
 }
 
-static inline struct LDKChannelManager *C2Tuple_BlockHashChannelManagerZ_get_b(LDKC2Tuple_BlockHashChannelManagerZ *NONNULL_PTR tuple){
-       return &tuple->b;
+LDKChannelPublicKeys LDKBaseSign_set_get_pubkeys(LDKBaseSign* this_arg) {
+       if (this_arg->set_pubkeys != NULL)
+               this_arg->set_pubkeys(this_arg);
+       return this_arg->pubkeys;
 }
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelManagerZ_get_b(uint32_t tuple) {
-       LDKC2Tuple_BlockHashChannelManagerZ* tuple_conv = (LDKC2Tuple_BlockHashChannelManagerZ*)(tuple & ~1);
-       LDKChannelManager ret_var = *C2Tuple_BlockHashChannelManagerZ_get_b(tuple_conv);
+uint32_t  __attribute__((visibility("default"))) TS_BaseSign_get_pubkeys(uint32_t this_arg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
+       LDKChannelPublicKeys ret_var = LDKBaseSign_set_get_pubkeys(this_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
        CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner & ~1;
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_ref;
 }
 
-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);
-       LDKC2Tuple_BlockHashChannelManagerZ* res_conv = &(*val->contents.result);
-       // Warning: we really need to clone here, but no clone is available for LDKC2Tuple_BlockHashChannelManagerZ
-       return ((uint64_t)res_conv) | 1;
-}
-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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-typedef struct LDKType_JCalls {
+typedef struct LDKSign_JCalls {
        atomic_size_t refcnt;
-       uint32_t type_id_meth;
-       uint32_t debug_str_meth;
+       LDKBaseSign_JCalls* BaseSign;
        uint32_t write_meth;
-} LDKType_JCalls;
-static void LDKType_JCalls_free(void* this_arg) {
-       LDKType_JCalls *j_calls = (LDKType_JCalls*) this_arg;
+} LDKSign_JCalls;
+static void LDKSign_JCalls_free(void* this_arg) {
+       LDKSign_JCalls *j_calls = (LDKSign_JCalls*) this_arg;
        if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->type_id_meth);
-               js_free(j_calls->debug_str_meth);
-               js_free(j_calls->write_meth);
+               js_free_function_ptr(j_calls->write_meth);
                FREE(j_calls);
        }
 }
-uint16_t type_id_LDKType_jcall(const void* this_arg) {
-       LDKType_JCalls *j_calls = (LDKType_JCalls*) this_arg;
-       return js_invoke_function_0(j_calls->type_id_meth);
-}
-LDKStr debug_str_LDKType_jcall(const void* this_arg) {
-       LDKType_JCalls *j_calls = (LDKType_JCalls*) this_arg;
-       uint32_t ret = js_invoke_function_0(j_calls->debug_str_meth);
-       LDKStr ret_conv = str_ref_to_owned_c(ret);
-       return ret_conv;
-}
-LDKCVec_u8Z write_LDKType_jcall(const void* this_arg) {
-       LDKType_JCalls *j_calls = (LDKType_JCalls*) this_arg;
-       int8_tArray ret = js_invoke_function_0(j_calls->write_meth);
+LDKCVec_u8Z write_LDKSign_jcall(const void* this_arg) {
+       LDKSign_JCalls *j_calls = (LDKSign_JCalls*) this_arg;
+       int8_tArray ret = (int8_tArray)js_invoke_function_0(j_calls->write_meth);
        LDKCVec_u8Z ret_ref;
-       ret_ref.datalen = *((uint32_t*)ret);
+       ret_ref.datalen = ret->arr_len;
        ret_ref.data = MALLOC(ret_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(ret_ref.data, (uint8_t*)(ret + 4), ret_ref.datalen);
+       memcpy(ret_ref.data, ret->elems, ret_ref.datalen);
        return ret_ref;
 }
-static void LDKType_JCalls_cloned(LDKType* new_obj) {
-       LDKType_JCalls *j_calls = (LDKType_JCalls*) new_obj->this_arg;
+static void LDKSign_JCalls_cloned(LDKSign* new_obj) {
+       LDKSign_JCalls *j_calls = (LDKSign_JCalls*) new_obj->this_arg;
        atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+       atomic_fetch_add_explicit(&j_calls->BaseSign->refcnt, 1, memory_order_release);
 }
-static inline LDKType LDKType_init (/*TODO: JS Object Reference */void* o) {
-       LDKType_JCalls *calls = MALLOC(sizeof(LDKType_JCalls), "LDKType_JCalls");
+static inline LDKSign LDKSign_init (/*TODO: JS Object Reference */void* o, /*TODO: JS Object Reference */void* BaseSign, uint32_t pubkeys) {
+       LDKSign_JCalls *calls = MALLOC(sizeof(LDKSign_JCalls), "LDKSign_JCalls");
        atomic_init(&calls->refcnt, 1);
        //TODO: Assign calls->o from o
 
-       LDKType ret = {
+       LDKChannelPublicKeys pubkeys_conv;
+       pubkeys_conv.inner = (void*)(pubkeys & (~1));
+       pubkeys_conv.is_owned = (pubkeys & 1) || (pubkeys == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(pubkeys_conv);
+
+       LDKSign ret = {
                .this_arg = (void*) calls,
-               .type_id = type_id_LDKType_jcall,
-               .debug_str = debug_str_LDKType_jcall,
-               .write = write_LDKType_jcall,
-               .cloned = LDKType_JCalls_cloned,
-               .free = LDKType_JCalls_free,
+               .write = write_LDKSign_jcall,
+               .cloned = LDKSign_JCalls_cloned,
+               .free = LDKSign_JCalls_free,
+               .BaseSign = LDKBaseSign_init(BaseSign, pubkeys),
        };
+       calls->BaseSign = ret.BaseSign.this_arg;
        return ret;
 }
-long  __attribute__((visibility("default"))) TS_LDKType_new(/*TODO: JS Object Reference */void* o) {
-       LDKType *res_ptr = MALLOC(sizeof(LDKType), "LDKType");
-       *res_ptr = LDKType_init(o);
+long  __attribute__((visibility("default"))) TS_LDKSign_new(/*TODO: JS Object Reference */void* o, /*TODO: JS Object Reference */ void* BaseSign, uint32_t pubkeys) {
+       LDKSign *res_ptr = MALLOC(sizeof(LDKSign), "LDKSign");
+       *res_ptr = LDKSign_init(o, BaseSign, pubkeys);
        return (long)res_ptr;
 }
-int16_t  __attribute__((visibility("default"))) TS_Type_type_id(uint32_t this_arg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKType* this_arg_conv = (LDKType*)this_arg_ptr;
-       int16_t ret_val = (this_arg_conv->type_id)(this_arg_conv->this_arg);
-       return ret_val;
-}
-
-jstring  __attribute__((visibility("default"))) TS_Type_debug_str(uint32_t this_arg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKType* this_arg_conv = (LDKType*)this_arg_ptr;
-       LDKStr ret_str = (this_arg_conv->debug_str)(this_arg_conv->this_arg);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_Type_write(uint32_t this_arg) {
+int8_tArray  __attribute__((visibility("default"))) TS_Sign_write(uint32_t this_arg) {
        void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
        if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKType* this_arg_conv = (LDKType*)this_arg_ptr;
+       LDKSign* this_arg_conv = (LDKSign*)this_arg_ptr;
        LDKCVec_u8Z ret_var = (this_arg_conv->write)(this_arg_conv->this_arg);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t __attribute__((visibility("default"))) TS_LDKCOption_TypeZ_ref_from_ptr(uint32_t ptr) {
-       LDKCOption_TypeZ *obj = (LDKCOption_TypeZ*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKCOption_TypeZ_Some: {
-                       LDKType* some_ret = MALLOC(sizeof(LDKType), "LDKType");
-                       *some_ret = Type_clone(&obj->some);
-                       return 0 /* LDKCOption_TypeZ - Some */; (void) (uint64_t)some_ret;
-               }
-               case LDKCOption_TypeZ_None: {
-                       return 0 /* LDKCOption_TypeZ - None */;
-               }
-               default: abort();
-       }
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_COption_TypeZDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_COption_TypeZDecodeErrorZ *val = (LDKCResult_COption_TypeZDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       uint64_t res_ref = ((uint64_t)&(*val->contents.result)) | 1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_COption_TypeZDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_COption_TypeZDecodeErrorZ *val = (LDKCResult_COption_TypeZDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t __attribute__((visibility("default"))) TS_LDKPaymentError_ref_from_ptr(uint32_t ptr) {
-       LDKPaymentError *obj = (LDKPaymentError*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKPaymentError_Invoice: {
-                       LDKStr invoice_str = obj->invoice;
-                       jstring invoice_conv = str_ref_to_ts(invoice_str.chars, invoice_str.len);
-                       return 0 /* LDKPaymentError - Invoice */; (void) invoice_conv;
-               }
-               case LDKPaymentError_Routing: {
-                       LDKLightningError routing_var = obj->routing;
-                       uint64_t routing_ref = 0;
-                       CHECK((((uint64_t)routing_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&routing_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(routing_var);
-                       routing_ref = (uint64_t)routing_var.inner & ~1;
-                       return 0 /* LDKPaymentError - Routing */; (void) routing_ref;
-               }
-               case LDKPaymentError_Sending: {
-                       uint64_t sending_ref = ((uint64_t)&obj->sending) | 1;
-                       return 0 /* LDKPaymentError - Sending */; (void) sending_ref;
-               }
-               default: abort();
-       }
-}
-int8_tArray  __attribute__((visibility("default"))) TS_LDKCResult_PaymentIdPaymentErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_PaymentIdPaymentErrorZ *val = (LDKCResult_PaymentIdPaymentErrorZ*)(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).data, 32);
-       return res_arr;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PaymentIdPaymentErrorZ_get_err(uint32_t arg) {
-       LDKCResult_PaymentIdPaymentErrorZ *val = (LDKCResult_PaymentIdPaymentErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint64_t err_ref = ((uint64_t)&(*val->contents.err)) | 1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_SiPrefixNoneZ_get_ok(uint32_t arg) {
-       LDKCResult_SiPrefixNoneZ *val = (LDKCResult_SiPrefixNoneZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       uint32_t res_conv = LDKSiPrefix_to_js((*val->contents.result));
-       return res_conv;
-}
-void  __attribute__((visibility("default"))) TS_LDKCResult_SiPrefixNoneZ_get_err(uint32_t arg) {
-       LDKCResult_SiPrefixNoneZ *val = (LDKCResult_SiPrefixNoneZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       return *val->contents.err;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_InvoiceNoneZ_get_ok(uint32_t arg) {
-       LDKCResult_InvoiceNoneZ *val = (LDKCResult_InvoiceNoneZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKInvoice res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-void  __attribute__((visibility("default"))) TS_LDKCResult_InvoiceNoneZ_get_err(uint32_t arg) {
-       LDKCResult_InvoiceNoneZ *val = (LDKCResult_InvoiceNoneZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       return *val->contents.err;
+static inline struct LDKThirtyTwoBytes C2Tuple_BlockHashChannelMonitorZ_get_a(LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR owner){
+       return ThirtyTwoBytes_clone(&owner->a);
 }
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_SignedRawInvoiceNoneZ_get_ok(uint32_t arg) {
-       LDKCResult_SignedRawInvoiceNoneZ *val = (LDKCResult_SignedRawInvoiceNoneZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKSignedRawInvoice res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-void  __attribute__((visibility("default"))) TS_LDKCResult_SignedRawInvoiceNoneZ_get_err(uint32_t arg) {
-       LDKCResult_SignedRawInvoiceNoneZ *val = (LDKCResult_SignedRawInvoiceNoneZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       return *val->contents.err;
+int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_get_a(uint32_t owner) {
+       LDKC2Tuple_BlockHashChannelMonitorZ* owner_conv = (LDKC2Tuple_BlockHashChannelMonitorZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, C2Tuple_BlockHashChannelMonitorZ_get_a(owner_conv).data, 32);
+       return ret_arr;
 }
-static inline struct LDKRawInvoice C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_a(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR tuple){
-       return RawInvoice_clone(&tuple->a);
+
+static inline struct LDKChannelMonitor C2Tuple_BlockHashChannelMonitorZ_get_b(LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR owner){
+       return ChannelMonitor_clone(&owner->b);
 }
-uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_a(uint32_t tuple) {
-       LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* tuple_conv = (LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ*)(tuple & ~1);
-       LDKRawInvoice ret_var = C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_a(tuple_conv);
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_get_b(uint32_t owner) {
+       LDKC2Tuple_BlockHashChannelMonitorZ* owner_conv = (LDKC2Tuple_BlockHashChannelMonitorZ*)(owner & ~1);
+       LDKChannelMonitor ret_var = C2Tuple_BlockHashChannelMonitorZ_get_b(owner_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -3717,22 +2266,24 @@ uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_RawInvoice_u832Invoi
        return ret_ref;
 }
 
-static inline struct LDKThirtyTwoBytes C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_b(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR tuple){
-       return ThirtyTwoBytes_clone(&tuple->b);
+static inline struct LDKC2Tuple_BlockHashChannelMonitorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_ok(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return C2Tuple_BlockHashChannelMonitorZ_clone(&*owner->contents.result);
 }
-int8_tArray  __attribute__((visibility("default"))) TS_C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_b(uint32_t tuple) {
-       LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* tuple_conv = (LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ*)(tuple & ~1);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_b(tuple_conv).data, 32);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* owner_conv = (LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(owner & ~1);
+       LDKC2Tuple_BlockHashChannelMonitorZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelMonitorZ), "LDKC2Tuple_BlockHashChannelMonitorZ");
+       *ret_conv = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_ok(owner_conv);
+       return ((uint64_t)ret_conv);
 }
 
-static inline struct LDKInvoiceSignature C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_c(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR tuple){
-       return InvoiceSignature_clone(&tuple->c);
+static inline struct LDKDecodeError CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_err(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_c(uint32_t tuple) {
-       LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* tuple_conv = (LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ*)(tuple & ~1);
-       LDKInvoiceSignature ret_var = C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_c(tuple_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* owner_conv = (LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_err(owner_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -3744,219 +2295,13 @@ uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_RawInvoice_u832Invoi
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PayeePubKeyErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_PayeePubKeyErrorZ *val = (LDKCResult_PayeePubKeyErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKPayeePubKey res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PayeePubKeyErrorZ_get_err(uint32_t arg) {
-       LDKCResult_PayeePubKeyErrorZ *val = (LDKCResult_PayeePubKeyErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint32_t err_conv = LDKSecp256k1Error_to_js((*val->contents.err));
-       return err_conv;
-}
-static inline LDKCVec_PrivateRouteZ CVec_PrivateRouteZ_clone(const LDKCVec_PrivateRouteZ *orig) {
-       LDKCVec_PrivateRouteZ ret = { .data = MALLOC(sizeof(LDKPrivateRoute) * orig->datalen, "LDKCVec_PrivateRouteZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = PrivateRoute_clone(&orig->data[i]);
-       }
-       return ret;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PositiveTimestampCreationErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_PositiveTimestampCreationErrorZ *val = (LDKCResult_PositiveTimestampCreationErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKPositiveTimestamp res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PositiveTimestampCreationErrorZ_get_err(uint32_t arg) {
-       LDKCResult_PositiveTimestampCreationErrorZ *val = (LDKCResult_PositiveTimestampCreationErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint32_t err_conv = LDKCreationError_to_js((*val->contents.err));
-       return err_conv;
-}
-void  __attribute__((visibility("default"))) TS_LDKCResult_NoneSemanticErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_NoneSemanticErrorZ *val = (LDKCResult_NoneSemanticErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       return *val->contents.result;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_NoneSemanticErrorZ_get_err(uint32_t arg) {
-       LDKCResult_NoneSemanticErrorZ *val = (LDKCResult_NoneSemanticErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint32_t err_conv = LDKSemanticError_to_js((*val->contents.err));
-       return err_conv;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_InvoiceSemanticErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_InvoiceSemanticErrorZ *val = (LDKCResult_InvoiceSemanticErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKInvoice res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_InvoiceSemanticErrorZ_get_err(uint32_t arg) {
-       LDKCResult_InvoiceSemanticErrorZ *val = (LDKCResult_InvoiceSemanticErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint32_t err_conv = LDKSemanticError_to_js((*val->contents.err));
-       return err_conv;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_DescriptionCreationErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_DescriptionCreationErrorZ *val = (LDKCResult_DescriptionCreationErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKDescription res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_DescriptionCreationErrorZ_get_err(uint32_t arg) {
-       LDKCResult_DescriptionCreationErrorZ *val = (LDKCResult_DescriptionCreationErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint32_t err_conv = LDKCreationError_to_js((*val->contents.err));
-       return err_conv;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ExpiryTimeCreationErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_ExpiryTimeCreationErrorZ *val = (LDKCResult_ExpiryTimeCreationErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKExpiryTime res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ExpiryTimeCreationErrorZ_get_err(uint32_t arg) {
-       LDKCResult_ExpiryTimeCreationErrorZ *val = (LDKCResult_ExpiryTimeCreationErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint32_t err_conv = LDKCreationError_to_js((*val->contents.err));
-       return err_conv;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PrivateRouteCreationErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_PrivateRouteCreationErrorZ *val = (LDKCResult_PrivateRouteCreationErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKPrivateRoute res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PrivateRouteCreationErrorZ_get_err(uint32_t arg) {
-       LDKCResult_PrivateRouteCreationErrorZ *val = (LDKCResult_PrivateRouteCreationErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint32_t err_conv = LDKCreationError_to_js((*val->contents.err));
-       return err_conv;
-}
-jstring  __attribute__((visibility("default"))) TS_LDKCResult_StringErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_StringErrorZ *val = (LDKCResult_StringErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKStr res_str = (*val->contents.result);
-       jstring res_conv = str_ref_to_ts(res_str.chars, res_str.len);
-       return res_conv;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_StringErrorZ_get_err(uint32_t arg) {
-       LDKCResult_StringErrorZ *val = (LDKCResult_StringErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint32_t err_conv = LDKSecp256k1Error_to_js((*val->contents.err));
-       return err_conv;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ChannelMonitorUpdateDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_ChannelMonitorUpdateDecodeErrorZ *val = (LDKCResult_ChannelMonitorUpdateDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKChannelMonitorUpdate res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ChannelMonitorUpdateDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_ChannelMonitorUpdateDecodeErrorZ *val = (LDKCResult_ChannelMonitorUpdateDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t __attribute__((visibility("default"))) TS_LDKCOption_MonitorEventZ_ref_from_ptr(uint32_t ptr) {
-       LDKCOption_MonitorEventZ *obj = (LDKCOption_MonitorEventZ*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKCOption_MonitorEventZ_Some: {
-                       uint64_t some_ref = ((uint64_t)&obj->some) | 1;
-                       return 0 /* LDKCOption_MonitorEventZ - Some */; (void) some_ref;
-               }
-               case LDKCOption_MonitorEventZ_None: {
-                       return 0 /* LDKCOption_MonitorEventZ - None */;
-               }
-               default: abort();
-       }
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_COption_MonitorEventZDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_COption_MonitorEventZDecodeErrorZ *val = (LDKCResult_COption_MonitorEventZDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       uint64_t res_ref = ((uint64_t)&(*val->contents.result)) | 1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_COption_MonitorEventZDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_COption_MonitorEventZDecodeErrorZ *val = (LDKCResult_COption_MonitorEventZDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
+static inline struct LDKRouteHop CResult_RouteHopDecodeErrorZ_get_ok(LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return RouteHop_clone(&*owner->contents.result);
 }
-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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-static inline struct LDKOutPoint C2Tuple_OutPointScriptZ_get_a(LDKC2Tuple_OutPointScriptZ *NONNULL_PTR tuple){
-       return OutPoint_clone(&tuple->a);
-}
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_OutPointScriptZ_get_a(uint32_t tuple) {
-       LDKC2Tuple_OutPointScriptZ* tuple_conv = (LDKC2Tuple_OutPointScriptZ*)(tuple & ~1);
-       LDKOutPoint ret_var = C2Tuple_OutPointScriptZ_get_a(tuple_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHopDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_RouteHopDecodeErrorZ* owner_conv = (LDKCResult_RouteHopDecodeErrorZ*)(owner & ~1);
+       LDKRouteHop ret_var = CResult_RouteHopDecodeErrorZ_get_ok(owner_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -3968,260 +2313,178 @@ uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_OutPointScriptZ_get_
        return ret_ref;
 }
 
-static inline struct LDKCVec_u8Z C2Tuple_OutPointScriptZ_get_b(LDKC2Tuple_OutPointScriptZ *NONNULL_PTR tuple){
-       return CVec_u8Z_clone(&tuple->b);
+static inline struct LDKDecodeError CResult_RouteHopDecodeErrorZ_get_err(LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_OutPointScriptZ_get_b(uint32_t tuple) {
-       LDKC2Tuple_OutPointScriptZ* tuple_conv = (LDKC2Tuple_OutPointScriptZ*)(tuple & ~1);
-       LDKCVec_u8Z ret_var = C2Tuple_OutPointScriptZ_get_b(tuple_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-static inline uint32_t C2Tuple_u32ScriptZ_get_a(LDKC2Tuple_u32ScriptZ *NONNULL_PTR tuple){
-       return tuple->a;
-}
-int32_t  __attribute__((visibility("default"))) TS_C2Tuple_u32ScriptZ_get_a(uint32_t tuple) {
-       LDKC2Tuple_u32ScriptZ* tuple_conv = (LDKC2Tuple_u32ScriptZ*)(tuple & ~1);
-       int32_t ret_val = C2Tuple_u32ScriptZ_get_a(tuple_conv);
-       return ret_val;
-}
-
-static inline struct LDKCVec_u8Z C2Tuple_u32ScriptZ_get_b(LDKC2Tuple_u32ScriptZ *NONNULL_PTR tuple){
-       return CVec_u8Z_clone(&tuple->b);
-}
-int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_u32ScriptZ_get_b(uint32_t tuple) {
-       LDKC2Tuple_u32ScriptZ* tuple_conv = (LDKC2Tuple_u32ScriptZ*)(tuple & ~1);
-       LDKCVec_u8Z ret_var = C2Tuple_u32ScriptZ_get_b(tuple_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHopDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_RouteHopDecodeErrorZ* owner_conv = (LDKCResult_RouteHopDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_RouteHopDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-static inline LDKCVec_C2Tuple_u32ScriptZZ CVec_C2Tuple_u32ScriptZZ_clone(const LDKCVec_C2Tuple_u32ScriptZZ *orig) {
-       LDKCVec_C2Tuple_u32ScriptZZ ret = { .data = MALLOC(sizeof(LDKC2Tuple_u32ScriptZ) * orig->datalen, "LDKCVec_C2Tuple_u32ScriptZZ clone bytes"), .datalen = orig->datalen };
+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] = C2Tuple_u32ScriptZ_clone(&orig->data[i]);
+               ret.data[i] = CVec_RouteHopZ_clone(&orig->data[i]);
        }
        return ret;
 }
-static inline struct LDKThirtyTwoBytes C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_a(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR tuple){
-       return ThirtyTwoBytes_clone(&tuple->a);
+static inline struct LDKRoute CResult_RouteDecodeErrorZ_get_ok(LDKCResult_RouteDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return Route_clone(&*owner->contents.result);
 }
-int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_a(uint32_t tuple) {
-       LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* tuple_conv = (LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ*)(tuple & ~1);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_a(tuple_conv).data, 32);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_RouteDecodeErrorZ* owner_conv = (LDKCResult_RouteDecodeErrorZ*)(owner & ~1);
+       LDKRoute ret_var = CResult_RouteDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-static inline struct LDKCVec_C2Tuple_u32ScriptZZ C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_b(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR tuple){
-       return CVec_C2Tuple_u32ScriptZZ_clone(&tuple->b);
+static inline struct LDKDecodeError CResult_RouteDecodeErrorZ_get_err(LDKCResult_RouteDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-uint32_tArray  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_b(uint32_t tuple) {
-       LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* tuple_conv = (LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ*)(tuple & ~1);
-       LDKCVec_C2Tuple_u32ScriptZZ ret_var = C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_b(tuple_conv);
-       uint32_tArray ret_arr = NULL;
-       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 v = 0; v < ret_var.datalen; v++) {
-               LDKC2Tuple_u32ScriptZ* ret_conv_21_conv = MALLOC(sizeof(LDKC2Tuple_u32ScriptZ), "LDKC2Tuple_u32ScriptZ");
-               *ret_conv_21_conv = ret_var.data[v];
-               ret_arr_ptr[v] = ((uint64_t)ret_conv_21_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_RouteDecodeErrorZ* owner_conv = (LDKCResult_RouteDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_RouteDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+       return ret_ref;
 }
 
-static inline LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_clone(const LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ *orig) {
-       LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ ret = { .data = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ) * orig->datalen, "LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone(&orig->data[i]);
-       }
-       return ret;
+static inline struct LDKRouteParameters CResult_RouteParametersDecodeErrorZ_get_ok(LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return RouteParameters_clone(&*owner->contents.result);
 }
-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] = Event_clone(&orig->data[i]);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteParametersDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_RouteParametersDecodeErrorZ* owner_conv = (LDKCResult_RouteParametersDecodeErrorZ*)(owner & ~1);
+       LDKRouteParameters ret_var = CResult_RouteParametersDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret;
-}
-static inline uint32_t C2Tuple_u32TxOutZ_get_a(LDKC2Tuple_u32TxOutZ *NONNULL_PTR tuple){
-       return tuple->a;
-}
-int32_t  __attribute__((visibility("default"))) TS_C2Tuple_u32TxOutZ_get_a(uint32_t tuple) {
-       LDKC2Tuple_u32TxOutZ* tuple_conv = (LDKC2Tuple_u32TxOutZ*)(tuple & ~1);
-       int32_t ret_val = C2Tuple_u32TxOutZ_get_a(tuple_conv);
-       return ret_val;
+       return ret_ref;
 }
 
-static inline struct LDKTxOut C2Tuple_u32TxOutZ_get_b(LDKC2Tuple_u32TxOutZ *NONNULL_PTR tuple){
-       return TxOut_clone(&tuple->b);
+static inline struct LDKDecodeError CResult_RouteParametersDecodeErrorZ_get_err(LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_u32TxOutZ_get_b(uint32_t tuple) {
-       LDKC2Tuple_u32TxOutZ* tuple_conv = (LDKC2Tuple_u32TxOutZ*)(tuple & ~1);
-       LDKTxOut* ret_ref = MALLOC(sizeof(LDKTxOut), "LDKTxOut");
-       *ret_ref = C2Tuple_u32TxOutZ_get_b(tuple_conv);
-       return (uint64_t)ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteParametersDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_RouteParametersDecodeErrorZ* owner_conv = (LDKCResult_RouteParametersDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_RouteParametersDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-static inline LDKCVec_C2Tuple_u32TxOutZZ CVec_C2Tuple_u32TxOutZZ_clone(const LDKCVec_C2Tuple_u32TxOutZZ *orig) {
-       LDKCVec_C2Tuple_u32TxOutZZ ret = { .data = MALLOC(sizeof(LDKC2Tuple_u32TxOutZ) * orig->datalen, "LDKCVec_C2Tuple_u32TxOutZZ clone bytes"), .datalen = orig->datalen };
+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] = C2Tuple_u32TxOutZ_clone(&orig->data[i]);
+               ret.data[i] = RouteHint_clone(&orig->data[i]);
        }
        return ret;
 }
-static inline struct LDKThirtyTwoBytes C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_a(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR tuple){
-       return ThirtyTwoBytes_clone(&tuple->a);
+static inline struct LDKPayee CResult_PayeeDecodeErrorZ_get_ok(LDKCResult_PayeeDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return Payee_clone(&*owner->contents.result);
 }
-int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_a(uint32_t tuple) {
-       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* tuple_conv = (LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ*)(tuple & ~1);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_a(tuple_conv).data, 32);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PayeeDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_PayeeDecodeErrorZ* owner_conv = (LDKCResult_PayeeDecodeErrorZ*)(owner & ~1);
+       LDKPayee ret_var = CResult_PayeeDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-static inline struct LDKCVec_C2Tuple_u32TxOutZZ C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_b(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR tuple){
-       return CVec_C2Tuple_u32TxOutZZ_clone(&tuple->b);
+static inline struct LDKDecodeError CResult_PayeeDecodeErrorZ_get_err(LDKCResult_PayeeDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-uint32_tArray  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_b(uint32_t tuple) {
-       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* tuple_conv = (LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ*)(tuple & ~1);
-       LDKCVec_C2Tuple_u32TxOutZZ ret_var = C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_b(tuple_conv);
-       uint32_tArray ret_arr = NULL;
-       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 u = 0; u < ret_var.datalen; u++) {
-               LDKC2Tuple_u32TxOutZ* ret_conv_20_conv = MALLOC(sizeof(LDKC2Tuple_u32TxOutZ), "LDKC2Tuple_u32TxOutZ");
-               *ret_conv_20_conv = ret_var.data[u];
-               ret_arr_ptr[u] = ((uint64_t)ret_conv_20_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PayeeDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_PayeeDecodeErrorZ* owner_conv = (LDKCResult_PayeeDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_PayeeDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+       return ret_ref;
 }
 
-static inline LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_clone(const LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ *orig) {
-       LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ret = { .data = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ) * orig->datalen, "LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ clone bytes"), .datalen = orig->datalen };
+static inline LDKCVec_RouteHintHopZ CVec_RouteHintHopZ_clone(const LDKCVec_RouteHintHopZ *orig) {
+       LDKCVec_RouteHintHopZ ret = { .data = MALLOC(sizeof(LDKRouteHintHop) * orig->datalen, "LDKCVec_RouteHintHopZ clone bytes"), .datalen = orig->datalen };
        for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone(&orig->data[i]);
+               ret.data[i] = RouteHintHop_clone(&orig->data[i]);
        }
        return ret;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKBalance_ref_from_ptr(uint32_t ptr) {
-       LDKBalance *obj = (LDKBalance*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKBalance_ClaimableOnChannelClose: {
-                       return 0 /* LDKBalance - ClaimableOnChannelClose */; (void) obj->claimable_on_channel_close.claimable_amount_satoshis;
-               }
-               case LDKBalance_ClaimableAwaitingConfirmations: {
-                       return 0 /* LDKBalance - ClaimableAwaitingConfirmations */; (void) obj->claimable_awaiting_confirmations.claimable_amount_satoshis; (void) obj->claimable_awaiting_confirmations.confirmation_height;
-               }
-               case LDKBalance_ContentiousClaimable: {
-                       return 0 /* LDKBalance - ContentiousClaimable */; (void) obj->contentious_claimable.claimable_amount_satoshis; (void) obj->contentious_claimable.timeout_height;
-               }
-               case LDKBalance_MaybeClaimableHTLCAwaitingTimeout: {
-                       return 0 /* LDKBalance - MaybeClaimableHTLCAwaitingTimeout */; (void) obj->maybe_claimable_htlc_awaiting_timeout.claimable_amount_satoshis; (void) obj->maybe_claimable_htlc_awaiting_timeout.claimable_height;
-               }
-               default: abort();
-       }
+static inline struct LDKRouteHint CResult_RouteHintDecodeErrorZ_get_ok(LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return RouteHint_clone(&*owner->contents.result);
 }
-static inline LDKCVec_BalanceZ CVec_BalanceZ_clone(const LDKCVec_BalanceZ *orig) {
-       LDKCVec_BalanceZ ret = { .data = MALLOC(sizeof(LDKBalance) * orig->datalen, "LDKCVec_BalanceZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = Balance_clone(&orig->data[i]);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_RouteHintDecodeErrorZ* owner_conv = (LDKCResult_RouteHintDecodeErrorZ*)(owner & ~1);
+       LDKRouteHint ret_var = CResult_RouteHintDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *val = (LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKC2Tuple_BlockHashChannelMonitorZ* res_conv = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelMonitorZ), "LDKC2Tuple_BlockHashChannelMonitorZ");
-       *res_conv = (*val->contents.result);
-       *res_conv = C2Tuple_BlockHashChannelMonitorZ_clone(res_conv);
-       return ((uint64_t)res_conv);
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *val = (LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-static inline struct LDKPublicKey C2Tuple_PublicKeyTypeZ_get_a(LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR tuple){
-       return tuple->a;
-}
-int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_PublicKeyTypeZ_get_a(uint32_t tuple) {
-       LDKC2Tuple_PublicKeyTypeZ* tuple_conv = (LDKC2Tuple_PublicKeyTypeZ*)(tuple & ~1);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), C2Tuple_PublicKeyTypeZ_get_a(tuple_conv).compressed_form, 33);
-       return ret_arr;
-}
-
-static inline struct LDKType C2Tuple_PublicKeyTypeZ_get_b(LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR tuple){
-       return Type_clone(&tuple->b);
-}
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_PublicKeyTypeZ_get_b(uint32_t tuple) {
-       LDKC2Tuple_PublicKeyTypeZ* tuple_conv = (LDKC2Tuple_PublicKeyTypeZ*)(tuple & ~1);
-       LDKType* ret_ret = MALLOC(sizeof(LDKType), "LDKType");
-       *ret_ret = C2Tuple_PublicKeyTypeZ_get_b(tuple_conv);
-       return (uint64_t)ret_ret;
+       return ret_ref;
 }
 
-static inline LDKCVec_C2Tuple_PublicKeyTypeZZ CVec_C2Tuple_PublicKeyTypeZZ_clone(const LDKCVec_C2Tuple_PublicKeyTypeZZ *orig) {
-       LDKCVec_C2Tuple_PublicKeyTypeZZ ret = { .data = MALLOC(sizeof(LDKC2Tuple_PublicKeyTypeZ) * orig->datalen, "LDKCVec_C2Tuple_PublicKeyTypeZZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = C2Tuple_PublicKeyTypeZ_clone(&orig->data[i]);
-       }
-       return ret;
+static inline struct LDKDecodeError CResult_RouteHintDecodeErrorZ_get_err(LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-static inline struct LDKChannelAnnouncement C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR tuple){
-       return ChannelAnnouncement_clone(&tuple->a);
-}
-uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(uint32_t tuple) {
-       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* tuple_conv = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(tuple & ~1);
-       LDKChannelAnnouncement ret_var = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(tuple_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_RouteHintDecodeErrorZ* owner_conv = (LDKCResult_RouteHintDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_RouteHintDecodeErrorZ_get_err(owner_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -4233,12 +2496,13 @@ uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementC
        return ret_ref;
 }
 
-static inline struct LDKChannelUpdate C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR tuple){
-       return ChannelUpdate_clone(&tuple->b);
+static inline struct LDKRouteHintHop CResult_RouteHintHopDecodeErrorZ_get_ok(LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return RouteHintHop_clone(&*owner->contents.result);
 }
-uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(uint32_t tuple) {
-       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* tuple_conv = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(tuple & ~1);
-       LDKChannelUpdate ret_var = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(tuple_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintHopDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_RouteHintHopDecodeErrorZ* owner_conv = (LDKCResult_RouteHintHopDecodeErrorZ*)(owner & ~1);
+       LDKRouteHintHop ret_var = CResult_RouteHintHopDecodeErrorZ_get_ok(owner_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -4250,12 +2514,13 @@ uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementC
        return ret_ref;
 }
 
-static inline struct LDKChannelUpdate C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR tuple){
-       return ChannelUpdate_clone(&tuple->c);
+static inline struct LDKDecodeError CResult_RouteHintHopDecodeErrorZ_get_err(LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(uint32_t tuple) {
-       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* tuple_conv = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(tuple & ~1);
-       LDKChannelUpdate ret_var = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(tuple_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintHopDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_RouteHintHopDecodeErrorZ* owner_conv = (LDKCResult_RouteHintHopDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_RouteHintHopDecodeErrorZ_get_err(owner_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -4267,9645 +2532,9391 @@ uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementC
        return ret_ref;
 }
 
-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 };
+static inline LDKCVec_ChannelDetailsZ CVec_ChannelDetailsZ_clone(const LDKCVec_ChannelDetailsZ *orig) {
+       LDKCVec_ChannelDetailsZ ret = { .data = MALLOC(sizeof(LDKChannelDetails) * orig->datalen, "LDKCVec_ChannelDetailsZ clone bytes"), .datalen = orig->datalen };
        for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(&orig->data[i]);
+               ret.data[i] = ChannelDetails_clone(&orig->data[i]);
        }
        return 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]);
+static inline struct LDKRoute CResult_RouteLightningErrorZ_get_ok(LDKCResult_RouteLightningErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return Route_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteLightningErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_RouteLightningErrorZ* owner_conv = (LDKCResult_RouteLightningErrorZ*)(owner & ~1);
+       LDKRoute ret_var = CResult_RouteLightningErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret;
+       return ret_ref;
 }
-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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_NodeIdDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_NodeIdDecodeErrorZ *val = (LDKCResult_NodeIdDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKNodeId res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_NodeIdDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_NodeIdDecodeErrorZ *val = (LDKCResult_NodeIdDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_COption_NetworkUpdateZDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_COption_NetworkUpdateZDecodeErrorZ *val = (LDKCResult_COption_NetworkUpdateZDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       uint64_t res_ref = ((uint64_t)&(*val->contents.result)) | 1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_COption_NetworkUpdateZDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_COption_NetworkUpdateZDecodeErrorZ *val = (LDKCResult_COption_NetworkUpdateZDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
+
+static inline struct LDKLightningError CResult_RouteLightningErrorZ_get_err(LDKCResult_RouteLightningErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return LightningError_clone(&*owner->contents.err);
 }
-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);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteLightningErrorZ_get_err(uint32_t owner) {
+       LDKCResult_RouteLightningErrorZ* owner_conv = (LDKCResult_RouteLightningErrorZ*)(owner & ~1);
+       LDKLightningError ret_var = CResult_RouteLightningErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-LDKCResult_TxOutAccessErrorZ get_utxo_LDKAccess_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);
-       uint32_t ret = js_invoke_function_2(j_calls->get_utxo_meth, genesis_hash_arr, short_channel_id);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_TxOutAccessErrorZ ret_conv = *(LDKCResult_TxOutAccessErrorZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+
+static inline void CResult_NoneLightningErrorZ_get_ok(LDKCResult_NoneLightningErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
 }
-static void LDKAccess_JCalls_cloned(LDKAccess* new_obj) {
-       LDKAccess_JCalls *j_calls = (LDKAccess_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+void  __attribute__((visibility("default"))) TS_CResult_NoneLightningErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_NoneLightningErrorZ* owner_conv = (LDKCResult_NoneLightningErrorZ*)(owner & ~1);
+       CResult_NoneLightningErrorZ_get_ok(owner_conv);
 }
-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_LDKAccess_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;
+static inline struct LDKLightningError CResult_NoneLightningErrorZ_get_err(LDKCResult_NoneLightningErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return LightningError_clone(&*owner->contents.err);
 }
-uint32_t  __attribute__((visibility("default"))) TS_Access_get_utxo(uint32_t this_arg, int8_tArray genesis_hash, int64_t short_channel_id) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKAccess* this_arg_conv = (LDKAccess*)this_arg_ptr;
-       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 (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneLightningErrorZ_get_err(uint32_t owner) {
+       LDKCResult_NoneLightningErrorZ* owner_conv = (LDKCResult_NoneLightningErrorZ*)(owner & ~1);
+       LDKLightningError ret_var = CResult_NoneLightningErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t __attribute__((visibility("default"))) TS_LDKCOption_AccessZ_ref_from_ptr(uint32_t ptr) {
-       LDKCOption_AccessZ *obj = (LDKCOption_AccessZ*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKCOption_AccessZ_Some: {
-                       LDKAccess* some_ret = MALLOC(sizeof(LDKAccess), "LDKAccess");
-                       *some_ret = obj->some;
-                       // Warning: We likely need to clone here, but no clone is available, so we just do it for Java instances
-                       return 0 /* LDKCOption_AccessZ - Some */; (void) (uint64_t)some_ret;
-               }
-               case LDKCOption_AccessZ_None: {
-                       return 0 /* LDKCOption_AccessZ - None */;
-               }
-               default: abort();
-       }
+static inline struct LDKPublicKey C2Tuple_PublicKeyTypeZ_get_a(LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR owner){
+       return owner->a;
 }
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_PublicKeyTypeZ_get_a(uint32_t owner) {
+       LDKC2Tuple_PublicKeyTypeZ* owner_conv = (LDKC2Tuple_PublicKeyTypeZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, C2Tuple_PublicKeyTypeZ_get_a(owner_conv).compressed_form, 33);
+       return ret_arr;
 }
-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_LDKCResult_NodeInfoDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_NodeInfoDecodeErrorZ *val = (LDKCResult_NodeInfoDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKNodeInfo res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t __attribute__((visibility("default"))) TS_LDKCOption_CVec_NetAddressZZ_ref_from_ptr(uint32_t ptr) {
-       LDKCOption_CVec_NetAddressZZ *obj = (LDKCOption_CVec_NetAddressZZ*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKCOption_CVec_NetAddressZZ_Some: {
-                       LDKCVec_NetAddressZ some_var = obj->some;
-                       uint32_tArray some_arr = NULL;
-                       some_arr = init_arr(some_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
-                       uint32_t *some_arr_ptr = (uint32_t*)(some_arr + 4);
-                       for (size_t m = 0; m < some_var.datalen; m++) {
-                               uint64_t some_conv_12_ref = ((uint64_t)&some_var.data[m]) | 1;
-                               some_arr_ptr[m] = some_conv_12_ref;
-                       }
-                       
-                       return 0 /* LDKCOption_CVec_NetAddressZZ - Some */; (void) some_arr;
-               }
-               case LDKCOption_CVec_NetAddressZZ_None: {
-                       return 0 /* LDKCOption_CVec_NetAddressZZ - None */;
-               }
-               default: abort();
-       }
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_NetAddressDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_NetAddressDecodeErrorZ *val = (LDKCResult_NetAddressDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       uint64_t res_ref = ((uint64_t)&(*val->contents.result)) | 1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_NetAddressDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_NetAddressDecodeErrorZ *val = (LDKCResult_NetAddressDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-static inline LDKCVec_UpdateAddHTLCZ CVec_UpdateAddHTLCZ_clone(const LDKCVec_UpdateAddHTLCZ *orig) {
-       LDKCVec_UpdateAddHTLCZ ret = { .data = MALLOC(sizeof(LDKUpdateAddHTLC) * orig->datalen, "LDKCVec_UpdateAddHTLCZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = UpdateAddHTLC_clone(&orig->data[i]);
-       }
-       return ret;
-}
-static inline LDKCVec_UpdateFulfillHTLCZ CVec_UpdateFulfillHTLCZ_clone(const LDKCVec_UpdateFulfillHTLCZ *orig) {
-       LDKCVec_UpdateFulfillHTLCZ ret = { .data = MALLOC(sizeof(LDKUpdateFulfillHTLC) * orig->datalen, "LDKCVec_UpdateFulfillHTLCZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = UpdateFulfillHTLC_clone(&orig->data[i]);
-       }
-       return ret;
+
+static inline struct LDKType C2Tuple_PublicKeyTypeZ_get_b(LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR owner){
+       return Type_clone(&owner->b);
 }
-static inline LDKCVec_UpdateFailHTLCZ CVec_UpdateFailHTLCZ_clone(const LDKCVec_UpdateFailHTLCZ *orig) {
-       LDKCVec_UpdateFailHTLCZ ret = { .data = MALLOC(sizeof(LDKUpdateFailHTLC) * orig->datalen, "LDKCVec_UpdateFailHTLCZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = UpdateFailHTLC_clone(&orig->data[i]);
-       }
-       return ret;
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_PublicKeyTypeZ_get_b(uint32_t owner) {
+       LDKC2Tuple_PublicKeyTypeZ* owner_conv = (LDKC2Tuple_PublicKeyTypeZ*)(owner & ~1);
+       LDKType* ret_ret = MALLOC(sizeof(LDKType), "LDKType");
+       *ret_ret = C2Tuple_PublicKeyTypeZ_get_b(owner_conv);
+       return (uint64_t)ret_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 };
+
+static inline LDKCVec_C2Tuple_PublicKeyTypeZZ CVec_C2Tuple_PublicKeyTypeZZ_clone(const LDKCVec_C2Tuple_PublicKeyTypeZZ *orig) {
+       LDKCVec_C2Tuple_PublicKeyTypeZZ ret = { .data = MALLOC(sizeof(LDKC2Tuple_PublicKeyTypeZ) * orig->datalen, "LDKCVec_C2Tuple_PublicKeyTypeZZ clone bytes"), .datalen = orig->datalen };
        for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = UpdateFailMalformedHTLC_clone(&orig->data[i]);
+               ret.data[i] = C2Tuple_PublicKeyTypeZ_clone(&orig->data[i]);
        }
        return ret;
 }
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ClosingSignedFeeRangeDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *val = (LDKCResult_ClosingSignedFeeRangeDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKClosingSignedFeeRange res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ClosingSignedFeeRangeDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *val = (LDKCResult_ClosingSignedFeeRangeDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_RevokeAndACKDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_RevokeAndACKDecodeErrorZ *val = (LDKCResult_RevokeAndACKDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKRevokeAndACK res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_RevokeAndACKDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_RevokeAndACKDecodeErrorZ *val = (LDKCResult_RevokeAndACKDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_UpdateFeeDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_UpdateFeeDecodeErrorZ *val = (LDKCResult_UpdateFeeDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKUpdateFee res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_UpdateFeeDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_UpdateFeeDecodeErrorZ *val = (LDKCResult_UpdateFeeDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_UpdateFulfillHTLCDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_UpdateFulfillHTLCDecodeErrorZ *val = (LDKCResult_UpdateFulfillHTLCDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKUpdateFulfillHTLC res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_UpdateAddHTLCDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_UpdateAddHTLCDecodeErrorZ *val = (LDKCResult_UpdateAddHTLCDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKUpdateAddHTLC res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PingDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_PingDecodeErrorZ *val = (LDKCResult_PingDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKPing res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PingDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_PingDecodeErrorZ *val = (LDKCResult_PingDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PongDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_PongDecodeErrorZ *val = (LDKCResult_PongDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKPong res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PongDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_PongDecodeErrorZ *val = (LDKCResult_PongDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *val = (LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKUnsignedChannelAnnouncement res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *val = (LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_UnsignedChannelUpdateDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_UnsignedChannelUpdateDecodeErrorZ *val = (LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKUnsignedChannelUpdate res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_UnsignedChannelUpdateDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_UnsignedChannelUpdateDecodeErrorZ *val = (LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ErrorMessageDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_ErrorMessageDecodeErrorZ *val = (LDKCResult_ErrorMessageDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKErrorMessage res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ErrorMessageDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_ErrorMessageDecodeErrorZ *val = (LDKCResult_ErrorMessageDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *val = (LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKUnsignedNodeAnnouncement res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *val = (LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_QueryShortChannelIdsDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_QueryShortChannelIdsDecodeErrorZ *val = (LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKQueryShortChannelIds res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_QueryShortChannelIdsDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_QueryShortChannelIdsDecodeErrorZ *val = (LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *val = (LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKReplyShortChannelIdsEnd res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t __attribute__((visibility("default"))) TS_LDKSignOrCreationError_ref_from_ptr(uint32_t ptr) {
-       LDKSignOrCreationError *obj = (LDKSignOrCreationError*)(ptr & ~1);
+uint32_t __attribute__((visibility("default"))) TS_LDKErrorAction_ref_from_ptr(uint32_t ptr) {
+       LDKErrorAction *obj = (LDKErrorAction*)(ptr & ~1);
        switch(obj->tag) {
-               case LDKSignOrCreationError_SignError: {
-                       return 0 /* LDKSignOrCreationError - SignError */;
+               case LDKErrorAction_DisconnectPeer: {
+                       LDKErrorMessage msg_var = obj->disconnect_peer.msg;
+                       uint64_t msg_ref = 0;
+                       if ((uint64_t)msg_var.inner > 4096) {
+                               CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                               CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                               msg_ref = (uint64_t)msg_var.inner & ~1;
+                       }
+                       return 0 /* LDKErrorAction - DisconnectPeer */; (void) msg_ref;
+               }
+               case LDKErrorAction_IgnoreError: {
+                       return 0 /* LDKErrorAction - IgnoreError */;
+               }
+               case LDKErrorAction_IgnoreAndLog: {
+                       uint32_t ignore_and_log_conv = LDKLevel_to_js(obj->ignore_and_log);
+                       return 0 /* LDKErrorAction - IgnoreAndLog */; (void) ignore_and_log_conv;
+               }
+               case LDKErrorAction_IgnoreDuplicateGossip: {
+                       return 0 /* LDKErrorAction - IgnoreDuplicateGossip */;
                }
-               case LDKSignOrCreationError_CreationError: {
-                       uint32_t creation_error_conv = LDKCreationError_to_js(obj->creation_error);
-                       return 0 /* LDKSignOrCreationError - CreationError */; (void) creation_error_conv;
+               case LDKErrorAction_SendErrorMessage: {
+                       LDKErrorMessage msg_var = obj->send_error_message.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKErrorAction - SendErrorMessage */; (void) msg_ref;
                }
                default: abort();
        }
 }
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_InvoiceSignOrCreationErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_InvoiceSignOrCreationErrorZ *val = (LDKCResult_InvoiceSignOrCreationErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKInvoice res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_InvoiceSignOrCreationErrorZ_get_err(uint32_t arg) {
-       LDKCResult_InvoiceSignOrCreationErrorZ *val = (LDKCResult_InvoiceSignOrCreationErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint64_t err_ref = ((uint64_t)&(*val->contents.err)) | 1;
-       return err_ref;
-}
-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_LDKFilter_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);
-}
-LDKCOption_C2Tuple_usizeTransactionZZ register_output_LDKFilter_jcall(const void* this_arg, LDKWatchedOutput output) {
-       LDKFilter_JCalls *j_calls = (LDKFilter_JCalls*) this_arg;
-       LDKWatchedOutput output_var = output;
-       uint64_t output_ref = 0;
-       CHECK((((uint64_t)output_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&output_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(output_var);
-       output_ref = (uint64_t)output_var.inner;
-       if (output_var.is_owned) {
-               output_ref |= 1;
-       }
-       uint32_t ret = js_invoke_function_1(j_calls->register_output_meth, output_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCOption_C2Tuple_usizeTransactionZZ ret_conv = *(LDKCOption_C2Tuple_usizeTransactionZZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
-}
-static void LDKFilter_JCalls_cloned(LDKFilter* new_obj) {
-       LDKFilter_JCalls *j_calls = (LDKFilter_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
-}
-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_LDKFilter_jcall,
-               .register_output = register_output_LDKFilter_jcall,
-               .free = LDKFilter_JCalls_free,
-       };
-       return ret;
-}
-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;
-}
-void  __attribute__((visibility("default"))) TS_Filter_register_tx(uint32_t this_arg, int8_tArray txid, int8_tArray script_pubkey) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKFilter* this_arg_conv = (LDKFilter*)this_arg_ptr;
-       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_Filter_register_output(uint32_t this_arg, uint32_t output) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKFilter* this_arg_conv = (LDKFilter*)this_arg_ptr;
-       LDKWatchedOutput output_conv;
-       output_conv.inner = (void*)(output & (~1));
-       output_conv.is_owned = (output & 1) || (output == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(output_conv);
-       output_conv = WatchedOutput_clone(&output_conv);
-       LDKCOption_C2Tuple_usizeTransactionZZ *ret_copy = MALLOC(sizeof(LDKCOption_C2Tuple_usizeTransactionZZ), "LDKCOption_C2Tuple_usizeTransactionZZ");
-       *ret_copy = (this_arg_conv->register_output)(this_arg_conv->this_arg, output_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t __attribute__((visibility("default"))) TS_LDKCOption_FilterZ_ref_from_ptr(uint32_t ptr) {
-       LDKCOption_FilterZ *obj = (LDKCOption_FilterZ*)(ptr & ~1);
+uint32_t __attribute__((visibility("default"))) TS_LDKMessageSendEvent_ref_from_ptr(uint32_t ptr) {
+       LDKMessageSendEvent *obj = (LDKMessageSendEvent*)(ptr & ~1);
        switch(obj->tag) {
-               case LDKCOption_FilterZ_Some: {
-                       LDKFilter* some_ret = MALLOC(sizeof(LDKFilter), "LDKFilter");
-                       *some_ret = obj->some;
-                       // Warning: We likely need to clone here, but no clone is available, so we just do it for Java instances
-                       return 0 /* LDKCOption_FilterZ - Some */; (void) (uint64_t)some_ret;
+               case LDKMessageSendEvent_SendAcceptChannel: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->send_accept_channel.node_id.compressed_form, 33);
+                       LDKAcceptChannel msg_var = obj->send_accept_channel.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - SendAcceptChannel */; (void) node_id_arr; (void) msg_ref;
                }
-               case LDKCOption_FilterZ_None: {
-                       return 0 /* LDKCOption_FilterZ - None */;
+               case LDKMessageSendEvent_SendOpenChannel: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->send_open_channel.node_id.compressed_form, 33);
+                       LDKOpenChannel msg_var = obj->send_open_channel.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - SendOpenChannel */; (void) node_id_arr; (void) msg_ref;
                }
-               default: abort();
-       }
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_LockedChannelMonitorNoneZ_get_ok(uint32_t arg) {
-       LDKCResult_LockedChannelMonitorNoneZ *val = (LDKCResult_LockedChannelMonitorNoneZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKLockedChannelMonitor res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-void  __attribute__((visibility("default"))) TS_LDKCResult_LockedChannelMonitorNoneZ_get_err(uint32_t arg) {
-       LDKCResult_LockedChannelMonitorNoneZ *val = (LDKCResult_LockedChannelMonitorNoneZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       return *val->contents.err;
-}
-static inline LDKCVec_OutPointZ CVec_OutPointZ_clone(const LDKCVec_OutPointZ *orig) {
-       LDKCVec_OutPointZ ret = { .data = MALLOC(sizeof(LDKOutPoint) * orig->datalen, "LDKCVec_OutPointZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = OutPoint_clone(&orig->data[i]);
-       }
-       return ret;
-}
-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_MessageSendEventZ get_and_clear_pending_msg_events_LDKMessageSendEventsProvider_jcall(const void* this_arg) {
-       LDKMessageSendEventsProvider_JCalls *j_calls = (LDKMessageSendEventsProvider_JCalls*) this_arg;
-       uint32_tArray ret = js_invoke_function_0(j_calls->get_and_clear_pending_msg_events_meth);
-       LDKCVec_MessageSendEventZ ret_constr;
-       ret_constr.datalen = *((uint32_t*)ret);
-       if (ret_constr.datalen > 0)
-               ret_constr.data = MALLOC(ret_constr.datalen * sizeof(LDKMessageSendEvent), "LDKCVec_MessageSendEventZ Elements");
-       else
-               ret_constr.data = NULL;
-       uint32_t* ret_vals = (uint32_t*)(ret + 4);
-       for (size_t s = 0; s < ret_constr.datalen; s++) {
-               uint32_t ret_conv_18 = ret_vals[s];
-               void* ret_conv_18_ptr = (void*)(((uint64_t)ret_conv_18) & ~1);
-               CHECK_ACCESS(ret_conv_18_ptr);
-               LDKMessageSendEvent ret_conv_18_conv = *(LDKMessageSendEvent*)(ret_conv_18_ptr);
-               FREE((void*)ret_conv_18);
-               ret_constr.data[s] = ret_conv_18_conv;
-       }
-       return ret_constr;
-}
-static void LDKMessageSendEventsProvider_JCalls_cloned(LDKMessageSendEventsProvider* new_obj) {
-       LDKMessageSendEventsProvider_JCalls *j_calls = (LDKMessageSendEventsProvider_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
-}
-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_LDKMessageSendEventsProvider_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) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKMessageSendEventsProvider* this_arg_conv = (LDKMessageSendEventsProvider*)this_arg_ptr;
-       LDKCVec_MessageSendEventZ ret_var = (this_arg_conv->get_and_clear_pending_msg_events)(this_arg_conv->this_arg);
-       uint32_tArray ret_arr = NULL;
-       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 *ret_conv_18_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-               *ret_conv_18_copy = ret_var.data[s];
-               uint64_t ret_conv_18_ref = (uint64_t)ret_conv_18_copy;
-               ret_arr_ptr[s] = ret_conv_18_ref;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
-}
-
-typedef struct LDKEventHandler_JCalls {
-       atomic_size_t refcnt;
-       uint32_t handle_event_meth;
-} LDKEventHandler_JCalls;
-static void LDKEventHandler_JCalls_free(void* this_arg) {
-       LDKEventHandler_JCalls *j_calls = (LDKEventHandler_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->handle_event_meth);
-               FREE(j_calls);
-       }
-}
-void handle_event_LDKEventHandler_jcall(const void* this_arg, const LDKEvent * event) {
-       LDKEventHandler_JCalls *j_calls = (LDKEventHandler_JCalls*) this_arg;
-       LDKEvent *ret_event = MALLOC(sizeof(LDKEvent), "LDKEvent ret conversion");
-       *ret_event = Event_clone(event);
-       js_invoke_function_1(j_calls->handle_event_meth, (uint64_t)ret_event);
-}
-static void LDKEventHandler_JCalls_cloned(LDKEventHandler* new_obj) {
-       LDKEventHandler_JCalls *j_calls = (LDKEventHandler_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
-}
-static inline LDKEventHandler LDKEventHandler_init (/*TODO: JS Object Reference */void* o) {
-       LDKEventHandler_JCalls *calls = MALLOC(sizeof(LDKEventHandler_JCalls), "LDKEventHandler_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
-
-       LDKEventHandler ret = {
-               .this_arg = (void*) calls,
-               .handle_event = handle_event_LDKEventHandler_jcall,
-               .free = LDKEventHandler_JCalls_free,
-       };
-       return ret;
-}
-long  __attribute__((visibility("default"))) TS_LDKEventHandler_new(/*TODO: JS Object Reference */void* o) {
-       LDKEventHandler *res_ptr = MALLOC(sizeof(LDKEventHandler), "LDKEventHandler");
-       *res_ptr = LDKEventHandler_init(o);
-       return (long)res_ptr;
-}
-void  __attribute__((visibility("default"))) TS_EventHandler_handle_event(uint32_t this_arg, uint32_t event) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKEventHandler* this_arg_conv = (LDKEventHandler*)this_arg_ptr;
-       LDKEvent* event_conv = (LDKEvent*)event;
-       (this_arg_conv->handle_event)(this_arg_conv->this_arg, event_conv);
-}
-
-typedef struct LDKEventsProvider_JCalls {
-       atomic_size_t refcnt;
-       uint32_t process_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->process_pending_events_meth);
-               FREE(j_calls);
-       }
-}
-void process_pending_events_LDKEventsProvider_jcall(const void* this_arg, LDKEventHandler handler) {
-       LDKEventsProvider_JCalls *j_calls = (LDKEventsProvider_JCalls*) this_arg;
-       LDKEventHandler* handler_ret = MALLOC(sizeof(LDKEventHandler), "LDKEventHandler");
-       *handler_ret = handler;
-       js_invoke_function_1(j_calls->process_pending_events_meth, (uint64_t)handler_ret);
-}
-static void LDKEventsProvider_JCalls_cloned(LDKEventsProvider* new_obj) {
-       LDKEventsProvider_JCalls *j_calls = (LDKEventsProvider_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
-}
-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,
-               .process_pending_events = process_pending_events_LDKEventsProvider_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;
-}
-void  __attribute__((visibility("default"))) TS_EventsProvider_process_pending_events(uint32_t this_arg, uint32_t handler) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKEventsProvider* this_arg_conv = (LDKEventsProvider*)this_arg_ptr;
-       void* handler_ptr = (void*)(((uint64_t)handler) & ~1);
-       CHECK_ACCESS(handler_ptr);
-       LDKEventHandler handler_conv = *(LDKEventHandler*)(handler_ptr);
-       (this_arg_conv->process_pending_events)(this_arg_conv->this_arg, handler_conv);
-}
-
-typedef struct LDKListen_JCalls {
-       atomic_size_t refcnt;
-       uint32_t block_connected_meth;
-       uint32_t block_disconnected_meth;
-} LDKListen_JCalls;
-static void LDKListen_JCalls_free(void* this_arg) {
-       LDKListen_JCalls *j_calls = (LDKListen_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->block_connected_meth);
-               js_free(j_calls->block_disconnected_meth);
-               FREE(j_calls);
-       }
-}
-void block_connected_LDKListen_jcall(const void* this_arg, LDKu8slice block, uint32_t height) {
-       LDKListen_JCalls *j_calls = (LDKListen_JCalls*) this_arg;
-       LDKu8slice block_var = block;
-       int8_tArray block_arr = init_arr(block_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(block_arr + 4), block_var.data, block_var.datalen);
-       js_invoke_function_2(j_calls->block_connected_meth, block_arr, height);
-}
-void block_disconnected_LDKListen_jcall(const void* this_arg, const uint8_t (* header)[80], uint32_t height) {
-       LDKListen_JCalls *j_calls = (LDKListen_JCalls*) this_arg;
-       int8_tArray header_arr = init_arr(80, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(header_arr + 4), *header, 80);
-       js_invoke_function_2(j_calls->block_disconnected_meth, header_arr, height);
-}
-static void LDKListen_JCalls_cloned(LDKListen* new_obj) {
-       LDKListen_JCalls *j_calls = (LDKListen_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
-}
-static inline LDKListen LDKListen_init (/*TODO: JS Object Reference */void* o) {
-       LDKListen_JCalls *calls = MALLOC(sizeof(LDKListen_JCalls), "LDKListen_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
-
-       LDKListen ret = {
-               .this_arg = (void*) calls,
-               .block_connected = block_connected_LDKListen_jcall,
-               .block_disconnected = block_disconnected_LDKListen_jcall,
-               .free = LDKListen_JCalls_free,
-       };
-       return ret;
-}
-long  __attribute__((visibility("default"))) TS_LDKListen_new(/*TODO: JS Object Reference */void* o) {
-       LDKListen *res_ptr = MALLOC(sizeof(LDKListen), "LDKListen");
-       *res_ptr = LDKListen_init(o);
-       return (long)res_ptr;
-}
-void  __attribute__((visibility("default"))) TS_Listen_block_connected(uint32_t this_arg, int8_tArray block, int32_t height) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKListen* this_arg_conv = (LDKListen*)this_arg_ptr;
-       LDKu8slice block_ref;
-       block_ref.datalen = *((uint32_t*)block);
-       block_ref.data = (int8_t*)(block + 4);
-       (this_arg_conv->block_connected)(this_arg_conv->this_arg, block_ref, height);
-}
-
-void  __attribute__((visibility("default"))) TS_Listen_block_disconnected(uint32_t this_arg, int8_tArray header, int32_t height) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKListen* this_arg_conv = (LDKListen*)this_arg_ptr;
-       unsigned char header_arr[80];
-       CHECK(*((uint32_t*)header) == 80);
-       memcpy(header_arr, (uint8_t*)(header + 4), 80);
-       unsigned char (*header_ref)[80] = &header_arr;
-       (this_arg_conv->block_disconnected)(this_arg_conv->this_arg, header_ref, height);
-}
-
-typedef struct LDKConfirm_JCalls {
-       atomic_size_t refcnt;
-       uint32_t transactions_confirmed_meth;
-       uint32_t transaction_unconfirmed_meth;
-       uint32_t best_block_updated_meth;
-       uint32_t get_relevant_txids_meth;
-} LDKConfirm_JCalls;
-static void LDKConfirm_JCalls_free(void* this_arg) {
-       LDKConfirm_JCalls *j_calls = (LDKConfirm_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->transactions_confirmed_meth);
-               js_free(j_calls->transaction_unconfirmed_meth);
-               js_free(j_calls->best_block_updated_meth);
-               js_free(j_calls->get_relevant_txids_meth);
-               FREE(j_calls);
-       }
-}
-void transactions_confirmed_LDKConfirm_jcall(const void* this_arg, const uint8_t (* header)[80], LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height) {
-       LDKConfirm_JCalls *j_calls = (LDKConfirm_JCalls*) this_arg;
-       int8_tArray header_arr = init_arr(80, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(header_arr + 4), *header, 80);
-       LDKCVec_C2Tuple_usizeTransactionZZ txdata_var = txdata;
-       uint32_tArray txdata_arr = NULL;
-       txdata_arr = init_arr(txdata_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
-       uint32_t *txdata_arr_ptr = (uint32_t*)(txdata_arr + 4);
-       for (size_t c = 0; c < txdata_var.datalen; c++) {
-               LDKC2Tuple_usizeTransactionZ* txdata_conv_28_conv = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ), "LDKC2Tuple_usizeTransactionZ");
-               *txdata_conv_28_conv = txdata_var.data[c];
-               txdata_arr_ptr[c] = ((uint64_t)txdata_conv_28_conv);
-       }
-       
-       FREE(txdata_var.data);
-       js_invoke_function_3(j_calls->transactions_confirmed_meth, header_arr, txdata_arr, height);
-}
-void transaction_unconfirmed_LDKConfirm_jcall(const void* this_arg, const uint8_t (* txid)[32]) {
-       LDKConfirm_JCalls *j_calls = (LDKConfirm_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);
-       js_invoke_function_1(j_calls->transaction_unconfirmed_meth, txid_arr);
-}
-void best_block_updated_LDKConfirm_jcall(const void* this_arg, const uint8_t (* header)[80], uint32_t height) {
-       LDKConfirm_JCalls *j_calls = (LDKConfirm_JCalls*) this_arg;
-       int8_tArray header_arr = init_arr(80, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(header_arr + 4), *header, 80);
-       js_invoke_function_2(j_calls->best_block_updated_meth, header_arr, height);
-}
-LDKCVec_TxidZ get_relevant_txids_LDKConfirm_jcall(const void* this_arg) {
-       LDKConfirm_JCalls *j_calls = (LDKConfirm_JCalls*) this_arg;
-       ptrArray ret = js_invoke_function_0(j_calls->get_relevant_txids_meth);
-       LDKCVec_TxidZ ret_constr;
-       ret_constr.datalen = *((uint32_t*)ret);
-       if (ret_constr.datalen > 0)
-               ret_constr.data = MALLOC(ret_constr.datalen * sizeof(LDKThirtyTwoBytes), "LDKCVec_TxidZ Elements");
-       else
-               ret_constr.data = NULL;
-       int8_tArray* ret_vals = (int8_tArray*)(ret + 4);
-       for (size_t m = 0; m < ret_constr.datalen; m++) {
-               int8_tArray ret_conv_12 = ret_vals[m];
-               LDKThirtyTwoBytes ret_conv_12_ref;
-               CHECK(*((uint32_t*)ret_conv_12) == 32);
-               memcpy(ret_conv_12_ref.data, (uint8_t*)(ret_conv_12 + 4), 32);
-               ret_constr.data[m] = ret_conv_12_ref;
-       }
-       return ret_constr;
-}
-static void LDKConfirm_JCalls_cloned(LDKConfirm* new_obj) {
-       LDKConfirm_JCalls *j_calls = (LDKConfirm_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
-}
-static inline LDKConfirm LDKConfirm_init (/*TODO: JS Object Reference */void* o) {
-       LDKConfirm_JCalls *calls = MALLOC(sizeof(LDKConfirm_JCalls), "LDKConfirm_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
-
-       LDKConfirm ret = {
-               .this_arg = (void*) calls,
-               .transactions_confirmed = transactions_confirmed_LDKConfirm_jcall,
-               .transaction_unconfirmed = transaction_unconfirmed_LDKConfirm_jcall,
-               .best_block_updated = best_block_updated_LDKConfirm_jcall,
-               .get_relevant_txids = get_relevant_txids_LDKConfirm_jcall,
-               .free = LDKConfirm_JCalls_free,
-       };
-       return ret;
-}
-long  __attribute__((visibility("default"))) TS_LDKConfirm_new(/*TODO: JS Object Reference */void* o) {
-       LDKConfirm *res_ptr = MALLOC(sizeof(LDKConfirm), "LDKConfirm");
-       *res_ptr = LDKConfirm_init(o);
-       return (long)res_ptr;
-}
-void  __attribute__((visibility("default"))) TS_Confirm_transactions_confirmed(uint32_t this_arg, int8_tArray header, uint32_tArray txdata, int32_t height) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKConfirm* this_arg_conv = (LDKConfirm*)this_arg_ptr;
-       unsigned char header_arr[80];
-       CHECK(*((uint32_t*)header) == 80);
-       memcpy(header_arr, (uint8_t*)(header + 4), 80);
-       unsigned char (*header_ref)[80] = &header_arr;
-       LDKCVec_C2Tuple_usizeTransactionZZ txdata_constr;
-       txdata_constr.datalen = *((uint32_t*)txdata);
-       if (txdata_constr.datalen > 0)
-               txdata_constr.data = MALLOC(txdata_constr.datalen * sizeof(LDKC2Tuple_usizeTransactionZ), "LDKCVec_C2Tuple_usizeTransactionZZ Elements");
-       else
-               txdata_constr.data = NULL;
-       uint32_t* txdata_vals = (uint32_t*)(txdata + 4);
-       for (size_t c = 0; c < txdata_constr.datalen; c++) {
-               uint32_t txdata_conv_28 = txdata_vals[c];
-               void* txdata_conv_28_ptr = (void*)(((uint64_t)txdata_conv_28) & ~1);
-               CHECK_ACCESS(txdata_conv_28_ptr);
-               LDKC2Tuple_usizeTransactionZ txdata_conv_28_conv = *(LDKC2Tuple_usizeTransactionZ*)(txdata_conv_28_ptr);
-               txdata_conv_28_conv = C2Tuple_usizeTransactionZ_clone((LDKC2Tuple_usizeTransactionZ*)(((uint64_t)txdata_conv_28) & ~1));
-               txdata_constr.data[c] = txdata_conv_28_conv;
-       }
-       (this_arg_conv->transactions_confirmed)(this_arg_conv->this_arg, header_ref, txdata_constr, height);
-}
-
-void  __attribute__((visibility("default"))) TS_Confirm_transaction_unconfirmed(uint32_t this_arg, int8_tArray txid) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKConfirm* this_arg_conv = (LDKConfirm*)this_arg_ptr;
-       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;
-       (this_arg_conv->transaction_unconfirmed)(this_arg_conv->this_arg, txid_ref);
-}
-
-void  __attribute__((visibility("default"))) TS_Confirm_best_block_updated(uint32_t this_arg, int8_tArray header, int32_t height) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKConfirm* this_arg_conv = (LDKConfirm*)this_arg_ptr;
-       unsigned char header_arr[80];
-       CHECK(*((uint32_t*)header) == 80);
-       memcpy(header_arr, (uint8_t*)(header + 4), 80);
-       unsigned char (*header_ref)[80] = &header_arr;
-       (this_arg_conv->best_block_updated)(this_arg_conv->this_arg, header_ref, height);
-}
-
-ptrArray  __attribute__((visibility("default"))) TS_Confirm_get_relevant_txids(uint32_t this_arg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKConfirm* this_arg_conv = (LDKConfirm*)this_arg_ptr;
-       LDKCVec_TxidZ ret_var = (this_arg_conv->get_relevant_txids)(this_arg_conv->this_arg);
-       ptrArray ret_arr = NULL;
-       ret_arr = init_arr(ret_var.datalen, sizeof(uint32_t), "Native ptrArray Bytes");
-       int8_tArray *ret_arr_ptr = (int8_tArray*)(ret_arr + 4);
-       for (size_t m = 0; m < ret_var.datalen; m++) {
-               int8_tArray ret_conv_12_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-               memcpy((uint8_t*)(ret_conv_12_arr + 4), ret_var.data[m].data, 32);
-               ret_arr_ptr[m] = ret_conv_12_arr;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
-}
-
-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);
-       }
-}
-LDKCResult_NoneChannelMonitorUpdateErrZ persist_new_channel_LDKPersist_jcall(const void* this_arg, LDKOutPoint channel_id, const LDKChannelMonitor * data, LDKMonitorUpdateId update_id) {
-       LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) this_arg;
-       LDKOutPoint channel_id_var = channel_id;
-       uint64_t channel_id_ref = 0;
-       CHECK((((uint64_t)channel_id_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&channel_id_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_id_var);
-       channel_id_ref = (uint64_t)channel_id_var.inner;
-       if (channel_id_var.is_owned) {
-               channel_id_ref |= 1;
-       }
-       LDKChannelMonitor data_var = *data;
-       uint64_t data_ref = 0;
-       data_var = ChannelMonitor_clone(data);
-       CHECK((((uint64_t)data_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&data_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(data_var);
-       data_ref = (uint64_t)data_var.inner;
-       if (data_var.is_owned) {
-               data_ref |= 1;
-       }
-       LDKMonitorUpdateId update_id_var = update_id;
-       uint64_t update_id_ref = 0;
-       CHECK((((uint64_t)update_id_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&update_id_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_id_var);
-       update_id_ref = (uint64_t)update_id_var.inner;
-       if (update_id_var.is_owned) {
-               update_id_ref |= 1;
-       }
-       uint32_t ret = js_invoke_function_3(j_calls->persist_new_channel_meth, channel_id_ref, data_ref, update_id_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_NoneChannelMonitorUpdateErrZ ret_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
-}
-LDKCResult_NoneChannelMonitorUpdateErrZ update_persisted_channel_LDKPersist_jcall(const void* this_arg, LDKOutPoint channel_id, const LDKChannelMonitorUpdate * update, const LDKChannelMonitor * data, LDKMonitorUpdateId update_id) {
-       LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) this_arg;
-       LDKOutPoint channel_id_var = channel_id;
-       uint64_t channel_id_ref = 0;
-       CHECK((((uint64_t)channel_id_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&channel_id_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_id_var);
-       channel_id_ref = (uint64_t)channel_id_var.inner;
-       if (channel_id_var.is_owned) {
-               channel_id_ref |= 1;
-       }
-       LDKChannelMonitorUpdate update_var = *update;
-       uint64_t update_ref = 0;
-       if ((uint64_t)update_var.inner > 4096) {
-               update_var = ChannelMonitorUpdate_clone(update);
-               CHECK((((uint64_t)update_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&update_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_var);
-               update_ref = (uint64_t)update_var.inner;
-               if (update_var.is_owned) {
-                       update_ref |= 1;
-               }
-       }
-       LDKChannelMonitor data_var = *data;
-       uint64_t data_ref = 0;
-       data_var = ChannelMonitor_clone(data);
-       CHECK((((uint64_t)data_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&data_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(data_var);
-       data_ref = (uint64_t)data_var.inner;
-       if (data_var.is_owned) {
-               data_ref |= 1;
-       }
-       LDKMonitorUpdateId update_id_var = update_id;
-       uint64_t update_id_ref = 0;
-       CHECK((((uint64_t)update_id_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&update_id_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_id_var);
-       update_id_ref = (uint64_t)update_id_var.inner;
-       if (update_id_var.is_owned) {
-               update_id_ref |= 1;
-       }
-       uint32_t ret = js_invoke_function_4(j_calls->update_persisted_channel_meth, channel_id_ref, update_ref, data_ref, update_id_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_NoneChannelMonitorUpdateErrZ ret_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
-}
-static void LDKPersist_JCalls_cloned(LDKPersist* new_obj) {
-       LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
-}
-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_LDKPersist_jcall,
-               .update_persisted_channel = update_persisted_channel_LDKPersist_jcall,
-               .free = LDKPersist_JCalls_free,
-       };
-       return ret;
-}
-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_Persist_persist_new_channel(uint32_t this_arg, uint32_t channel_id, uint32_t data, uint32_t update_id) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKPersist* this_arg_conv = (LDKPersist*)this_arg_ptr;
-       LDKOutPoint channel_id_conv;
-       channel_id_conv.inner = (void*)(channel_id & (~1));
-       channel_id_conv.is_owned = (channel_id & 1) || (channel_id == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_id_conv);
-       channel_id_conv = OutPoint_clone(&channel_id_conv);
-       LDKChannelMonitor data_conv;
-       data_conv.inner = (void*)(data & (~1));
-       data_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(data_conv);
-       LDKMonitorUpdateId update_id_conv;
-       update_id_conv.inner = (void*)(update_id & (~1));
-       update_id_conv.is_owned = (update_id & 1) || (update_id == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_id_conv);
-       update_id_conv = MonitorUpdateId_clone(&update_id_conv);
-       LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ");
-       *ret_conv = (this_arg_conv->persist_new_channel)(this_arg_conv->this_arg, channel_id_conv, &data_conv, update_id_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_Persist_update_persisted_channel(uint32_t this_arg, uint32_t channel_id, uint32_t update, uint32_t data, uint32_t update_id) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKPersist* this_arg_conv = (LDKPersist*)this_arg_ptr;
-       LDKOutPoint channel_id_conv;
-       channel_id_conv.inner = (void*)(channel_id & (~1));
-       channel_id_conv.is_owned = (channel_id & 1) || (channel_id == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_id_conv);
-       channel_id_conv = OutPoint_clone(&channel_id_conv);
-       LDKChannelMonitorUpdate update_conv;
-       update_conv.inner = (void*)(update & (~1));
-       update_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_conv);
-       LDKChannelMonitor data_conv;
-       data_conv.inner = (void*)(data & (~1));
-       data_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(data_conv);
-       LDKMonitorUpdateId update_id_conv;
-       update_id_conv.inner = (void*)(update_id & (~1));
-       update_id_conv.is_owned = (update_id & 1) || (update_id == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_id_conv);
-       update_id_conv = MonitorUpdateId_clone(&update_id_conv);
-       LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ");
-       *ret_conv = (this_arg_conv->update_persisted_channel)(this_arg_conv->this_arg, channel_id_conv, &update_conv, &data_conv, update_id_conv);
-       return (uint64_t)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_channel_update_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_channel_update_meth);
-               js_free(j_calls->handle_error_meth);
-               FREE(j_calls);
-       }
-}
-void handle_open_channel_LDKChannelMessageHandler_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;
-       uint64_t their_features_ref = 0;
-       CHECK((((uint64_t)their_features_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&their_features_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(their_features_var);
-       their_features_ref = (uint64_t)their_features_var.inner;
-       if (their_features_var.is_owned) {
-               their_features_ref |= 1;
-       }
-       LDKOpenChannel msg_var = *msg;
-       uint64_t msg_ref = 0;
-       msg_var = OpenChannel_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)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);
-}
-void handle_accept_channel_LDKChannelMessageHandler_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;
-       uint64_t their_features_ref = 0;
-       CHECK((((uint64_t)their_features_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&their_features_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(their_features_var);
-       their_features_ref = (uint64_t)their_features_var.inner;
-       if (their_features_var.is_owned) {
-               their_features_ref |= 1;
-       }
-       LDKAcceptChannel msg_var = *msg;
-       uint64_t msg_ref = 0;
-       msg_var = AcceptChannel_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)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);
-}
-void handle_funding_created_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = FundingCreated_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)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 handle_funding_signed_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = FundingSigned_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)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);
-}
-void handle_funding_locked_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = FundingLocked_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)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);
-}
-void handle_shutdown_LDKChannelMessageHandler_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKInitFeatures * their_features, 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);
-       LDKInitFeatures their_features_var = *their_features;
-       uint64_t their_features_ref = 0;
-       their_features_var = InitFeatures_clone(their_features);
-       CHECK((((uint64_t)their_features_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&their_features_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(their_features_var);
-       their_features_ref = (uint64_t)their_features_var.inner;
-       if (their_features_var.is_owned) {
-               their_features_ref |= 1;
-       }
-       LDKShutdown msg_var = *msg;
-       uint64_t msg_ref = 0;
-       msg_var = Shutdown_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
-       }
-       js_invoke_function_3(j_calls->handle_shutdown_meth, their_node_id_arr, their_features_ref, msg_ref);
-}
-void handle_closing_signed_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = ClosingSigned_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)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);
-}
-void handle_update_add_htlc_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = UpdateAddHTLC_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
+               case LDKMessageSendEvent_SendFundingCreated: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->send_funding_created.node_id.compressed_form, 33);
+                       LDKFundingCreated msg_var = obj->send_funding_created.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - SendFundingCreated */; (void) node_id_arr; (void) msg_ref;
+               }
+               case LDKMessageSendEvent_SendFundingSigned: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->send_funding_signed.node_id.compressed_form, 33);
+                       LDKFundingSigned msg_var = obj->send_funding_signed.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - SendFundingSigned */; (void) node_id_arr; (void) msg_ref;
+               }
+               case LDKMessageSendEvent_SendFundingLocked: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->send_funding_locked.node_id.compressed_form, 33);
+                       LDKFundingLocked msg_var = obj->send_funding_locked.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - SendFundingLocked */; (void) node_id_arr; (void) msg_ref;
+               }
+               case LDKMessageSendEvent_SendAnnouncementSignatures: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->send_announcement_signatures.node_id.compressed_form, 33);
+                       LDKAnnouncementSignatures msg_var = obj->send_announcement_signatures.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - SendAnnouncementSignatures */; (void) node_id_arr; (void) msg_ref;
+               }
+               case LDKMessageSendEvent_UpdateHTLCs: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->update_htl_cs.node_id.compressed_form, 33);
+                       LDKCommitmentUpdate updates_var = obj->update_htl_cs.updates;
+                       uint64_t updates_ref = 0;
+                       CHECK((((uint64_t)updates_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&updates_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(updates_var);
+                       updates_ref = (uint64_t)updates_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - UpdateHTLCs */; (void) node_id_arr; (void) updates_ref;
+               }
+               case LDKMessageSendEvent_SendRevokeAndACK: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->send_revoke_and_ack.node_id.compressed_form, 33);
+                       LDKRevokeAndACK msg_var = obj->send_revoke_and_ack.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - SendRevokeAndACK */; (void) node_id_arr; (void) msg_ref;
+               }
+               case LDKMessageSendEvent_SendClosingSigned: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->send_closing_signed.node_id.compressed_form, 33);
+                       LDKClosingSigned msg_var = obj->send_closing_signed.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - SendClosingSigned */; (void) node_id_arr; (void) msg_ref;
+               }
+               case LDKMessageSendEvent_SendShutdown: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->send_shutdown.node_id.compressed_form, 33);
+                       LDKShutdown msg_var = obj->send_shutdown.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - SendShutdown */; (void) node_id_arr; (void) msg_ref;
+               }
+               case LDKMessageSendEvent_SendChannelReestablish: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->send_channel_reestablish.node_id.compressed_form, 33);
+                       LDKChannelReestablish msg_var = obj->send_channel_reestablish.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - SendChannelReestablish */; (void) node_id_arr; (void) msg_ref;
+               }
+               case LDKMessageSendEvent_BroadcastChannelAnnouncement: {
+                       LDKChannelAnnouncement msg_var = obj->broadcast_channel_announcement.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       LDKChannelUpdate update_msg_var = obj->broadcast_channel_announcement.update_msg;
+                       uint64_t update_msg_ref = 0;
+                       CHECK((((uint64_t)update_msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&update_msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_msg_var);
+                       update_msg_ref = (uint64_t)update_msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - BroadcastChannelAnnouncement */; (void) msg_ref; (void) update_msg_ref;
+               }
+               case LDKMessageSendEvent_BroadcastNodeAnnouncement: {
+                       LDKNodeAnnouncement msg_var = obj->broadcast_node_announcement.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - BroadcastNodeAnnouncement */; (void) msg_ref;
+               }
+               case LDKMessageSendEvent_BroadcastChannelUpdate: {
+                       LDKChannelUpdate msg_var = obj->broadcast_channel_update.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - BroadcastChannelUpdate */; (void) msg_ref;
+               }
+               case LDKMessageSendEvent_SendChannelUpdate: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->send_channel_update.node_id.compressed_form, 33);
+                       LDKChannelUpdate msg_var = obj->send_channel_update.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - SendChannelUpdate */; (void) node_id_arr; (void) msg_ref;
+               }
+               case LDKMessageSendEvent_HandleError: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->handle_error.node_id.compressed_form, 33);
+                       uint64_t action_ref = ((uint64_t)&obj->handle_error.action) | 1;
+                       return 0 /* LDKMessageSendEvent - HandleError */; (void) node_id_arr; (void) action_ref;
+               }
+               case LDKMessageSendEvent_SendChannelRangeQuery: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->send_channel_range_query.node_id.compressed_form, 33);
+                       LDKQueryChannelRange msg_var = obj->send_channel_range_query.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - SendChannelRangeQuery */; (void) node_id_arr; (void) msg_ref;
+               }
+               case LDKMessageSendEvent_SendShortIdsQuery: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->send_short_ids_query.node_id.compressed_form, 33);
+                       LDKQueryShortChannelIds msg_var = obj->send_short_ids_query.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - SendShortIdsQuery */; (void) node_id_arr; (void) msg_ref;
+               }
+               case LDKMessageSendEvent_SendReplyChannelRange: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->send_reply_channel_range.node_id.compressed_form, 33);
+                       LDKReplyChannelRange msg_var = obj->send_reply_channel_range.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - SendReplyChannelRange */; (void) node_id_arr; (void) msg_ref;
+               }
+               default: abort();
        }
-       js_invoke_function_2(j_calls->handle_update_add_htlc_meth, their_node_id_arr, msg_ref);
 }
-void handle_update_fulfill_htlc_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = UpdateFulfillHTLC_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
+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]);
        }
-       js_invoke_function_2(j_calls->handle_update_fulfill_htlc_meth, their_node_id_arr, msg_ref);
+       return ret;
 }
-void handle_update_fail_htlc_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = UpdateFailHTLC_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)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);
+static inline bool CResult_boolLightningErrorZ_get_ok(LDKCResult_boolLightningErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
 }
-void handle_update_fail_malformed_htlc_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = UpdateFailMalformedHTLC_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)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);
+jboolean  __attribute__((visibility("default"))) TS_CResult_boolLightningErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_boolLightningErrorZ* owner_conv = (LDKCResult_boolLightningErrorZ*)(owner & ~1);
+       jboolean ret_val = CResult_boolLightningErrorZ_get_ok(owner_conv);
+       return ret_val;
 }
-void handle_commitment_signed_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = CommitmentSigned_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)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);
+
+static inline struct LDKLightningError CResult_boolLightningErrorZ_get_err(LDKCResult_boolLightningErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return LightningError_clone(&*owner->contents.err);
 }
-void handle_revoke_and_ack_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = RevokeAndACK_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_boolLightningErrorZ_get_err(uint32_t owner) {
+       LDKCResult_boolLightningErrorZ* owner_conv = (LDKCResult_boolLightningErrorZ*)(owner & ~1);
+       LDKLightningError ret_var = CResult_boolLightningErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       js_invoke_function_2(j_calls->handle_revoke_and_ack_meth, their_node_id_arr, msg_ref);
+       return ret_ref;
 }
-void handle_update_fee_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = UpdateFee_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)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);
+
+static inline struct LDKChannelAnnouncement C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR owner){
+       return ChannelAnnouncement_clone(&owner->a);
 }
-void handle_announcement_signatures_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = AnnouncementSignatures_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(uint32_t owner) {
+       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* owner_conv = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(owner & ~1);
+       LDKChannelAnnouncement ret_var = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       js_invoke_function_2(j_calls->handle_announcement_signatures_meth, their_node_id_arr, msg_ref);
-}
-void peer_disconnected_LDKChannelMessageHandler_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);
+       return ret_ref;
 }
-void peer_connected_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = Init_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)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);
+
+static inline struct LDKChannelUpdate C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR owner){
+       return ChannelUpdate_clone(&owner->b);
 }
-void handle_channel_reestablish_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = ChannelReestablish_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(uint32_t owner) {
+       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* owner_conv = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(owner & ~1);
+       LDKChannelUpdate ret_var = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       js_invoke_function_2(j_calls->handle_channel_reestablish_meth, their_node_id_arr, msg_ref);
+       return ret_ref;
 }
-void handle_channel_update_LDKChannelMessageHandler_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKChannelUpdate * 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);
-       LDKChannelUpdate msg_var = *msg;
-       uint64_t msg_ref = 0;
-       msg_var = ChannelUpdate_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
-       }
-       js_invoke_function_2(j_calls->handle_channel_update_meth, their_node_id_arr, msg_ref);
+
+static inline struct LDKChannelUpdate C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR owner){
+       return ChannelUpdate_clone(&owner->c);
 }
-void handle_error_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = ErrorMessage_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(uint32_t owner) {
+       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* owner_conv = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(owner & ~1);
+       LDKChannelUpdate ret_var = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       js_invoke_function_2(j_calls->handle_error_meth, their_node_id_arr, msg_ref);
-}
-static void LDKChannelMessageHandler_JCalls_cloned(LDKChannelMessageHandler* new_obj) {
-       LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) new_obj->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 ret_ref;
 }
-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_LDKChannelMessageHandler_jcall,
-               .handle_accept_channel = handle_accept_channel_LDKChannelMessageHandler_jcall,
-               .handle_funding_created = handle_funding_created_LDKChannelMessageHandler_jcall,
-               .handle_funding_signed = handle_funding_signed_LDKChannelMessageHandler_jcall,
-               .handle_funding_locked = handle_funding_locked_LDKChannelMessageHandler_jcall,
-               .handle_shutdown = handle_shutdown_LDKChannelMessageHandler_jcall,
-               .handle_closing_signed = handle_closing_signed_LDKChannelMessageHandler_jcall,
-               .handle_update_add_htlc = handle_update_add_htlc_LDKChannelMessageHandler_jcall,
-               .handle_update_fulfill_htlc = handle_update_fulfill_htlc_LDKChannelMessageHandler_jcall,
-               .handle_update_fail_htlc = handle_update_fail_htlc_LDKChannelMessageHandler_jcall,
-               .handle_update_fail_malformed_htlc = handle_update_fail_malformed_htlc_LDKChannelMessageHandler_jcall,
-               .handle_commitment_signed = handle_commitment_signed_LDKChannelMessageHandler_jcall,
-               .handle_revoke_and_ack = handle_revoke_and_ack_LDKChannelMessageHandler_jcall,
-               .handle_update_fee = handle_update_fee_LDKChannelMessageHandler_jcall,
-               .handle_announcement_signatures = handle_announcement_signatures_LDKChannelMessageHandler_jcall,
-               .peer_disconnected = peer_disconnected_LDKChannelMessageHandler_jcall,
-               .peer_connected = peer_connected_LDKChannelMessageHandler_jcall,
-               .handle_channel_reestablish = handle_channel_reestablish_LDKChannelMessageHandler_jcall,
-               .handle_channel_update = handle_channel_update_LDKChannelMessageHandler_jcall,
-               .handle_error = handle_error_LDKChannelMessageHandler_jcall,
-               .free = LDKChannelMessageHandler_JCalls_free,
-               .MessageSendEventsProvider = LDKMessageSendEventsProvider_init(MessageSendEventsProvider),
-       };
-       calls->MessageSendEventsProvider = ret.MessageSendEventsProvider.this_arg;
+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;
 }
-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_ChannelMessageHandler_handle_open_channel(uint32_t this_arg, int8_tArray their_node_id, uint32_t their_features, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(their_features_conv);
-       their_features_conv = InitFeatures_clone(&their_features_conv);
-       LDKOpenChannel msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_open_channel)(this_arg_conv->this_arg, their_node_id_ref, their_features_conv, &msg_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) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(their_features_conv);
-       their_features_conv = InitFeatures_clone(&their_features_conv);
-       LDKAcceptChannel msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_accept_channel)(this_arg_conv->this_arg, their_node_id_ref, their_features_conv, &msg_conv);
+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;
 }
-
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_funding_created(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_funding_created)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+static inline struct LDKCVec_u8Z CResult_CVec_u8ZPeerHandleErrorZ_get_ok(LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return CVec_u8Z_clone(&*owner->contents.result);
+}
+int8_tArray  __attribute__((visibility("default"))) TS_CResult_CVec_u8ZPeerHandleErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_CVec_u8ZPeerHandleErrorZ* owner_conv = (LDKCResult_CVec_u8ZPeerHandleErrorZ*)(owner & ~1);
+       LDKCVec_u8Z ret_var = CResult_CVec_u8ZPeerHandleErrorZ_get_ok(owner_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_funding_signed(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_funding_signed)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+static inline struct LDKPeerHandleError CResult_CVec_u8ZPeerHandleErrorZ_get_err(LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return PeerHandleError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_CVec_u8ZPeerHandleErrorZ_get_err(uint32_t owner) {
+       LDKCResult_CVec_u8ZPeerHandleErrorZ* owner_conv = (LDKCResult_CVec_u8ZPeerHandleErrorZ*)(owner & ~1);
+       LDKPeerHandleError ret_var = CResult_CVec_u8ZPeerHandleErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_funding_locked(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_funding_locked)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+static inline void CResult_NonePeerHandleErrorZ_get_ok(LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
+}
+void  __attribute__((visibility("default"))) TS_CResult_NonePeerHandleErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_NonePeerHandleErrorZ* owner_conv = (LDKCResult_NonePeerHandleErrorZ*)(owner & ~1);
+       CResult_NonePeerHandleErrorZ_get_ok(owner_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_shutdown(uint32_t this_arg, int8_tArray their_node_id, uint32_t their_features, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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 = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(their_features_conv);
-       LDKShutdown msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_shutdown)(this_arg_conv->this_arg, their_node_id_ref, &their_features_conv, &msg_conv);
+static inline struct LDKPeerHandleError CResult_NonePeerHandleErrorZ_get_err(LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return PeerHandleError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NonePeerHandleErrorZ_get_err(uint32_t owner) {
+       LDKCResult_NonePeerHandleErrorZ* owner_conv = (LDKCResult_NonePeerHandleErrorZ*)(owner & ~1);
+       LDKPeerHandleError ret_var = CResult_NonePeerHandleErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_closing_signed(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_closing_signed)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+static inline bool CResult_boolPeerHandleErrorZ_get_ok(LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
+}
+jboolean  __attribute__((visibility("default"))) TS_CResult_boolPeerHandleErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_boolPeerHandleErrorZ* owner_conv = (LDKCResult_boolPeerHandleErrorZ*)(owner & ~1);
+       jboolean ret_val = CResult_boolPeerHandleErrorZ_get_ok(owner_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_update_add_htlc(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_update_add_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+static inline struct LDKPeerHandleError CResult_boolPeerHandleErrorZ_get_err(LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return PeerHandleError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_boolPeerHandleErrorZ_get_err(uint32_t owner) {
+       LDKCResult_boolPeerHandleErrorZ* owner_conv = (LDKCResult_boolPeerHandleErrorZ*)(owner & ~1);
+       LDKPeerHandleError ret_var = CResult_boolPeerHandleErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_update_fulfill_htlc(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_update_fulfill_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+static inline struct LDKTxOut CResult_TxOutAccessErrorZ_get_ok(LDKCResult_TxOutAccessErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return TxOut_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_TxOutAccessErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_TxOutAccessErrorZ* owner_conv = (LDKCResult_TxOutAccessErrorZ*)(owner & ~1);
+       LDKTxOut* ret_ref = MALLOC(sizeof(LDKTxOut), "LDKTxOut");
+       *ret_ref = CResult_TxOutAccessErrorZ_get_ok(owner_conv);
+       return (uint64_t)ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_update_fail_htlc(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_update_fail_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+static inline enum LDKAccessError CResult_TxOutAccessErrorZ_get_err(LDKCResult_TxOutAccessErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return AccessError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_TxOutAccessErrorZ_get_err(uint32_t owner) {
+       LDKCResult_TxOutAccessErrorZ* owner_conv = (LDKCResult_TxOutAccessErrorZ*)(owner & ~1);
+       uint32_t ret_conv = LDKAccessError_to_js(CResult_TxOutAccessErrorZ_get_err(owner_conv));
+       return 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) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_update_fail_malformed_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+static inline void CResult_NoneChannelMonitorUpdateErrZ_get_ok(LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
+}
+void  __attribute__((visibility("default"))) TS_CResult_NoneChannelMonitorUpdateErrZ_get_ok(uint32_t owner) {
+       LDKCResult_NoneChannelMonitorUpdateErrZ* owner_conv = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(owner & ~1);
+       CResult_NoneChannelMonitorUpdateErrZ_get_ok(owner_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_commitment_signed(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_commitment_signed)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+static inline enum LDKChannelMonitorUpdateErr CResult_NoneChannelMonitorUpdateErrZ_get_err(LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return ChannelMonitorUpdateErr_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneChannelMonitorUpdateErrZ_get_err(uint32_t owner) {
+       LDKCResult_NoneChannelMonitorUpdateErrZ* owner_conv = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(owner & ~1);
+       uint32_t ret_conv = LDKChannelMonitorUpdateErr_to_js(CResult_NoneChannelMonitorUpdateErrZ_get_err(owner_conv));
+       return ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_revoke_and_ack(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_revoke_and_ack)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+uint32_t __attribute__((visibility("default"))) TS_LDKCOption_C2Tuple_usizeTransactionZZ_ref_from_ptr(uint32_t ptr) {
+       LDKCOption_C2Tuple_usizeTransactionZZ *obj = (LDKCOption_C2Tuple_usizeTransactionZZ*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKCOption_C2Tuple_usizeTransactionZZ_Some: {
+                       LDKC2Tuple_usizeTransactionZ* some_conv = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ), "LDKC2Tuple_usizeTransactionZ");
+                       *some_conv = obj->some;
+                       *some_conv = C2Tuple_usizeTransactionZ_clone(some_conv);
+                       return 0 /* LDKCOption_C2Tuple_usizeTransactionZZ - Some */; (void) ((uint64_t)some_conv);
+               }
+               case LDKCOption_C2Tuple_usizeTransactionZZ_None: {
+                       return 0 /* LDKCOption_C2Tuple_usizeTransactionZZ - None */;
+               }
+               default: abort();
+       }
+}
+uint32_t __attribute__((visibility("default"))) TS_LDKCOption_ClosureReasonZ_ref_from_ptr(uint32_t ptr) {
+       LDKCOption_ClosureReasonZ *obj = (LDKCOption_ClosureReasonZ*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKCOption_ClosureReasonZ_Some: {
+                       uint64_t some_ref = ((uint64_t)&obj->some) | 1;
+                       return 0 /* LDKCOption_ClosureReasonZ - Some */; (void) some_ref;
+               }
+               case LDKCOption_ClosureReasonZ_None: {
+                       return 0 /* LDKCOption_ClosureReasonZ - None */;
+               }
+               default: abort();
+       }
+}
+static inline struct LDKCOption_ClosureReasonZ CResult_COption_ClosureReasonZDecodeErrorZ_get_ok(LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return COption_ClosureReasonZ_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_ClosureReasonZDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_COption_ClosureReasonZDecodeErrorZ* owner_conv = (LDKCResult_COption_ClosureReasonZDecodeErrorZ*)(owner & ~1);
+       LDKCOption_ClosureReasonZ *ret_copy = MALLOC(sizeof(LDKCOption_ClosureReasonZ), "LDKCOption_ClosureReasonZ");
+       *ret_copy = CResult_COption_ClosureReasonZDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_update_fee(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_update_fee)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+static inline struct LDKDecodeError CResult_COption_ClosureReasonZDecodeErrorZ_get_err(LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_ClosureReasonZDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_COption_ClosureReasonZDecodeErrorZ* owner_conv = (LDKCResult_COption_ClosureReasonZDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_COption_ClosureReasonZDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_announcement_signatures(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_announcement_signatures)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+uint32_t __attribute__((visibility("default"))) TS_LDKCOption_EventZ_ref_from_ptr(uint32_t ptr) {
+       LDKCOption_EventZ *obj = (LDKCOption_EventZ*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKCOption_EventZ_Some: {
+                       uint64_t some_ref = ((uint64_t)&obj->some) | 1;
+                       return 0 /* LDKCOption_EventZ - Some */; (void) some_ref;
+               }
+               case LDKCOption_EventZ_None: {
+                       return 0 /* LDKCOption_EventZ - None */;
+               }
+               default: abort();
+       }
+}
+static inline struct LDKCOption_EventZ CResult_COption_EventZDecodeErrorZ_get_ok(LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return COption_EventZ_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_EventZDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_COption_EventZDecodeErrorZ* owner_conv = (LDKCResult_COption_EventZDecodeErrorZ*)(owner & ~1);
+       LDKCOption_EventZ *ret_copy = MALLOC(sizeof(LDKCOption_EventZ), "LDKCOption_EventZ");
+       *ret_copy = CResult_COption_EventZDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_peer_disconnected(uint32_t this_arg, int8_tArray their_node_id, jboolean no_connection_possible) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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);
+static inline struct LDKDecodeError CResult_COption_EventZDecodeErrorZ_get_err(LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_EventZDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_COption_EventZDecodeErrorZ* owner_conv = (LDKCResult_COption_EventZDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_COption_EventZDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_peer_connected(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->peer_connected)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+static inline struct LDKNodeId CResult_NodeIdDecodeErrorZ_get_ok(LDKCResult_NodeIdDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return NodeId_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NodeIdDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_NodeIdDecodeErrorZ* owner_conv = (LDKCResult_NodeIdDecodeErrorZ*)(owner & ~1);
+       LDKNodeId ret_var = CResult_NodeIdDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_channel_reestablish(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_channel_reestablish)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+static inline struct LDKDecodeError CResult_NodeIdDecodeErrorZ_get_err(LDKCResult_NodeIdDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NodeIdDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_NodeIdDecodeErrorZ* owner_conv = (LDKCResult_NodeIdDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_NodeIdDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_channel_update(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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);
-       LDKChannelUpdate msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_channel_update)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+static inline struct LDKCOption_NetworkUpdateZ CResult_COption_NetworkUpdateZDecodeErrorZ_get_ok(LDKCResult_COption_NetworkUpdateZDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return COption_NetworkUpdateZ_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_NetworkUpdateZDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_COption_NetworkUpdateZDecodeErrorZ* owner_conv = (LDKCResult_COption_NetworkUpdateZDecodeErrorZ*)(owner & ~1);
+       LDKCOption_NetworkUpdateZ *ret_copy = MALLOC(sizeof(LDKCOption_NetworkUpdateZ), "LDKCOption_NetworkUpdateZ");
+       *ret_copy = CResult_COption_NetworkUpdateZDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_error(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_error)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+static inline struct LDKDecodeError CResult_COption_NetworkUpdateZDecodeErrorZ_get_err(LDKCResult_COption_NetworkUpdateZDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_NetworkUpdateZDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_COption_NetworkUpdateZDecodeErrorZ* owner_conv = (LDKCResult_COption_NetworkUpdateZDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_COption_NetworkUpdateZDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-typedef struct LDKRoutingMessageHandler_JCalls {
+typedef struct LDKAccess_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 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;
+       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->handle_node_announcement_meth);
-               js_free(j_calls->handle_channel_announcement_meth);
-               js_free(j_calls->handle_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);
+               js_free_function_ptr(j_calls->get_utxo_meth);
                FREE(j_calls);
        }
 }
-LDKCResult_boolLightningErrorZ handle_node_announcement_LDKRoutingMessageHandler_jcall(const void* this_arg, const LDKNodeAnnouncement * msg) {
-       LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg;
-       LDKNodeAnnouncement msg_var = *msg;
-       uint64_t msg_ref = 0;
-       msg_var = NodeAnnouncement_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
-       }
-       uint32_t ret = js_invoke_function_1(j_calls->handle_node_announcement_meth, msg_ref);
+LDKCResult_TxOutAccessErrorZ get_utxo_LDKAccess_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_int8_tArray(32);
+       memcpy(genesis_hash_arr->elems, *genesis_hash, 32);
+       uint32_t ret = js_invoke_function_2(j_calls->get_utxo_meth, (uint32_t)genesis_hash_arr, (uint32_t)short_channel_id);
        void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
        CHECK_ACCESS(ret_ptr);
-       LDKCResult_boolLightningErrorZ ret_conv = *(LDKCResult_boolLightningErrorZ*)(ret_ptr);
+       LDKCResult_TxOutAccessErrorZ ret_conv = *(LDKCResult_TxOutAccessErrorZ*)(ret_ptr);
        FREE((void*)ret);
        return ret_conv;
 }
-LDKCResult_boolLightningErrorZ handle_channel_announcement_LDKRoutingMessageHandler_jcall(const void* this_arg, const LDKChannelAnnouncement * msg) {
-       LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg;
-       LDKChannelAnnouncement msg_var = *msg;
-       uint64_t msg_ref = 0;
-       msg_var = ChannelAnnouncement_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
+static void LDKAccess_JCalls_cloned(LDKAccess* new_obj) {
+       LDKAccess_JCalls *j_calls = (LDKAccess_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+}
+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_LDKAccess_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) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKAccess* this_arg_conv = (LDKAccess*)this_arg_ptr;
+       unsigned char genesis_hash_arr[32];
+       CHECK(genesis_hash->arr_len == 32);
+       memcpy(genesis_hash_arr, genesis_hash->elems, 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 (uint64_t)ret_conv;
+}
+
+uint32_t __attribute__((visibility("default"))) TS_LDKCOption_AccessZ_ref_from_ptr(uint32_t ptr) {
+       LDKCOption_AccessZ *obj = (LDKCOption_AccessZ*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKCOption_AccessZ_Some: {
+                       LDKAccess* some_ret = MALLOC(sizeof(LDKAccess), "LDKAccess");
+                       *some_ret = obj->some;
+                       // Warning: We likely need to clone here, but no clone is available, so we just do it for Java instances
+                       return 0 /* LDKCOption_AccessZ - Some */; (void) (uint64_t)some_ret;
+               }
+               case LDKCOption_AccessZ_None: {
+                       return 0 /* LDKCOption_AccessZ - None */;
+               }
+               default: abort();
        }
-       uint32_t ret = js_invoke_function_1(j_calls->handle_channel_announcement_meth, msg_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_boolLightningErrorZ ret_conv = *(LDKCResult_boolLightningErrorZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
 }
-LDKCResult_boolLightningErrorZ handle_channel_update_LDKRoutingMessageHandler_jcall(const void* this_arg, const LDKChannelUpdate * msg) {
-       LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg;
-       LDKChannelUpdate msg_var = *msg;
-       uint64_t msg_ref = 0;
-       msg_var = ChannelUpdate_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
+static inline struct LDKDirectionalChannelInfo CResult_DirectionalChannelInfoDecodeErrorZ_get_ok(LDKCResult_DirectionalChannelInfoDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return DirectionalChannelInfo_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_DirectionalChannelInfoDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_DirectionalChannelInfoDecodeErrorZ* owner_conv = (LDKCResult_DirectionalChannelInfoDecodeErrorZ*)(owner & ~1);
+       LDKDirectionalChannelInfo ret_var = CResult_DirectionalChannelInfoDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       uint32_t ret = js_invoke_function_1(j_calls->handle_channel_update_meth, msg_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_boolLightningErrorZ ret_conv = *(LDKCResult_boolLightningErrorZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+       return ret_ref;
 }
-LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ get_next_channel_announcements_LDKRoutingMessageHandler_jcall(const void* this_arg, uint64_t starting_point, uint8_t batch_amount) {
-       LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg;
-       uint32_tArray ret = js_invoke_function_2(j_calls->get_next_channel_announcements_meth, starting_point, batch_amount);
-       LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ ret_constr;
-       ret_constr.datalen = *((uint32_t*)ret);
-       if (ret_constr.datalen > 0)
-               ret_constr.data = MALLOC(ret_constr.datalen * sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ Elements");
-       else
-               ret_constr.data = NULL;
-       uint32_t* ret_vals = (uint32_t*)(ret + 4);
-       for (size_t h = 0; h < ret_constr.datalen; h++) {
-               uint32_t ret_conv_59 = ret_vals[h];
-               void* ret_conv_59_ptr = (void*)(((uint64_t)ret_conv_59) & ~1);
-               CHECK_ACCESS(ret_conv_59_ptr);
-               LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ ret_conv_59_conv = *(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(ret_conv_59_ptr);
-               FREE((void*)ret_conv_59);
-               ret_constr.data[h] = ret_conv_59_conv;
+
+static inline struct LDKDecodeError CResult_DirectionalChannelInfoDecodeErrorZ_get_err(LDKCResult_DirectionalChannelInfoDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_DirectionalChannelInfoDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_DirectionalChannelInfoDecodeErrorZ* owner_conv = (LDKCResult_DirectionalChannelInfoDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_DirectionalChannelInfoDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+static inline struct LDKChannelInfo CResult_ChannelInfoDecodeErrorZ_get_ok(LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ChannelInfo_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelInfoDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ChannelInfoDecodeErrorZ* owner_conv = (LDKCResult_ChannelInfoDecodeErrorZ*)(owner & ~1);
+       LDKChannelInfo ret_var = CResult_ChannelInfoDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+static inline struct LDKDecodeError CResult_ChannelInfoDecodeErrorZ_get_err(LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelInfoDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ChannelInfoDecodeErrorZ* owner_conv = (LDKCResult_ChannelInfoDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ChannelInfoDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+static inline struct LDKRoutingFees CResult_RoutingFeesDecodeErrorZ_get_ok(LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return RoutingFees_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RoutingFeesDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_RoutingFeesDecodeErrorZ* owner_conv = (LDKCResult_RoutingFeesDecodeErrorZ*)(owner & ~1);
+       LDKRoutingFees ret_var = CResult_RoutingFeesDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret_constr;
+       return ret_ref;
 }
-LDKCVec_NodeAnnouncementZ get_next_node_announcements_LDKRoutingMessageHandler_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 ret = js_invoke_function_2(j_calls->get_next_node_announcements_meth, starting_point_arr, batch_amount);
-       LDKCVec_NodeAnnouncementZ ret_constr;
-       ret_constr.datalen = *((uint32_t*)ret);
-       if (ret_constr.datalen > 0)
-               ret_constr.data = MALLOC(ret_constr.datalen * sizeof(LDKNodeAnnouncement), "LDKCVec_NodeAnnouncementZ Elements");
-       else
-               ret_constr.data = NULL;
-       uint32_t* ret_vals = (uint32_t*)(ret + 4);
-       for (size_t s = 0; s < ret_constr.datalen; s++) {
-               uint32_t ret_conv_18 = ret_vals[s];
-               LDKNodeAnnouncement ret_conv_18_conv;
-               ret_conv_18_conv.inner = (void*)(ret_conv_18 & (~1));
-               ret_conv_18_conv.is_owned = (ret_conv_18 & 1) || (ret_conv_18 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_18_conv);
-               ret_constr.data[s] = ret_conv_18_conv;
+
+static inline struct LDKDecodeError CResult_RoutingFeesDecodeErrorZ_get_err(LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RoutingFeesDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_RoutingFeesDecodeErrorZ* owner_conv = (LDKCResult_RoutingFeesDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_RoutingFeesDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret_constr;
+       return ret_ref;
 }
-void sync_routing_table_LDKRoutingMessageHandler_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;
-       uint64_t init_ref = 0;
-       init_var = Init_clone(init);
-       CHECK((((uint64_t)init_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&init_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(init_var);
-       init_ref = (uint64_t)init_var.inner;
-       if (init_var.is_owned) {
-               init_ref |= 1;
+
+uint32_t __attribute__((visibility("default"))) TS_LDKNetAddress_ref_from_ptr(uint32_t ptr) {
+       LDKNetAddress *obj = (LDKNetAddress*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKNetAddress_IPv4: {
+                       int8_tArray addr_arr = init_int8_tArray(4);
+                       memcpy(addr_arr->elems, 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_int8_tArray(16);
+                       memcpy(addr_arr->elems, obj->i_pv6.addr.data, 16);
+                       return 0 /* LDKNetAddress - IPv6 */; (void) addr_arr; (void) obj->i_pv6.port;
+               }
+               case LDKNetAddress_OnionV2: {
+                       int8_tArray onion_v2_arr = init_int8_tArray(12);
+                       memcpy(onion_v2_arr->elems, obj->onion_v2.data, 12);
+                       return 0 /* LDKNetAddress - OnionV2 */; (void) onion_v2_arr;
+               }
+               case LDKNetAddress_OnionV3: {
+                       int8_tArray ed25519_pubkey_arr = init_int8_tArray(32);
+                       memcpy(ed25519_pubkey_arr->elems, 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();
        }
-       js_invoke_function_2(j_calls->sync_routing_table_meth, their_node_id_arr, init_ref);
 }
-LDKCResult_NoneLightningErrorZ handle_reply_channel_range_LDKRoutingMessageHandler_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;
-       uint64_t msg_ref = 0;
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
+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]);
        }
-       uint32_t ret = js_invoke_function_2(j_calls->handle_reply_channel_range_meth, their_node_id_arr, msg_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+       return ret;
 }
-LDKCResult_NoneLightningErrorZ handle_reply_short_channel_ids_end_LDKRoutingMessageHandler_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;
-       uint64_t msg_ref = 0;
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
+static inline struct LDKNodeAnnouncementInfo CResult_NodeAnnouncementInfoDecodeErrorZ_get_ok(LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return NodeAnnouncementInfo_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementInfoDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_NodeAnnouncementInfoDecodeErrorZ* owner_conv = (LDKCResult_NodeAnnouncementInfoDecodeErrorZ*)(owner & ~1);
+       LDKNodeAnnouncementInfo ret_var = CResult_NodeAnnouncementInfoDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       uint32_t ret = js_invoke_function_2(j_calls->handle_reply_short_channel_ids_end_meth, their_node_id_arr, msg_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+       return ret_ref;
 }
-LDKCResult_NoneLightningErrorZ handle_query_channel_range_LDKRoutingMessageHandler_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;
-       uint64_t msg_ref = 0;
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
+
+static inline struct LDKDecodeError CResult_NodeAnnouncementInfoDecodeErrorZ_get_err(LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementInfoDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_NodeAnnouncementInfoDecodeErrorZ* owner_conv = (LDKCResult_NodeAnnouncementInfoDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_NodeAnnouncementInfoDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       uint32_t ret = js_invoke_function_2(j_calls->handle_query_channel_range_meth, their_node_id_arr, msg_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+       return ret_ref;
 }
-LDKCResult_NoneLightningErrorZ handle_query_short_channel_ids_LDKRoutingMessageHandler_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;
-       uint64_t msg_ref = 0;
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
+
+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;
+}
+static inline struct LDKNodeInfo CResult_NodeInfoDecodeErrorZ_get_ok(LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return NodeInfo_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NodeInfoDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_NodeInfoDecodeErrorZ* owner_conv = (LDKCResult_NodeInfoDecodeErrorZ*)(owner & ~1);
+       LDKNodeInfo ret_var = CResult_NodeInfoDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       uint32_t ret = js_invoke_function_2(j_calls->handle_query_short_channel_ids_meth, their_node_id_arr, msg_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+       return ret_ref;
 }
-static void LDKRoutingMessageHandler_JCalls_cloned(LDKRoutingMessageHandler* new_obj) {
-       LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) new_obj->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);
+
+static inline struct LDKDecodeError CResult_NodeInfoDecodeErrorZ_get_err(LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NodeInfoDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_NodeInfoDecodeErrorZ* owner_conv = (LDKCResult_NodeInfoDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_NodeInfoDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-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_LDKRoutingMessageHandler_jcall,
-               .handle_channel_announcement = handle_channel_announcement_LDKRoutingMessageHandler_jcall,
-               .handle_channel_update = handle_channel_update_LDKRoutingMessageHandler_jcall,
-               .get_next_channel_announcements = get_next_channel_announcements_LDKRoutingMessageHandler_jcall,
-               .get_next_node_announcements = get_next_node_announcements_LDKRoutingMessageHandler_jcall,
-               .sync_routing_table = sync_routing_table_LDKRoutingMessageHandler_jcall,
-               .handle_reply_channel_range = handle_reply_channel_range_LDKRoutingMessageHandler_jcall,
-               .handle_reply_short_channel_ids_end = handle_reply_short_channel_ids_end_LDKRoutingMessageHandler_jcall,
-               .handle_query_channel_range = handle_query_channel_range_LDKRoutingMessageHandler_jcall,
-               .handle_query_short_channel_ids = handle_query_short_channel_ids_LDKRoutingMessageHandler_jcall,
-               .free = LDKRoutingMessageHandler_JCalls_free,
-               .MessageSendEventsProvider = LDKMessageSendEventsProvider_init(MessageSendEventsProvider),
-       };
-       calls->MessageSendEventsProvider = ret.MessageSendEventsProvider.this_arg;
-       return ret;
+static inline struct LDKNetworkGraph CResult_NetworkGraphDecodeErrorZ_get_ok(LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return NetworkGraph_clone(&*owner->contents.result);
 }
-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_t  __attribute__((visibility("default"))) TS_CResult_NetworkGraphDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_NetworkGraphDecodeErrorZ* owner_conv = (LDKCResult_NetworkGraphDecodeErrorZ*)(owner & ~1);
+       LDKNetworkGraph ret_var = CResult_NetworkGraphDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-uint32_t  __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_node_announcement(uint32_t this_arg, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
-       LDKNodeAnnouncement msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       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 (uint64_t)ret_conv;
+
+static inline struct LDKDecodeError CResult_NetworkGraphDecodeErrorZ_get_err(LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NetworkGraphDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_NetworkGraphDecodeErrorZ* owner_conv = (LDKCResult_NetworkGraphDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_NetworkGraphDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_channel_announcement(uint32_t this_arg, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
-       LDKChannelAnnouncement msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_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);
-       return (uint64_t)ret_conv;
+uint32_t __attribute__((visibility("default"))) TS_LDKCOption_CVec_NetAddressZZ_ref_from_ptr(uint32_t ptr) {
+       LDKCOption_CVec_NetAddressZZ *obj = (LDKCOption_CVec_NetAddressZZ*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKCOption_CVec_NetAddressZZ_Some: {
+                       LDKCVec_NetAddressZ some_var = obj->some;
+                       uint32_tArray some_arr = NULL;
+                       some_arr = init_uint32_tArray(some_var.datalen);
+                       uint32_t *some_arr_ptr = (uint32_t*)(some_arr + 4);
+                       for (size_t m = 0; m < some_var.datalen; m++) {
+                               uint64_t some_conv_12_ref = ((uint64_t)&some_var.data[m]) | 1;
+                               some_arr_ptr[m] = some_conv_12_ref;
+                       }
+                       
+                       return 0 /* LDKCOption_CVec_NetAddressZZ - Some */; (void) some_arr;
+               }
+               case LDKCOption_CVec_NetAddressZZ_None: {
+                       return 0 /* LDKCOption_CVec_NetAddressZZ - None */;
+               }
+               default: abort();
+       }
+}
+static inline struct LDKScoringParameters *CResult_ScoringParametersDecodeErrorZ_get_ok(LDKCResult_ScoringParametersDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return &*owner->contents.result;
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ScoringParametersDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ScoringParametersDecodeErrorZ* owner_conv = (LDKCResult_ScoringParametersDecodeErrorZ*)(owner & ~1);
+       LDKScoringParameters ret_var = *CResult_ScoringParametersDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner & ~1;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_channel_update(uint32_t this_arg, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
-       LDKChannelUpdate msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       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 (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_ScoringParametersDecodeErrorZ_get_err(LDKCResult_ScoringParametersDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ScoringParametersDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ScoringParametersDecodeErrorZ* owner_conv = (LDKCResult_ScoringParametersDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ScoringParametersDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return 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) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
-       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 = NULL;
-       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++) {
-               LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* ret_conv_59_conv = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ");
-               *ret_conv_59_conv = ret_var.data[h];
-               ret_arr_ptr[h] = ((uint64_t)ret_conv_59_conv);
+static inline struct LDKInitFeatures CResult_InitFeaturesDecodeErrorZ_get_ok(LDKCResult_InitFeaturesDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return InitFeatures_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_InitFeaturesDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_InitFeaturesDecodeErrorZ* owner_conv = (LDKCResult_InitFeaturesDecodeErrorZ*)(owner & ~1);
+       LDKInitFeatures ret_var = CResult_InitFeaturesDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+       return ret_ref;
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_RoutingMessageHandler_get_next_node_announcements(uint32_t this_arg, int8_tArray starting_point, int8_t batch_amount) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
-       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 = NULL;
-       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 ret_conv_18_var = ret_var.data[s];
-               uint64_t ret_conv_18_ref = 0;
-               CHECK((((uint64_t)ret_conv_18_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_conv_18_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_18_var);
-               ret_conv_18_ref = (uint64_t)ret_conv_18_var.inner;
-               if (ret_conv_18_var.is_owned) {
-                       ret_conv_18_ref |= 1;
-               }
-               ret_arr_ptr[s] = ret_conv_18_ref;
+static inline struct LDKDecodeError CResult_InitFeaturesDecodeErrorZ_get_err(LDKCResult_InitFeaturesDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_InitFeaturesDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_InitFeaturesDecodeErrorZ* owner_conv = (LDKCResult_InitFeaturesDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_InitFeaturesDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_RoutingMessageHandler_sync_routing_table(uint32_t this_arg, int8_tArray their_node_id, uint32_t init) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(init_conv);
-       (this_arg_conv->sync_routing_table)(this_arg_conv->this_arg, their_node_id_ref, &init_conv);
+static inline struct LDKChannelFeatures CResult_ChannelFeaturesDecodeErrorZ_get_ok(LDKCResult_ChannelFeaturesDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ChannelFeatures_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelFeaturesDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ChannelFeaturesDecodeErrorZ* owner_conv = (LDKCResult_ChannelFeaturesDecodeErrorZ*)(owner & ~1);
+       LDKChannelFeatures ret_var = CResult_ChannelFeaturesDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_reply_channel_range(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
-       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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       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 (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_ChannelFeaturesDecodeErrorZ_get_err(LDKCResult_ChannelFeaturesDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelFeaturesDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ChannelFeaturesDecodeErrorZ* owner_conv = (LDKCResult_ChannelFeaturesDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ChannelFeaturesDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-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) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
-       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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       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 (uint64_t)ret_conv;
+static inline struct LDKNodeFeatures CResult_NodeFeaturesDecodeErrorZ_get_ok(LDKCResult_NodeFeaturesDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return NodeFeatures_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NodeFeaturesDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_NodeFeaturesDecodeErrorZ* owner_conv = (LDKCResult_NodeFeaturesDecodeErrorZ*)(owner & ~1);
+       LDKNodeFeatures ret_var = CResult_NodeFeaturesDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_query_channel_range(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
-       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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       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 (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_NodeFeaturesDecodeErrorZ_get_err(LDKCResult_NodeFeaturesDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NodeFeaturesDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_NodeFeaturesDecodeErrorZ* owner_conv = (LDKCResult_NodeFeaturesDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_NodeFeaturesDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_query_short_channel_ids(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
-       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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       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 (uint64_t)ret_conv;
+static inline struct LDKInvoiceFeatures CResult_InvoiceFeaturesDecodeErrorZ_get_ok(LDKCResult_InvoiceFeaturesDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return InvoiceFeatures_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceFeaturesDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_InvoiceFeaturesDecodeErrorZ* owner_conv = (LDKCResult_InvoiceFeaturesDecodeErrorZ*)(owner & ~1);
+       LDKInvoiceFeatures ret_var = CResult_InvoiceFeaturesDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-typedef struct LDKCustomMessageReader_JCalls {
-       atomic_size_t refcnt;
-       uint32_t read_meth;
-} LDKCustomMessageReader_JCalls;
-static void LDKCustomMessageReader_JCalls_free(void* this_arg) {
-       LDKCustomMessageReader_JCalls *j_calls = (LDKCustomMessageReader_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->read_meth);
-               FREE(j_calls);
+static inline struct LDKDecodeError CResult_InvoiceFeaturesDecodeErrorZ_get_err(LDKCResult_InvoiceFeaturesDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceFeaturesDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_InvoiceFeaturesDecodeErrorZ* owner_conv = (LDKCResult_InvoiceFeaturesDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_InvoiceFeaturesDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-LDKCResult_COption_TypeZDecodeErrorZ read_LDKCustomMessageReader_jcall(const void* this_arg, uint16_t message_type, LDKu8slice buffer) {
-       LDKCustomMessageReader_JCalls *j_calls = (LDKCustomMessageReader_JCalls*) this_arg;
-       LDKu8slice buffer_var = buffer;
-       int8_tArray buffer_arr = init_arr(buffer_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(buffer_arr + 4), buffer_var.data, buffer_var.datalen);
-       uint32_t ret = js_invoke_function_2(j_calls->read_meth, message_type, buffer_arr);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_COption_TypeZDecodeErrorZ ret_conv = *(LDKCResult_COption_TypeZDecodeErrorZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+
+static inline struct LDKChannelTypeFeatures CResult_ChannelTypeFeaturesDecodeErrorZ_get_ok(LDKCResult_ChannelTypeFeaturesDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ChannelTypeFeatures_clone(&*owner->contents.result);
 }
-static void LDKCustomMessageReader_JCalls_cloned(LDKCustomMessageReader* new_obj) {
-       LDKCustomMessageReader_JCalls *j_calls = (LDKCustomMessageReader_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelTypeFeaturesDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ChannelTypeFeaturesDecodeErrorZ* owner_conv = (LDKCResult_ChannelTypeFeaturesDecodeErrorZ*)(owner & ~1);
+       LDKChannelTypeFeatures ret_var = CResult_ChannelTypeFeaturesDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-static inline LDKCustomMessageReader LDKCustomMessageReader_init (/*TODO: JS Object Reference */void* o) {
-       LDKCustomMessageReader_JCalls *calls = MALLOC(sizeof(LDKCustomMessageReader_JCalls), "LDKCustomMessageReader_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
 
-       LDKCustomMessageReader ret = {
-               .this_arg = (void*) calls,
-               .read = read_LDKCustomMessageReader_jcall,
-               .free = LDKCustomMessageReader_JCalls_free,
-       };
-       return ret;
+static inline struct LDKDecodeError CResult_ChannelTypeFeaturesDecodeErrorZ_get_err(LDKCResult_ChannelTypeFeaturesDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-long  __attribute__((visibility("default"))) TS_LDKCustomMessageReader_new(/*TODO: JS Object Reference */void* o) {
-       LDKCustomMessageReader *res_ptr = MALLOC(sizeof(LDKCustomMessageReader), "LDKCustomMessageReader");
-       *res_ptr = LDKCustomMessageReader_init(o);
-       return (long)res_ptr;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelTypeFeaturesDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ChannelTypeFeaturesDecodeErrorZ* owner_conv = (LDKCResult_ChannelTypeFeaturesDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ChannelTypeFeaturesDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-uint32_t  __attribute__((visibility("default"))) TS_CustomMessageReader_read(uint32_t this_arg, int16_t message_type, int8_tArray buffer) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKCustomMessageReader* this_arg_conv = (LDKCustomMessageReader*)this_arg_ptr;
-       LDKu8slice buffer_ref;
-       buffer_ref.datalen = *((uint32_t*)buffer);
-       buffer_ref.data = (int8_t*)(buffer + 4);
-       LDKCResult_COption_TypeZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_TypeZDecodeErrorZ), "LDKCResult_COption_TypeZDecodeErrorZ");
-       *ret_conv = (this_arg_conv->read)(this_arg_conv->this_arg, message_type, buffer_ref);
-       return (uint64_t)ret_conv;
+
+static inline struct LDKNetAddress CResult_NetAddressDecodeErrorZ_get_ok(LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return NetAddress_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NetAddressDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_NetAddressDecodeErrorZ* owner_conv = (LDKCResult_NetAddressDecodeErrorZ*)(owner & ~1);
+       LDKNetAddress *ret_copy = MALLOC(sizeof(LDKNetAddress), "LDKNetAddress");
+       *ret_copy = CResult_NetAddressDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-typedef struct LDKCustomMessageHandler_JCalls {
-       atomic_size_t refcnt;
-       LDKCustomMessageReader_JCalls* CustomMessageReader;
-       uint32_t handle_custom_message_meth;
-       uint32_t get_and_clear_pending_msg_meth;
-} LDKCustomMessageHandler_JCalls;
-static void LDKCustomMessageHandler_JCalls_free(void* this_arg) {
-       LDKCustomMessageHandler_JCalls *j_calls = (LDKCustomMessageHandler_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->handle_custom_message_meth);
-               js_free(j_calls->get_and_clear_pending_msg_meth);
-               FREE(j_calls);
+static inline struct LDKDecodeError CResult_NetAddressDecodeErrorZ_get_err(LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NetAddressDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_NetAddressDecodeErrorZ* owner_conv = (LDKCResult_NetAddressDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_NetAddressDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-LDKCResult_NoneLightningErrorZ handle_custom_message_LDKCustomMessageHandler_jcall(const void* this_arg, LDKType msg, LDKPublicKey sender_node_id) {
-       LDKCustomMessageHandler_JCalls *j_calls = (LDKCustomMessageHandler_JCalls*) this_arg;
-       LDKType* msg_ret = MALLOC(sizeof(LDKType), "LDKType");
-       *msg_ret = msg;
-       int8_tArray sender_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(sender_node_id_arr + 4), sender_node_id.compressed_form, 33);
-       uint32_t ret = js_invoke_function_2(j_calls->handle_custom_message_meth, (uint64_t)msg_ret, sender_node_id_arr);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+
+static inline LDKCVec_UpdateAddHTLCZ CVec_UpdateAddHTLCZ_clone(const LDKCVec_UpdateAddHTLCZ *orig) {
+       LDKCVec_UpdateAddHTLCZ ret = { .data = MALLOC(sizeof(LDKUpdateAddHTLC) * orig->datalen, "LDKCVec_UpdateAddHTLCZ clone bytes"), .datalen = orig->datalen };
+       for (size_t i = 0; i < ret.datalen; i++) {
+               ret.data[i] = UpdateAddHTLC_clone(&orig->data[i]);
+       }
+       return ret;
 }
-LDKCVec_C2Tuple_PublicKeyTypeZZ get_and_clear_pending_msg_LDKCustomMessageHandler_jcall(const void* this_arg) {
-       LDKCustomMessageHandler_JCalls *j_calls = (LDKCustomMessageHandler_JCalls*) this_arg;
-       uint32_tArray ret = js_invoke_function_0(j_calls->get_and_clear_pending_msg_meth);
-       LDKCVec_C2Tuple_PublicKeyTypeZZ ret_constr;
-       ret_constr.datalen = *((uint32_t*)ret);
-       if (ret_constr.datalen > 0)
-               ret_constr.data = MALLOC(ret_constr.datalen * sizeof(LDKC2Tuple_PublicKeyTypeZ), "LDKCVec_C2Tuple_PublicKeyTypeZZ Elements");
-       else
-               ret_constr.data = NULL;
-       uint32_t* ret_vals = (uint32_t*)(ret + 4);
-       for (size_t z = 0; z < ret_constr.datalen; z++) {
-               uint32_t ret_conv_25 = ret_vals[z];
-               void* ret_conv_25_ptr = (void*)(((uint64_t)ret_conv_25) & ~1);
-               CHECK_ACCESS(ret_conv_25_ptr);
-               LDKC2Tuple_PublicKeyTypeZ ret_conv_25_conv = *(LDKC2Tuple_PublicKeyTypeZ*)(ret_conv_25_ptr);
-               FREE((void*)ret_conv_25);
-               ret_constr.data[z] = ret_conv_25_conv;
+static inline LDKCVec_UpdateFulfillHTLCZ CVec_UpdateFulfillHTLCZ_clone(const LDKCVec_UpdateFulfillHTLCZ *orig) {
+       LDKCVec_UpdateFulfillHTLCZ ret = { .data = MALLOC(sizeof(LDKUpdateFulfillHTLC) * orig->datalen, "LDKCVec_UpdateFulfillHTLCZ clone bytes"), .datalen = orig->datalen };
+       for (size_t i = 0; i < ret.datalen; i++) {
+               ret.data[i] = UpdateFulfillHTLC_clone(&orig->data[i]);
        }
-       return ret_constr;
+       return ret;
 }
-static void LDKCustomMessageHandler_JCalls_cloned(LDKCustomMessageHandler* new_obj) {
-       LDKCustomMessageHandler_JCalls *j_calls = (LDKCustomMessageHandler_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
-       atomic_fetch_add_explicit(&j_calls->CustomMessageReader->refcnt, 1, memory_order_release);
+static inline LDKCVec_UpdateFailHTLCZ CVec_UpdateFailHTLCZ_clone(const LDKCVec_UpdateFailHTLCZ *orig) {
+       LDKCVec_UpdateFailHTLCZ ret = { .data = MALLOC(sizeof(LDKUpdateFailHTLC) * orig->datalen, "LDKCVec_UpdateFailHTLCZ clone bytes"), .datalen = orig->datalen };
+       for (size_t i = 0; i < ret.datalen; i++) {
+               ret.data[i] = UpdateFailHTLC_clone(&orig->data[i]);
+       }
+       return ret;
 }
-static inline LDKCustomMessageHandler LDKCustomMessageHandler_init (/*TODO: JS Object Reference */void* o, /*TODO: JS Object Reference */void* CustomMessageReader) {
-       LDKCustomMessageHandler_JCalls *calls = MALLOC(sizeof(LDKCustomMessageHandler_JCalls), "LDKCustomMessageHandler_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
-
-       LDKCustomMessageHandler ret = {
-               .this_arg = (void*) calls,
-               .handle_custom_message = handle_custom_message_LDKCustomMessageHandler_jcall,
-               .get_and_clear_pending_msg = get_and_clear_pending_msg_LDKCustomMessageHandler_jcall,
-               .free = LDKCustomMessageHandler_JCalls_free,
-               .CustomMessageReader = LDKCustomMessageReader_init(CustomMessageReader),
-       };
-       calls->CustomMessageReader = ret.CustomMessageReader.this_arg;
+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;
 }
-long  __attribute__((visibility("default"))) TS_LDKCustomMessageHandler_new(/*TODO: JS Object Reference */void* o, /*TODO: JS Object Reference */ void* CustomMessageReader) {
-       LDKCustomMessageHandler *res_ptr = MALLOC(sizeof(LDKCustomMessageHandler), "LDKCustomMessageHandler");
-       *res_ptr = LDKCustomMessageHandler_init(o, CustomMessageReader);
-       return (long)res_ptr;
+static inline struct LDKAcceptChannel CResult_AcceptChannelDecodeErrorZ_get_ok(LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return AcceptChannel_clone(&*owner->contents.result);
 }
-uint32_t  __attribute__((visibility("default"))) TS_CustomMessageHandler_handle_custom_message(uint32_t this_arg, uint32_t msg, int8_tArray sender_node_id) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKCustomMessageHandler* this_arg_conv = (LDKCustomMessageHandler*)this_arg_ptr;
-       void* msg_ptr = (void*)(((uint64_t)msg) & ~1);
-       CHECK_ACCESS(msg_ptr);
-       LDKType msg_conv = *(LDKType*)(msg_ptr);
-       LDKPublicKey sender_node_id_ref;
-       CHECK(*((uint32_t*)sender_node_id) == 33);
-       memcpy(sender_node_id_ref.compressed_form, (uint8_t*)(sender_node_id + 4), 33);
-       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
-       *ret_conv = (this_arg_conv->handle_custom_message)(this_arg_conv->this_arg, msg_conv, sender_node_id_ref);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_AcceptChannelDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_AcceptChannelDecodeErrorZ* owner_conv = (LDKCResult_AcceptChannelDecodeErrorZ*)(owner & ~1);
+       LDKAcceptChannel ret_var = CResult_AcceptChannelDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_CustomMessageHandler_get_and_clear_pending_msg(uint32_t this_arg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKCustomMessageHandler* this_arg_conv = (LDKCustomMessageHandler*)this_arg_ptr;
-       LDKCVec_C2Tuple_PublicKeyTypeZZ ret_var = (this_arg_conv->get_and_clear_pending_msg)(this_arg_conv->this_arg);
-       uint32_tArray ret_arr = NULL;
-       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 z = 0; z < ret_var.datalen; z++) {
-               LDKC2Tuple_PublicKeyTypeZ* ret_conv_25_conv = MALLOC(sizeof(LDKC2Tuple_PublicKeyTypeZ), "LDKC2Tuple_PublicKeyTypeZ");
-               *ret_conv_25_conv = ret_var.data[z];
-               ret_arr_ptr[z] = ((uint64_t)ret_conv_25_conv);
+static inline struct LDKDecodeError CResult_AcceptChannelDecodeErrorZ_get_err(LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_AcceptChannelDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_AcceptChannelDecodeErrorZ* owner_conv = (LDKCResult_AcceptChannelDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_AcceptChannelDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+       return ret_ref;
 }
 
-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);
+static inline struct LDKAnnouncementSignatures CResult_AnnouncementSignaturesDecodeErrorZ_get_ok(LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return AnnouncementSignatures_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_AnnouncementSignaturesDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_AnnouncementSignaturesDecodeErrorZ* owner_conv = (LDKCResult_AnnouncementSignaturesDecodeErrorZ*)(owner & ~1);
+       LDKAnnouncementSignatures ret_var = CResult_AnnouncementSignaturesDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-uintptr_t send_data_LDKSocketDescriptor_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 inline struct LDKDecodeError CResult_AnnouncementSignaturesDecodeErrorZ_get_err(LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-void disconnect_socket_LDKSocketDescriptor_jcall(void* this_arg) {
-       LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg;
-       js_invoke_function_0(j_calls->disconnect_socket_meth);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_AnnouncementSignaturesDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_AnnouncementSignaturesDecodeErrorZ* owner_conv = (LDKCResult_AnnouncementSignaturesDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_AnnouncementSignaturesDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-bool eq_LDKSocketDescriptor_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, (uint64_t)other_arg_clone);
+
+static inline struct LDKChannelReestablish CResult_ChannelReestablishDecodeErrorZ_get_ok(LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ChannelReestablish_clone(&*owner->contents.result);
 }
-uint64_t hash_LDKSocketDescriptor_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_ChannelReestablishDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ChannelReestablishDecodeErrorZ* owner_conv = (LDKCResult_ChannelReestablishDecodeErrorZ*)(owner & ~1);
+       LDKChannelReestablish ret_var = CResult_ChannelReestablishDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-static void LDKSocketDescriptor_JCalls_cloned(LDKSocketDescriptor* new_obj) {
-       LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+
+static inline struct LDKDecodeError CResult_ChannelReestablishDecodeErrorZ_get_err(LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelReestablishDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ChannelReestablishDecodeErrorZ* owner_conv = (LDKCResult_ChannelReestablishDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ChannelReestablishDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-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_LDKSocketDescriptor_jcall,
-               .disconnect_socket = disconnect_socket_LDKSocketDescriptor_jcall,
-               .eq = eq_LDKSocketDescriptor_jcall,
-               .hash = hash_LDKSocketDescriptor_jcall,
-               .cloned = LDKSocketDescriptor_JCalls_cloned,
-               .free = LDKSocketDescriptor_JCalls_free,
-       };
-       return ret;
+static inline struct LDKClosingSigned CResult_ClosingSignedDecodeErrorZ_get_ok(LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ClosingSigned_clone(&*owner->contents.result);
 }
-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_ClosingSignedDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ClosingSignedDecodeErrorZ* owner_conv = (LDKCResult_ClosingSignedDecodeErrorZ*)(owner & ~1);
+       LDKClosingSigned ret_var = CResult_ClosingSignedDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_SocketDescriptor_send_data(uint32_t this_arg, int8_tArray data, jboolean resume_read) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKSocketDescriptor* this_arg_conv = (LDKSocketDescriptor*)this_arg_ptr;
-       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;
+
+static inline struct LDKDecodeError CResult_ClosingSignedDecodeErrorZ_get_err(LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ClosingSignedDecodeErrorZ* owner_conv = (LDKCResult_ClosingSignedDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ClosingSignedDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_SocketDescriptor_disconnect_socket(uint32_t this_arg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKSocketDescriptor* this_arg_conv = (LDKSocketDescriptor*)this_arg_ptr;
-       (this_arg_conv->disconnect_socket)(this_arg_conv->this_arg);
+static inline struct LDKClosingSignedFeeRange CResult_ClosingSignedFeeRangeDecodeErrorZ_get_ok(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ClosingSignedFeeRange_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* owner_conv = (LDKCResult_ClosingSignedFeeRangeDecodeErrorZ*)(owner & ~1);
+       LDKClosingSignedFeeRange ret_var = CResult_ClosingSignedFeeRangeDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_SocketDescriptor_hash(uint32_t this_arg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKSocketDescriptor* this_arg_conv = (LDKSocketDescriptor*)this_arg_ptr;
-       int64_t ret_val = (this_arg_conv->hash)(this_arg_conv->this_arg);
-       return ret_val;
+static inline struct LDKDecodeError CResult_ClosingSignedFeeRangeDecodeErrorZ_get_err(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* owner_conv = (LDKCResult_ClosingSignedFeeRangeDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ClosingSignedFeeRangeDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-typedef struct LDKScore_JCalls {
-       atomic_size_t refcnt;
-       uint32_t channel_penalty_msat_meth;
-       uint32_t payment_path_failed_meth;
-       uint32_t payment_path_successful_meth;
-       uint32_t write_meth;
-} LDKScore_JCalls;
-static void LDKScore_JCalls_free(void* this_arg) {
-       LDKScore_JCalls *j_calls = (LDKScore_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->channel_penalty_msat_meth);
-               js_free(j_calls->payment_path_failed_meth);
-               js_free(j_calls->payment_path_successful_meth);
-               js_free(j_calls->write_meth);
-               FREE(j_calls);
+static inline struct LDKCommitmentSigned CResult_CommitmentSignedDecodeErrorZ_get_ok(LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return CommitmentSigned_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_CommitmentSignedDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_CommitmentSignedDecodeErrorZ* owner_conv = (LDKCResult_CommitmentSignedDecodeErrorZ*)(owner & ~1);
+       LDKCommitmentSigned ret_var = CResult_CommitmentSignedDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-uint64_t channel_penalty_msat_LDKScore_jcall(const void* this_arg, uint64_t short_channel_id, uint64_t send_amt_msat, LDKCOption_u64Z channel_capacity_msat, const LDKNodeId * source, const LDKNodeId * target) {
-       LDKScore_JCalls *j_calls = (LDKScore_JCalls*) this_arg;
-       LDKCOption_u64Z *channel_capacity_msat_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
-       *channel_capacity_msat_copy = channel_capacity_msat;
-       uint64_t channel_capacity_msat_ref = (uint64_t)channel_capacity_msat_copy;
-       LDKNodeId source_var = *source;
-       uint64_t source_ref = 0;
-       source_var = NodeId_clone(source);
-       CHECK((((uint64_t)source_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&source_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(source_var);
-       source_ref = (uint64_t)source_var.inner;
-       if (source_var.is_owned) {
-               source_ref |= 1;
+
+static inline struct LDKDecodeError CResult_CommitmentSignedDecodeErrorZ_get_err(LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_CommitmentSignedDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_CommitmentSignedDecodeErrorZ* owner_conv = (LDKCResult_CommitmentSignedDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_CommitmentSignedDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       LDKNodeId target_var = *target;
-       uint64_t target_ref = 0;
-       target_var = NodeId_clone(target);
-       CHECK((((uint64_t)target_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&target_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(target_var);
-       target_ref = (uint64_t)target_var.inner;
-       if (target_var.is_owned) {
-               target_ref |= 1;
+       return ret_ref;
+}
+
+static inline struct LDKFundingCreated CResult_FundingCreatedDecodeErrorZ_get_ok(LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return FundingCreated_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_FundingCreatedDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_FundingCreatedDecodeErrorZ* owner_conv = (LDKCResult_FundingCreatedDecodeErrorZ*)(owner & ~1);
+       LDKFundingCreated ret_var = CResult_FundingCreatedDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return js_invoke_function_5(j_calls->channel_penalty_msat_meth, short_channel_id, send_amt_msat, channel_capacity_msat_ref, source_ref, target_ref);
+       return ret_ref;
 }
-void payment_path_failed_LDKScore_jcall(void* this_arg, LDKCVec_RouteHopZ path, uint64_t short_channel_id) {
-       LDKScore_JCalls *j_calls = (LDKScore_JCalls*) this_arg;
-       LDKCVec_RouteHopZ path_var = path;
-       uint32_tArray path_arr = NULL;
-       path_arr = init_arr(path_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
-       uint32_t *path_arr_ptr = (uint32_t*)(path_arr + 4);
-       for (size_t k = 0; k < path_var.datalen; k++) {
-               LDKRouteHop path_conv_10_var = path_var.data[k];
-               uint64_t path_conv_10_ref = 0;
-               CHECK((((uint64_t)path_conv_10_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&path_conv_10_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_var);
-               path_conv_10_ref = (uint64_t)path_conv_10_var.inner;
-               if (path_conv_10_var.is_owned) {
-                       path_conv_10_ref |= 1;
-               }
-               path_arr_ptr[k] = path_conv_10_ref;
+
+static inline struct LDKDecodeError CResult_FundingCreatedDecodeErrorZ_get_err(LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_FundingCreatedDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_FundingCreatedDecodeErrorZ* owner_conv = (LDKCResult_FundingCreatedDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_FundingCreatedDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       
-       FREE(path_var.data);
-       js_invoke_function_2(j_calls->payment_path_failed_meth, path_arr, short_channel_id);
+       return ret_ref;
 }
-void payment_path_successful_LDKScore_jcall(void* this_arg, LDKCVec_RouteHopZ path) {
-       LDKScore_JCalls *j_calls = (LDKScore_JCalls*) this_arg;
-       LDKCVec_RouteHopZ path_var = path;
-       uint32_tArray path_arr = NULL;
-       path_arr = init_arr(path_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
-       uint32_t *path_arr_ptr = (uint32_t*)(path_arr + 4);
-       for (size_t k = 0; k < path_var.datalen; k++) {
-               LDKRouteHop path_conv_10_var = path_var.data[k];
-               uint64_t path_conv_10_ref = 0;
-               CHECK((((uint64_t)path_conv_10_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&path_conv_10_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_var);
-               path_conv_10_ref = (uint64_t)path_conv_10_var.inner;
-               if (path_conv_10_var.is_owned) {
-                       path_conv_10_ref |= 1;
-               }
-               path_arr_ptr[k] = path_conv_10_ref;
+
+static inline struct LDKFundingSigned CResult_FundingSignedDecodeErrorZ_get_ok(LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return FundingSigned_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_FundingSignedDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_FundingSignedDecodeErrorZ* owner_conv = (LDKCResult_FundingSignedDecodeErrorZ*)(owner & ~1);
+       LDKFundingSigned ret_var = CResult_FundingSignedDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       
-       FREE(path_var.data);
-       js_invoke_function_1(j_calls->payment_path_successful_meth, path_arr);
+       return ret_ref;
 }
-LDKCVec_u8Z write_LDKScore_jcall(const void* this_arg) {
-       LDKScore_JCalls *j_calls = (LDKScore_JCalls*) this_arg;
-       int8_tArray ret = js_invoke_function_0(j_calls->write_meth);
-       LDKCVec_u8Z ret_ref;
-       ret_ref.datalen = *((uint32_t*)ret);
-       ret_ref.data = MALLOC(ret_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(ret_ref.data, (uint8_t*)(ret + 4), ret_ref.datalen);
+
+static inline struct LDKDecodeError CResult_FundingSignedDecodeErrorZ_get_err(LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_FundingSignedDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_FundingSignedDecodeErrorZ* owner_conv = (LDKCResult_FundingSignedDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_FundingSignedDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_ref;
 }
-static void LDKScore_JCalls_cloned(LDKScore* new_obj) {
-       LDKScore_JCalls *j_calls = (LDKScore_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+
+static inline struct LDKFundingLocked CResult_FundingLockedDecodeErrorZ_get_ok(LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return FundingLocked_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_FundingLockedDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_FundingLockedDecodeErrorZ* owner_conv = (LDKCResult_FundingLockedDecodeErrorZ*)(owner & ~1);
+       LDKFundingLocked ret_var = CResult_FundingLockedDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-static inline LDKScore LDKScore_init (/*TODO: JS Object Reference */void* o) {
-       LDKScore_JCalls *calls = MALLOC(sizeof(LDKScore_JCalls), "LDKScore_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
 
-       LDKScore ret = {
-               .this_arg = (void*) calls,
-               .channel_penalty_msat = channel_penalty_msat_LDKScore_jcall,
-               .payment_path_failed = payment_path_failed_LDKScore_jcall,
-               .payment_path_successful = payment_path_successful_LDKScore_jcall,
-               .write = write_LDKScore_jcall,
-               .free = LDKScore_JCalls_free,
-       };
-       return ret;
+static inline struct LDKDecodeError CResult_FundingLockedDecodeErrorZ_get_err(LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-long  __attribute__((visibility("default"))) TS_LDKScore_new(/*TODO: JS Object Reference */void* o) {
-       LDKScore *res_ptr = MALLOC(sizeof(LDKScore), "LDKScore");
-       *res_ptr = LDKScore_init(o);
-       return (long)res_ptr;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_FundingLockedDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_FundingLockedDecodeErrorZ* owner_conv = (LDKCResult_FundingLockedDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_FundingLockedDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_Score_channel_penalty_msat(uint32_t this_arg, int64_t short_channel_id, int64_t send_amt_msat, uint32_t channel_capacity_msat, uint32_t source, uint32_t target) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKScore* this_arg_conv = (LDKScore*)this_arg_ptr;
-       void* channel_capacity_msat_ptr = (void*)(((uint64_t)channel_capacity_msat) & ~1);
-       CHECK_ACCESS(channel_capacity_msat_ptr);
-       LDKCOption_u64Z channel_capacity_msat_conv = *(LDKCOption_u64Z*)(channel_capacity_msat_ptr);
-       channel_capacity_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)channel_capacity_msat) & ~1));
-       LDKNodeId source_conv;
-       source_conv.inner = (void*)(source & (~1));
-       source_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(source_conv);
-       LDKNodeId target_conv;
-       target_conv.inner = (void*)(target & (~1));
-       target_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(target_conv);
-       int64_t ret_val = (this_arg_conv->channel_penalty_msat)(this_arg_conv->this_arg, short_channel_id, send_amt_msat, channel_capacity_msat_conv, &source_conv, &target_conv);
-       return ret_val;
+
+static inline struct LDKInit CResult_InitDecodeErrorZ_get_ok(LDKCResult_InitDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return Init_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_InitDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_InitDecodeErrorZ* owner_conv = (LDKCResult_InitDecodeErrorZ*)(owner & ~1);
+       LDKInit ret_var = CResult_InitDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_Score_payment_path_failed(uint32_t this_arg, uint32_tArray path, int64_t short_channel_id) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKScore* this_arg_conv = (LDKScore*)this_arg_ptr;
-       LDKCVec_RouteHopZ path_constr;
-       path_constr.datalen = *((uint32_t*)path);
-       if (path_constr.datalen > 0)
-               path_constr.data = MALLOC(path_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements");
-       else
-               path_constr.data = NULL;
-       uint32_t* path_vals = (uint32_t*)(path + 4);
-       for (size_t k = 0; k < path_constr.datalen; k++) {
-               uint32_t path_conv_10 = path_vals[k];
-               LDKRouteHop path_conv_10_conv;
-               path_conv_10_conv.inner = (void*)(path_conv_10 & (~1));
-               path_conv_10_conv.is_owned = (path_conv_10 & 1) || (path_conv_10 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_conv);
-               path_conv_10_conv = RouteHop_clone(&path_conv_10_conv);
-               path_constr.data[k] = path_conv_10_conv;
+static inline struct LDKDecodeError CResult_InitDecodeErrorZ_get_err(LDKCResult_InitDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_InitDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_InitDecodeErrorZ* owner_conv = (LDKCResult_InitDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_InitDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       (this_arg_conv->payment_path_failed)(this_arg_conv->this_arg, path_constr, short_channel_id);
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_Score_payment_path_successful(uint32_t this_arg, uint32_tArray path) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKScore* this_arg_conv = (LDKScore*)this_arg_ptr;
-       LDKCVec_RouteHopZ path_constr;
-       path_constr.datalen = *((uint32_t*)path);
-       if (path_constr.datalen > 0)
-               path_constr.data = MALLOC(path_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements");
-       else
-               path_constr.data = NULL;
-       uint32_t* path_vals = (uint32_t*)(path + 4);
-       for (size_t k = 0; k < path_constr.datalen; k++) {
-               uint32_t path_conv_10 = path_vals[k];
-               LDKRouteHop path_conv_10_conv;
-               path_conv_10_conv.inner = (void*)(path_conv_10 & (~1));
-               path_conv_10_conv.is_owned = (path_conv_10 & 1) || (path_conv_10 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_conv);
-               path_conv_10_conv = RouteHop_clone(&path_conv_10_conv);
-               path_constr.data[k] = path_conv_10_conv;
+static inline struct LDKOpenChannel CResult_OpenChannelDecodeErrorZ_get_ok(LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return OpenChannel_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_OpenChannelDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_OpenChannelDecodeErrorZ* owner_conv = (LDKCResult_OpenChannelDecodeErrorZ*)(owner & ~1);
+       LDKOpenChannel ret_var = CResult_OpenChannelDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       (this_arg_conv->payment_path_successful)(this_arg_conv->this_arg, path_constr);
+       return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_Score_write(uint32_t this_arg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKScore* this_arg_conv = (LDKScore*)this_arg_ptr;
-       LDKCVec_u8Z ret_var = (this_arg_conv->write)(this_arg_conv->this_arg);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+static inline struct LDKDecodeError CResult_OpenChannelDecodeErrorZ_get_err(LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-
-typedef struct LDKLockableScore_JCalls {
-       atomic_size_t refcnt;
-       uint32_t lock_meth;
-} LDKLockableScore_JCalls;
-static void LDKLockableScore_JCalls_free(void* this_arg) {
-       LDKLockableScore_JCalls *j_calls = (LDKLockableScore_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->lock_meth);
-               FREE(j_calls);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_OpenChannelDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_OpenChannelDecodeErrorZ* owner_conv = (LDKCResult_OpenChannelDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_OpenChannelDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-LDKScore lock_LDKLockableScore_jcall(const void* this_arg) {
-       LDKLockableScore_JCalls *j_calls = (LDKLockableScore_JCalls*) this_arg;
-       uint32_t ret = js_invoke_function_0(j_calls->lock_meth);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKScore ret_conv = *(LDKScore*)(ret_ptr);// Warning: we may need a move here but no clone is available for LDKScore
-       
-       return ret_conv;
+
+static inline struct LDKRevokeAndACK CResult_RevokeAndACKDecodeErrorZ_get_ok(LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return RevokeAndACK_clone(&*owner->contents.result);
 }
-static void LDKLockableScore_JCalls_cloned(LDKLockableScore* new_obj) {
-       LDKLockableScore_JCalls *j_calls = (LDKLockableScore_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RevokeAndACKDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_RevokeAndACKDecodeErrorZ* owner_conv = (LDKCResult_RevokeAndACKDecodeErrorZ*)(owner & ~1);
+       LDKRevokeAndACK ret_var = CResult_RevokeAndACKDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-static inline LDKLockableScore LDKLockableScore_init (/*TODO: JS Object Reference */void* o) {
-       LDKLockableScore_JCalls *calls = MALLOC(sizeof(LDKLockableScore_JCalls), "LDKLockableScore_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
 
-       LDKLockableScore ret = {
-               .this_arg = (void*) calls,
-               .lock = lock_LDKLockableScore_jcall,
-               .free = LDKLockableScore_JCalls_free,
-       };
-       return ret;
-}
-long  __attribute__((visibility("default"))) TS_LDKLockableScore_new(/*TODO: JS Object Reference */void* o) {
-       LDKLockableScore *res_ptr = MALLOC(sizeof(LDKLockableScore), "LDKLockableScore");
-       *res_ptr = LDKLockableScore_init(o);
-       return (long)res_ptr;
+static inline struct LDKDecodeError CResult_RevokeAndACKDecodeErrorZ_get_err(LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-uint32_t  __attribute__((visibility("default"))) TS_LockableScore_lock(uint32_t this_arg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKLockableScore* this_arg_conv = (LDKLockableScore*)this_arg_ptr;
-       LDKScore* ret_ret = MALLOC(sizeof(LDKScore), "LDKScore");
-       *ret_ret = (this_arg_conv->lock)(this_arg_conv->this_arg);
-       return (uint64_t)ret_ret;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RevokeAndACKDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_RevokeAndACKDecodeErrorZ* owner_conv = (LDKCResult_RevokeAndACKDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_RevokeAndACKDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-typedef struct LDKChannelManagerPersister_JCalls {
-       atomic_size_t refcnt;
-       uint32_t persist_manager_meth;
-} LDKChannelManagerPersister_JCalls;
-static void LDKChannelManagerPersister_JCalls_free(void* this_arg) {
-       LDKChannelManagerPersister_JCalls *j_calls = (LDKChannelManagerPersister_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->persist_manager_meth);
-               FREE(j_calls);
+static inline struct LDKShutdown CResult_ShutdownDecodeErrorZ_get_ok(LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return Shutdown_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ShutdownDecodeErrorZ* owner_conv = (LDKCResult_ShutdownDecodeErrorZ*)(owner & ~1);
+       LDKShutdown ret_var = CResult_ShutdownDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-LDKCResult_NoneErrorZ persist_manager_LDKChannelManagerPersister_jcall(const void* this_arg, const LDKChannelManager * channel_manager) {
-       LDKChannelManagerPersister_JCalls *j_calls = (LDKChannelManagerPersister_JCalls*) this_arg;
-       LDKChannelManager channel_manager_var = *channel_manager;
-       uint64_t channel_manager_ref = 0;
-       // Warning: we may need a move here but no clone is available for LDKChannelManager
-       CHECK((((uint64_t)channel_manager_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&channel_manager_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_manager_var);
-       channel_manager_ref = (uint64_t)channel_manager_var.inner;
-       if (channel_manager_var.is_owned) {
-               channel_manager_ref |= 1;
+
+static inline struct LDKDecodeError CResult_ShutdownDecodeErrorZ_get_err(LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ShutdownDecodeErrorZ* owner_conv = (LDKCResult_ShutdownDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ShutdownDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       uint32_t ret = js_invoke_function_1(j_calls->persist_manager_meth, channel_manager_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_NoneErrorZ ret_conv = *(LDKCResult_NoneErrorZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+       return ret_ref;
 }
-static void LDKChannelManagerPersister_JCalls_cloned(LDKChannelManagerPersister* new_obj) {
-       LDKChannelManagerPersister_JCalls *j_calls = (LDKChannelManagerPersister_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+
+static inline struct LDKUpdateFailHTLC CResult_UpdateFailHTLCDecodeErrorZ_get_ok(LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return UpdateFailHTLC_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFailHTLCDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_UpdateFailHTLCDecodeErrorZ* owner_conv = (LDKCResult_UpdateFailHTLCDecodeErrorZ*)(owner & ~1);
+       LDKUpdateFailHTLC ret_var = CResult_UpdateFailHTLCDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-static inline LDKChannelManagerPersister LDKChannelManagerPersister_init (/*TODO: JS Object Reference */void* o) {
-       LDKChannelManagerPersister_JCalls *calls = MALLOC(sizeof(LDKChannelManagerPersister_JCalls), "LDKChannelManagerPersister_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
 
-       LDKChannelManagerPersister ret = {
-               .this_arg = (void*) calls,
-               .persist_manager = persist_manager_LDKChannelManagerPersister_jcall,
-               .free = LDKChannelManagerPersister_JCalls_free,
-       };
-       return ret;
+static inline struct LDKDecodeError CResult_UpdateFailHTLCDecodeErrorZ_get_err(LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-long  __attribute__((visibility("default"))) TS_LDKChannelManagerPersister_new(/*TODO: JS Object Reference */void* o) {
-       LDKChannelManagerPersister *res_ptr = MALLOC(sizeof(LDKChannelManagerPersister), "LDKChannelManagerPersister");
-       *res_ptr = LDKChannelManagerPersister_init(o);
-       return (long)res_ptr;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFailHTLCDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_UpdateFailHTLCDecodeErrorZ* owner_conv = (LDKCResult_UpdateFailHTLCDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_UpdateFailHTLCDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerPersister_persist_manager(uint32_t this_arg, uint32_t channel_manager) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelManagerPersister* this_arg_conv = (LDKChannelManagerPersister*)this_arg_ptr;
-       LDKChannelManager channel_manager_conv;
-       channel_manager_conv.inner = (void*)(channel_manager & (~1));
-       channel_manager_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_manager_conv);
-       LDKCResult_NoneErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneErrorZ), "LDKCResult_NoneErrorZ");
-       *ret_conv = (this_arg_conv->persist_manager)(this_arg_conv->this_arg, &channel_manager_conv);
-       return (uint64_t)ret_conv;
+
+static inline struct LDKUpdateFailMalformedHTLC CResult_UpdateFailMalformedHTLCDecodeErrorZ_get_ok(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return UpdateFailMalformedHTLC_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* owner_conv = (LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ*)(owner & ~1);
+       LDKUpdateFailMalformedHTLC ret_var = CResult_UpdateFailMalformedHTLCDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t __attribute__((visibility("default"))) TS_LDKFallback_ref_from_ptr(uint32_t ptr) {
-       LDKFallback *obj = (LDKFallback*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKFallback_SegWitProgram: {
-                       uint8_t version_val = obj->seg_wit_program.version._0;
-                       LDKCVec_u8Z program_var = obj->seg_wit_program.program;
-                       int8_tArray program_arr = init_arr(program_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(program_arr + 4), program_var.data, program_var.datalen);
-                       return 0 /* LDKFallback - SegWitProgram */; (void) version_val; (void) program_arr;
-               }
-               case LDKFallback_PubKeyHash: {
-                       int8_tArray pub_key_hash_arr = init_arr(20, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(pub_key_hash_arr + 4), obj->pub_key_hash.data, 20);
-                       return 0 /* LDKFallback - PubKeyHash */; (void) pub_key_hash_arr;
-               }
-               case LDKFallback_ScriptHash: {
-                       int8_tArray script_hash_arr = init_arr(20, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(script_hash_arr + 4), obj->script_hash.data, 20);
-                       return 0 /* LDKFallback - ScriptHash */; (void) script_hash_arr;
-               }
-               default: abort();
+static inline struct LDKDecodeError CResult_UpdateFailMalformedHTLCDecodeErrorZ_get_err(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* owner_conv = (LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_UpdateFailMalformedHTLCDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-typedef struct LDKPayer_JCalls {
-       atomic_size_t refcnt;
-       uint32_t node_id_meth;
-       uint32_t first_hops_meth;
-       uint32_t send_payment_meth;
-       uint32_t send_spontaneous_payment_meth;
-       uint32_t retry_payment_meth;
-       uint32_t abandon_payment_meth;
-} LDKPayer_JCalls;
-static void LDKPayer_JCalls_free(void* this_arg) {
-       LDKPayer_JCalls *j_calls = (LDKPayer_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->node_id_meth);
-               js_free(j_calls->first_hops_meth);
-               js_free(j_calls->send_payment_meth);
-               js_free(j_calls->send_spontaneous_payment_meth);
-               js_free(j_calls->retry_payment_meth);
-               js_free(j_calls->abandon_payment_meth);
-               FREE(j_calls);
+
+static inline struct LDKUpdateFee CResult_UpdateFeeDecodeErrorZ_get_ok(LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return UpdateFee_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFeeDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_UpdateFeeDecodeErrorZ* owner_conv = (LDKCResult_UpdateFeeDecodeErrorZ*)(owner & ~1);
+       LDKUpdateFee ret_var = CResult_UpdateFeeDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-LDKPublicKey node_id_LDKPayer_jcall(const void* this_arg) {
-       LDKPayer_JCalls *j_calls = (LDKPayer_JCalls*) this_arg;
-       int8_tArray ret = js_invoke_function_0(j_calls->node_id_meth);
-       LDKPublicKey ret_ref;
-       CHECK(*((uint32_t*)ret) == 33);
-       memcpy(ret_ref.compressed_form, (uint8_t*)(ret + 4), 33);
+
+static inline struct LDKDecodeError CResult_UpdateFeeDecodeErrorZ_get_err(LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFeeDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_UpdateFeeDecodeErrorZ* owner_conv = (LDKCResult_UpdateFeeDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_UpdateFeeDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_ref;
 }
-LDKCVec_ChannelDetailsZ first_hops_LDKPayer_jcall(const void* this_arg) {
-       LDKPayer_JCalls *j_calls = (LDKPayer_JCalls*) this_arg;
-       uint32_tArray ret = js_invoke_function_0(j_calls->first_hops_meth);
-       LDKCVec_ChannelDetailsZ ret_constr;
-       ret_constr.datalen = *((uint32_t*)ret);
-       if (ret_constr.datalen > 0)
-               ret_constr.data = MALLOC(ret_constr.datalen * sizeof(LDKChannelDetails), "LDKCVec_ChannelDetailsZ Elements");
-       else
-               ret_constr.data = NULL;
-       uint32_t* ret_vals = (uint32_t*)(ret + 4);
-       for (size_t q = 0; q < ret_constr.datalen; q++) {
-               uint32_t ret_conv_16 = ret_vals[q];
-               LDKChannelDetails ret_conv_16_conv;
-               ret_conv_16_conv.inner = (void*)(ret_conv_16 & (~1));
-               ret_conv_16_conv.is_owned = (ret_conv_16 & 1) || (ret_conv_16 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_16_conv);
-               ret_constr.data[q] = ret_conv_16_conv;
+
+static inline struct LDKUpdateFulfillHTLC CResult_UpdateFulfillHTLCDecodeErrorZ_get_ok(LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return UpdateFulfillHTLC_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFulfillHTLCDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_UpdateFulfillHTLCDecodeErrorZ* owner_conv = (LDKCResult_UpdateFulfillHTLCDecodeErrorZ*)(owner & ~1);
+       LDKUpdateFulfillHTLC ret_var = CResult_UpdateFulfillHTLCDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret_constr;
+       return ret_ref;
 }
-LDKCResult_PaymentIdPaymentSendFailureZ send_payment_LDKPayer_jcall(const void* this_arg, const LDKRoute * route, LDKThirtyTwoBytes payment_hash, LDKThirtyTwoBytes payment_secret) {
-       LDKPayer_JCalls *j_calls = (LDKPayer_JCalls*) this_arg;
-       LDKRoute route_var = *route;
-       uint64_t route_ref = 0;
-       route_var = Route_clone(route);
-       CHECK((((uint64_t)route_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&route_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(route_var);
-       route_ref = (uint64_t)route_var.inner;
-       if (route_var.is_owned) {
-               route_ref |= 1;
-       }
-       int8_tArray payment_hash_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(payment_hash_arr + 4), 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), payment_secret.data, 32);
-       uint32_t ret = js_invoke_function_3(j_calls->send_payment_meth, route_ref, payment_hash_arr, payment_secret_arr);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_PaymentIdPaymentSendFailureZ ret_conv = *(LDKCResult_PaymentIdPaymentSendFailureZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+
+static inline struct LDKDecodeError CResult_UpdateFulfillHTLCDecodeErrorZ_get_err(LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-LDKCResult_PaymentIdPaymentSendFailureZ send_spontaneous_payment_LDKPayer_jcall(const void* this_arg, const LDKRoute * route, LDKThirtyTwoBytes payment_preimage) {
-       LDKPayer_JCalls *j_calls = (LDKPayer_JCalls*) this_arg;
-       LDKRoute route_var = *route;
-       uint64_t route_ref = 0;
-       route_var = Route_clone(route);
-       CHECK((((uint64_t)route_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&route_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(route_var);
-       route_ref = (uint64_t)route_var.inner;
-       if (route_var.is_owned) {
-               route_ref |= 1;
-       }
-       int8_tArray payment_preimage_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(payment_preimage_arr + 4), payment_preimage.data, 32);
-       uint32_t ret = js_invoke_function_2(j_calls->send_spontaneous_payment_meth, route_ref, payment_preimage_arr);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_PaymentIdPaymentSendFailureZ ret_conv = *(LDKCResult_PaymentIdPaymentSendFailureZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFulfillHTLCDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_UpdateFulfillHTLCDecodeErrorZ* owner_conv = (LDKCResult_UpdateFulfillHTLCDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_UpdateFulfillHTLCDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-LDKCResult_NonePaymentSendFailureZ retry_payment_LDKPayer_jcall(const void* this_arg, const LDKRoute * route, LDKThirtyTwoBytes payment_id) {
-       LDKPayer_JCalls *j_calls = (LDKPayer_JCalls*) this_arg;
-       LDKRoute route_var = *route;
-       uint64_t route_ref = 0;
-       route_var = Route_clone(route);
-       CHECK((((uint64_t)route_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&route_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(route_var);
-       route_ref = (uint64_t)route_var.inner;
-       if (route_var.is_owned) {
-               route_ref |= 1;
-       }
-       int8_tArray payment_id_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(payment_id_arr + 4), payment_id.data, 32);
-       uint32_t ret = js_invoke_function_2(j_calls->retry_payment_meth, route_ref, payment_id_arr);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_NonePaymentSendFailureZ ret_conv = *(LDKCResult_NonePaymentSendFailureZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+
+static inline struct LDKUpdateAddHTLC CResult_UpdateAddHTLCDecodeErrorZ_get_ok(LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return UpdateAddHTLC_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateAddHTLCDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_UpdateAddHTLCDecodeErrorZ* owner_conv = (LDKCResult_UpdateAddHTLCDecodeErrorZ*)(owner & ~1);
+       LDKUpdateAddHTLC ret_var = CResult_UpdateAddHTLCDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-void abandon_payment_LDKPayer_jcall(const void* this_arg, LDKThirtyTwoBytes payment_id) {
-       LDKPayer_JCalls *j_calls = (LDKPayer_JCalls*) this_arg;
-       int8_tArray payment_id_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(payment_id_arr + 4), payment_id.data, 32);
-       js_invoke_function_1(j_calls->abandon_payment_meth, payment_id_arr);
+
+static inline struct LDKDecodeError CResult_UpdateAddHTLCDecodeErrorZ_get_err(LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-static void LDKPayer_JCalls_cloned(LDKPayer* new_obj) {
-       LDKPayer_JCalls *j_calls = (LDKPayer_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateAddHTLCDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_UpdateAddHTLCDecodeErrorZ* owner_conv = (LDKCResult_UpdateAddHTLCDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_UpdateAddHTLCDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-static inline LDKPayer LDKPayer_init (/*TODO: JS Object Reference */void* o) {
-       LDKPayer_JCalls *calls = MALLOC(sizeof(LDKPayer_JCalls), "LDKPayer_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
 
-       LDKPayer ret = {
-               .this_arg = (void*) calls,
-               .node_id = node_id_LDKPayer_jcall,
-               .first_hops = first_hops_LDKPayer_jcall,
-               .send_payment = send_payment_LDKPayer_jcall,
-               .send_spontaneous_payment = send_spontaneous_payment_LDKPayer_jcall,
-               .retry_payment = retry_payment_LDKPayer_jcall,
-               .abandon_payment = abandon_payment_LDKPayer_jcall,
-               .free = LDKPayer_JCalls_free,
-       };
-       return ret;
+static inline struct LDKPing CResult_PingDecodeErrorZ_get_ok(LDKCResult_PingDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return Ping_clone(&*owner->contents.result);
 }
-long  __attribute__((visibility("default"))) TS_LDKPayer_new(/*TODO: JS Object Reference */void* o) {
-       LDKPayer *res_ptr = MALLOC(sizeof(LDKPayer), "LDKPayer");
-       *res_ptr = LDKPayer_init(o);
-       return (long)res_ptr;
-}
-int8_tArray  __attribute__((visibility("default"))) TS_Payer_node_id(uint32_t this_arg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKPayer* this_arg_conv = (LDKPayer*)this_arg_ptr;
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), (this_arg_conv->node_id)(this_arg_conv->this_arg).compressed_form, 33);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PingDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_PingDecodeErrorZ* owner_conv = (LDKCResult_PingDecodeErrorZ*)(owner & ~1);
+       LDKPing ret_var = CResult_PingDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_Payer_first_hops(uint32_t this_arg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKPayer* this_arg_conv = (LDKPayer*)this_arg_ptr;
-       LDKCVec_ChannelDetailsZ ret_var = (this_arg_conv->first_hops)(this_arg_conv->this_arg);
-       uint32_tArray ret_arr = NULL;
-       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 q = 0; q < ret_var.datalen; q++) {
-               LDKChannelDetails ret_conv_16_var = ret_var.data[q];
-               uint64_t ret_conv_16_ref = 0;
-               CHECK((((uint64_t)ret_conv_16_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_conv_16_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_16_var);
-               ret_conv_16_ref = (uint64_t)ret_conv_16_var.inner;
-               if (ret_conv_16_var.is_owned) {
-                       ret_conv_16_ref |= 1;
-               }
-               ret_arr_ptr[q] = ret_conv_16_ref;
+static inline struct LDKDecodeError CResult_PingDecodeErrorZ_get_err(LDKCResult_PingDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PingDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_PingDecodeErrorZ* owner_conv = (LDKCResult_PingDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_PingDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Payer_send_payment(uint32_t this_arg, uint32_t route, int8_tArray payment_hash, int8_tArray payment_secret) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKPayer* this_arg_conv = (LDKPayer*)this_arg_ptr;
-       LDKRoute route_conv;
-       route_conv.inner = (void*)(route & (~1));
-       route_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(route_conv);
-       LDKThirtyTwoBytes payment_hash_ref;
-       CHECK(*((uint32_t*)payment_hash) == 32);
-       memcpy(payment_hash_ref.data, (uint8_t*)(payment_hash + 4), 32);
-       LDKThirtyTwoBytes payment_secret_ref;
-       CHECK(*((uint32_t*)payment_secret) == 32);
-       memcpy(payment_secret_ref.data, (uint8_t*)(payment_secret + 4), 32);
-       LDKCResult_PaymentIdPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentSendFailureZ), "LDKCResult_PaymentIdPaymentSendFailureZ");
-       *ret_conv = (this_arg_conv->send_payment)(this_arg_conv->this_arg, &route_conv, payment_hash_ref, payment_secret_ref);
-       return (uint64_t)ret_conv;
+static inline struct LDKPong CResult_PongDecodeErrorZ_get_ok(LDKCResult_PongDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return Pong_clone(&*owner->contents.result);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_Payer_send_spontaneous_payment(uint32_t this_arg, uint32_t route, int8_tArray payment_preimage) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKPayer* this_arg_conv = (LDKPayer*)this_arg_ptr;
-       LDKRoute route_conv;
-       route_conv.inner = (void*)(route & (~1));
-       route_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(route_conv);
-       LDKThirtyTwoBytes payment_preimage_ref;
-       CHECK(*((uint32_t*)payment_preimage) == 32);
-       memcpy(payment_preimage_ref.data, (uint8_t*)(payment_preimage + 4), 32);
-       LDKCResult_PaymentIdPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentSendFailureZ), "LDKCResult_PaymentIdPaymentSendFailureZ");
-       *ret_conv = (this_arg_conv->send_spontaneous_payment)(this_arg_conv->this_arg, &route_conv, payment_preimage_ref);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PongDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_PongDecodeErrorZ* owner_conv = (LDKCResult_PongDecodeErrorZ*)(owner & ~1);
+       LDKPong ret_var = CResult_PongDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Payer_retry_payment(uint32_t this_arg, uint32_t route, int8_tArray payment_id) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKPayer* this_arg_conv = (LDKPayer*)this_arg_ptr;
-       LDKRoute route_conv;
-       route_conv.inner = (void*)(route & (~1));
-       route_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(route_conv);
-       LDKThirtyTwoBytes payment_id_ref;
-       CHECK(*((uint32_t*)payment_id) == 32);
-       memcpy(payment_id_ref.data, (uint8_t*)(payment_id + 4), 32);
-       LDKCResult_NonePaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePaymentSendFailureZ), "LDKCResult_NonePaymentSendFailureZ");
-       *ret_conv = (this_arg_conv->retry_payment)(this_arg_conv->this_arg, &route_conv, payment_id_ref);
-       return (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_PongDecodeErrorZ_get_err(LDKCResult_PongDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-
-void  __attribute__((visibility("default"))) TS_Payer_abandon_payment(uint32_t this_arg, int8_tArray payment_id) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKPayer* this_arg_conv = (LDKPayer*)this_arg_ptr;
-       LDKThirtyTwoBytes payment_id_ref;
-       CHECK(*((uint32_t*)payment_id) == 32);
-       memcpy(payment_id_ref.data, (uint8_t*)(payment_id + 4), 32);
-       (this_arg_conv->abandon_payment)(this_arg_conv->this_arg, payment_id_ref);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PongDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_PongDecodeErrorZ* owner_conv = (LDKCResult_PongDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_PongDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-typedef struct LDKRouter_JCalls {
-       atomic_size_t refcnt;
-       uint32_t find_route_meth;
-} LDKRouter_JCalls;
-static void LDKRouter_JCalls_free(void* this_arg) {
-       LDKRouter_JCalls *j_calls = (LDKRouter_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->find_route_meth);
-               FREE(j_calls);
-       }
+static inline struct LDKUnsignedChannelAnnouncement CResult_UnsignedChannelAnnouncementDecodeErrorZ_get_ok(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return UnsignedChannelAnnouncement_clone(&*owner->contents.result);
 }
-LDKCResult_RouteLightningErrorZ find_route_LDKRouter_jcall(const void* this_arg, LDKPublicKey payer, const LDKRouteParameters * params, const uint8_t (* payment_hash)[32], LDKCVec_ChannelDetailsZ * first_hops, const LDKScore * scorer) {
-       LDKRouter_JCalls *j_calls = (LDKRouter_JCalls*) this_arg;
-       int8_tArray payer_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(payer_arr + 4), payer.compressed_form, 33);
-       LDKRouteParameters params_var = *params;
-       uint64_t params_ref = 0;
-       params_var = RouteParameters_clone(params);
-       CHECK((((uint64_t)params_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&params_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(params_var);
-       params_ref = (uint64_t)params_var.inner;
-       if (params_var.is_owned) {
-               params_ref |= 1;
-       }
-       int8_tArray payment_hash_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(payment_hash_arr + 4), *payment_hash, 32);
-       LDKCVec_ChannelDetailsZ *first_hops_var_ptr = first_hops;
-       uint32_tArray first_hops_arr = NULL;
-       if (first_hops != NULL) {
-               LDKCVec_ChannelDetailsZ first_hops_var = *first_hops_var_ptr;
-               first_hops_arr = init_arr(first_hops_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
-               uint32_t *first_hops_arr_ptr = (uint32_t*)(first_hops_arr + 4);
-               for (size_t q = 0; q < first_hops_var.datalen; q++) {
-                       LDKChannelDetails first_hops_conv_16_var =      first_hops_var.data[q];
-                       uint64_t first_hops_conv_16_ref = 0;
-                       CHECK((((uint64_t)first_hops_conv_16_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&first_hops_conv_16_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(first_hops_conv_16_var);
-                       first_hops_conv_16_ref = (uint64_t)first_hops_conv_16_var.inner;
-                       if (first_hops_conv_16_var.is_owned) {
-                               first_hops_conv_16_ref |= 1;
-                       }
-                       first_hops_arr_ptr[q] = first_hops_conv_16_ref;
-               }
-       
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* owner_conv = (LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(owner & ~1);
+       LDKUnsignedChannelAnnouncement ret_var = CResult_UnsignedChannelAnnouncementDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       // WARNING: This object doesn't live past this scope, needs clone!
-       uint64_t ret_scorer = ((uint64_t)scorer) | 1;
-       uint32_t ret = js_invoke_function_5(j_calls->find_route_meth, payer_arr, params_ref, payment_hash_arr, first_hops_arr, ret_scorer);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_RouteLightningErrorZ ret_conv = *(LDKCResult_RouteLightningErrorZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
-}
-static void LDKRouter_JCalls_cloned(LDKRouter* new_obj) {
-       LDKRouter_JCalls *j_calls = (LDKRouter_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+       return ret_ref;
 }
-static inline LDKRouter LDKRouter_init (/*TODO: JS Object Reference */void* o) {
-       LDKRouter_JCalls *calls = MALLOC(sizeof(LDKRouter_JCalls), "LDKRouter_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
 
-       LDKRouter ret = {
-               .this_arg = (void*) calls,
-               .find_route = find_route_LDKRouter_jcall,
-               .free = LDKRouter_JCalls_free,
-       };
-       return ret;
-}
-long  __attribute__((visibility("default"))) TS_LDKRouter_new(/*TODO: JS Object Reference */void* o) {
-       LDKRouter *res_ptr = MALLOC(sizeof(LDKRouter), "LDKRouter");
-       *res_ptr = LDKRouter_init(o);
-       return (long)res_ptr;
+static inline struct LDKDecodeError CResult_UnsignedChannelAnnouncementDecodeErrorZ_get_err(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-uint32_t  __attribute__((visibility("default"))) TS_Router_find_route(uint32_t this_arg, int8_tArray payer, uint32_t params, int8_tArray payment_hash, uint32_tArray first_hops, uint32_t scorer) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKRouter* this_arg_conv = (LDKRouter*)this_arg_ptr;
-       LDKPublicKey payer_ref;
-       CHECK(*((uint32_t*)payer) == 33);
-       memcpy(payer_ref.compressed_form, (uint8_t*)(payer + 4), 33);
-       LDKRouteParameters params_conv;
-       params_conv.inner = (void*)(params & (~1));
-       params_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(params_conv);
-       unsigned char payment_hash_arr[32];
-       CHECK(*((uint32_t*)payment_hash) == 32);
-       memcpy(payment_hash_arr, (uint8_t*)(payment_hash + 4), 32);
-       unsigned char (*payment_hash_ref)[32] = &payment_hash_arr;
-       LDKCVec_ChannelDetailsZ first_hops_constr;
-       LDKCVec_ChannelDetailsZ *first_hops_ptr = NULL;
-       if (first_hops != 0) {
-               first_hops_constr.datalen = *((uint32_t*)first_hops);
-               if (first_hops_constr.datalen > 0)
-                       first_hops_constr.data = MALLOC(first_hops_constr.datalen * sizeof(LDKChannelDetails), "LDKCVec_ChannelDetailsZ Elements");
-               else
-                       first_hops_constr.data = NULL;
-               uint32_t* first_hops_vals = (uint32_t*)(first_hops + 4);
-               for (size_t q = 0; q < first_hops_constr.datalen; q++) {
-                       uint32_t first_hops_conv_16 = first_hops_vals[q];
-                       LDKChannelDetails first_hops_conv_16_conv;
-                       first_hops_conv_16_conv.inner = (void*)(first_hops_conv_16 & (~1));
-                       first_hops_conv_16_conv.is_owned = (first_hops_conv_16 & 1) || (first_hops_conv_16 == 0);
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(first_hops_conv_16_conv);
-                       first_hops_constr.data[q] = first_hops_conv_16_conv;
-               }
-               first_hops_ptr = &first_hops_constr;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* owner_conv = (LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_UnsignedChannelAnnouncementDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       void* scorer_ptr = (void*)(((uint64_t)scorer) & ~1);
-       if (!(scorer & 1)) { CHECK_ACCESS(scorer_ptr); }
-       LDKScore* scorer_conv = (LDKScore*)scorer_ptr;
-       LDKCResult_RouteLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteLightningErrorZ), "LDKCResult_RouteLightningErrorZ");
-       *ret_conv = (this_arg_conv->find_route)(this_arg_conv->this_arg, payer_ref, &params_conv, payment_hash_ref, first_hops_ptr, scorer_conv);
-       if (first_hops_ptr != NULL) { FREE(first_hops_constr.data); }
-       return (uint64_t)ret_conv;
+       return ret_ref;
 }
 
-jstring  __attribute__((visibility("default"))) TS__ldk_get_compiled_version() {
-       LDKStr ret_str = _ldk_get_compiled_version();
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
+static inline struct LDKChannelAnnouncement CResult_ChannelAnnouncementDecodeErrorZ_get_ok(LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ChannelAnnouncement_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelAnnouncementDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ChannelAnnouncementDecodeErrorZ* owner_conv = (LDKCResult_ChannelAnnouncementDecodeErrorZ*)(owner & ~1);
+       LDKChannelAnnouncement ret_var = CResult_ChannelAnnouncementDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-jstring  __attribute__((visibility("default"))) TS__ldk_c_bindings_get_compiled_version() {
-       LDKStr ret_str = _ldk_c_bindings_get_compiled_version();
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
+static inline struct LDKDecodeError CResult_ChannelAnnouncementDecodeErrorZ_get_err(LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelAnnouncementDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ChannelAnnouncementDecodeErrorZ* owner_conv = (LDKCResult_ChannelAnnouncementDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ChannelAnnouncementDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-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 inline struct LDKUnsignedChannelUpdate CResult_UnsignedChannelUpdateDecodeErrorZ_get_ok(LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return UnsignedChannelUpdate_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelUpdateDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_UnsignedChannelUpdateDecodeErrorZ* owner_conv = (LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(owner & ~1);
+       LDKUnsignedChannelUpdate ret_var = CResult_UnsignedChannelUpdateDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_TxOut_new(int8_tArray script_pubkey, int64_t value) {
-       LDKCVec_u8Z script_pubkey_ref;
-       script_pubkey_ref.datalen = *((uint32_t*)script_pubkey);
-       script_pubkey_ref.data = MALLOC(script_pubkey_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(script_pubkey_ref.data, (uint8_t*)(script_pubkey + 4), script_pubkey_ref.datalen);
-       LDKTxOut* ret_ref = MALLOC(sizeof(LDKTxOut), "LDKTxOut");
-       *ret_ref = TxOut_new(script_pubkey_ref, value);
-       return (uint64_t)ret_ref;
+static inline struct LDKDecodeError CResult_UnsignedChannelUpdateDecodeErrorZ_get_err(LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelUpdateDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_UnsignedChannelUpdateDecodeErrorZ* owner_conv = (LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_UnsignedChannelUpdateDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_TxOut_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKTxOut _res_conv = *(LDKTxOut*)(_res_ptr);
-       FREE((void*)_res);
-       TxOut_free(_res_conv);
+static inline struct LDKChannelUpdate CResult_ChannelUpdateDecodeErrorZ_get_ok(LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ChannelUpdate_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelUpdateDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ChannelUpdateDecodeErrorZ* owner_conv = (LDKCResult_ChannelUpdateDecodeErrorZ*)(owner & ~1);
+       LDKChannelUpdate ret_var = CResult_ChannelUpdateDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-static inline uint64_t TxOut_clone_ptr(LDKTxOut *NONNULL_PTR arg) {
-       LDKTxOut* ret_ref = MALLOC(sizeof(LDKTxOut), "LDKTxOut");
-       *ret_ref = TxOut_clone(arg);
-       return (uint64_t)ret_ref;
+static inline struct LDKDecodeError CResult_ChannelUpdateDecodeErrorZ_get_err(LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-int64_t  __attribute__((visibility("default"))) TS_TxOut_clone_ptr(uint32_t arg) {
-       LDKTxOut* arg_conv = (LDKTxOut*)(arg & ~1);
-       int64_t ret_val = TxOut_clone_ptr(arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelUpdateDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ChannelUpdateDecodeErrorZ* owner_conv = (LDKCResult_ChannelUpdateDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ChannelUpdateDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-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 (uint64_t)ret_ref;
+static inline struct LDKErrorMessage CResult_ErrorMessageDecodeErrorZ_get_ok(LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ErrorMessage_clone(&*owner->contents.result);
 }
-
-void  __attribute__((visibility("default"))) TS_Str_free(jstring _res) {
-       LDKStr dummy = { .chars = NULL, .len = 0, .chars_is_owned = false };
-       Str_free(dummy);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ErrorMessageDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ErrorMessageDecodeErrorZ* owner_conv = (LDKCResult_ErrorMessageDecodeErrorZ*)(owner & ~1);
+       LDKErrorMessage ret_var = CResult_ErrorMessageDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-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 (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_ErrorMessageDecodeErrorZ_get_err(LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-
-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 (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ErrorMessageDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ErrorMessageDecodeErrorZ* owner_conv = (LDKCResult_ErrorMessageDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ErrorMessageDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_SecretKeyErrorZ_is_ok(uint32_t o) {
-       LDKCResult_SecretKeyErrorZ* o_conv = (LDKCResult_SecretKeyErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_SecretKeyErrorZ_is_ok(o_conv);
-       return ret_val;
+static inline struct LDKUnsignedNodeAnnouncement CResult_UnsignedNodeAnnouncementDecodeErrorZ_get_ok(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return UnsignedNodeAnnouncement_clone(&*owner->contents.result);
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_SecretKeyErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_SecretKeyErrorZ _res_conv = *(LDKCResult_SecretKeyErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_SecretKeyErrorZ_free(_res_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* owner_conv = (LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(owner & ~1);
+       LDKUnsignedNodeAnnouncement ret_var = CResult_UnsignedNodeAnnouncementDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_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 (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_UnsignedNodeAnnouncementDecodeErrorZ_get_err(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-
-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 (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* owner_conv = (LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_UnsignedNodeAnnouncementDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_PublicKeyErrorZ_is_ok(uint32_t o) {
-       LDKCResult_PublicKeyErrorZ* o_conv = (LDKCResult_PublicKeyErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_PublicKeyErrorZ_is_ok(o_conv);
-       return ret_val;
+static inline struct LDKNodeAnnouncement CResult_NodeAnnouncementDecodeErrorZ_get_ok(LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return NodeAnnouncement_clone(&*owner->contents.result);
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_PublicKeyErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_PublicKeyErrorZ _res_conv = *(LDKCResult_PublicKeyErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_PublicKeyErrorZ_free(_res_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_NodeAnnouncementDecodeErrorZ* owner_conv = (LDKCResult_NodeAnnouncementDecodeErrorZ*)(owner & ~1);
+       LDKNodeAnnouncement ret_var = CResult_NodeAnnouncementDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-static inline uint64_t CResult_PublicKeyErrorZ_clone_ptr(LDKCResult_PublicKeyErrorZ *NONNULL_PTR arg) {
-       LDKCResult_PublicKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeyErrorZ), "LDKCResult_PublicKeyErrorZ");
-       *ret_conv = CResult_PublicKeyErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_NodeAnnouncementDecodeErrorZ_get_err(LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_PublicKeyErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_PublicKeyErrorZ* arg_conv = (LDKCResult_PublicKeyErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_PublicKeyErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_NodeAnnouncementDecodeErrorZ* owner_conv = (LDKCResult_NodeAnnouncementDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_NodeAnnouncementDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PublicKeyErrorZ_clone(uint32_t orig) {
-       LDKCResult_PublicKeyErrorZ* orig_conv = (LDKCResult_PublicKeyErrorZ*)(orig & ~1);
-       LDKCResult_PublicKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeyErrorZ), "LDKCResult_PublicKeyErrorZ");
-       *ret_conv = CResult_PublicKeyErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+static inline struct LDKQueryShortChannelIds CResult_QueryShortChannelIdsDecodeErrorZ_get_ok(LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return QueryShortChannelIds_clone(&*owner->contents.result);
 }
-
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = TxCreationKeys_clone(&o_conv);
-       LDKCResult_TxCreationKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysDecodeErrorZ), "LDKCResult_TxCreationKeysDecodeErrorZ");
-       *ret_conv = CResult_TxCreationKeysDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_QueryShortChannelIdsDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_QueryShortChannelIdsDecodeErrorZ* owner_conv = (LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(owner & ~1);
+       LDKQueryShortChannelIds ret_var = CResult_QueryShortChannelIdsDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_TxCreationKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysDecodeErrorZ), "LDKCResult_TxCreationKeysDecodeErrorZ");
-       *ret_conv = CResult_TxCreationKeysDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_QueryShortChannelIdsDecodeErrorZ_get_err(LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_TxCreationKeysDecodeErrorZ* o_conv = (LDKCResult_TxCreationKeysDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_TxCreationKeysDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_QueryShortChannelIdsDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_QueryShortChannelIdsDecodeErrorZ* owner_conv = (LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_QueryShortChannelIdsDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_TxCreationKeysDecodeErrorZ _res_conv = *(LDKCResult_TxCreationKeysDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_TxCreationKeysDecodeErrorZ_free(_res_conv);
+static inline struct LDKReplyShortChannelIdsEnd CResult_ReplyShortChannelIdsEndDecodeErrorZ_get_ok(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ReplyShortChannelIdsEnd_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* owner_conv = (LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(owner & ~1);
+       LDKReplyShortChannelIdsEnd ret_var = CResult_ReplyShortChannelIdsEndDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-static inline uint64_t CResult_TxCreationKeysDecodeErrorZ_clone_ptr(LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_TxCreationKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysDecodeErrorZ), "LDKCResult_TxCreationKeysDecodeErrorZ");
-       *ret_conv = CResult_TxCreationKeysDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_ReplyShortChannelIdsEndDecodeErrorZ_get_err(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_TxCreationKeysDecodeErrorZ* arg_conv = (LDKCResult_TxCreationKeysDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_TxCreationKeysDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* owner_conv = (LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ReplyShortChannelIdsEndDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-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 (uint64_t)ret_conv;
+static inline struct LDKQueryChannelRange CResult_QueryChannelRangeDecodeErrorZ_get_ok(LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return QueryChannelRange_clone(&*owner->contents.result);
 }
-
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = ChannelPublicKeys_clone(&o_conv);
-       LDKCResult_ChannelPublicKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ), "LDKCResult_ChannelPublicKeysDecodeErrorZ");
-       *ret_conv = CResult_ChannelPublicKeysDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_QueryChannelRangeDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_QueryChannelRangeDecodeErrorZ* owner_conv = (LDKCResult_QueryChannelRangeDecodeErrorZ*)(owner & ~1);
+       LDKQueryChannelRange ret_var = CResult_QueryChannelRangeDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ChannelPublicKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ), "LDKCResult_ChannelPublicKeysDecodeErrorZ");
-       *ret_conv = CResult_ChannelPublicKeysDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_QueryChannelRangeDecodeErrorZ_get_err(LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_QueryChannelRangeDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_QueryChannelRangeDecodeErrorZ* owner_conv = (LDKCResult_QueryChannelRangeDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_QueryChannelRangeDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelPublicKeysDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ChannelPublicKeysDecodeErrorZ* o_conv = (LDKCResult_ChannelPublicKeysDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ChannelPublicKeysDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+static inline struct LDKReplyChannelRange CResult_ReplyChannelRangeDecodeErrorZ_get_ok(LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ReplyChannelRange_clone(&*owner->contents.result);
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_ChannelPublicKeysDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_ChannelPublicKeysDecodeErrorZ _res_conv = *(LDKCResult_ChannelPublicKeysDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_ChannelPublicKeysDecodeErrorZ_free(_res_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ReplyChannelRangeDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ReplyChannelRangeDecodeErrorZ* owner_conv = (LDKCResult_ReplyChannelRangeDecodeErrorZ*)(owner & ~1);
+       LDKReplyChannelRange ret_var = CResult_ReplyChannelRangeDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-static inline uint64_t CResult_ChannelPublicKeysDecodeErrorZ_clone_ptr(LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ChannelPublicKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ), "LDKCResult_ChannelPublicKeysDecodeErrorZ");
-       *ret_conv = CResult_ChannelPublicKeysDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_ReplyChannelRangeDecodeErrorZ_get_err(LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_ChannelPublicKeysDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ChannelPublicKeysDecodeErrorZ* arg_conv = (LDKCResult_ChannelPublicKeysDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ChannelPublicKeysDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ReplyChannelRangeDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ReplyChannelRangeDecodeErrorZ* owner_conv = (LDKCResult_ReplyChannelRangeDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ReplyChannelRangeDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_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 (uint64_t)ret_conv;
+static inline struct LDKGossipTimestampFilter CResult_GossipTimestampFilterDecodeErrorZ_get_ok(LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return GossipTimestampFilter_clone(&*owner->contents.result);
 }
-
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = TxCreationKeys_clone(&o_conv);
-       LDKCResult_TxCreationKeysErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysErrorZ), "LDKCResult_TxCreationKeysErrorZ");
-       *ret_conv = CResult_TxCreationKeysErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_GossipTimestampFilterDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_GossipTimestampFilterDecodeErrorZ* owner_conv = (LDKCResult_GossipTimestampFilterDecodeErrorZ*)(owner & ~1);
+       LDKGossipTimestampFilter ret_var = CResult_GossipTimestampFilterDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_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 (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_GossipTimestampFilterDecodeErrorZ_get_err(LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysErrorZ_is_ok(uint32_t o) {
-       LDKCResult_TxCreationKeysErrorZ* o_conv = (LDKCResult_TxCreationKeysErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_TxCreationKeysErrorZ_is_ok(o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_GossipTimestampFilterDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_GossipTimestampFilterDecodeErrorZ* owner_conv = (LDKCResult_GossipTimestampFilterDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_GossipTimestampFilterDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_TxCreationKeysErrorZ _res_conv = *(LDKCResult_TxCreationKeysErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_TxCreationKeysErrorZ_free(_res_conv);
+static inline struct LDKDelayedPaymentOutputDescriptor CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_ok(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return DelayedPaymentOutputDescriptor_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* owner_conv = (LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ*)(owner & ~1);
+       LDKDelayedPaymentOutputDescriptor ret_var = CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-static inline uint64_t CResult_TxCreationKeysErrorZ_clone_ptr(LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR arg) {
-       LDKCResult_TxCreationKeysErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysErrorZ), "LDKCResult_TxCreationKeysErrorZ");
-       *ret_conv = CResult_TxCreationKeysErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_err(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_TxCreationKeysErrorZ* arg_conv = (LDKCResult_TxCreationKeysErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_TxCreationKeysErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* owner_conv = (LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysErrorZ_clone(uint32_t orig) {
-       LDKCResult_TxCreationKeysErrorZ* orig_conv = (LDKCResult_TxCreationKeysErrorZ*)(orig & ~1);
-       LDKCResult_TxCreationKeysErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysErrorZ), "LDKCResult_TxCreationKeysErrorZ");
-       *ret_conv = CResult_TxCreationKeysErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+static inline struct LDKStaticPaymentOutputDescriptor CResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_ok(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return StaticPaymentOutputDescriptor_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* owner_conv = (LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ*)(owner & ~1);
+       LDKStaticPaymentOutputDescriptor ret_var = CResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_u32Z_some(int32_t o) {
-       LDKCOption_u32Z *ret_copy = MALLOC(sizeof(LDKCOption_u32Z), "LDKCOption_u32Z");
-       *ret_copy = COption_u32Z_some(o);
-       uint64_t ret_ref = (uint64_t)ret_copy;
+static inline struct LDKDecodeError CResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_err(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* owner_conv = (LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_u32Z_none() {
-       LDKCOption_u32Z *ret_copy = MALLOC(sizeof(LDKCOption_u32Z), "LDKCOption_u32Z");
-       *ret_copy = COption_u32Z_none();
+static inline struct LDKSpendableOutputDescriptor CResult_SpendableOutputDescriptorDecodeErrorZ_get_ok(LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return SpendableOutputDescriptor_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescriptorDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* owner_conv = (LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(owner & ~1);
+       LDKSpendableOutputDescriptor *ret_copy = MALLOC(sizeof(LDKSpendableOutputDescriptor), "LDKSpendableOutputDescriptor");
+       *ret_copy = CResult_SpendableOutputDescriptorDecodeErrorZ_get_ok(owner_conv);
        uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_COption_u32Z_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCOption_u32Z _res_conv = *(LDKCOption_u32Z*)(_res_ptr);
-       FREE((void*)_res);
-       COption_u32Z_free(_res_conv);
+static inline struct LDKDecodeError CResult_SpendableOutputDescriptorDecodeErrorZ_get_err(LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-
-static inline uint64_t COption_u32Z_clone_ptr(LDKCOption_u32Z *NONNULL_PTR arg) {
-       LDKCOption_u32Z *ret_copy = MALLOC(sizeof(LDKCOption_u32Z), "LDKCOption_u32Z");
-       *ret_copy = COption_u32Z_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescriptorDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* owner_conv = (LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_SpendableOutputDescriptorDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_COption_u32Z_clone_ptr(uint32_t arg) {
-       LDKCOption_u32Z* arg_conv = (LDKCOption_u32Z*)arg;
-       int64_t ret_val = COption_u32Z_clone_ptr(arg_conv);
-       return ret_val;
+
+static inline struct LDKSign CResult_SignDecodeErrorZ_get_ok(LDKCResult_SignDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return Sign_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_SignDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_SignDecodeErrorZ* owner_conv = (LDKCResult_SignDecodeErrorZ*)(owner & ~1);
+       LDKSign* ret_ret = MALLOC(sizeof(LDKSign), "LDKSign");
+       *ret_ret = CResult_SignDecodeErrorZ_get_ok(owner_conv);
+       return (uint64_t)ret_ret;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_u32Z_clone(uint32_t orig) {
-       LDKCOption_u32Z* orig_conv = (LDKCOption_u32Z*)orig;
-       LDKCOption_u32Z *ret_copy = MALLOC(sizeof(LDKCOption_u32Z), "LDKCOption_u32Z");
-       *ret_copy = COption_u32Z_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
+static inline struct LDKDecodeError CResult_SignDecodeErrorZ_get_err(LDKCResult_SignDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_SignDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_SignDecodeErrorZ* owner_conv = (LDKCResult_SignDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_SignDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = HTLCOutputInCommitment_clone(&o_conv);
-       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ), "LDKCResult_HTLCOutputInCommitmentDecodeErrorZ");
-       *ret_conv = CResult_HTLCOutputInCommitmentDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+static inline struct LDKRecoverableSignature CResult_RecoverableSignatureNoneZ_get_ok(LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
+}
+int8_tArray  __attribute__((visibility("default"))) TS_CResult_RecoverableSignatureNoneZ_get_ok(uint32_t owner) {
+       LDKCResult_RecoverableSignatureNoneZ* owner_conv = (LDKCResult_RecoverableSignatureNoneZ*)(owner & ~1);
+       int8_tArray et_arr = init_int8_tArray(68);
+       memcpy(et_arr->elems, CResult_RecoverableSignatureNoneZ_get_ok(owner_conv).serialized_form, 68);
+       return et_arr;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ), "LDKCResult_HTLCOutputInCommitmentDecodeErrorZ");
-       *ret_conv = CResult_HTLCOutputInCommitmentDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+static inline void CResult_RecoverableSignatureNoneZ_get_err(LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
+}
+void  __attribute__((visibility("default"))) TS_CResult_RecoverableSignatureNoneZ_get_err(uint32_t owner) {
+       LDKCResult_RecoverableSignatureNoneZ* owner_conv = (LDKCResult_RecoverableSignatureNoneZ*)(owner & ~1);
+       CResult_RecoverableSignatureNoneZ_get_err(owner_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_HTLCOutputInCommitmentDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* o_conv = (LDKCResult_HTLCOutputInCommitmentDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_HTLCOutputInCommitmentDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+static inline LDKCVec_CVec_u8ZZ CVec_CVec_u8ZZ_clone(const LDKCVec_CVec_u8ZZ *orig) {
+       LDKCVec_CVec_u8ZZ ret = { .data = MALLOC(sizeof(LDKCVec_u8Z) * orig->datalen, "LDKCVec_CVec_u8ZZ clone bytes"), .datalen = orig->datalen };
+       for (size_t i = 0; i < ret.datalen; i++) {
+               ret.data[i] = CVec_u8Z_clone(&orig->data[i]);
+       }
+       return ret;
+}
+static inline struct LDKCVec_CVec_u8ZZ CResult_CVec_CVec_u8ZZNoneZ_get_ok(LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return CVec_CVec_u8ZZ_clone(&*owner->contents.result);
+}
+ptrArray  __attribute__((visibility("default"))) TS_CResult_CVec_CVec_u8ZZNoneZ_get_ok(uint32_t owner) {
+       LDKCResult_CVec_CVec_u8ZZNoneZ* owner_conv = (LDKCResult_CVec_CVec_u8ZZNoneZ*)(owner & ~1);
+       LDKCVec_CVec_u8ZZ ret_var = CResult_CVec_CVec_u8ZZNoneZ_get_ok(owner_conv);
+       ptrArray ret_arr = NULL;
+       ret_arr = init_ptrArray(ret_var.datalen);
+       int8_tArray *ret_arr_ptr = (int8_tArray*)(ret_arr + 4);
+       for (size_t m = 0; m < ret_var.datalen; m++) {
+               LDKCVec_u8Z ret_conv_12_var = ret_var.data[m];
+               int8_tArray ret_conv_12_arr = init_int8_tArray(ret_conv_12_var.datalen);
+               memcpy(ret_conv_12_arr->elems, ret_conv_12_var.data, ret_conv_12_var.datalen);
+               CVec_u8Z_free(ret_conv_12_var);
+               ret_arr_ptr[m] = ret_conv_12_arr;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_HTLCOutputInCommitmentDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ _res_conv = *(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_HTLCOutputInCommitmentDecodeErrorZ_free(_res_conv);
+static inline void CResult_CVec_CVec_u8ZZNoneZ_get_err(LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
+}
+void  __attribute__((visibility("default"))) TS_CResult_CVec_CVec_u8ZZNoneZ_get_err(uint32_t owner) {
+       LDKCResult_CVec_CVec_u8ZZNoneZ* owner_conv = (LDKCResult_CVec_CVec_u8ZZNoneZ*)(owner & ~1);
+       CResult_CVec_CVec_u8ZZNoneZ_get_err(owner_conv);
 }
 
-static inline uint64_t CResult_HTLCOutputInCommitmentDecodeErrorZ_clone_ptr(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ), "LDKCResult_HTLCOutputInCommitmentDecodeErrorZ");
-       *ret_conv = CResult_HTLCOutputInCommitmentDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline struct LDKInMemorySigner CResult_InMemorySignerDecodeErrorZ_get_ok(LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return InMemorySigner_clone(&*owner->contents.result);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_HTLCOutputInCommitmentDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* arg_conv = (LDKCResult_HTLCOutputInCommitmentDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_HTLCOutputInCommitmentDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_InMemorySignerDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_InMemorySignerDecodeErrorZ* owner_conv = (LDKCResult_InMemorySignerDecodeErrorZ*)(owner & ~1);
+       LDKInMemorySigner ret_var = CResult_InMemorySignerDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_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 (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_InMemorySignerDecodeErrorZ_get_err(LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_COption_NoneZ_some() {
-       uint32_t ret_conv = LDKCOption_NoneZ_to_js(COption_NoneZ_some());
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_InMemorySignerDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_InMemorySignerDecodeErrorZ* owner_conv = (LDKCResult_InMemorySignerDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_InMemorySignerDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_NoneZ_none() {
-       uint32_t ret_conv = LDKCOption_NoneZ_to_js(COption_NoneZ_none());
-       return ret_conv;
+static inline LDKCVec_TxOutZ CVec_TxOutZ_clone(const LDKCVec_TxOutZ *orig) {
+       LDKCVec_TxOutZ ret = { .data = MALLOC(sizeof(LDKTxOut) * orig->datalen, "LDKCVec_TxOutZ clone bytes"), .datalen = orig->datalen };
+       for (size_t i = 0; i < ret.datalen; i++) {
+               ret.data[i] = TxOut_clone(&orig->data[i]);
+       }
+       return ret;
 }
-
-void  __attribute__((visibility("default"))) TS_COption_NoneZ_free(uint32_t _res) {
-       LDKCOption_NoneZ _res_conv = LDKCOption_NoneZ_from_js(_res);
-       COption_NoneZ_free(_res_conv);
+static inline struct LDKTransaction CResult_TransactionNoneZ_get_ok(LDKCResult_TransactionNoneZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
 }
-
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = CounterpartyChannelTransactionParameters_clone(&o_conv);
-       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ), "LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ");
-       *ret_conv = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_CResult_TransactionNoneZ_get_ok(uint32_t owner) {
+       LDKCResult_TransactionNoneZ* owner_conv = (LDKCResult_TransactionNoneZ*)(owner & ~1);
+       LDKTransaction ret_var = CResult_TransactionNoneZ_get_ok(owner_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       Transaction_free(ret_var);
+       return ret_arr;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ), "LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ");
-       *ret_conv = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+static inline void CResult_TransactionNoneZ_get_err(LDKCResult_TransactionNoneZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* o_conv = (LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_CResult_TransactionNoneZ_get_err(uint32_t owner) {
+       LDKCResult_TransactionNoneZ* owner_conv = (LDKCResult_TransactionNoneZ*)(owner & ~1);
+       CResult_TransactionNoneZ_get_err(owner_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ _res_conv = *(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(_res_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_function_ptr(j_calls->register_tx_meth);
+               js_free_function_ptr(j_calls->register_output_meth);
+               FREE(j_calls);
+       }
 }
-
-static inline uint64_t CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone_ptr(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ), "LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ");
-       *ret_conv = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+void register_tx_LDKFilter_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_int8_tArray(32);
+       memcpy(txid_arr->elems, *txid, 32);
+       LDKu8slice script_pubkey_var = script_pubkey;
+       int8_tArray script_pubkey_arr = init_int8_tArray(script_pubkey_var.datalen);
+       memcpy(script_pubkey_arr->elems, script_pubkey_var.data, script_pubkey_var.datalen);
+       js_invoke_function_2(j_calls->register_tx_meth, (uint32_t)txid_arr, (uint32_t)script_pubkey_arr);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* arg_conv = (LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+LDKCOption_C2Tuple_usizeTransactionZZ register_output_LDKFilter_jcall(const void* this_arg, LDKWatchedOutput output) {
+       LDKFilter_JCalls *j_calls = (LDKFilter_JCalls*) this_arg;
+       LDKWatchedOutput output_var = output;
+       uint64_t output_ref = 0;
+       CHECK((((uint64_t)output_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&output_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(output_var);
+       output_ref = (uint64_t)output_var.inner;
+       if (output_var.is_owned) {
+               output_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_1(j_calls->register_output_meth, (uint32_t)output_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCOption_C2Tuple_usizeTransactionZZ ret_conv = *(LDKCOption_C2Tuple_usizeTransactionZZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
 }
-
-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 (uint64_t)ret_conv;
+static void LDKFilter_JCalls_cloned(LDKFilter* new_obj) {
+       LDKFilter_JCalls *j_calls = (LDKFilter_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
+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
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = ChannelTransactionParameters_clone(&o_conv);
-       LDKCResult_ChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ), "LDKCResult_ChannelTransactionParametersDecodeErrorZ");
-       *ret_conv = CResult_ChannelTransactionParametersDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+       LDKFilter ret = {
+               .this_arg = (void*) calls,
+               .register_tx = register_tx_LDKFilter_jcall,
+               .register_output = register_output_LDKFilter_jcall,
+               .free = LDKFilter_JCalls_free,
+       };
+       return ret;
 }
-
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ), "LDKCResult_ChannelTransactionParametersDecodeErrorZ");
-       *ret_conv = CResult_ChannelTransactionParametersDecodeErrorZ_err(e_conv);
-       return (uint64_t)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;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelTransactionParametersDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ChannelTransactionParametersDecodeErrorZ* o_conv = (LDKCResult_ChannelTransactionParametersDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ChannelTransactionParametersDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_Filter_register_tx(uint32_t this_arg, int8_tArray txid, int8_tArray script_pubkey) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKFilter* this_arg_conv = (LDKFilter*)this_arg_ptr;
+       unsigned char txid_arr[32];
+       CHECK(txid->arr_len == 32);
+       memcpy(txid_arr, txid->elems, 32);
+       unsigned char (*txid_ref)[32] = &txid_arr;
+       LDKu8slice script_pubkey_ref;
+       script_pubkey_ref.datalen = script_pubkey->arr_len;
+       script_pubkey_ref.data = script_pubkey->elems;
+       (this_arg_conv->register_tx)(this_arg_conv->this_arg, txid_ref, script_pubkey_ref);
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ChannelTransactionParametersDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_ChannelTransactionParametersDecodeErrorZ _res_conv = *(LDKCResult_ChannelTransactionParametersDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_ChannelTransactionParametersDecodeErrorZ_free(_res_conv);
+uint32_t  __attribute__((visibility("default"))) TS_Filter_register_output(uint32_t this_arg, uint32_t output) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKFilter* this_arg_conv = (LDKFilter*)this_arg_ptr;
+       LDKWatchedOutput output_conv;
+       output_conv.inner = (void*)(output & (~1));
+       output_conv.is_owned = (output & 1) || (output == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(output_conv);
+       output_conv = WatchedOutput_clone(&output_conv);
+       LDKCOption_C2Tuple_usizeTransactionZZ *ret_copy = MALLOC(sizeof(LDKCOption_C2Tuple_usizeTransactionZZ), "LDKCOption_C2Tuple_usizeTransactionZZ");
+       *ret_copy = (this_arg_conv->register_output)(this_arg_conv->this_arg, output_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-static inline uint64_t CResult_ChannelTransactionParametersDecodeErrorZ_clone_ptr(LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ), "LDKCResult_ChannelTransactionParametersDecodeErrorZ");
-       *ret_conv = CResult_ChannelTransactionParametersDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+uint32_t __attribute__((visibility("default"))) TS_LDKCOption_FilterZ_ref_from_ptr(uint32_t ptr) {
+       LDKCOption_FilterZ *obj = (LDKCOption_FilterZ*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKCOption_FilterZ_Some: {
+                       LDKFilter* some_ret = MALLOC(sizeof(LDKFilter), "LDKFilter");
+                       *some_ret = obj->some;
+                       // Warning: We likely need to clone here, but no clone is available, so we just do it for Java instances
+                       return 0 /* LDKCOption_FilterZ - Some */; (void) (uint64_t)some_ret;
+               }
+               case LDKCOption_FilterZ_None: {
+                       return 0 /* LDKCOption_FilterZ - None */;
+               }
+               default: abort();
+       }
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_ChannelTransactionParametersDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ChannelTransactionParametersDecodeErrorZ* arg_conv = (LDKCResult_ChannelTransactionParametersDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ChannelTransactionParametersDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+static inline struct LDKLockedChannelMonitor *CResult_LockedChannelMonitorNoneZ_get_ok(LDKCResult_LockedChannelMonitorNoneZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return &*owner->contents.result;
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_LockedChannelMonitorNoneZ_get_ok(uint32_t owner) {
+       LDKCResult_LockedChannelMonitorNoneZ* owner_conv = (LDKCResult_LockedChannelMonitorNoneZ*)(owner & ~1);
+       LDKLockedChannelMonitor ret_var = *CResult_LockedChannelMonitorNoneZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner & ~1;
+       return ret_ref;
 }
 
-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 (uint64_t)ret_conv;
+static inline void CResult_LockedChannelMonitorNoneZ_get_err(LDKCResult_LockedChannelMonitorNoneZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
+}
+void  __attribute__((visibility("default"))) TS_CResult_LockedChannelMonitorNoneZ_get_err(uint32_t owner) {
+       LDKCResult_LockedChannelMonitorNoneZ* owner_conv = (LDKCResult_LockedChannelMonitorNoneZ*)(owner & ~1);
+       CResult_LockedChannelMonitorNoneZ_get_err(owner_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 _res_conv_12 = _res_vals[m];
-               LDKSignature _res_conv_12_ref;
-               CHECK(*((uint32_t*)_res_conv_12) == 64);
-               memcpy(_res_conv_12_ref.compact_form, (uint8_t*)(_res_conv_12 + 4), 64);
-               _res_constr.data[m] = _res_conv_12_ref;
+static inline LDKCVec_OutPointZ CVec_OutPointZ_clone(const LDKCVec_OutPointZ *orig) {
+       LDKCVec_OutPointZ ret = { .data = MALLOC(sizeof(LDKOutPoint) * orig->datalen, "LDKCVec_OutPointZ clone bytes"), .datalen = orig->datalen };
+       for (size_t i = 0; i < ret.datalen; i++) {
+               ret.data[i] = OutPoint_clone(&orig->data[i]);
+       }
+       return ret;
+}
+uint32_t __attribute__((visibility("default"))) TS_LDKAPIError_ref_from_ptr(uint32_t ptr) {
+       LDKAPIError *obj = (LDKAPIError*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKAPIError_APIMisuseError: {
+                       LDKStr err_str = obj->api_misuse_error.err;
+                       jstring err_conv = str_ref_to_ts(err_str.chars, err_str.len);
+                       return 0 /* LDKAPIError - APIMisuseError */; (void) err_conv;
+               }
+               case LDKAPIError_FeeRateTooHigh: {
+                       LDKStr err_str = obj->fee_rate_too_high.err;
+                       jstring err_conv = str_ref_to_ts(err_str.chars, err_str.len);
+                       return 0 /* LDKAPIError - FeeRateTooHigh */; (void) err_conv; (void) obj->fee_rate_too_high.feerate;
+               }
+               case LDKAPIError_RouteError: {
+                       LDKStr err_str = obj->route_error.err;
+                       jstring err_conv = str_ref_to_ts(err_str.chars, err_str.len);
+                       return 0 /* LDKAPIError - RouteError */; (void) err_conv;
+               }
+               case LDKAPIError_ChannelUnavailable: {
+                       LDKStr err_str = obj->channel_unavailable.err;
+                       jstring err_conv = str_ref_to_ts(err_str.chars, err_str.len);
+                       return 0 /* LDKAPIError - ChannelUnavailable */; (void) err_conv;
+               }
+               case LDKAPIError_MonitorUpdateFailed: {
+                       return 0 /* LDKAPIError - MonitorUpdateFailed */;
+               }
+               case LDKAPIError_IncompatibleShutdownScript: {
+                       LDKShutdownScript script_var = obj->incompatible_shutdown_script.script;
+                       uint64_t script_ref = 0;
+                       CHECK((((uint64_t)script_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&script_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(script_var);
+                       script_ref = (uint64_t)script_var.inner & ~1;
+                       return 0 /* LDKAPIError - IncompatibleShutdownScript */; (void) script_ref;
+               }
+               default: abort();
        }
-       CVec_SignatureZ_free(_res_constr);
-}
-
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = HolderCommitmentTransaction_clone(&o_conv);
-       LDKCResult_HolderCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ), "LDKCResult_HolderCommitmentTransactionDecodeErrorZ");
-       *ret_conv = CResult_HolderCommitmentTransactionDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
-}
-
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_HolderCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ), "LDKCResult_HolderCommitmentTransactionDecodeErrorZ");
-       *ret_conv = CResult_HolderCommitmentTransactionDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_HolderCommitmentTransactionDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_HolderCommitmentTransactionDecodeErrorZ* o_conv = (LDKCResult_HolderCommitmentTransactionDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_HolderCommitmentTransactionDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+static inline void CResult_NoneAPIErrorZ_get_ok(LDKCResult_NoneAPIErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_HolderCommitmentTransactionDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_HolderCommitmentTransactionDecodeErrorZ _res_conv = *(LDKCResult_HolderCommitmentTransactionDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_HolderCommitmentTransactionDecodeErrorZ_free(_res_conv);
+void  __attribute__((visibility("default"))) TS_CResult_NoneAPIErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_NoneAPIErrorZ* owner_conv = (LDKCResult_NoneAPIErrorZ*)(owner & ~1);
+       CResult_NoneAPIErrorZ_get_ok(owner_conv);
 }
 
-static inline uint64_t CResult_HolderCommitmentTransactionDecodeErrorZ_clone_ptr(LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_HolderCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ), "LDKCResult_HolderCommitmentTransactionDecodeErrorZ");
-       *ret_conv = CResult_HolderCommitmentTransactionDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline struct LDKAPIError CResult_NoneAPIErrorZ_get_err(LDKCResult_NoneAPIErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return APIError_clone(&*owner->contents.err);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_HolderCommitmentTransactionDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_HolderCommitmentTransactionDecodeErrorZ* arg_conv = (LDKCResult_HolderCommitmentTransactionDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_HolderCommitmentTransactionDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneAPIErrorZ_get_err(uint32_t owner) {
+       LDKCResult_NoneAPIErrorZ* owner_conv = (LDKCResult_NoneAPIErrorZ*)(owner & ~1);
+       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
+       *ret_copy = CResult_NoneAPIErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_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 (uint64_t)ret_conv;
+uint32_t __attribute__((visibility("default"))) TS_LDKCOption_u16Z_ref_from_ptr(uint32_t ptr) {
+       LDKCOption_u16Z *obj = (LDKCOption_u16Z*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKCOption_u16Z_Some: {
+                       return 0 /* LDKCOption_u16Z - Some */; (void) obj->some;
+               }
+               case LDKCOption_u16Z_None: {
+                       return 0 /* LDKCOption_u16Z - None */;
+               }
+               default: abort();
+       }
 }
-
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = BuiltCommitmentTransaction_clone(&o_conv);
-       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ), "LDKCResult_BuiltCommitmentTransactionDecodeErrorZ");
-       *ret_conv = CResult_BuiltCommitmentTransactionDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+static inline LDKCVec_CResult_NoneAPIErrorZZ CVec_CResult_NoneAPIErrorZZ_clone(const LDKCVec_CResult_NoneAPIErrorZZ *orig) {
+       LDKCVec_CResult_NoneAPIErrorZZ ret = { .data = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ) * orig->datalen, "LDKCVec_CResult_NoneAPIErrorZZ clone bytes"), .datalen = orig->datalen };
+       for (size_t i = 0; i < ret.datalen; i++) {
+               ret.data[i] = CResult_NoneAPIErrorZ_clone(&orig->data[i]);
+       }
+       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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ), "LDKCResult_BuiltCommitmentTransactionDecodeErrorZ");
-       *ret_conv = CResult_BuiltCommitmentTransactionDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+static inline LDKCVec_APIErrorZ CVec_APIErrorZ_clone(const LDKCVec_APIErrorZ *orig) {
+       LDKCVec_APIErrorZ ret = { .data = MALLOC(sizeof(LDKAPIError) * orig->datalen, "LDKCVec_APIErrorZ clone bytes"), .datalen = orig->datalen };
+       for (size_t i = 0; i < ret.datalen; i++) {
+               ret.data[i] = APIError_clone(&orig->data[i]);
+       }
+       return ret;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_BuiltCommitmentTransactionDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* o_conv = (LDKCResult_BuiltCommitmentTransactionDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_BuiltCommitmentTransactionDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+static inline struct LDKThirtyTwoBytes CResult__u832APIErrorZ_get_ok(LDKCResult__u832APIErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ThirtyTwoBytes_clone(&*owner->contents.result);
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_BuiltCommitmentTransactionDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ _res_conv = *(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_BuiltCommitmentTransactionDecodeErrorZ_free(_res_conv);
+int8_tArray  __attribute__((visibility("default"))) TS_CResult__u832APIErrorZ_get_ok(uint32_t owner) {
+       LDKCResult__u832APIErrorZ* owner_conv = (LDKCResult__u832APIErrorZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, CResult__u832APIErrorZ_get_ok(owner_conv).data, 32);
+       return ret_arr;
 }
 
-static inline uint64_t CResult_BuiltCommitmentTransactionDecodeErrorZ_clone_ptr(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ), "LDKCResult_BuiltCommitmentTransactionDecodeErrorZ");
-       *ret_conv = CResult_BuiltCommitmentTransactionDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline struct LDKAPIError CResult__u832APIErrorZ_get_err(LDKCResult__u832APIErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return APIError_clone(&*owner->contents.err);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_BuiltCommitmentTransactionDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* arg_conv = (LDKCResult_BuiltCommitmentTransactionDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_BuiltCommitmentTransactionDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult__u832APIErrorZ_get_err(uint32_t owner) {
+       LDKCResult__u832APIErrorZ* owner_conv = (LDKCResult__u832APIErrorZ*)(owner & ~1);
+       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
+       *ret_copy = CResult__u832APIErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-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 (uint64_t)ret_conv;
+uint32_t __attribute__((visibility("default"))) TS_LDKPaymentSendFailure_ref_from_ptr(uint32_t ptr) {
+       LDKPaymentSendFailure *obj = (LDKPaymentSendFailure*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKPaymentSendFailure_ParameterError: {
+                       uint64_t parameter_error_ref = ((uint64_t)&obj->parameter_error) | 1;
+                       return 0 /* LDKPaymentSendFailure - ParameterError */; (void) parameter_error_ref;
+               }
+               case LDKPaymentSendFailure_PathParameterError: {
+                       LDKCVec_CResult_NoneAPIErrorZZ path_parameter_error_var = obj->path_parameter_error;
+                       uint32_tArray path_parameter_error_arr = NULL;
+                       path_parameter_error_arr = init_uint32_tArray(path_parameter_error_var.datalen);
+                       uint32_t *path_parameter_error_arr_ptr = (uint32_t*)(path_parameter_error_arr + 4);
+                       for (size_t w = 0; w < path_parameter_error_var.datalen; w++) {
+                               LDKCResult_NoneAPIErrorZ* path_parameter_error_conv_22_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
+                               *path_parameter_error_conv_22_conv = path_parameter_error_var.data[w];
+                               *path_parameter_error_conv_22_conv = CResult_NoneAPIErrorZ_clone(path_parameter_error_conv_22_conv);
+                               path_parameter_error_arr_ptr[w] = (uint64_t)path_parameter_error_conv_22_conv;
+                       }
+                       
+                       return 0 /* LDKPaymentSendFailure - PathParameterError */; (void) path_parameter_error_arr;
+               }
+               case LDKPaymentSendFailure_AllFailedRetrySafe: {
+                       LDKCVec_APIErrorZ all_failed_retry_safe_var = obj->all_failed_retry_safe;
+                       uint32_tArray all_failed_retry_safe_arr = NULL;
+                       all_failed_retry_safe_arr = init_uint32_tArray(all_failed_retry_safe_var.datalen);
+                       uint32_t *all_failed_retry_safe_arr_ptr = (uint32_t*)(all_failed_retry_safe_arr + 4);
+                       for (size_t k = 0; k < all_failed_retry_safe_var.datalen; k++) {
+                               uint64_t all_failed_retry_safe_conv_10_ref = ((uint64_t)&all_failed_retry_safe_var.data[k]) | 1;
+                               all_failed_retry_safe_arr_ptr[k] = all_failed_retry_safe_conv_10_ref;
+                       }
+                       
+                       return 0 /* LDKPaymentSendFailure - AllFailedRetrySafe */; (void) all_failed_retry_safe_arr;
+               }
+               case LDKPaymentSendFailure_PartialFailure: {
+                       LDKCVec_CResult_NoneAPIErrorZZ results_var = obj->partial_failure.results;
+                       uint32_tArray results_arr = NULL;
+                       results_arr = init_uint32_tArray(results_var.datalen);
+                       uint32_t *results_arr_ptr = (uint32_t*)(results_arr + 4);
+                       for (size_t w = 0; w < results_var.datalen; w++) {
+                               LDKCResult_NoneAPIErrorZ* results_conv_22_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
+                               *results_conv_22_conv = results_var.data[w];
+                               *results_conv_22_conv = CResult_NoneAPIErrorZ_clone(results_conv_22_conv);
+                               results_arr_ptr[w] = (uint64_t)results_conv_22_conv;
+                       }
+                       
+                       LDKRouteParameters failed_paths_retry_var = obj->partial_failure.failed_paths_retry;
+                       uint64_t failed_paths_retry_ref = 0;
+                       if ((uint64_t)failed_paths_retry_var.inner > 4096) {
+                               CHECK((((uint64_t)failed_paths_retry_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                               CHECK((((uint64_t)&failed_paths_retry_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(failed_paths_retry_var);
+                               failed_paths_retry_ref = (uint64_t)failed_paths_retry_var.inner & ~1;
+                       }
+                       int8_tArray payment_id_arr = init_int8_tArray(32);
+                       memcpy(payment_id_arr->elems, obj->partial_failure.payment_id.data, 32);
+                       return 0 /* LDKPaymentSendFailure - PartialFailure */; (void) results_arr; (void) failed_paths_retry_ref; (void) payment_id_arr;
+               }
+               default: abort();
+       }
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_TrustedClosingTransactionNoneZ_ok(uint32_t o) {
-       LDKTrustedClosingTransaction o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       // Warning: we need a move here but no clone is available for LDKTrustedClosingTransaction
-       LDKCResult_TrustedClosingTransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TrustedClosingTransactionNoneZ), "LDKCResult_TrustedClosingTransactionNoneZ");
-       *ret_conv = CResult_TrustedClosingTransactionNoneZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+static inline struct LDKThirtyTwoBytes CResult_PaymentIdPaymentSendFailureZ_get_ok(LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ThirtyTwoBytes_clone(&*owner->contents.result);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_TrustedClosingTransactionNoneZ_err() {
-       LDKCResult_TrustedClosingTransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TrustedClosingTransactionNoneZ), "LDKCResult_TrustedClosingTransactionNoneZ");
-       *ret_conv = CResult_TrustedClosingTransactionNoneZ_err();
-       return (uint64_t)ret_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentSendFailureZ_get_ok(uint32_t owner) {
+       LDKCResult_PaymentIdPaymentSendFailureZ* owner_conv = (LDKCResult_PaymentIdPaymentSendFailureZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, CResult_PaymentIdPaymentSendFailureZ_get_ok(owner_conv).data, 32);
+       return ret_arr;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_TrustedClosingTransactionNoneZ_is_ok(uint32_t o) {
-       LDKCResult_TrustedClosingTransactionNoneZ* o_conv = (LDKCResult_TrustedClosingTransactionNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_TrustedClosingTransactionNoneZ_is_ok(o_conv);
-       return ret_val;
+static inline struct LDKPaymentSendFailure CResult_PaymentIdPaymentSendFailureZ_get_err(LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return PaymentSendFailure_clone(&*owner->contents.err);
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_TrustedClosingTransactionNoneZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_TrustedClosingTransactionNoneZ _res_conv = *(LDKCResult_TrustedClosingTransactionNoneZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_TrustedClosingTransactionNoneZ_free(_res_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentSendFailureZ_get_err(uint32_t owner) {
+       LDKCResult_PaymentIdPaymentSendFailureZ* owner_conv = (LDKCResult_PaymentIdPaymentSendFailureZ*)(owner & ~1);
+       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
+       *ret_copy = CResult_PaymentIdPaymentSendFailureZ_get_err(owner_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = CommitmentTransaction_clone(&o_conv);
-       LDKCResult_CommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ), "LDKCResult_CommitmentTransactionDecodeErrorZ");
-       *ret_conv = CResult_CommitmentTransactionDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+static inline void CResult_NonePaymentSendFailureZ_get_ok(LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
 }
-
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_CommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ), "LDKCResult_CommitmentTransactionDecodeErrorZ");
-       *ret_conv = CResult_CommitmentTransactionDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_CResult_NonePaymentSendFailureZ_get_ok(uint32_t owner) {
+       LDKCResult_NonePaymentSendFailureZ* owner_conv = (LDKCResult_NonePaymentSendFailureZ*)(owner & ~1);
+       CResult_NonePaymentSendFailureZ_get_ok(owner_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_CommitmentTransactionDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_CommitmentTransactionDecodeErrorZ* o_conv = (LDKCResult_CommitmentTransactionDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_CommitmentTransactionDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+static inline struct LDKPaymentSendFailure CResult_NonePaymentSendFailureZ_get_err(LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return PaymentSendFailure_clone(&*owner->contents.err);
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_CommitmentTransactionDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_CommitmentTransactionDecodeErrorZ _res_conv = *(LDKCResult_CommitmentTransactionDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_CommitmentTransactionDecodeErrorZ_free(_res_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NonePaymentSendFailureZ_get_err(uint32_t owner) {
+       LDKCResult_NonePaymentSendFailureZ* owner_conv = (LDKCResult_NonePaymentSendFailureZ*)(owner & ~1);
+       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
+       *ret_copy = CResult_NonePaymentSendFailureZ_get_err(owner_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-static inline uint64_t CResult_CommitmentTransactionDecodeErrorZ_clone_ptr(LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_CommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ), "LDKCResult_CommitmentTransactionDecodeErrorZ");
-       *ret_conv = CResult_CommitmentTransactionDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentIdZ_get_a(LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR owner){
+       return ThirtyTwoBytes_clone(&owner->a);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_CommitmentTransactionDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_CommitmentTransactionDecodeErrorZ* arg_conv = (LDKCResult_CommitmentTransactionDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_CommitmentTransactionDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentIdZ_get_a(uint32_t owner) {
+       LDKC2Tuple_PaymentHashPaymentIdZ* owner_conv = (LDKC2Tuple_PaymentHashPaymentIdZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, C2Tuple_PaymentHashPaymentIdZ_get_a(owner_conv).data, 32);
+       return ret_arr;
 }
 
-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 (uint64_t)ret_conv;
+static inline struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentIdZ_get_b(LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR owner){
+       return ThirtyTwoBytes_clone(&owner->b);
+}
+int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentIdZ_get_b(uint32_t owner) {
+       LDKC2Tuple_PaymentHashPaymentIdZ* owner_conv = (LDKC2Tuple_PaymentHashPaymentIdZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, C2Tuple_PaymentHashPaymentIdZ_get_b(owner_conv).data, 32);
+       return ret_arr;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       // 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 (uint64_t)ret_conv;
+static inline struct LDKC2Tuple_PaymentHashPaymentIdZ CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_ok(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return C2Tuple_PaymentHashPaymentIdZ_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_ok(uint32_t owner) {
+       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* owner_conv = (LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ*)(owner & ~1);
+       LDKC2Tuple_PaymentHashPaymentIdZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentIdZ), "LDKC2Tuple_PaymentHashPaymentIdZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_ok(owner_conv);
+       return ((uint64_t)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();
-       return (uint64_t)ret_conv;
+static inline struct LDKPaymentSendFailure CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_err(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return PaymentSendFailure_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_err(uint32_t owner) {
+       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* owner_conv = (LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ*)(owner & ~1);
+       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
+       *ret_copy = CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_err(owner_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_TrustedCommitmentTransactionNoneZ_is_ok(uint32_t o) {
-       LDKCResult_TrustedCommitmentTransactionNoneZ* o_conv = (LDKCResult_TrustedCommitmentTransactionNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_TrustedCommitmentTransactionNoneZ_is_ok(o_conv);
-       return ret_val;
+static inline struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentSecretZ_get_a(LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR owner){
+       return ThirtyTwoBytes_clone(&owner->a);
+}
+int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentSecretZ_get_a(uint32_t owner) {
+       LDKC2Tuple_PaymentHashPaymentSecretZ* owner_conv = (LDKC2Tuple_PaymentHashPaymentSecretZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, C2Tuple_PaymentHashPaymentSecretZ_get_a(owner_conv).data, 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_TrustedCommitmentTransactionNoneZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_TrustedCommitmentTransactionNoneZ _res_conv = *(LDKCResult_TrustedCommitmentTransactionNoneZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_TrustedCommitmentTransactionNoneZ_free(_res_conv);
+static inline struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentSecretZ_get_b(LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR owner){
+       return ThirtyTwoBytes_clone(&owner->b);
+}
+int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentSecretZ_get_b(uint32_t owner) {
+       LDKC2Tuple_PaymentHashPaymentSecretZ* owner_conv = (LDKC2Tuple_PaymentHashPaymentSecretZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, C2Tuple_PaymentHashPaymentSecretZ_get_b(owner_conv).data, 32);
+       return ret_arr;
 }
 
-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 o_conv_12 = o_vals[m];
-               LDKSignature o_conv_12_ref;
-               CHECK(*((uint32_t*)o_conv_12) == 64);
-               memcpy(o_conv_12_ref.compact_form, (uint8_t*)(o_conv_12 + 4), 64);
-               o_constr.data[m] = o_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 (uint64_t)ret_conv;
+static inline struct LDKC2Tuple_PaymentHashPaymentSecretZ CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_get_ok(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return C2Tuple_PaymentHashPaymentSecretZ_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_get_ok(uint32_t owner) {
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* owner_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ*)(owner & ~1);
+       LDKC2Tuple_PaymentHashPaymentSecretZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ), "LDKC2Tuple_PaymentHashPaymentSecretZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_get_ok(owner_conv);
+       return ((uint64_t)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 (uint64_t)ret_conv;
+static inline void CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_get_err(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
+}
+void  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_get_err(uint32_t owner) {
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* owner_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ*)(owner & ~1);
+       CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_get_err(owner_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_CVec_SignatureZNoneZ_is_ok(uint32_t o) {
-       LDKCResult_CVec_SignatureZNoneZ* o_conv = (LDKCResult_CVec_SignatureZNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_CVec_SignatureZNoneZ_is_ok(o_conv);
-       return ret_val;
+static inline struct LDKC2Tuple_PaymentHashPaymentSecretZ CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_ok(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return C2Tuple_PaymentHashPaymentSecretZ_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* owner_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ*)(owner & ~1);
+       LDKC2Tuple_PaymentHashPaymentSecretZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ), "LDKC2Tuple_PaymentHashPaymentSecretZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_ok(owner_conv);
+       return ((uint64_t)ret_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_CVec_SignatureZNoneZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_CVec_SignatureZNoneZ _res_conv = *(LDKCResult_CVec_SignatureZNoneZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_CVec_SignatureZNoneZ_free(_res_conv);
+static inline struct LDKAPIError CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_err(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return APIError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_err(uint32_t owner) {
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* owner_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ*)(owner & ~1);
+       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
+       *ret_copy = CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-static inline uint64_t CResult_CVec_SignatureZNoneZ_clone_ptr(LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR arg) {
-       LDKCResult_CVec_SignatureZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_SignatureZNoneZ), "LDKCResult_CVec_SignatureZNoneZ");
-       *ret_conv = CResult_CVec_SignatureZNoneZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline struct LDKThirtyTwoBytes CResult_PaymentSecretNoneZ_get_ok(LDKCResult_PaymentSecretNoneZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ThirtyTwoBytes_clone(&*owner->contents.result);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_CVec_SignatureZNoneZ_clone_ptr(uint32_t arg) {
-       LDKCResult_CVec_SignatureZNoneZ* arg_conv = (LDKCResult_CVec_SignatureZNoneZ*)(arg & ~1);
-       int64_t ret_val = CResult_CVec_SignatureZNoneZ_clone_ptr(arg_conv);
-       return ret_val;
+int8_tArray  __attribute__((visibility("default"))) TS_CResult_PaymentSecretNoneZ_get_ok(uint32_t owner) {
+       LDKCResult_PaymentSecretNoneZ* owner_conv = (LDKCResult_PaymentSecretNoneZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, CResult_PaymentSecretNoneZ_get_ok(owner_conv).data, 32);
+       return ret_arr;
 }
 
-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 (uint64_t)ret_conv;
+static inline void CResult_PaymentSecretNoneZ_get_err(LDKCResult_PaymentSecretNoneZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
+}
+void  __attribute__((visibility("default"))) TS_CResult_PaymentSecretNoneZ_get_err(uint32_t owner) {
+       LDKCResult_PaymentSecretNoneZ* owner_conv = (LDKCResult_PaymentSecretNoneZ*)(owner & ~1);
+       CResult_PaymentSecretNoneZ_get_err(owner_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptDecodeErrorZ_ok(uint32_t o) {
-       LDKShutdownScript o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = ShutdownScript_clone(&o_conv);
-       LDKCResult_ShutdownScriptDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptDecodeErrorZ), "LDKCResult_ShutdownScriptDecodeErrorZ");
-       *ret_conv = CResult_ShutdownScriptDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+static inline struct LDKThirtyTwoBytes CResult_PaymentSecretAPIErrorZ_get_ok(LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ThirtyTwoBytes_clone(&*owner->contents.result);
+}
+int8_tArray  __attribute__((visibility("default"))) TS_CResult_PaymentSecretAPIErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_PaymentSecretAPIErrorZ* owner_conv = (LDKCResult_PaymentSecretAPIErrorZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, CResult_PaymentSecretAPIErrorZ_get_ok(owner_conv).data, 32);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ShutdownScriptDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptDecodeErrorZ), "LDKCResult_ShutdownScriptDecodeErrorZ");
-       *ret_conv = CResult_ShutdownScriptDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+static inline struct LDKAPIError CResult_PaymentSecretAPIErrorZ_get_err(LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return APIError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretAPIErrorZ_get_err(uint32_t owner) {
+       LDKCResult_PaymentSecretAPIErrorZ* owner_conv = (LDKCResult_PaymentSecretAPIErrorZ*)(owner & ~1);
+       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
+       *ret_copy = CResult_PaymentSecretAPIErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ShutdownScriptDecodeErrorZ* o_conv = (LDKCResult_ShutdownScriptDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ShutdownScriptDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+static inline struct LDKThirtyTwoBytes CResult_PaymentPreimageAPIErrorZ_get_ok(LDKCResult_PaymentPreimageAPIErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ThirtyTwoBytes_clone(&*owner->contents.result);
+}
+int8_tArray  __attribute__((visibility("default"))) TS_CResult_PaymentPreimageAPIErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_PaymentPreimageAPIErrorZ* owner_conv = (LDKCResult_PaymentPreimageAPIErrorZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, CResult_PaymentPreimageAPIErrorZ_get_ok(owner_conv).data, 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_ShutdownScriptDecodeErrorZ _res_conv = *(LDKCResult_ShutdownScriptDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_ShutdownScriptDecodeErrorZ_free(_res_conv);
+static inline struct LDKAPIError CResult_PaymentPreimageAPIErrorZ_get_err(LDKCResult_PaymentPreimageAPIErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return APIError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentPreimageAPIErrorZ_get_err(uint32_t owner) {
+       LDKCResult_PaymentPreimageAPIErrorZ* owner_conv = (LDKCResult_PaymentPreimageAPIErrorZ*)(owner & ~1);
+       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
+       *ret_copy = CResult_PaymentPreimageAPIErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-static inline uint64_t CResult_ShutdownScriptDecodeErrorZ_clone_ptr(LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ShutdownScriptDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptDecodeErrorZ), "LDKCResult_ShutdownScriptDecodeErrorZ");
-       *ret_conv = CResult_ShutdownScriptDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline LDKCVec_ChannelMonitorZ CVec_ChannelMonitorZ_clone(const LDKCVec_ChannelMonitorZ *orig) {
+       LDKCVec_ChannelMonitorZ ret = { .data = MALLOC(sizeof(LDKChannelMonitor) * orig->datalen, "LDKCVec_ChannelMonitorZ clone bytes"), .datalen = orig->datalen };
+       for (size_t i = 0; i < ret.datalen; i++) {
+               ret.data[i] = ChannelMonitor_clone(&orig->data[i]);
+       }
+       return ret;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ShutdownScriptDecodeErrorZ* arg_conv = (LDKCResult_ShutdownScriptDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ShutdownScriptDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+typedef struct LDKWatch_JCalls {
+       atomic_size_t refcnt;
+       uint32_t watch_channel_meth;
+       uint32_t update_channel_meth;
+       uint32_t release_pending_monitor_events_meth;
+} LDKWatch_JCalls;
+static void LDKWatch_JCalls_free(void* this_arg) {
+       LDKWatch_JCalls *j_calls = (LDKWatch_JCalls*) this_arg;
+       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
+               js_free_function_ptr(j_calls->watch_channel_meth);
+               js_free_function_ptr(j_calls->update_channel_meth);
+               js_free_function_ptr(j_calls->release_pending_monitor_events_meth);
+               FREE(j_calls);
+       }
+}
+LDKCResult_NoneChannelMonitorUpdateErrZ watch_channel_LDKWatch_jcall(const void* this_arg, LDKOutPoint funding_txo, LDKChannelMonitor monitor) {
+       LDKWatch_JCalls *j_calls = (LDKWatch_JCalls*) this_arg;
+       LDKOutPoint funding_txo_var = funding_txo;
+       uint64_t funding_txo_ref = 0;
+       CHECK((((uint64_t)funding_txo_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&funding_txo_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_var);
+       funding_txo_ref = (uint64_t)funding_txo_var.inner;
+       if (funding_txo_var.is_owned) {
+               funding_txo_ref |= 1;
+       }
+       LDKChannelMonitor monitor_var = monitor;
+       uint64_t monitor_ref = 0;
+       CHECK((((uint64_t)monitor_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&monitor_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(monitor_var);
+       monitor_ref = (uint64_t)monitor_var.inner;
+       if (monitor_var.is_owned) {
+               monitor_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_2(j_calls->watch_channel_meth, (uint32_t)funding_txo_ref, (uint32_t)monitor_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_NoneChannelMonitorUpdateErrZ ret_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
+}
+LDKCResult_NoneChannelMonitorUpdateErrZ update_channel_LDKWatch_jcall(const void* this_arg, LDKOutPoint funding_txo, LDKChannelMonitorUpdate update) {
+       LDKWatch_JCalls *j_calls = (LDKWatch_JCalls*) this_arg;
+       LDKOutPoint funding_txo_var = funding_txo;
+       uint64_t funding_txo_ref = 0;
+       CHECK((((uint64_t)funding_txo_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&funding_txo_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_var);
+       funding_txo_ref = (uint64_t)funding_txo_var.inner;
+       if (funding_txo_var.is_owned) {
+               funding_txo_ref |= 1;
+       }
+       LDKChannelMonitorUpdate update_var = update;
+       uint64_t update_ref = 0;
+       CHECK((((uint64_t)update_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&update_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_var);
+       update_ref = (uint64_t)update_var.inner;
+       if (update_var.is_owned) {
+               update_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_2(j_calls->update_channel_meth, (uint32_t)funding_txo_ref, (uint32_t)update_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_NoneChannelMonitorUpdateErrZ ret_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
+}
+LDKCVec_MonitorEventZ release_pending_monitor_events_LDKWatch_jcall(const void* this_arg) {
+       LDKWatch_JCalls *j_calls = (LDKWatch_JCalls*) this_arg;
+       uint32_tArray ret = (uint32_tArray)js_invoke_function_0(j_calls->release_pending_monitor_events_meth);
+       LDKCVec_MonitorEventZ ret_constr;
+       ret_constr.datalen = ret->arr_len;
+       if (ret_constr.datalen > 0)
+               ret_constr.data = MALLOC(ret_constr.datalen * sizeof(LDKMonitorEvent), "LDKCVec_MonitorEventZ Elements");
+       else
+               ret_constr.data = NULL;
+       uint32_t* ret_vals = ret->elems;
+       for (size_t o = 0; o < ret_constr.datalen; o++) {
+               uint32_t ret_conv_14 = ret_vals[o];
+               void* ret_conv_14_ptr = (void*)(((uint64_t)ret_conv_14) & ~1);
+               CHECK_ACCESS(ret_conv_14_ptr);
+               LDKMonitorEvent ret_conv_14_conv = *(LDKMonitorEvent*)(ret_conv_14_ptr);
+               FREE((void*)ret_conv_14);
+               ret_constr.data[o] = ret_conv_14_conv;
+       }
+       return ret_constr;
+}
+static void LDKWatch_JCalls_cloned(LDKWatch* new_obj) {
+       LDKWatch_JCalls *j_calls = (LDKWatch_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+}
+static inline LDKWatch LDKWatch_init (/*TODO: JS Object Reference */void* o) {
+       LDKWatch_JCalls *calls = MALLOC(sizeof(LDKWatch_JCalls), "LDKWatch_JCalls");
+       atomic_init(&calls->refcnt, 1);
+       //TODO: Assign calls->o from o
+
+       LDKWatch ret = {
+               .this_arg = (void*) calls,
+               .watch_channel = watch_channel_LDKWatch_jcall,
+               .update_channel = update_channel_LDKWatch_jcall,
+               .release_pending_monitor_events = release_pending_monitor_events_LDKWatch_jcall,
+               .free = LDKWatch_JCalls_free,
+       };
+       return ret;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_ShutdownScriptDecodeErrorZ* orig_conv = (LDKCResult_ShutdownScriptDecodeErrorZ*)(orig & ~1);
-       LDKCResult_ShutdownScriptDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptDecodeErrorZ), "LDKCResult_ShutdownScriptDecodeErrorZ");
-       *ret_conv = CResult_ShutdownScriptDecodeErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+long  __attribute__((visibility("default"))) TS_LDKWatch_new(/*TODO: JS Object Reference */void* o) {
+       LDKWatch *res_ptr = MALLOC(sizeof(LDKWatch), "LDKWatch");
+       *res_ptr = LDKWatch_init(o);
+       return (long)res_ptr;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptInvalidShutdownScriptZ_ok(uint32_t o) {
-       LDKShutdownScript o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = ShutdownScript_clone(&o_conv);
-       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ), "LDKCResult_ShutdownScriptInvalidShutdownScriptZ");
-       *ret_conv = CResult_ShutdownScriptInvalidShutdownScriptZ_ok(o_conv);
+uint32_t  __attribute__((visibility("default"))) TS_Watch_watch_channel(uint32_t this_arg, uint32_t funding_txo, uint32_t monitor) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKWatch* this_arg_conv = (LDKWatch*)this_arg_ptr;
+       LDKOutPoint funding_txo_conv;
+       funding_txo_conv.inner = (void*)(funding_txo & (~1));
+       funding_txo_conv.is_owned = (funding_txo & 1) || (funding_txo == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_conv);
+       funding_txo_conv = OutPoint_clone(&funding_txo_conv);
+       LDKChannelMonitor monitor_conv;
+       monitor_conv.inner = (void*)(monitor & (~1));
+       monitor_conv.is_owned = (monitor & 1) || (monitor == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(monitor_conv);
+       monitor_conv = ChannelMonitor_clone(&monitor_conv);
+       LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ");
+       *ret_conv = (this_arg_conv->watch_channel)(this_arg_conv->this_arg, funding_txo_conv, monitor_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptInvalidShutdownScriptZ_err(uint32_t e) {
-       LDKInvalidShutdownScript e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = InvalidShutdownScript_clone(&e_conv);
-       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ), "LDKCResult_ShutdownScriptInvalidShutdownScriptZ");
-       *ret_conv = CResult_ShutdownScriptInvalidShutdownScriptZ_err(e_conv);
+uint32_t  __attribute__((visibility("default"))) TS_Watch_update_channel(uint32_t this_arg, uint32_t funding_txo, uint32_t update) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKWatch* this_arg_conv = (LDKWatch*)this_arg_ptr;
+       LDKOutPoint funding_txo_conv;
+       funding_txo_conv.inner = (void*)(funding_txo & (~1));
+       funding_txo_conv.is_owned = (funding_txo & 1) || (funding_txo == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_conv);
+       funding_txo_conv = OutPoint_clone(&funding_txo_conv);
+       LDKChannelMonitorUpdate update_conv;
+       update_conv.inner = (void*)(update & (~1));
+       update_conv.is_owned = (update & 1) || (update == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_conv);
+       update_conv = ChannelMonitorUpdate_clone(&update_conv);
+       LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ");
+       *ret_conv = (this_arg_conv->update_channel)(this_arg_conv->this_arg, funding_txo_conv, update_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptInvalidShutdownScriptZ_is_ok(uint32_t o) {
-       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* o_conv = (LDKCResult_ShutdownScriptInvalidShutdownScriptZ*)(o & ~1);
-       jboolean ret_val = CResult_ShutdownScriptInvalidShutdownScriptZ_is_ok(o_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptInvalidShutdownScriptZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_ShutdownScriptInvalidShutdownScriptZ _res_conv = *(LDKCResult_ShutdownScriptInvalidShutdownScriptZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_ShutdownScriptInvalidShutdownScriptZ_free(_res_conv);
+uint32_tArray  __attribute__((visibility("default"))) TS_Watch_release_pending_monitor_events(uint32_t this_arg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKWatch* this_arg_conv = (LDKWatch*)this_arg_ptr;
+       LDKCVec_MonitorEventZ ret_var = (this_arg_conv->release_pending_monitor_events)(this_arg_conv->this_arg);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t o = 0; o < ret_var.datalen; o++) {
+               LDKMonitorEvent *ret_conv_14_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
+               *ret_conv_14_copy = ret_var.data[o];
+               uint64_t ret_conv_14_ref = (uint64_t)ret_conv_14_copy;
+               ret_arr_ptr[o] = ret_conv_14_ref;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-static inline uint64_t CResult_ShutdownScriptInvalidShutdownScriptZ_clone_ptr(LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR arg) {
-       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ), "LDKCResult_ShutdownScriptInvalidShutdownScriptZ");
-       *ret_conv = CResult_ShutdownScriptInvalidShutdownScriptZ_clone(arg);
-       return (uint64_t)ret_conv;
+typedef struct LDKBroadcasterInterface_JCalls {
+       atomic_size_t refcnt;
+       uint32_t broadcast_transaction_meth;
+} LDKBroadcasterInterface_JCalls;
+static void LDKBroadcasterInterface_JCalls_free(void* this_arg) {
+       LDKBroadcasterInterface_JCalls *j_calls = (LDKBroadcasterInterface_JCalls*) this_arg;
+       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
+               js_free_function_ptr(j_calls->broadcast_transaction_meth);
+               FREE(j_calls);
+       }
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptInvalidShutdownScriptZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* arg_conv = (LDKCResult_ShutdownScriptInvalidShutdownScriptZ*)(arg & ~1);
-       int64_t ret_val = CResult_ShutdownScriptInvalidShutdownScriptZ_clone_ptr(arg_conv);
-       return ret_val;
+void broadcast_transaction_LDKBroadcasterInterface_jcall(const void* this_arg, LDKTransaction tx) {
+       LDKBroadcasterInterface_JCalls *j_calls = (LDKBroadcasterInterface_JCalls*) this_arg;
+       LDKTransaction tx_var = tx;
+       int8_tArray tx_arr = init_int8_tArray(tx_var.datalen);
+       memcpy(tx_arr->elems, tx_var.data, tx_var.datalen);
+       Transaction_free(tx_var);
+       js_invoke_function_1(j_calls->broadcast_transaction_meth, (uint32_t)tx_arr);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptInvalidShutdownScriptZ_clone(uint32_t orig) {
-       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* orig_conv = (LDKCResult_ShutdownScriptInvalidShutdownScriptZ*)(orig & ~1);
-       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ), "LDKCResult_ShutdownScriptInvalidShutdownScriptZ");
-       *ret_conv = CResult_ShutdownScriptInvalidShutdownScriptZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+static void LDKBroadcasterInterface_JCalls_cloned(LDKBroadcasterInterface* new_obj) {
+       LDKBroadcasterInterface_JCalls *j_calls = (LDKBroadcasterInterface_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
+static inline LDKBroadcasterInterface LDKBroadcasterInterface_init (/*TODO: JS Object Reference */void* o) {
+       LDKBroadcasterInterface_JCalls *calls = MALLOC(sizeof(LDKBroadcasterInterface_JCalls), "LDKBroadcasterInterface_JCalls");
+       atomic_init(&calls->refcnt, 1);
+       //TODO: Assign calls->o from o
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneErrorZ_ok() {
-       LDKCResult_NoneErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneErrorZ), "LDKCResult_NoneErrorZ");
-       *ret_conv = CResult_NoneErrorZ_ok();
-       return (uint64_t)ret_conv;
+       LDKBroadcasterInterface ret = {
+               .this_arg = (void*) calls,
+               .broadcast_transaction = broadcast_transaction_LDKBroadcasterInterface_jcall,
+               .free = LDKBroadcasterInterface_JCalls_free,
+       };
+       return ret;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneErrorZ_err(uint32_t e) {
-       LDKIOError e_conv = LDKIOError_from_js(e);
-       LDKCResult_NoneErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneErrorZ), "LDKCResult_NoneErrorZ");
-       *ret_conv = CResult_NoneErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+long  __attribute__((visibility("default"))) TS_LDKBroadcasterInterface_new(/*TODO: JS Object Reference */void* o) {
+       LDKBroadcasterInterface *res_ptr = MALLOC(sizeof(LDKBroadcasterInterface), "LDKBroadcasterInterface");
+       *res_ptr = LDKBroadcasterInterface_init(o);
+       return (long)res_ptr;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_NoneErrorZ_is_ok(uint32_t o) {
-       LDKCResult_NoneErrorZ* o_conv = (LDKCResult_NoneErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_NoneErrorZ_is_ok(o_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_BroadcasterInterface_broadcast_transaction(uint32_t this_arg, int8_tArray tx) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKBroadcasterInterface* this_arg_conv = (LDKBroadcasterInterface*)this_arg_ptr;
+       LDKTransaction tx_ref;
+       tx_ref.datalen = tx->arr_len;
+       tx_ref.data = MALLOC(tx_ref.datalen, "LDKTransaction Bytes");
+       memcpy(tx_ref.data, tx->elems, tx_ref.datalen);
+       tx_ref.data_is_owned = true;
+       (this_arg_conv->broadcast_transaction)(this_arg_conv->this_arg, tx_ref);
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_NoneErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_NoneErrorZ _res_conv = *(LDKCResult_NoneErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_NoneErrorZ_free(_res_conv);
+typedef struct LDKKeysInterface_JCalls {
+       atomic_size_t refcnt;
+       uint32_t get_node_secret_meth;
+       uint32_t get_destination_script_meth;
+       uint32_t get_shutdown_scriptpubkey_meth;
+       uint32_t get_channel_signer_meth;
+       uint32_t get_secure_random_bytes_meth;
+       uint32_t read_chan_signer_meth;
+       uint32_t sign_invoice_meth;
+       uint32_t get_inbound_payment_key_material_meth;
+} LDKKeysInterface_JCalls;
+static void LDKKeysInterface_JCalls_free(void* this_arg) {
+       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
+       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
+               js_free_function_ptr(j_calls->get_node_secret_meth);
+               js_free_function_ptr(j_calls->get_destination_script_meth);
+               js_free_function_ptr(j_calls->get_shutdown_scriptpubkey_meth);
+               js_free_function_ptr(j_calls->get_channel_signer_meth);
+               js_free_function_ptr(j_calls->get_secure_random_bytes_meth);
+               js_free_function_ptr(j_calls->read_chan_signer_meth);
+               js_free_function_ptr(j_calls->sign_invoice_meth);
+               js_free_function_ptr(j_calls->get_inbound_payment_key_material_meth);
+               FREE(j_calls);
+       }
 }
-
-static inline uint64_t CResult_NoneErrorZ_clone_ptr(LDKCResult_NoneErrorZ *NONNULL_PTR arg) {
-       LDKCResult_NoneErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneErrorZ), "LDKCResult_NoneErrorZ");
-       *ret_conv = CResult_NoneErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+LDKSecretKey get_node_secret_LDKKeysInterface_jcall(const void* this_arg) {
+       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
+       int8_tArray ret = (int8_tArray)js_invoke_function_0(j_calls->get_node_secret_meth);
+       LDKSecretKey ret_ref;
+       CHECK(ret->arr_len == 32);
+       memcpy(ret_ref.bytes, ret->elems, 32);
+       return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_NoneErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_NoneErrorZ* arg_conv = (LDKCResult_NoneErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_NoneErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+LDKCVec_u8Z get_destination_script_LDKKeysInterface_jcall(const void* this_arg) {
+       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
+       int8_tArray ret = (int8_tArray)js_invoke_function_0(j_calls->get_destination_script_meth);
+       LDKCVec_u8Z ret_ref;
+       ret_ref.datalen = ret->arr_len;
+       ret_ref.data = MALLOC(ret_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(ret_ref.data, ret->elems, ret_ref.datalen);
+       return ret_ref;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneErrorZ_clone(uint32_t orig) {
-       LDKCResult_NoneErrorZ* orig_conv = (LDKCResult_NoneErrorZ*)(orig & ~1);
-       LDKCResult_NoneErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneErrorZ), "LDKCResult_NoneErrorZ");
-       *ret_conv = CResult_NoneErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+LDKShutdownScript get_shutdown_scriptpubkey_LDKKeysInterface_jcall(const void* this_arg) {
+       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
+       uint32_t ret = js_invoke_function_0(j_calls->get_shutdown_scriptpubkey_meth);
+       LDKShutdownScript ret_conv;
+       ret_conv.inner = (void*)(ret & (~1));
+       ret_conv.is_owned = (ret & 1) || (ret == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv);
+       return ret_conv;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHopDecodeErrorZ_ok(uint32_t o) {
-       LDKRouteHop o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = RouteHop_clone(&o_conv);
-       LDKCResult_RouteHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHopDecodeErrorZ), "LDKCResult_RouteHopDecodeErrorZ");
-       *ret_conv = CResult_RouteHopDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+LDKSign get_channel_signer_LDKKeysInterface_jcall(const void* this_arg, bool inbound, uint64_t channel_value_satoshis) {
+       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
+       uint32_t ret = js_invoke_function_2(j_calls->get_channel_signer_meth, (uint32_t)inbound, (uint32_t)channel_value_satoshis);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKSign ret_conv = *(LDKSign*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHopDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_RouteHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHopDecodeErrorZ), "LDKCResult_RouteHopDecodeErrorZ");
-       *ret_conv = CResult_RouteHopDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+LDKThirtyTwoBytes get_secure_random_bytes_LDKKeysInterface_jcall(const void* this_arg) {
+       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
+       int8_tArray ret = (int8_tArray)js_invoke_function_0(j_calls->get_secure_random_bytes_meth);
+       LDKThirtyTwoBytes ret_ref;
+       CHECK(ret->arr_len == 32);
+       memcpy(ret_ref.data, ret->elems, 32);
+       return ret_ref;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_RouteHopDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_RouteHopDecodeErrorZ* o_conv = (LDKCResult_RouteHopDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_RouteHopDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+LDKCResult_SignDecodeErrorZ read_chan_signer_LDKKeysInterface_jcall(const void* this_arg, LDKu8slice reader) {
+       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
+       LDKu8slice reader_var = reader;
+       int8_tArray reader_arr = init_int8_tArray(reader_var.datalen);
+       memcpy(reader_arr->elems, reader_var.data, reader_var.datalen);
+       uint32_t ret = js_invoke_function_1(j_calls->read_chan_signer_meth, (uint32_t)reader_arr);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_SignDecodeErrorZ ret_conv = *(LDKCResult_SignDecodeErrorZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_RouteHopDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_RouteHopDecodeErrorZ _res_conv = *(LDKCResult_RouteHopDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_RouteHopDecodeErrorZ_free(_res_conv);
+LDKCResult_RecoverableSignatureNoneZ sign_invoice_LDKKeysInterface_jcall(const void* this_arg, LDKCVec_u8Z invoice_preimage) {
+       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
+       LDKCVec_u8Z invoice_preimage_var = invoice_preimage;
+       int8_tArray invoice_preimage_arr = init_int8_tArray(invoice_preimage_var.datalen);
+       memcpy(invoice_preimage_arr->elems, invoice_preimage_var.data, invoice_preimage_var.datalen);
+       CVec_u8Z_free(invoice_preimage_var);
+       uint32_t ret = js_invoke_function_1(j_calls->sign_invoice_meth, (uint32_t)invoice_preimage_arr);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_RecoverableSignatureNoneZ ret_conv = *(LDKCResult_RecoverableSignatureNoneZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
 }
-
-static inline uint64_t CResult_RouteHopDecodeErrorZ_clone_ptr(LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_RouteHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHopDecodeErrorZ), "LDKCResult_RouteHopDecodeErrorZ");
-       *ret_conv = CResult_RouteHopDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+LDKThirtyTwoBytes get_inbound_payment_key_material_LDKKeysInterface_jcall(const void* this_arg) {
+       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
+       int8_tArray ret = (int8_tArray)js_invoke_function_0(j_calls->get_inbound_payment_key_material_meth);
+       LDKThirtyTwoBytes ret_ref;
+       CHECK(ret->arr_len == 32);
+       memcpy(ret_ref.data, ret->elems, 32);
+       return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_RouteHopDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_RouteHopDecodeErrorZ* arg_conv = (LDKCResult_RouteHopDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_RouteHopDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+static void LDKKeysInterface_JCalls_cloned(LDKKeysInterface* new_obj) {
+       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
+static inline LDKKeysInterface LDKKeysInterface_init (/*TODO: JS Object Reference */void* o) {
+       LDKKeysInterface_JCalls *calls = MALLOC(sizeof(LDKKeysInterface_JCalls), "LDKKeysInterface_JCalls");
+       atomic_init(&calls->refcnt, 1);
+       //TODO: Assign calls->o from o
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHopDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_RouteHopDecodeErrorZ* orig_conv = (LDKCResult_RouteHopDecodeErrorZ*)(orig & ~1);
-       LDKCResult_RouteHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHopDecodeErrorZ), "LDKCResult_RouteHopDecodeErrorZ");
-       *ret_conv = CResult_RouteHopDecodeErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+       LDKKeysInterface ret = {
+               .this_arg = (void*) calls,
+               .get_node_secret = get_node_secret_LDKKeysInterface_jcall,
+               .get_destination_script = get_destination_script_LDKKeysInterface_jcall,
+               .get_shutdown_scriptpubkey = get_shutdown_scriptpubkey_LDKKeysInterface_jcall,
+               .get_channel_signer = get_channel_signer_LDKKeysInterface_jcall,
+               .get_secure_random_bytes = get_secure_random_bytes_LDKKeysInterface_jcall,
+               .read_chan_signer = read_chan_signer_LDKKeysInterface_jcall,
+               .sign_invoice = sign_invoice_LDKKeysInterface_jcall,
+               .get_inbound_payment_key_material = get_inbound_payment_key_material_LDKKeysInterface_jcall,
+               .free = LDKKeysInterface_JCalls_free,
+       };
+       return ret;
 }
-
-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 _res_conv_10 = _res_vals[k];
-               LDKRouteHop _res_conv_10_conv;
-               _res_conv_10_conv.inner = (void*)(_res_conv_10 & (~1));
-               _res_conv_10_conv.is_owned = (_res_conv_10 & 1) || (_res_conv_10 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_10_conv);
-               _res_constr.data[k] = _res_conv_10_conv;
-       }
-       CVec_RouteHopZ_free(_res_constr);
+long  __attribute__((visibility("default"))) TS_LDKKeysInterface_new(/*TODO: JS Object Reference */void* o) {
+       LDKKeysInterface *res_ptr = MALLOC(sizeof(LDKKeysInterface), "LDKKeysInterface");
+       *res_ptr = LDKKeysInterface_init(o);
+       return (long)res_ptr;
 }
-
-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 _res_conv_12 = _res_vals[m];
-               LDKCVec_RouteHopZ _res_conv_12_constr;
-               _res_conv_12_constr.datalen = *((uint32_t*)_res_conv_12);
-               if (_res_conv_12_constr.datalen > 0)
-                       _res_conv_12_constr.data = MALLOC(_res_conv_12_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements");
-               else
-                       _res_conv_12_constr.data = NULL;
-               uint32_t* _res_conv_12_vals = (uint32_t*)(_res_conv_12 + 4);
-               for (size_t k = 0; k < _res_conv_12_constr.datalen; k++) {
-                       uint32_t _res_conv_12_conv_10 = _res_conv_12_vals[k];
-                       LDKRouteHop _res_conv_12_conv_10_conv;
-                       _res_conv_12_conv_10_conv.inner = (void*)(_res_conv_12_conv_10 & (~1));
-                       _res_conv_12_conv_10_conv.is_owned = (_res_conv_12_conv_10 & 1) || (_res_conv_12_conv_10 == 0);
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_12_conv_10_conv);
-                       _res_conv_12_constr.data[k] = _res_conv_12_conv_10_conv;
-               }
-               _res_constr.data[m] = _res_conv_12_constr;
-       }
-       CVec_CVec_RouteHopZZ_free(_res_constr);
+int8_tArray  __attribute__((visibility("default"))) TS_KeysInterface_get_node_secret(uint32_t this_arg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, (this_arg_conv->get_node_secret)(this_arg_conv->this_arg).bytes, 32);
+       return ret_arr;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = Route_clone(&o_conv);
-       LDKCResult_RouteDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteDecodeErrorZ), "LDKCResult_RouteDecodeErrorZ");
-       *ret_conv = CResult_RouteDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_KeysInterface_get_destination_script(uint32_t this_arg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
+       LDKCVec_u8Z ret_var = (this_arg_conv->get_destination_script)(this_arg_conv->this_arg);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(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 (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_KeysInterface_get_shutdown_scriptpubkey(uint32_t this_arg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
+       LDKShutdownScript ret_var = (this_arg_conv->get_shutdown_scriptpubkey)(this_arg_conv->this_arg);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_RouteDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_RouteDecodeErrorZ* o_conv = (LDKCResult_RouteDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_RouteDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_KeysInterface_get_channel_signer(uint32_t this_arg, jboolean inbound, int64_t channel_value_satoshis) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
+       LDKSign* ret_ret = MALLOC(sizeof(LDKSign), "LDKSign");
+       *ret_ret = (this_arg_conv->get_channel_signer)(this_arg_conv->this_arg, inbound, channel_value_satoshis);
+       return (uint64_t)ret_ret;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_RouteDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_RouteDecodeErrorZ _res_conv = *(LDKCResult_RouteDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_RouteDecodeErrorZ_free(_res_conv);
+int8_tArray  __attribute__((visibility("default"))) TS_KeysInterface_get_secure_random_bytes(uint32_t this_arg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, (this_arg_conv->get_secure_random_bytes)(this_arg_conv->this_arg).data, 32);
+       return ret_arr;
 }
 
-static inline uint64_t CResult_RouteDecodeErrorZ_clone_ptr(LDKCResult_RouteDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_RouteDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteDecodeErrorZ), "LDKCResult_RouteDecodeErrorZ");
-       *ret_conv = CResult_RouteDecodeErrorZ_clone(arg);
+uint32_t  __attribute__((visibility("default"))) TS_KeysInterface_read_chan_signer(uint32_t this_arg, int8_tArray reader) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
+       LDKu8slice reader_ref;
+       reader_ref.datalen = reader->arr_len;
+       reader_ref.data = reader->elems;
+       LDKCResult_SignDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SignDecodeErrorZ), "LDKCResult_SignDecodeErrorZ");
+       *ret_conv = (this_arg_conv->read_chan_signer)(this_arg_conv->this_arg, reader_ref);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_RouteDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_RouteDecodeErrorZ* arg_conv = (LDKCResult_RouteDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_RouteDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
-}
 
-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);
+uint32_t  __attribute__((visibility("default"))) TS_KeysInterface_sign_invoice(uint32_t this_arg, int8_tArray invoice_preimage) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
+       LDKCVec_u8Z invoice_preimage_ref;
+       invoice_preimage_ref.datalen = invoice_preimage->arr_len;
+       invoice_preimage_ref.data = MALLOC(invoice_preimage_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(invoice_preimage_ref.data, invoice_preimage->elems, invoice_preimage_ref.datalen);
+       LDKCResult_RecoverableSignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_RecoverableSignatureNoneZ), "LDKCResult_RecoverableSignatureNoneZ");
+       *ret_conv = (this_arg_conv->sign_invoice)(this_arg_conv->this_arg, invoice_preimage_ref);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteParametersDecodeErrorZ_ok(uint32_t o) {
-       LDKRouteParameters o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = RouteParameters_clone(&o_conv);
-       LDKCResult_RouteParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteParametersDecodeErrorZ), "LDKCResult_RouteParametersDecodeErrorZ");
-       *ret_conv = CResult_RouteParametersDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_KeysInterface_get_inbound_payment_key_material(uint32_t this_arg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, (this_arg_conv->get_inbound_payment_key_material)(this_arg_conv->this_arg).data, 32);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteParametersDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_RouteParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteParametersDecodeErrorZ), "LDKCResult_RouteParametersDecodeErrorZ");
-       *ret_conv = CResult_RouteParametersDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+typedef struct LDKFeeEstimator_JCalls {
+       atomic_size_t refcnt;
+       uint32_t get_est_sat_per_1000_weight_meth;
+} LDKFeeEstimator_JCalls;
+static void LDKFeeEstimator_JCalls_free(void* this_arg) {
+       LDKFeeEstimator_JCalls *j_calls = (LDKFeeEstimator_JCalls*) this_arg;
+       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
+               js_free_function_ptr(j_calls->get_est_sat_per_1000_weight_meth);
+               FREE(j_calls);
+       }
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_RouteParametersDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_RouteParametersDecodeErrorZ* o_conv = (LDKCResult_RouteParametersDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_RouteParametersDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+uint32_t get_est_sat_per_1000_weight_LDKFeeEstimator_jcall(const void* this_arg, LDKConfirmationTarget confirmation_target) {
+       LDKFeeEstimator_JCalls *j_calls = (LDKFeeEstimator_JCalls*) this_arg;
+       uint32_t confirmation_target_conv = LDKConfirmationTarget_to_js(confirmation_target);
+       return js_invoke_function_1(j_calls->get_est_sat_per_1000_weight_meth, (uint32_t)confirmation_target_conv);
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_RouteParametersDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_RouteParametersDecodeErrorZ _res_conv = *(LDKCResult_RouteParametersDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_RouteParametersDecodeErrorZ_free(_res_conv);
+static void LDKFeeEstimator_JCalls_cloned(LDKFeeEstimator* new_obj) {
+       LDKFeeEstimator_JCalls *j_calls = (LDKFeeEstimator_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
+static inline LDKFeeEstimator LDKFeeEstimator_init (/*TODO: JS Object Reference */void* o) {
+       LDKFeeEstimator_JCalls *calls = MALLOC(sizeof(LDKFeeEstimator_JCalls), "LDKFeeEstimator_JCalls");
+       atomic_init(&calls->refcnt, 1);
+       //TODO: Assign calls->o from o
 
-static inline uint64_t CResult_RouteParametersDecodeErrorZ_clone_ptr(LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_RouteParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteParametersDecodeErrorZ), "LDKCResult_RouteParametersDecodeErrorZ");
-       *ret_conv = CResult_RouteParametersDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+       LDKFeeEstimator ret = {
+               .this_arg = (void*) calls,
+               .get_est_sat_per_1000_weight = get_est_sat_per_1000_weight_LDKFeeEstimator_jcall,
+               .free = LDKFeeEstimator_JCalls_free,
+       };
+       return ret;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_RouteParametersDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_RouteParametersDecodeErrorZ* arg_conv = (LDKCResult_RouteParametersDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_RouteParametersDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+long  __attribute__((visibility("default"))) TS_LDKFeeEstimator_new(/*TODO: JS Object Reference */void* o) {
+       LDKFeeEstimator *res_ptr = MALLOC(sizeof(LDKFeeEstimator), "LDKFeeEstimator");
+       *res_ptr = LDKFeeEstimator_init(o);
+       return (long)res_ptr;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteParametersDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_RouteParametersDecodeErrorZ* orig_conv = (LDKCResult_RouteParametersDecodeErrorZ*)(orig & ~1);
-       LDKCResult_RouteParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteParametersDecodeErrorZ), "LDKCResult_RouteParametersDecodeErrorZ");
-       *ret_conv = CResult_RouteParametersDecodeErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+int32_t  __attribute__((visibility("default"))) TS_FeeEstimator_get_est_sat_per_1000_weight(uint32_t this_arg, uint32_t confirmation_target) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKFeeEstimator* this_arg_conv = (LDKFeeEstimator*)this_arg_ptr;
+       LDKConfirmationTarget confirmation_target_conv = LDKConfirmationTarget_from_js(confirmation_target);
+       int32_t ret_val = (this_arg_conv->get_est_sat_per_1000_weight)(this_arg_conv->this_arg, confirmation_target_conv);
+       return ret_val;
 }
 
-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 _res_conv_11 = _res_vals[l];
-               LDKRouteHint _res_conv_11_conv;
-               _res_conv_11_conv.inner = (void*)(_res_conv_11 & (~1));
-               _res_conv_11_conv.is_owned = (_res_conv_11 & 1) || (_res_conv_11 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_11_conv);
-               _res_constr.data[l] = _res_conv_11_conv;
+typedef struct LDKLogger_JCalls {
+       atomic_size_t refcnt;
+       uint32_t log_meth;
+} LDKLogger_JCalls;
+static void LDKLogger_JCalls_free(void* this_arg) {
+       LDKLogger_JCalls *j_calls = (LDKLogger_JCalls*) this_arg;
+       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
+               js_free_function_ptr(j_calls->log_meth);
+               FREE(j_calls);
        }
-       CVec_RouteHintZ_free(_res_constr);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_COption_u64Z_some(int64_t o) {
-       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
-       *ret_copy = COption_u64Z_some(o);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void log_LDKLogger_jcall(const void* this_arg, const LDKRecord * record) {
+       LDKLogger_JCalls *j_calls = (LDKLogger_JCalls*) this_arg;
+       LDKRecord record_var = *record;
+       uint64_t record_ref = 0;
+       record_var = Record_clone(record);
+       CHECK((((uint64_t)record_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&record_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(record_var);
+       record_ref = (uint64_t)record_var.inner;
+       if (record_var.is_owned) {
+               record_ref |= 1;
+       }
+       js_invoke_function_1(j_calls->log_meth, (uint32_t)record_ref);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_COption_u64Z_none() {
-       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
-       *ret_copy = COption_u64Z_none();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+static void LDKLogger_JCalls_cloned(LDKLogger* new_obj) {
+       LDKLogger_JCalls *j_calls = (LDKLogger_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
+static inline LDKLogger LDKLogger_init (/*TODO: JS Object Reference */void* o) {
+       LDKLogger_JCalls *calls = MALLOC(sizeof(LDKLogger_JCalls), "LDKLogger_JCalls");
+       atomic_init(&calls->refcnt, 1);
+       //TODO: Assign calls->o from o
 
-void  __attribute__((visibility("default"))) TS_COption_u64Z_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCOption_u64Z _res_conv = *(LDKCOption_u64Z*)(_res_ptr);
-       FREE((void*)_res);
-       COption_u64Z_free(_res_conv);
+       LDKLogger ret = {
+               .this_arg = (void*) calls,
+               .log = log_LDKLogger_jcall,
+               .free = LDKLogger_JCalls_free,
+       };
+       return ret;
 }
-
-static inline uint64_t COption_u64Z_clone_ptr(LDKCOption_u64Z *NONNULL_PTR arg) {
-       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
-       *ret_copy = COption_u64Z_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+long  __attribute__((visibility("default"))) TS_LDKLogger_new(/*TODO: JS Object Reference */void* o) {
+       LDKLogger *res_ptr = MALLOC(sizeof(LDKLogger), "LDKLogger");
+       *res_ptr = LDKLogger_init(o);
+       return (long)res_ptr;
 }
-int64_t  __attribute__((visibility("default"))) TS_COption_u64Z_clone_ptr(uint32_t arg) {
-       LDKCOption_u64Z* arg_conv = (LDKCOption_u64Z*)arg;
-       int64_t ret_val = COption_u64Z_clone_ptr(arg_conv);
-       return ret_val;
+static inline struct LDKThirtyTwoBytes C2Tuple_BlockHashChannelManagerZ_get_a(LDKC2Tuple_BlockHashChannelManagerZ *NONNULL_PTR owner){
+       return ThirtyTwoBytes_clone(&owner->a);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_COption_u64Z_clone(uint32_t orig) {
-       LDKCOption_u64Z* orig_conv = (LDKCOption_u64Z*)orig;
-       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
-       *ret_copy = COption_u64Z_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelManagerZ_get_a(uint32_t owner) {
+       LDKC2Tuple_BlockHashChannelManagerZ* owner_conv = (LDKC2Tuple_BlockHashChannelManagerZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, C2Tuple_BlockHashChannelManagerZ_get_a(owner_conv).data, 32);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PayeeDecodeErrorZ_ok(uint32_t o) {
-       LDKPayee o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = Payee_clone(&o_conv);
-       LDKCResult_PayeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeeDecodeErrorZ), "LDKCResult_PayeeDecodeErrorZ");
-       *ret_conv = CResult_PayeeDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+static inline struct LDKChannelManager *C2Tuple_BlockHashChannelManagerZ_get_b(LDKC2Tuple_BlockHashChannelManagerZ *NONNULL_PTR owner){
+       return &owner->b;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PayeeDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_PayeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeeDecodeErrorZ), "LDKCResult_PayeeDecodeErrorZ");
-       *ret_conv = CResult_PayeeDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelManagerZ_get_b(uint32_t owner) {
+       LDKC2Tuple_BlockHashChannelManagerZ* owner_conv = (LDKC2Tuple_BlockHashChannelManagerZ*)(owner & ~1);
+       LDKChannelManager ret_var = *C2Tuple_BlockHashChannelManagerZ_get_b(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner & ~1;
+       return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_PayeeDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_PayeeDecodeErrorZ* o_conv = (LDKCResult_PayeeDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_PayeeDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+static inline struct LDKC2Tuple_BlockHashChannelManagerZ *CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_ok(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return &*owner->contents.result;
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_PayeeDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_PayeeDecodeErrorZ _res_conv = *(LDKCResult_PayeeDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_PayeeDecodeErrorZ_free(_res_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* owner_conv = (LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ*)(owner & ~1);
+       uint64_t ret_ret = (uint64_t)CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_ok(owner_conv);
+       return ret_ret;
 }
 
-static inline uint64_t CResult_PayeeDecodeErrorZ_clone_ptr(LDKCResult_PayeeDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_PayeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeeDecodeErrorZ), "LDKCResult_PayeeDecodeErrorZ");
-       *ret_conv = CResult_PayeeDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_err(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_PayeeDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_PayeeDecodeErrorZ* arg_conv = (LDKCResult_PayeeDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_PayeeDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* owner_conv = (LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PayeeDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_PayeeDecodeErrorZ* orig_conv = (LDKCResult_PayeeDecodeErrorZ*)(orig & ~1);
-       LDKCResult_PayeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeeDecodeErrorZ), "LDKCResult_PayeeDecodeErrorZ");
-       *ret_conv = CResult_PayeeDecodeErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+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_function_ptr(j_calls->get_and_clear_pending_msg_events_meth);
+               FREE(j_calls);
+       }
 }
-
-void  __attribute__((visibility("default"))) TS_CVec_RouteHintHopZ_free(uint32_tArray _res) {
-       LDKCVec_RouteHintHopZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKRouteHintHop), "LDKCVec_RouteHintHopZ Elements");
+LDKCVec_MessageSendEventZ get_and_clear_pending_msg_events_LDKMessageSendEventsProvider_jcall(const void* this_arg) {
+       LDKMessageSendEventsProvider_JCalls *j_calls = (LDKMessageSendEventsProvider_JCalls*) this_arg;
+       uint32_tArray ret = (uint32_tArray)js_invoke_function_0(j_calls->get_and_clear_pending_msg_events_meth);
+       LDKCVec_MessageSendEventZ ret_constr;
+       ret_constr.datalen = ret->arr_len;
+       if (ret_constr.datalen > 0)
+               ret_constr.data = MALLOC(ret_constr.datalen * sizeof(LDKMessageSendEvent), "LDKCVec_MessageSendEventZ Elements");
        else
-               _res_constr.data = NULL;
-       uint32_t* _res_vals = (uint32_t*)(_res + 4);
-       for (size_t o = 0; o < _res_constr.datalen; o++) {
-               uint32_t _res_conv_14 = _res_vals[o];
-               LDKRouteHintHop _res_conv_14_conv;
-               _res_conv_14_conv.inner = (void*)(_res_conv_14 & (~1));
-               _res_conv_14_conv.is_owned = (_res_conv_14 & 1) || (_res_conv_14 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_14_conv);
-               _res_constr.data[o] = _res_conv_14_conv;
+               ret_constr.data = NULL;
+       uint32_t* ret_vals = ret->elems;
+       for (size_t s = 0; s < ret_constr.datalen; s++) {
+               uint32_t ret_conv_18 = ret_vals[s];
+               void* ret_conv_18_ptr = (void*)(((uint64_t)ret_conv_18) & ~1);
+               CHECK_ACCESS(ret_conv_18_ptr);
+               LDKMessageSendEvent ret_conv_18_conv = *(LDKMessageSendEvent*)(ret_conv_18_ptr);
+               FREE((void*)ret_conv_18);
+               ret_constr.data[s] = ret_conv_18_conv;
        }
-       CVec_RouteHintHopZ_free(_res_constr);
+       return ret_constr;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintDecodeErrorZ_ok(uint32_t o) {
-       LDKRouteHint o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = RouteHint_clone(&o_conv);
-       LDKCResult_RouteHintDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintDecodeErrorZ), "LDKCResult_RouteHintDecodeErrorZ");
-       *ret_conv = CResult_RouteHintDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+static void LDKMessageSendEventsProvider_JCalls_cloned(LDKMessageSendEventsProvider* new_obj) {
+       LDKMessageSendEventsProvider_JCalls *j_calls = (LDKMessageSendEventsProvider_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
+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
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_RouteHintDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintDecodeErrorZ), "LDKCResult_RouteHintDecodeErrorZ");
-       *ret_conv = CResult_RouteHintDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+       LDKMessageSendEventsProvider ret = {
+               .this_arg = (void*) calls,
+               .get_and_clear_pending_msg_events = get_and_clear_pending_msg_events_LDKMessageSendEventsProvider_jcall,
+               .free = LDKMessageSendEventsProvider_JCalls_free,
+       };
+       return ret;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_RouteHintDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_RouteHintDecodeErrorZ* o_conv = (LDKCResult_RouteHintDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_RouteHintDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+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) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKMessageSendEventsProvider* this_arg_conv = (LDKMessageSendEventsProvider*)this_arg_ptr;
+       LDKCVec_MessageSendEventZ ret_var = (this_arg_conv->get_and_clear_pending_msg_events)(this_arg_conv->this_arg);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t s = 0; s < ret_var.datalen; s++) {
+               LDKMessageSendEvent *ret_conv_18_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+               *ret_conv_18_copy = ret_var.data[s];
+               uint64_t ret_conv_18_ref = (uint64_t)ret_conv_18_copy;
+               ret_arr_ptr[s] = ret_conv_18_ref;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_RouteHintDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_RouteHintDecodeErrorZ _res_conv = *(LDKCResult_RouteHintDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_RouteHintDecodeErrorZ_free(_res_conv);
+typedef struct LDKEventHandler_JCalls {
+       atomic_size_t refcnt;
+       uint32_t handle_event_meth;
+} LDKEventHandler_JCalls;
+static void LDKEventHandler_JCalls_free(void* this_arg) {
+       LDKEventHandler_JCalls *j_calls = (LDKEventHandler_JCalls*) this_arg;
+       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
+               js_free_function_ptr(j_calls->handle_event_meth);
+               FREE(j_calls);
+       }
 }
-
-static inline uint64_t CResult_RouteHintDecodeErrorZ_clone_ptr(LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_RouteHintDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintDecodeErrorZ), "LDKCResult_RouteHintDecodeErrorZ");
-       *ret_conv = CResult_RouteHintDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+void handle_event_LDKEventHandler_jcall(const void* this_arg, const LDKEvent * event) {
+       LDKEventHandler_JCalls *j_calls = (LDKEventHandler_JCalls*) this_arg;
+       LDKEvent *ret_event = MALLOC(sizeof(LDKEvent), "LDKEvent ret conversion");
+       *ret_event = Event_clone(event);
+       js_invoke_function_1(j_calls->handle_event_meth, (uint32_t)(uint64_t)ret_event);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_RouteHintDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_RouteHintDecodeErrorZ* arg_conv = (LDKCResult_RouteHintDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_RouteHintDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+static void LDKEventHandler_JCalls_cloned(LDKEventHandler* new_obj) {
+       LDKEventHandler_JCalls *j_calls = (LDKEventHandler_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
+static inline LDKEventHandler LDKEventHandler_init (/*TODO: JS Object Reference */void* o) {
+       LDKEventHandler_JCalls *calls = MALLOC(sizeof(LDKEventHandler_JCalls), "LDKEventHandler_JCalls");
+       atomic_init(&calls->refcnt, 1);
+       //TODO: Assign calls->o from o
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_RouteHintDecodeErrorZ* orig_conv = (LDKCResult_RouteHintDecodeErrorZ*)(orig & ~1);
-       LDKCResult_RouteHintDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintDecodeErrorZ), "LDKCResult_RouteHintDecodeErrorZ");
-       *ret_conv = CResult_RouteHintDecodeErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+       LDKEventHandler ret = {
+               .this_arg = (void*) calls,
+               .handle_event = handle_event_LDKEventHandler_jcall,
+               .free = LDKEventHandler_JCalls_free,
+       };
+       return ret;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintHopDecodeErrorZ_ok(uint32_t o) {
-       LDKRouteHintHop o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = RouteHintHop_clone(&o_conv);
-       LDKCResult_RouteHintHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintHopDecodeErrorZ), "LDKCResult_RouteHintHopDecodeErrorZ");
-       *ret_conv = CResult_RouteHintHopDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+long  __attribute__((visibility("default"))) TS_LDKEventHandler_new(/*TODO: JS Object Reference */void* o) {
+       LDKEventHandler *res_ptr = MALLOC(sizeof(LDKEventHandler), "LDKEventHandler");
+       *res_ptr = LDKEventHandler_init(o);
+       return (long)res_ptr;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintHopDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_RouteHintHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintHopDecodeErrorZ), "LDKCResult_RouteHintHopDecodeErrorZ");
-       *ret_conv = CResult_RouteHintHopDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_EventHandler_handle_event(uint32_t this_arg, uint32_t event) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKEventHandler* this_arg_conv = (LDKEventHandler*)this_arg_ptr;
+       LDKEvent* event_conv = (LDKEvent*)event;
+       (this_arg_conv->handle_event)(this_arg_conv->this_arg, event_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_RouteHintHopDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_RouteHintHopDecodeErrorZ* o_conv = (LDKCResult_RouteHintHopDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_RouteHintHopDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+typedef struct LDKEventsProvider_JCalls {
+       atomic_size_t refcnt;
+       uint32_t process_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_function_ptr(j_calls->process_pending_events_meth);
+               FREE(j_calls);
+       }
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_RouteHintHopDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_RouteHintHopDecodeErrorZ _res_conv = *(LDKCResult_RouteHintHopDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_RouteHintHopDecodeErrorZ_free(_res_conv);
+void process_pending_events_LDKEventsProvider_jcall(const void* this_arg, LDKEventHandler handler) {
+       LDKEventsProvider_JCalls *j_calls = (LDKEventsProvider_JCalls*) this_arg;
+       LDKEventHandler* handler_ret = MALLOC(sizeof(LDKEventHandler), "LDKEventHandler");
+       *handler_ret = handler;
+       js_invoke_function_1(j_calls->process_pending_events_meth, (uint32_t)(uint64_t)handler_ret);
+}
+static void LDKEventsProvider_JCalls_cloned(LDKEventsProvider* new_obj) {
+       LDKEventsProvider_JCalls *j_calls = (LDKEventsProvider_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
+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
 
-static inline uint64_t CResult_RouteHintHopDecodeErrorZ_clone_ptr(LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_RouteHintHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintHopDecodeErrorZ), "LDKCResult_RouteHintHopDecodeErrorZ");
-       *ret_conv = CResult_RouteHintHopDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+       LDKEventsProvider ret = {
+               .this_arg = (void*) calls,
+               .process_pending_events = process_pending_events_LDKEventsProvider_jcall,
+               .free = LDKEventsProvider_JCalls_free,
+       };
+       return ret;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_RouteHintHopDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_RouteHintHopDecodeErrorZ* arg_conv = (LDKCResult_RouteHintHopDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_RouteHintHopDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+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_t  __attribute__((visibility("default"))) TS_CResult_RouteHintHopDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_RouteHintHopDecodeErrorZ* orig_conv = (LDKCResult_RouteHintHopDecodeErrorZ*)(orig & ~1);
-       LDKCResult_RouteHintHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintHopDecodeErrorZ), "LDKCResult_RouteHintHopDecodeErrorZ");
-       *ret_conv = CResult_RouteHintHopDecodeErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_EventsProvider_process_pending_events(uint32_t this_arg, uint32_t handler) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKEventsProvider* this_arg_conv = (LDKEventsProvider*)this_arg_ptr;
+       void* handler_ptr = (void*)(((uint64_t)handler) & ~1);
+       CHECK_ACCESS(handler_ptr);
+       LDKEventHandler handler_conv = *(LDKEventHandler*)(handler_ptr);
+       (this_arg_conv->process_pending_events)(this_arg_conv->this_arg, handler_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 _res_conv_16 = _res_vals[q];
-               LDKChannelDetails _res_conv_16_conv;
-               _res_conv_16_conv.inner = (void*)(_res_conv_16 & (~1));
-               _res_conv_16_conv.is_owned = (_res_conv_16 & 1) || (_res_conv_16 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_16_conv);
-               _res_constr.data[q] = _res_conv_16_conv;
+typedef struct LDKListen_JCalls {
+       atomic_size_t refcnt;
+       uint32_t block_connected_meth;
+       uint32_t block_disconnected_meth;
+} LDKListen_JCalls;
+static void LDKListen_JCalls_free(void* this_arg) {
+       LDKListen_JCalls *j_calls = (LDKListen_JCalls*) this_arg;
+       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
+               js_free_function_ptr(j_calls->block_connected_meth);
+               js_free_function_ptr(j_calls->block_disconnected_meth);
+               FREE(j_calls);
        }
-       CVec_ChannelDetailsZ_free(_res_constr);
 }
-
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = Route_clone(&o_conv);
-       LDKCResult_RouteLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteLightningErrorZ), "LDKCResult_RouteLightningErrorZ");
-       *ret_conv = CResult_RouteLightningErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+void block_connected_LDKListen_jcall(const void* this_arg, LDKu8slice block, uint32_t height) {
+       LDKListen_JCalls *j_calls = (LDKListen_JCalls*) this_arg;
+       LDKu8slice block_var = block;
+       int8_tArray block_arr = init_int8_tArray(block_var.datalen);
+       memcpy(block_arr->elems, block_var.data, block_var.datalen);
+       js_invoke_function_2(j_calls->block_connected_meth, (uint32_t)block_arr, (uint32_t)height);
 }
-
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(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 (uint64_t)ret_conv;
+void block_disconnected_LDKListen_jcall(const void* this_arg, const uint8_t (* header)[80], uint32_t height) {
+       LDKListen_JCalls *j_calls = (LDKListen_JCalls*) this_arg;
+       int8_tArray header_arr = init_int8_tArray(80);
+       memcpy(header_arr->elems, *header, 80);
+       js_invoke_function_2(j_calls->block_disconnected_meth, (uint32_t)header_arr, (uint32_t)height);
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_RouteLightningErrorZ_is_ok(uint32_t o) {
-       LDKCResult_RouteLightningErrorZ* o_conv = (LDKCResult_RouteLightningErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_RouteLightningErrorZ_is_ok(o_conv);
-       return ret_val;
+static void LDKListen_JCalls_cloned(LDKListen* new_obj) {
+       LDKListen_JCalls *j_calls = (LDKListen_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
+static inline LDKListen LDKListen_init (/*TODO: JS Object Reference */void* o) {
+       LDKListen_JCalls *calls = MALLOC(sizeof(LDKListen_JCalls), "LDKListen_JCalls");
+       atomic_init(&calls->refcnt, 1);
+       //TODO: Assign calls->o from o
 
-void  __attribute__((visibility("default"))) TS_CResult_RouteLightningErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_RouteLightningErrorZ _res_conv = *(LDKCResult_RouteLightningErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_RouteLightningErrorZ_free(_res_conv);
+       LDKListen ret = {
+               .this_arg = (void*) calls,
+               .block_connected = block_connected_LDKListen_jcall,
+               .block_disconnected = block_disconnected_LDKListen_jcall,
+               .free = LDKListen_JCalls_free,
+       };
+       return ret;
 }
-
-static inline uint64_t CResult_RouteLightningErrorZ_clone_ptr(LDKCResult_RouteLightningErrorZ *NONNULL_PTR arg) {
-       LDKCResult_RouteLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteLightningErrorZ), "LDKCResult_RouteLightningErrorZ");
-       *ret_conv = CResult_RouteLightningErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+long  __attribute__((visibility("default"))) TS_LDKListen_new(/*TODO: JS Object Reference */void* o) {
+       LDKListen *res_ptr = MALLOC(sizeof(LDKListen), "LDKListen");
+       *res_ptr = LDKListen_init(o);
+       return (long)res_ptr;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_RouteLightningErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_RouteLightningErrorZ* arg_conv = (LDKCResult_RouteLightningErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_RouteLightningErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_Listen_block_connected(uint32_t this_arg, int8_tArray block, int32_t height) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKListen* this_arg_conv = (LDKListen*)this_arg_ptr;
+       LDKu8slice block_ref;
+       block_ref.datalen = block->arr_len;
+       block_ref.data = block->elems;
+       (this_arg_conv->block_connected)(this_arg_conv->this_arg, block_ref, height);
 }
 
-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 (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_Listen_block_disconnected(uint32_t this_arg, int8_tArray header, int32_t height) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKListen* this_arg_conv = (LDKListen*)this_arg_ptr;
+       unsigned char header_arr[80];
+       CHECK(header->arr_len == 80);
+       memcpy(header_arr, header->elems, 80);
+       unsigned char (*header_ref)[80] = &header_arr;
+       (this_arg_conv->block_disconnected)(this_arg_conv->this_arg, header_ref, height);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_TxOutAccessErrorZ_ok(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKTxOut o_conv = *(LDKTxOut*)(o_ptr);
-       o_conv = TxOut_clone((LDKTxOut*)(((uint64_t)o) & ~1));
-       LDKCResult_TxOutAccessErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxOutAccessErrorZ), "LDKCResult_TxOutAccessErrorZ");
-       *ret_conv = CResult_TxOutAccessErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+typedef struct LDKConfirm_JCalls {
+       atomic_size_t refcnt;
+       uint32_t transactions_confirmed_meth;
+       uint32_t transaction_unconfirmed_meth;
+       uint32_t best_block_updated_meth;
+       uint32_t get_relevant_txids_meth;
+} LDKConfirm_JCalls;
+static void LDKConfirm_JCalls_free(void* this_arg) {
+       LDKConfirm_JCalls *j_calls = (LDKConfirm_JCalls*) this_arg;
+       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
+               js_free_function_ptr(j_calls->transactions_confirmed_meth);
+               js_free_function_ptr(j_calls->transaction_unconfirmed_meth);
+               js_free_function_ptr(j_calls->best_block_updated_meth);
+               js_free_function_ptr(j_calls->get_relevant_txids_meth);
+               FREE(j_calls);
+       }
 }
-
-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 (uint64_t)ret_conv;
+void transactions_confirmed_LDKConfirm_jcall(const void* this_arg, const uint8_t (* header)[80], LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height) {
+       LDKConfirm_JCalls *j_calls = (LDKConfirm_JCalls*) this_arg;
+       int8_tArray header_arr = init_int8_tArray(80);
+       memcpy(header_arr->elems, *header, 80);
+       LDKCVec_C2Tuple_usizeTransactionZZ txdata_var = txdata;
+       uint32_tArray txdata_arr = NULL;
+       txdata_arr = init_uint32_tArray(txdata_var.datalen);
+       uint32_t *txdata_arr_ptr = (uint32_t*)(txdata_arr + 4);
+       for (size_t c = 0; c < txdata_var.datalen; c++) {
+               LDKC2Tuple_usizeTransactionZ* txdata_conv_28_conv = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ), "LDKC2Tuple_usizeTransactionZ");
+               *txdata_conv_28_conv = txdata_var.data[c];
+               txdata_arr_ptr[c] = ((uint64_t)txdata_conv_28_conv);
+       }
+       
+       FREE(txdata_var.data);
+       js_invoke_function_3(j_calls->transactions_confirmed_meth, (uint32_t)header_arr, (uint32_t)txdata_arr, (uint32_t)height);
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_TxOutAccessErrorZ_is_ok(uint32_t o) {
-       LDKCResult_TxOutAccessErrorZ* o_conv = (LDKCResult_TxOutAccessErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_TxOutAccessErrorZ_is_ok(o_conv);
-       return ret_val;
+void transaction_unconfirmed_LDKConfirm_jcall(const void* this_arg, const uint8_t (* txid)[32]) {
+       LDKConfirm_JCalls *j_calls = (LDKConfirm_JCalls*) this_arg;
+       int8_tArray txid_arr = init_int8_tArray(32);
+       memcpy(txid_arr->elems, *txid, 32);
+       js_invoke_function_1(j_calls->transaction_unconfirmed_meth, (uint32_t)txid_arr);
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_TxOutAccessErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_TxOutAccessErrorZ _res_conv = *(LDKCResult_TxOutAccessErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_TxOutAccessErrorZ_free(_res_conv);
+void best_block_updated_LDKConfirm_jcall(const void* this_arg, const uint8_t (* header)[80], uint32_t height) {
+       LDKConfirm_JCalls *j_calls = (LDKConfirm_JCalls*) this_arg;
+       int8_tArray header_arr = init_int8_tArray(80);
+       memcpy(header_arr->elems, *header, 80);
+       js_invoke_function_2(j_calls->best_block_updated_meth, (uint32_t)header_arr, (uint32_t)height);
 }
-
-static inline uint64_t CResult_TxOutAccessErrorZ_clone_ptr(LDKCResult_TxOutAccessErrorZ *NONNULL_PTR arg) {
-       LDKCResult_TxOutAccessErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxOutAccessErrorZ), "LDKCResult_TxOutAccessErrorZ");
-       *ret_conv = CResult_TxOutAccessErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+LDKCVec_TxidZ get_relevant_txids_LDKConfirm_jcall(const void* this_arg) {
+       LDKConfirm_JCalls *j_calls = (LDKConfirm_JCalls*) this_arg;
+       ptrArray ret = (ptrArray)js_invoke_function_0(j_calls->get_relevant_txids_meth);
+       LDKCVec_TxidZ ret_constr;
+       ret_constr.datalen = ret->arr_len;
+       if (ret_constr.datalen > 0)
+               ret_constr.data = MALLOC(ret_constr.datalen * sizeof(LDKThirtyTwoBytes), "LDKCVec_TxidZ Elements");
+       else
+               ret_constr.data = NULL;
+       int8_tArray* ret_vals = (void*) ret->elems;
+       for (size_t m = 0; m < ret_constr.datalen; m++) {
+               int8_tArray ret_conv_12 = ret_vals[m];
+               LDKThirtyTwoBytes ret_conv_12_ref;
+               CHECK(ret_conv_12->arr_len == 32);
+               memcpy(ret_conv_12_ref.data, ret_conv_12->elems, 32);
+               ret_constr.data[m] = ret_conv_12_ref;
+       }
+       return ret_constr;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_TxOutAccessErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_TxOutAccessErrorZ* arg_conv = (LDKCResult_TxOutAccessErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_TxOutAccessErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+static void LDKConfirm_JCalls_cloned(LDKConfirm* new_obj) {
+       LDKConfirm_JCalls *j_calls = (LDKConfirm_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
+static inline LDKConfirm LDKConfirm_init (/*TODO: JS Object Reference */void* o) {
+       LDKConfirm_JCalls *calls = MALLOC(sizeof(LDKConfirm_JCalls), "LDKConfirm_JCalls");
+       atomic_init(&calls->refcnt, 1);
+       //TODO: Assign calls->o from o
 
-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 (uint64_t)ret_conv;
+       LDKConfirm ret = {
+               .this_arg = (void*) calls,
+               .transactions_confirmed = transactions_confirmed_LDKConfirm_jcall,
+               .transaction_unconfirmed = transaction_unconfirmed_LDKConfirm_jcall,
+               .best_block_updated = best_block_updated_LDKConfirm_jcall,
+               .get_relevant_txids = get_relevant_txids_LDKConfirm_jcall,
+               .free = LDKConfirm_JCalls_free,
+       };
+       return ret;
 }
-
-static inline uint64_t C2Tuple_usizeTransactionZ_clone_ptr(LDKC2Tuple_usizeTransactionZ *NONNULL_PTR arg) {
-       LDKC2Tuple_usizeTransactionZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ), "LDKC2Tuple_usizeTransactionZ");
-       *ret_conv = C2Tuple_usizeTransactionZ_clone(arg);
-       return ((uint64_t)ret_conv);
+long  __attribute__((visibility("default"))) TS_LDKConfirm_new(/*TODO: JS Object Reference */void* o) {
+       LDKConfirm *res_ptr = MALLOC(sizeof(LDKConfirm), "LDKConfirm");
+       *res_ptr = LDKConfirm_init(o);
+       return (long)res_ptr;
 }
-int64_t  __attribute__((visibility("default"))) TS_C2Tuple_usizeTransactionZ_clone_ptr(uint32_t arg) {
-       LDKC2Tuple_usizeTransactionZ* arg_conv = (LDKC2Tuple_usizeTransactionZ*)(arg & ~1);
-       int64_t ret_val = C2Tuple_usizeTransactionZ_clone_ptr(arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_Confirm_transactions_confirmed(uint32_t this_arg, int8_tArray header, uint32_tArray txdata, int32_t height) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKConfirm* this_arg_conv = (LDKConfirm*)this_arg_ptr;
+       unsigned char header_arr[80];
+       CHECK(header->arr_len == 80);
+       memcpy(header_arr, header->elems, 80);
+       unsigned char (*header_ref)[80] = &header_arr;
+       LDKCVec_C2Tuple_usizeTransactionZZ txdata_constr;
+       txdata_constr.datalen = txdata->arr_len;
+       if (txdata_constr.datalen > 0)
+               txdata_constr.data = MALLOC(txdata_constr.datalen * sizeof(LDKC2Tuple_usizeTransactionZ), "LDKCVec_C2Tuple_usizeTransactionZZ Elements");
+       else
+               txdata_constr.data = NULL;
+       uint32_t* txdata_vals = txdata->elems;
+       for (size_t c = 0; c < txdata_constr.datalen; c++) {
+               uint32_t txdata_conv_28 = txdata_vals[c];
+               void* txdata_conv_28_ptr = (void*)(((uint64_t)txdata_conv_28) & ~1);
+               CHECK_ACCESS(txdata_conv_28_ptr);
+               LDKC2Tuple_usizeTransactionZ txdata_conv_28_conv = *(LDKC2Tuple_usizeTransactionZ*)(txdata_conv_28_ptr);
+               txdata_conv_28_conv = C2Tuple_usizeTransactionZ_clone((LDKC2Tuple_usizeTransactionZ*)(((uint64_t)txdata_conv_28) & ~1));
+               txdata_constr.data[c] = txdata_conv_28_conv;
+       }
+       (this_arg_conv->transactions_confirmed)(this_arg_conv->this_arg, header_ref, txdata_constr, height);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_usizeTransactionZ_clone(uint32_t orig) {
-       LDKC2Tuple_usizeTransactionZ* orig_conv = (LDKC2Tuple_usizeTransactionZ*)(orig & ~1);
-       LDKC2Tuple_usizeTransactionZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ), "LDKC2Tuple_usizeTransactionZ");
-       *ret_conv = C2Tuple_usizeTransactionZ_clone(orig_conv);
-       return ((uint64_t)ret_conv);
+void  __attribute__((visibility("default"))) TS_Confirm_transaction_unconfirmed(uint32_t this_arg, int8_tArray txid) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKConfirm* this_arg_conv = (LDKConfirm*)this_arg_ptr;
+       unsigned char txid_arr[32];
+       CHECK(txid->arr_len == 32);
+       memcpy(txid_arr, txid->elems, 32);
+       unsigned char (*txid_ref)[32] = &txid_arr;
+       (this_arg_conv->transaction_unconfirmed)(this_arg_conv->this_arg, txid_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_usizeTransactionZ_new(int64_t a, int8_tArray b) {
-       LDKTransaction b_ref;
-       b_ref.datalen = *((uint32_t*)b);
-       b_ref.data = MALLOC(b_ref.datalen, "LDKTransaction Bytes");
-       memcpy(b_ref.data, (uint8_t*)(b + 4), b_ref.datalen);
-       b_ref.data_is_owned = true;
-       LDKC2Tuple_usizeTransactionZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ), "LDKC2Tuple_usizeTransactionZ");
-       *ret_conv = C2Tuple_usizeTransactionZ_new(a, b_ref);
-       return ((uint64_t)ret_conv);
+void  __attribute__((visibility("default"))) TS_Confirm_best_block_updated(uint32_t this_arg, int8_tArray header, int32_t height) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKConfirm* this_arg_conv = (LDKConfirm*)this_arg_ptr;
+       unsigned char header_arr[80];
+       CHECK(header->arr_len == 80);
+       memcpy(header_arr, header->elems, 80);
+       unsigned char (*header_ref)[80] = &header_arr;
+       (this_arg_conv->best_block_updated)(this_arg_conv->this_arg, header_ref, height);
 }
 
-void  __attribute__((visibility("default"))) TS_C2Tuple_usizeTransactionZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKC2Tuple_usizeTransactionZ _res_conv = *(LDKC2Tuple_usizeTransactionZ*)(_res_ptr);
-       FREE((void*)_res);
-       C2Tuple_usizeTransactionZ_free(_res_conv);
+ptrArray  __attribute__((visibility("default"))) TS_Confirm_get_relevant_txids(uint32_t this_arg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKConfirm* this_arg_conv = (LDKConfirm*)this_arg_ptr;
+       LDKCVec_TxidZ ret_var = (this_arg_conv->get_relevant_txids)(this_arg_conv->this_arg);
+       ptrArray ret_arr = NULL;
+       ret_arr = init_ptrArray(ret_var.datalen);
+       int8_tArray *ret_arr_ptr = (int8_tArray*)(ret_arr + 4);
+       for (size_t m = 0; m < ret_var.datalen; m++) {
+               int8_tArray ret_conv_12_arr = init_int8_tArray(32);
+               memcpy(ret_conv_12_arr->elems, ret_var.data[m].data, 32);
+               ret_arr_ptr[m] = ret_conv_12_arr;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_CVec_C2Tuple_usizeTransactionZZ_free(uint32_tArray _res) {
-       LDKCVec_C2Tuple_usizeTransactionZZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC2Tuple_usizeTransactionZ), "LDKCVec_C2Tuple_usizeTransactionZZ Elements");
-       else
-               _res_constr.data = NULL;
-       uint32_t* _res_vals = (uint32_t*)(_res + 4);
-       for (size_t c = 0; c < _res_constr.datalen; c++) {
-               uint32_t _res_conv_28 = _res_vals[c];
-               void* _res_conv_28_ptr = (void*)(((uint64_t)_res_conv_28) & ~1);
-               CHECK_ACCESS(_res_conv_28_ptr);
-               LDKC2Tuple_usizeTransactionZ _res_conv_28_conv = *(LDKC2Tuple_usizeTransactionZ*)(_res_conv_28_ptr);
-               FREE((void*)_res_conv_28);
-               _res_constr.data[c] = _res_conv_28_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_function_ptr(j_calls->persist_new_channel_meth);
+               js_free_function_ptr(j_calls->update_persisted_channel_meth);
+               FREE(j_calls);
+       }
+}
+LDKCResult_NoneChannelMonitorUpdateErrZ persist_new_channel_LDKPersist_jcall(const void* this_arg, LDKOutPoint channel_id, const LDKChannelMonitor * data, LDKMonitorUpdateId update_id) {
+       LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) this_arg;
+       LDKOutPoint channel_id_var = channel_id;
+       uint64_t channel_id_ref = 0;
+       CHECK((((uint64_t)channel_id_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&channel_id_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_id_var);
+       channel_id_ref = (uint64_t)channel_id_var.inner;
+       if (channel_id_var.is_owned) {
+               channel_id_ref |= 1;
+       }
+       LDKChannelMonitor data_var = *data;
+       uint64_t data_ref = 0;
+       data_var = ChannelMonitor_clone(data);
+       CHECK((((uint64_t)data_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&data_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(data_var);
+       data_ref = (uint64_t)data_var.inner;
+       if (data_var.is_owned) {
+               data_ref |= 1;
+       }
+       LDKMonitorUpdateId update_id_var = update_id;
+       uint64_t update_id_ref = 0;
+       CHECK((((uint64_t)update_id_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&update_id_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_id_var);
+       update_id_ref = (uint64_t)update_id_var.inner;
+       if (update_id_var.is_owned) {
+               update_id_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_3(j_calls->persist_new_channel_meth, (uint32_t)channel_id_ref, (uint32_t)data_ref, (uint32_t)update_id_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_NoneChannelMonitorUpdateErrZ ret_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
+}
+LDKCResult_NoneChannelMonitorUpdateErrZ update_persisted_channel_LDKPersist_jcall(const void* this_arg, LDKOutPoint channel_id, const LDKChannelMonitorUpdate * update, const LDKChannelMonitor * data, LDKMonitorUpdateId update_id) {
+       LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) this_arg;
+       LDKOutPoint channel_id_var = channel_id;
+       uint64_t channel_id_ref = 0;
+       CHECK((((uint64_t)channel_id_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&channel_id_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_id_var);
+       channel_id_ref = (uint64_t)channel_id_var.inner;
+       if (channel_id_var.is_owned) {
+               channel_id_ref |= 1;
+       }
+       LDKChannelMonitorUpdate update_var = *update;
+       uint64_t update_ref = 0;
+       if ((uint64_t)update_var.inner > 4096) {
+               update_var = ChannelMonitorUpdate_clone(update);
+               CHECK((((uint64_t)update_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&update_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_var);
+               update_ref = (uint64_t)update_var.inner;
+               if (update_var.is_owned) {
+                       update_ref |= 1;
+               }
+       }
+       LDKChannelMonitor data_var = *data;
+       uint64_t data_ref = 0;
+       data_var = ChannelMonitor_clone(data);
+       CHECK((((uint64_t)data_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&data_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(data_var);
+       data_ref = (uint64_t)data_var.inner;
+       if (data_var.is_owned) {
+               data_ref |= 1;
+       }
+       LDKMonitorUpdateId update_id_var = update_id;
+       uint64_t update_id_ref = 0;
+       CHECK((((uint64_t)update_id_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&update_id_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_id_var);
+       update_id_ref = (uint64_t)update_id_var.inner;
+       if (update_id_var.is_owned) {
+               update_id_ref |= 1;
        }
-       CVec_C2Tuple_usizeTransactionZZ_free(_res_constr);
+       uint32_t ret = js_invoke_function_4(j_calls->update_persisted_channel_meth, (uint32_t)channel_id_ref, (uint32_t)update_ref, (uint32_t)data_ref, (uint32_t)update_id_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_NoneChannelMonitorUpdateErrZ ret_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
 }
-
-void  __attribute__((visibility("default"))) TS_CVec_TxidZ_free(ptrArray _res) {
-       LDKCVec_TxidZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKThirtyTwoBytes), "LDKCVec_TxidZ 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 _res_conv_12 = _res_vals[m];
-               LDKThirtyTwoBytes _res_conv_12_ref;
-               CHECK(*((uint32_t*)_res_conv_12) == 32);
-               memcpy(_res_conv_12_ref.data, (uint8_t*)(_res_conv_12 + 4), 32);
-               _res_constr.data[m] = _res_conv_12_ref;
-       }
-       CVec_TxidZ_free(_res_constr);
+static void LDKPersist_JCalls_cloned(LDKPersist* new_obj) {
+       LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
+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
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneChannelMonitorUpdateErrZ_ok() {
+       LDKPersist ret = {
+               .this_arg = (void*) calls,
+               .persist_new_channel = persist_new_channel_LDKPersist_jcall,
+               .update_persisted_channel = update_persisted_channel_LDKPersist_jcall,
+               .free = LDKPersist_JCalls_free,
+       };
+       return ret;
+}
+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_Persist_persist_new_channel(uint32_t this_arg, uint32_t channel_id, uint32_t data, uint32_t update_id) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKPersist* this_arg_conv = (LDKPersist*)this_arg_ptr;
+       LDKOutPoint channel_id_conv;
+       channel_id_conv.inner = (void*)(channel_id & (~1));
+       channel_id_conv.is_owned = (channel_id & 1) || (channel_id == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_id_conv);
+       channel_id_conv = OutPoint_clone(&channel_id_conv);
+       LDKChannelMonitor data_conv;
+       data_conv.inner = (void*)(data & (~1));
+       data_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(data_conv);
+       LDKMonitorUpdateId update_id_conv;
+       update_id_conv.inner = (void*)(update_id & (~1));
+       update_id_conv.is_owned = (update_id & 1) || (update_id == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_id_conv);
+       update_id_conv = MonitorUpdateId_clone(&update_id_conv);
        LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ");
-       *ret_conv = CResult_NoneChannelMonitorUpdateErrZ_ok();
+       *ret_conv = (this_arg_conv->persist_new_channel)(this_arg_conv->this_arg, channel_id_conv, &data_conv, update_id_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneChannelMonitorUpdateErrZ_err(uint32_t e) {
-       LDKChannelMonitorUpdateErr e_conv = LDKChannelMonitorUpdateErr_from_js(e);
+uint32_t  __attribute__((visibility("default"))) TS_Persist_update_persisted_channel(uint32_t this_arg, uint32_t channel_id, uint32_t update, uint32_t data, uint32_t update_id) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKPersist* this_arg_conv = (LDKPersist*)this_arg_ptr;
+       LDKOutPoint channel_id_conv;
+       channel_id_conv.inner = (void*)(channel_id & (~1));
+       channel_id_conv.is_owned = (channel_id & 1) || (channel_id == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_id_conv);
+       channel_id_conv = OutPoint_clone(&channel_id_conv);
+       LDKChannelMonitorUpdate update_conv;
+       update_conv.inner = (void*)(update & (~1));
+       update_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_conv);
+       LDKChannelMonitor data_conv;
+       data_conv.inner = (void*)(data & (~1));
+       data_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(data_conv);
+       LDKMonitorUpdateId update_id_conv;
+       update_id_conv.inner = (void*)(update_id & (~1));
+       update_id_conv.is_owned = (update_id & 1) || (update_id == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_id_conv);
+       update_id_conv = MonitorUpdateId_clone(&update_id_conv);
        LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ");
-       *ret_conv = CResult_NoneChannelMonitorUpdateErrZ_err(e_conv);
+       *ret_conv = (this_arg_conv->update_persisted_channel)(this_arg_conv->this_arg, channel_id_conv, &update_conv, &data_conv, update_id_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_NoneChannelMonitorUpdateErrZ_is_ok(uint32_t o) {
-       LDKCResult_NoneChannelMonitorUpdateErrZ* o_conv = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(o & ~1);
-       jboolean ret_val = CResult_NoneChannelMonitorUpdateErrZ_is_ok(o_conv);
-       return ret_val;
+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_channel_update_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_function_ptr(j_calls->handle_open_channel_meth);
+               js_free_function_ptr(j_calls->handle_accept_channel_meth);
+               js_free_function_ptr(j_calls->handle_funding_created_meth);
+               js_free_function_ptr(j_calls->handle_funding_signed_meth);
+               js_free_function_ptr(j_calls->handle_funding_locked_meth);
+               js_free_function_ptr(j_calls->handle_shutdown_meth);
+               js_free_function_ptr(j_calls->handle_closing_signed_meth);
+               js_free_function_ptr(j_calls->handle_update_add_htlc_meth);
+               js_free_function_ptr(j_calls->handle_update_fulfill_htlc_meth);
+               js_free_function_ptr(j_calls->handle_update_fail_htlc_meth);
+               js_free_function_ptr(j_calls->handle_update_fail_malformed_htlc_meth);
+               js_free_function_ptr(j_calls->handle_commitment_signed_meth);
+               js_free_function_ptr(j_calls->handle_revoke_and_ack_meth);
+               js_free_function_ptr(j_calls->handle_update_fee_meth);
+               js_free_function_ptr(j_calls->handle_announcement_signatures_meth);
+               js_free_function_ptr(j_calls->peer_disconnected_meth);
+               js_free_function_ptr(j_calls->peer_connected_meth);
+               js_free_function_ptr(j_calls->handle_channel_reestablish_meth);
+               js_free_function_ptr(j_calls->handle_channel_update_meth);
+               js_free_function_ptr(j_calls->handle_error_meth);
+               FREE(j_calls);
+       }
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_NoneChannelMonitorUpdateErrZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_NoneChannelMonitorUpdateErrZ _res_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_NoneChannelMonitorUpdateErrZ_free(_res_conv);
+void handle_open_channel_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKInitFeatures their_features_var = their_features;
+       uint64_t their_features_ref = 0;
+       CHECK((((uint64_t)their_features_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&their_features_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(their_features_var);
+       their_features_ref = (uint64_t)their_features_var.inner;
+       if (their_features_var.is_owned) {
+               their_features_ref |= 1;
+       }
+       LDKOpenChannel msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = OpenChannel_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_3(j_calls->handle_open_channel_meth, (uint32_t)their_node_id_arr, (uint32_t)their_features_ref, (uint32_t)msg_ref);
 }
-
-static inline uint64_t CResult_NoneChannelMonitorUpdateErrZ_clone_ptr(LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR arg) {
-       LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ");
-       *ret_conv = CResult_NoneChannelMonitorUpdateErrZ_clone(arg);
-       return (uint64_t)ret_conv;
+void handle_accept_channel_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKInitFeatures their_features_var = their_features;
+       uint64_t their_features_ref = 0;
+       CHECK((((uint64_t)their_features_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&their_features_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(their_features_var);
+       their_features_ref = (uint64_t)their_features_var.inner;
+       if (their_features_var.is_owned) {
+               their_features_ref |= 1;
+       }
+       LDKAcceptChannel msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = AcceptChannel_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_3(j_calls->handle_accept_channel_meth, (uint32_t)their_node_id_arr, (uint32_t)their_features_ref, (uint32_t)msg_ref);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_NoneChannelMonitorUpdateErrZ_clone_ptr(uint32_t arg) {
-       LDKCResult_NoneChannelMonitorUpdateErrZ* arg_conv = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(arg & ~1);
-       int64_t ret_val = CResult_NoneChannelMonitorUpdateErrZ_clone_ptr(arg_conv);
-       return ret_val;
+void handle_funding_created_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKFundingCreated msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = FundingCreated_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->handle_funding_created_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneChannelMonitorUpdateErrZ_clone(uint32_t orig) {
-       LDKCResult_NoneChannelMonitorUpdateErrZ* orig_conv = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(orig & ~1);
-       LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ");
-       *ret_conv = CResult_NoneChannelMonitorUpdateErrZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+void handle_funding_signed_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKFundingSigned msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = FundingSigned_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->handle_funding_signed_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
+}
+void handle_funding_locked_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKFundingLocked msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = FundingLocked_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->handle_funding_locked_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
+}
+void handle_shutdown_LDKChannelMessageHandler_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKInitFeatures * their_features, const LDKShutdown * msg) {
+       LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg;
+       int8_tArray their_node_id_arr = init_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKInitFeatures their_features_var = *their_features;
+       uint64_t their_features_ref = 0;
+       their_features_var = InitFeatures_clone(their_features);
+       CHECK((((uint64_t)their_features_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&their_features_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(their_features_var);
+       their_features_ref = (uint64_t)their_features_var.inner;
+       if (their_features_var.is_owned) {
+               their_features_ref |= 1;
+       }
+       LDKShutdown msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = Shutdown_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_3(j_calls->handle_shutdown_meth, (uint32_t)their_node_id_arr, (uint32_t)their_features_ref, (uint32_t)msg_ref);
+}
+void handle_closing_signed_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKClosingSigned msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = ClosingSigned_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->handle_closing_signed_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
 }
-
-void  __attribute__((visibility("default"))) TS_CVec_MonitorEventZ_free(uint32_tArray _res) {
-       LDKCVec_MonitorEventZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKMonitorEvent), "LDKCVec_MonitorEventZ Elements");
-       else
-               _res_constr.data = NULL;
-       uint32_t* _res_vals = (uint32_t*)(_res + 4);
-       for (size_t o = 0; o < _res_constr.datalen; o++) {
-               uint32_t _res_conv_14 = _res_vals[o];
-               void* _res_conv_14_ptr = (void*)(((uint64_t)_res_conv_14) & ~1);
-               CHECK_ACCESS(_res_conv_14_ptr);
-               LDKMonitorEvent _res_conv_14_conv = *(LDKMonitorEvent*)(_res_conv_14_ptr);
-               FREE((void*)_res_conv_14);
-               _res_constr.data[o] = _res_conv_14_conv;
+void handle_update_add_htlc_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKUpdateAddHTLC msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = UpdateAddHTLC_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
        }
-       CVec_MonitorEventZ_free(_res_constr);
+       js_invoke_function_2(j_calls->handle_update_add_htlc_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_COption_C2Tuple_usizeTransactionZZ_some(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKC2Tuple_usizeTransactionZ o_conv = *(LDKC2Tuple_usizeTransactionZ*)(o_ptr);
-       o_conv = C2Tuple_usizeTransactionZ_clone((LDKC2Tuple_usizeTransactionZ*)(((uint64_t)o) & ~1));
-       LDKCOption_C2Tuple_usizeTransactionZZ *ret_copy = MALLOC(sizeof(LDKCOption_C2Tuple_usizeTransactionZZ), "LDKCOption_C2Tuple_usizeTransactionZZ");
-       *ret_copy = COption_C2Tuple_usizeTransactionZZ_some(o_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void handle_update_fulfill_htlc_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKUpdateFulfillHTLC msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = UpdateFulfillHTLC_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->handle_update_fulfill_htlc_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_COption_C2Tuple_usizeTransactionZZ_none() {
-       LDKCOption_C2Tuple_usizeTransactionZZ *ret_copy = MALLOC(sizeof(LDKCOption_C2Tuple_usizeTransactionZZ), "LDKCOption_C2Tuple_usizeTransactionZZ");
-       *ret_copy = COption_C2Tuple_usizeTransactionZZ_none();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void handle_update_fail_htlc_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKUpdateFailHTLC msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = UpdateFailHTLC_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->handle_update_fail_htlc_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
 }
-
-void  __attribute__((visibility("default"))) TS_COption_C2Tuple_usizeTransactionZZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCOption_C2Tuple_usizeTransactionZZ _res_conv = *(LDKCOption_C2Tuple_usizeTransactionZZ*)(_res_ptr);
-       FREE((void*)_res);
-       COption_C2Tuple_usizeTransactionZZ_free(_res_conv);
+void handle_update_fail_malformed_htlc_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKUpdateFailMalformedHTLC msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = UpdateFailMalformedHTLC_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->handle_update_fail_malformed_htlc_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
 }
-
-static inline uint64_t COption_C2Tuple_usizeTransactionZZ_clone_ptr(LDKCOption_C2Tuple_usizeTransactionZZ *NONNULL_PTR arg) {
-       LDKCOption_C2Tuple_usizeTransactionZZ *ret_copy = MALLOC(sizeof(LDKCOption_C2Tuple_usizeTransactionZZ), "LDKCOption_C2Tuple_usizeTransactionZZ");
-       *ret_copy = COption_C2Tuple_usizeTransactionZZ_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void handle_commitment_signed_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKCommitmentSigned msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = CommitmentSigned_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->handle_commitment_signed_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
 }
-int64_t  __attribute__((visibility("default"))) TS_COption_C2Tuple_usizeTransactionZZ_clone_ptr(uint32_t arg) {
-       LDKCOption_C2Tuple_usizeTransactionZZ* arg_conv = (LDKCOption_C2Tuple_usizeTransactionZZ*)arg;
-       int64_t ret_val = COption_C2Tuple_usizeTransactionZZ_clone_ptr(arg_conv);
-       return ret_val;
+void handle_revoke_and_ack_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKRevokeAndACK msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = RevokeAndACK_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->handle_revoke_and_ack_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_COption_C2Tuple_usizeTransactionZZ_clone(uint32_t orig) {
-       LDKCOption_C2Tuple_usizeTransactionZZ* orig_conv = (LDKCOption_C2Tuple_usizeTransactionZZ*)orig;
-       LDKCOption_C2Tuple_usizeTransactionZZ *ret_copy = MALLOC(sizeof(LDKCOption_C2Tuple_usizeTransactionZZ), "LDKCOption_C2Tuple_usizeTransactionZZ");
-       *ret_copy = COption_C2Tuple_usizeTransactionZZ_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void handle_update_fee_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKUpdateFee msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = UpdateFee_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->handle_update_fee_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_COption_ClosureReasonZ_some(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKClosureReason o_conv = *(LDKClosureReason*)(o_ptr);
-       o_conv = ClosureReason_clone((LDKClosureReason*)(((uint64_t)o) & ~1));
-       LDKCOption_ClosureReasonZ *ret_copy = MALLOC(sizeof(LDKCOption_ClosureReasonZ), "LDKCOption_ClosureReasonZ");
-       *ret_copy = COption_ClosureReasonZ_some(o_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void handle_announcement_signatures_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKAnnouncementSignatures msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = AnnouncementSignatures_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->handle_announcement_signatures_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_COption_ClosureReasonZ_none() {
-       LDKCOption_ClosureReasonZ *ret_copy = MALLOC(sizeof(LDKCOption_ClosureReasonZ), "LDKCOption_ClosureReasonZ");
-       *ret_copy = COption_ClosureReasonZ_none();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void peer_disconnected_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       js_invoke_function_2(j_calls->peer_disconnected_meth, (uint32_t)their_node_id_arr, (uint32_t)no_connection_possible);
 }
-
-void  __attribute__((visibility("default"))) TS_COption_ClosureReasonZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCOption_ClosureReasonZ _res_conv = *(LDKCOption_ClosureReasonZ*)(_res_ptr);
-       FREE((void*)_res);
-       COption_ClosureReasonZ_free(_res_conv);
+void peer_connected_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKInit msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = Init_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->peer_connected_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
 }
-
-static inline uint64_t COption_ClosureReasonZ_clone_ptr(LDKCOption_ClosureReasonZ *NONNULL_PTR arg) {
-       LDKCOption_ClosureReasonZ *ret_copy = MALLOC(sizeof(LDKCOption_ClosureReasonZ), "LDKCOption_ClosureReasonZ");
-       *ret_copy = COption_ClosureReasonZ_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void handle_channel_reestablish_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKChannelReestablish msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = ChannelReestablish_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->handle_channel_reestablish_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
 }
-int64_t  __attribute__((visibility("default"))) TS_COption_ClosureReasonZ_clone_ptr(uint32_t arg) {
-       LDKCOption_ClosureReasonZ* arg_conv = (LDKCOption_ClosureReasonZ*)arg;
-       int64_t ret_val = COption_ClosureReasonZ_clone_ptr(arg_conv);
-       return ret_val;
+void handle_channel_update_LDKChannelMessageHandler_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKChannelUpdate * msg) {
+       LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg;
+       int8_tArray their_node_id_arr = init_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKChannelUpdate msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = ChannelUpdate_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->handle_channel_update_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_COption_ClosureReasonZ_clone(uint32_t orig) {
-       LDKCOption_ClosureReasonZ* orig_conv = (LDKCOption_ClosureReasonZ*)orig;
-       LDKCOption_ClosureReasonZ *ret_copy = MALLOC(sizeof(LDKCOption_ClosureReasonZ), "LDKCOption_ClosureReasonZ");
-       *ret_copy = COption_ClosureReasonZ_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void handle_error_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKErrorMessage msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = ErrorMessage_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->handle_error_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_ClosureReasonZDecodeErrorZ_ok(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKCOption_ClosureReasonZ o_conv = *(LDKCOption_ClosureReasonZ*)(o_ptr);
-       o_conv = COption_ClosureReasonZ_clone((LDKCOption_ClosureReasonZ*)(((uint64_t)o) & ~1));
-       LDKCResult_COption_ClosureReasonZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ), "LDKCResult_COption_ClosureReasonZDecodeErrorZ");
-       *ret_conv = CResult_COption_ClosureReasonZDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+static void LDKChannelMessageHandler_JCalls_cloned(LDKChannelMessageHandler* new_obj) {
+       LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) new_obj->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);
 }
+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
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_ClosureReasonZDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_COption_ClosureReasonZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ), "LDKCResult_COption_ClosureReasonZDecodeErrorZ");
-       *ret_conv = CResult_COption_ClosureReasonZDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+       LDKChannelMessageHandler ret = {
+               .this_arg = (void*) calls,
+               .handle_open_channel = handle_open_channel_LDKChannelMessageHandler_jcall,
+               .handle_accept_channel = handle_accept_channel_LDKChannelMessageHandler_jcall,
+               .handle_funding_created = handle_funding_created_LDKChannelMessageHandler_jcall,
+               .handle_funding_signed = handle_funding_signed_LDKChannelMessageHandler_jcall,
+               .handle_funding_locked = handle_funding_locked_LDKChannelMessageHandler_jcall,
+               .handle_shutdown = handle_shutdown_LDKChannelMessageHandler_jcall,
+               .handle_closing_signed = handle_closing_signed_LDKChannelMessageHandler_jcall,
+               .handle_update_add_htlc = handle_update_add_htlc_LDKChannelMessageHandler_jcall,
+               .handle_update_fulfill_htlc = handle_update_fulfill_htlc_LDKChannelMessageHandler_jcall,
+               .handle_update_fail_htlc = handle_update_fail_htlc_LDKChannelMessageHandler_jcall,
+               .handle_update_fail_malformed_htlc = handle_update_fail_malformed_htlc_LDKChannelMessageHandler_jcall,
+               .handle_commitment_signed = handle_commitment_signed_LDKChannelMessageHandler_jcall,
+               .handle_revoke_and_ack = handle_revoke_and_ack_LDKChannelMessageHandler_jcall,
+               .handle_update_fee = handle_update_fee_LDKChannelMessageHandler_jcall,
+               .handle_announcement_signatures = handle_announcement_signatures_LDKChannelMessageHandler_jcall,
+               .peer_disconnected = peer_disconnected_LDKChannelMessageHandler_jcall,
+               .peer_connected = peer_connected_LDKChannelMessageHandler_jcall,
+               .handle_channel_reestablish = handle_channel_reestablish_LDKChannelMessageHandler_jcall,
+               .handle_channel_update = handle_channel_update_LDKChannelMessageHandler_jcall,
+               .handle_error = handle_error_LDKChannelMessageHandler_jcall,
+               .free = LDKChannelMessageHandler_JCalls_free,
+               .MessageSendEventsProvider = LDKMessageSendEventsProvider_init(MessageSendEventsProvider),
+       };
+       calls->MessageSendEventsProvider = ret.MessageSendEventsProvider.this_arg;
+       return ret;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_COption_ClosureReasonZDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_COption_ClosureReasonZDecodeErrorZ* o_conv = (LDKCResult_COption_ClosureReasonZDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_COption_ClosureReasonZDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+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_COption_ClosureReasonZDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_COption_ClosureReasonZDecodeErrorZ _res_conv = *(LDKCResult_COption_ClosureReasonZDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_COption_ClosureReasonZDecodeErrorZ_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) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKInitFeatures their_features_conv;
+       their_features_conv.inner = (void*)(their_features & (~1));
+       their_features_conv.is_owned = (their_features & 1) || (their_features == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(their_features_conv);
+       their_features_conv = InitFeatures_clone(&their_features_conv);
+       LDKOpenChannel msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_open_channel)(this_arg_conv->this_arg, their_node_id_ref, their_features_conv, &msg_conv);
 }
 
-static inline uint64_t CResult_COption_ClosureReasonZDecodeErrorZ_clone_ptr(LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_COption_ClosureReasonZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ), "LDKCResult_COption_ClosureReasonZDecodeErrorZ");
-       *ret_conv = CResult_COption_ClosureReasonZDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
-}
-int64_t  __attribute__((visibility("default"))) TS_CResult_COption_ClosureReasonZDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_COption_ClosureReasonZDecodeErrorZ* arg_conv = (LDKCResult_COption_ClosureReasonZDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_COption_ClosureReasonZDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+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) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKInitFeatures their_features_conv;
+       their_features_conv.inner = (void*)(their_features & (~1));
+       their_features_conv.is_owned = (their_features & 1) || (their_features == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(their_features_conv);
+       their_features_conv = InitFeatures_clone(&their_features_conv);
+       LDKAcceptChannel msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (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_COption_ClosureReasonZDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_COption_ClosureReasonZDecodeErrorZ* orig_conv = (LDKCResult_COption_ClosureReasonZDecodeErrorZ*)(orig & ~1);
-       LDKCResult_COption_ClosureReasonZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ), "LDKCResult_COption_ClosureReasonZDecodeErrorZ");
-       *ret_conv = CResult_COption_ClosureReasonZDecodeErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_funding_created(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKFundingCreated msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_funding_created)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_NetworkUpdateZ_some(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKNetworkUpdate o_conv = *(LDKNetworkUpdate*)(o_ptr);
-       o_conv = NetworkUpdate_clone((LDKNetworkUpdate*)(((uint64_t)o) & ~1));
-       LDKCOption_NetworkUpdateZ *ret_copy = MALLOC(sizeof(LDKCOption_NetworkUpdateZ), "LDKCOption_NetworkUpdateZ");
-       *ret_copy = COption_NetworkUpdateZ_some(o_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_funding_signed(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKFundingSigned msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_funding_signed)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_NetworkUpdateZ_none() {
-       LDKCOption_NetworkUpdateZ *ret_copy = MALLOC(sizeof(LDKCOption_NetworkUpdateZ), "LDKCOption_NetworkUpdateZ");
-       *ret_copy = COption_NetworkUpdateZ_none();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_funding_locked(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKFundingLocked msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_funding_locked)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_COption_NetworkUpdateZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCOption_NetworkUpdateZ _res_conv = *(LDKCOption_NetworkUpdateZ*)(_res_ptr);
-       FREE((void*)_res);
-       COption_NetworkUpdateZ_free(_res_conv);
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_shutdown(uint32_t this_arg, int8_tArray their_node_id, uint32_t their_features, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKInitFeatures their_features_conv;
+       their_features_conv.inner = (void*)(their_features & (~1));
+       their_features_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(their_features_conv);
+       LDKShutdown msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_shutdown)(this_arg_conv->this_arg, their_node_id_ref, &their_features_conv, &msg_conv);
 }
 
-static inline uint64_t COption_NetworkUpdateZ_clone_ptr(LDKCOption_NetworkUpdateZ *NONNULL_PTR arg) {
-       LDKCOption_NetworkUpdateZ *ret_copy = MALLOC(sizeof(LDKCOption_NetworkUpdateZ), "LDKCOption_NetworkUpdateZ");
-       *ret_copy = COption_NetworkUpdateZ_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_closing_signed(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKClosingSigned msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_closing_signed)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
 }
-int64_t  __attribute__((visibility("default"))) TS_COption_NetworkUpdateZ_clone_ptr(uint32_t arg) {
-       LDKCOption_NetworkUpdateZ* arg_conv = (LDKCOption_NetworkUpdateZ*)arg;
-       int64_t ret_val = COption_NetworkUpdateZ_clone_ptr(arg_conv);
-       return ret_val;
+
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_update_add_htlc(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKUpdateAddHTLC msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_update_add_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_NetworkUpdateZ_clone(uint32_t orig) {
-       LDKCOption_NetworkUpdateZ* orig_conv = (LDKCOption_NetworkUpdateZ*)orig;
-       LDKCOption_NetworkUpdateZ *ret_copy = MALLOC(sizeof(LDKCOption_NetworkUpdateZ), "LDKCOption_NetworkUpdateZ");
-       *ret_copy = COption_NetworkUpdateZ_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_update_fulfill_htlc(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKUpdateFulfillHTLC msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_update_fulfill_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_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 _res_conv_27 = _res_vals[b];
-               void* _res_conv_27_ptr = (void*)(((uint64_t)_res_conv_27) & ~1);
-               CHECK_ACCESS(_res_conv_27_ptr);
-               LDKSpendableOutputDescriptor _res_conv_27_conv = *(LDKSpendableOutputDescriptor*)(_res_conv_27_ptr);
-               FREE((void*)_res_conv_27);
-               _res_constr.data[b] = _res_conv_27_conv;
-       }
-       CVec_SpendableOutputDescriptorZ_free(_res_constr);
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_update_fail_htlc(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKUpdateFailHTLC msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_update_fail_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_EventZ_some(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKEvent o_conv = *(LDKEvent*)(o_ptr);
-       o_conv = Event_clone((LDKEvent*)(((uint64_t)o) & ~1));
-       LDKCOption_EventZ *ret_copy = MALLOC(sizeof(LDKCOption_EventZ), "LDKCOption_EventZ");
-       *ret_copy = COption_EventZ_some(o_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_update_fail_malformed_htlc(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKUpdateFailMalformedHTLC msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (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_COption_EventZ_none() {
-       LDKCOption_EventZ *ret_copy = MALLOC(sizeof(LDKCOption_EventZ), "LDKCOption_EventZ");
-       *ret_copy = COption_EventZ_none();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_commitment_signed(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKCommitmentSigned msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_commitment_signed)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_COption_EventZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCOption_EventZ _res_conv = *(LDKCOption_EventZ*)(_res_ptr);
-       FREE((void*)_res);
-       COption_EventZ_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) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKRevokeAndACK msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_revoke_and_ack)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
 }
 
-static inline uint64_t COption_EventZ_clone_ptr(LDKCOption_EventZ *NONNULL_PTR arg) {
-       LDKCOption_EventZ *ret_copy = MALLOC(sizeof(LDKCOption_EventZ), "LDKCOption_EventZ");
-       *ret_copy = COption_EventZ_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_update_fee(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKUpdateFee msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_update_fee)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
 }
-int64_t  __attribute__((visibility("default"))) TS_COption_EventZ_clone_ptr(uint32_t arg) {
-       LDKCOption_EventZ* arg_conv = (LDKCOption_EventZ*)arg;
-       int64_t ret_val = COption_EventZ_clone_ptr(arg_conv);
-       return ret_val;
+
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_announcement_signatures(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKAnnouncementSignatures msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_announcement_signatures)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_EventZ_clone(uint32_t orig) {
-       LDKCOption_EventZ* orig_conv = (LDKCOption_EventZ*)orig;
-       LDKCOption_EventZ *ret_copy = MALLOC(sizeof(LDKCOption_EventZ), "LDKCOption_EventZ");
-       *ret_copy = COption_EventZ_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_peer_disconnected(uint32_t this_arg, int8_tArray their_node_id, jboolean no_connection_possible) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       (this_arg_conv->peer_disconnected)(this_arg_conv->this_arg, their_node_id_ref, no_connection_possible);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_EventZDecodeErrorZ_ok(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKCOption_EventZ o_conv = *(LDKCOption_EventZ*)(o_ptr);
-       o_conv = COption_EventZ_clone((LDKCOption_EventZ*)(((uint64_t)o) & ~1));
-       LDKCResult_COption_EventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_EventZDecodeErrorZ), "LDKCResult_COption_EventZDecodeErrorZ");
-       *ret_conv = CResult_COption_EventZDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_peer_connected(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKInit msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->peer_connected)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_EventZDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_COption_EventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_EventZDecodeErrorZ), "LDKCResult_COption_EventZDecodeErrorZ");
-       *ret_conv = CResult_COption_EventZDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_channel_reestablish(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKChannelReestablish msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_channel_reestablish)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_COption_EventZDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_COption_EventZDecodeErrorZ* o_conv = (LDKCResult_COption_EventZDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_COption_EventZDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_channel_update(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKChannelUpdate msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_channel_update)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_COption_EventZDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_COption_EventZDecodeErrorZ _res_conv = *(LDKCResult_COption_EventZDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_COption_EventZDecodeErrorZ_free(_res_conv);
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_error(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKErrorMessage msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_error)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
 }
 
-static inline uint64_t CResult_COption_EventZDecodeErrorZ_clone_ptr(LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_COption_EventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_EventZDecodeErrorZ), "LDKCResult_COption_EventZDecodeErrorZ");
-       *ret_conv = CResult_COption_EventZDecodeErrorZ_clone(arg);
-       return (uint64_t)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 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_function_ptr(j_calls->handle_node_announcement_meth);
+               js_free_function_ptr(j_calls->handle_channel_announcement_meth);
+               js_free_function_ptr(j_calls->handle_channel_update_meth);
+               js_free_function_ptr(j_calls->get_next_channel_announcements_meth);
+               js_free_function_ptr(j_calls->get_next_node_announcements_meth);
+               js_free_function_ptr(j_calls->sync_routing_table_meth);
+               js_free_function_ptr(j_calls->handle_reply_channel_range_meth);
+               js_free_function_ptr(j_calls->handle_reply_short_channel_ids_end_meth);
+               js_free_function_ptr(j_calls->handle_query_channel_range_meth);
+               js_free_function_ptr(j_calls->handle_query_short_channel_ids_meth);
+               FREE(j_calls);
+       }
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_COption_EventZDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_COption_EventZDecodeErrorZ* arg_conv = (LDKCResult_COption_EventZDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_COption_EventZDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+LDKCResult_boolLightningErrorZ handle_node_announcement_LDKRoutingMessageHandler_jcall(const void* this_arg, const LDKNodeAnnouncement * msg) {
+       LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg;
+       LDKNodeAnnouncement msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = NodeAnnouncement_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_1(j_calls->handle_node_announcement_meth, (uint32_t)msg_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_boolLightningErrorZ ret_conv = *(LDKCResult_boolLightningErrorZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_EventZDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_COption_EventZDecodeErrorZ* orig_conv = (LDKCResult_COption_EventZDecodeErrorZ*)(orig & ~1);
-       LDKCResult_COption_EventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_EventZDecodeErrorZ), "LDKCResult_COption_EventZDecodeErrorZ");
-       *ret_conv = CResult_COption_EventZDecodeErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+LDKCResult_boolLightningErrorZ handle_channel_announcement_LDKRoutingMessageHandler_jcall(const void* this_arg, const LDKChannelAnnouncement * msg) {
+       LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg;
+       LDKChannelAnnouncement msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = ChannelAnnouncement_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_1(j_calls->handle_channel_announcement_meth, (uint32_t)msg_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_boolLightningErrorZ ret_conv = *(LDKCResult_boolLightningErrorZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
 }
-
-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");
+LDKCResult_boolLightningErrorZ handle_channel_update_LDKRoutingMessageHandler_jcall(const void* this_arg, const LDKChannelUpdate * msg) {
+       LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg;
+       LDKChannelUpdate msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = ChannelUpdate_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_1(j_calls->handle_channel_update_meth, (uint32_t)msg_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_boolLightningErrorZ ret_conv = *(LDKCResult_boolLightningErrorZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
+}
+LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ get_next_channel_announcements_LDKRoutingMessageHandler_jcall(const void* this_arg, uint64_t starting_point, uint8_t batch_amount) {
+       LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg;
+       uint32_tArray ret = (uint32_tArray)js_invoke_function_2(j_calls->get_next_channel_announcements_meth, (uint32_t)starting_point, (uint32_t)batch_amount);
+       LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ ret_constr;
+       ret_constr.datalen = ret->arr_len;
+       if (ret_constr.datalen > 0)
+               ret_constr.data = MALLOC(ret_constr.datalen * sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ Elements");
+       else
+               ret_constr.data = NULL;
+       uint32_t* ret_vals = ret->elems;
+       for (size_t h = 0; h < ret_constr.datalen; h++) {
+               uint32_t ret_conv_59 = ret_vals[h];
+               void* ret_conv_59_ptr = (void*)(((uint64_t)ret_conv_59) & ~1);
+               CHECK_ACCESS(ret_conv_59_ptr);
+               LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ ret_conv_59_conv = *(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(ret_conv_59_ptr);
+               FREE((void*)ret_conv_59);
+               ret_constr.data[h] = ret_conv_59_conv;
+       }
+       return ret_constr;
+}
+LDKCVec_NodeAnnouncementZ get_next_node_announcements_LDKRoutingMessageHandler_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_int8_tArray(33);
+       memcpy(starting_point_arr->elems, starting_point.compressed_form, 33);
+       uint32_tArray ret = (uint32_tArray)js_invoke_function_2(j_calls->get_next_node_announcements_meth, (uint32_t)starting_point_arr, (uint32_t)batch_amount);
+       LDKCVec_NodeAnnouncementZ ret_constr;
+       ret_constr.datalen = ret->arr_len;
+       if (ret_constr.datalen > 0)
+               ret_constr.data = MALLOC(ret_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 _res_conv_18 = _res_vals[s];
-               void* _res_conv_18_ptr = (void*)(((uint64_t)_res_conv_18) & ~1);
-               CHECK_ACCESS(_res_conv_18_ptr);
-               LDKMessageSendEvent _res_conv_18_conv = *(LDKMessageSendEvent*)(_res_conv_18_ptr);
-               FREE((void*)_res_conv_18);
-               _res_constr.data[s] = _res_conv_18_conv;
+               ret_constr.data = NULL;
+       uint32_t* ret_vals = ret->elems;
+       for (size_t s = 0; s < ret_constr.datalen; s++) {
+               uint32_t ret_conv_18 = ret_vals[s];
+               LDKNodeAnnouncement ret_conv_18_conv;
+               ret_conv_18_conv.inner = (void*)(ret_conv_18 & (~1));
+               ret_conv_18_conv.is_owned = (ret_conv_18 & 1) || (ret_conv_18 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_18_conv);
+               ret_constr.data[s] = ret_conv_18_conv;
        }
-       CVec_MessageSendEventZ_free(_res_constr);
+       return ret_constr;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ScoringParametersDecodeErrorZ_ok(uint32_t o) {
-       LDKScoringParameters o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       // Warning: we need a move here but no clone is available for LDKScoringParameters
-       LDKCResult_ScoringParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ScoringParametersDecodeErrorZ), "LDKCResult_ScoringParametersDecodeErrorZ");
-       *ret_conv = CResult_ScoringParametersDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+void sync_routing_table_LDKRoutingMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKInit init_var = *init;
+       uint64_t init_ref = 0;
+       init_var = Init_clone(init);
+       CHECK((((uint64_t)init_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&init_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(init_var);
+       init_ref = (uint64_t)init_var.inner;
+       if (init_var.is_owned) {
+               init_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->sync_routing_table_meth, (uint32_t)their_node_id_arr, (uint32_t)init_ref);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ScoringParametersDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ScoringParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ScoringParametersDecodeErrorZ), "LDKCResult_ScoringParametersDecodeErrorZ");
-       *ret_conv = CResult_ScoringParametersDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+LDKCResult_NoneLightningErrorZ handle_reply_channel_range_LDKRoutingMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKReplyChannelRange msg_var = msg;
+       uint64_t msg_ref = 0;
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_2(j_calls->handle_reply_channel_range_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_ScoringParametersDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ScoringParametersDecodeErrorZ* o_conv = (LDKCResult_ScoringParametersDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ScoringParametersDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+LDKCResult_NoneLightningErrorZ handle_reply_short_channel_ids_end_LDKRoutingMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKReplyShortChannelIdsEnd msg_var = msg;
+       uint64_t msg_ref = 0;
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_2(j_calls->handle_reply_short_channel_ids_end_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_ScoringParametersDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_ScoringParametersDecodeErrorZ _res_conv = *(LDKCResult_ScoringParametersDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_ScoringParametersDecodeErrorZ_free(_res_conv);
+LDKCResult_NoneLightningErrorZ handle_query_channel_range_LDKRoutingMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKQueryChannelRange msg_var = msg;
+       uint64_t msg_ref = 0;
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_2(j_calls->handle_query_channel_range_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ScorerDecodeErrorZ_ok(uint32_t o) {
-       LDKScorer o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       // Warning: we need a move here but no clone is available for LDKScorer
-       LDKCResult_ScorerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ScorerDecodeErrorZ), "LDKCResult_ScorerDecodeErrorZ");
-       *ret_conv = CResult_ScorerDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+LDKCResult_NoneLightningErrorZ handle_query_short_channel_ids_LDKRoutingMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKQueryShortChannelIds msg_var = msg;
+       uint64_t msg_ref = 0;
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_2(j_calls->handle_query_short_channel_ids_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ScorerDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ScorerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ScorerDecodeErrorZ), "LDKCResult_ScorerDecodeErrorZ");
-       *ret_conv = CResult_ScorerDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+static void LDKRoutingMessageHandler_JCalls_cloned(LDKRoutingMessageHandler* new_obj) {
+       LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) new_obj->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);
 }
+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
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ScorerDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ScorerDecodeErrorZ* o_conv = (LDKCResult_ScorerDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ScorerDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+       LDKRoutingMessageHandler ret = {
+               .this_arg = (void*) calls,
+               .handle_node_announcement = handle_node_announcement_LDKRoutingMessageHandler_jcall,
+               .handle_channel_announcement = handle_channel_announcement_LDKRoutingMessageHandler_jcall,
+               .handle_channel_update = handle_channel_update_LDKRoutingMessageHandler_jcall,
+               .get_next_channel_announcements = get_next_channel_announcements_LDKRoutingMessageHandler_jcall,
+               .get_next_node_announcements = get_next_node_announcements_LDKRoutingMessageHandler_jcall,
+               .sync_routing_table = sync_routing_table_LDKRoutingMessageHandler_jcall,
+               .handle_reply_channel_range = handle_reply_channel_range_LDKRoutingMessageHandler_jcall,
+               .handle_reply_short_channel_ids_end = handle_reply_short_channel_ids_end_LDKRoutingMessageHandler_jcall,
+               .handle_query_channel_range = handle_query_channel_range_LDKRoutingMessageHandler_jcall,
+               .handle_query_short_channel_ids = handle_query_short_channel_ids_LDKRoutingMessageHandler_jcall,
+               .free = LDKRoutingMessageHandler_JCalls_free,
+               .MessageSendEventsProvider = LDKMessageSendEventsProvider_init(MessageSendEventsProvider),
+       };
+       calls->MessageSendEventsProvider = ret.MessageSendEventsProvider.this_arg;
+       return ret;
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_ScorerDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_ScorerDecodeErrorZ _res_conv = *(LDKCResult_ScorerDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_ScorerDecodeErrorZ_free(_res_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;
 }
-
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = InitFeatures_clone(&o_conv);
-       LDKCResult_InitFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitFeaturesDecodeErrorZ), "LDKCResult_InitFeaturesDecodeErrorZ");
-       *ret_conv = CResult_InitFeaturesDecodeErrorZ_ok(o_conv);
+uint32_t  __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_node_announcement(uint32_t this_arg, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
+       LDKNodeAnnouncement msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       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 (uint64_t)ret_conv;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_InitFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitFeaturesDecodeErrorZ), "LDKCResult_InitFeaturesDecodeErrorZ");
-       *ret_conv = CResult_InitFeaturesDecodeErrorZ_err(e_conv);
+uint32_t  __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_channel_announcement(uint32_t this_arg, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
+       LDKChannelAnnouncement msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_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);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_InitFeaturesDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_InitFeaturesDecodeErrorZ* o_conv = (LDKCResult_InitFeaturesDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_InitFeaturesDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_CResult_InitFeaturesDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_InitFeaturesDecodeErrorZ _res_conv = *(LDKCResult_InitFeaturesDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_InitFeaturesDecodeErrorZ_free(_res_conv);
+uint32_t  __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_channel_update(uint32_t this_arg, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
+       LDKChannelUpdate msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       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 (uint64_t)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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = ChannelFeatures_clone(&o_conv);
-       LDKCResult_ChannelFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ), "LDKCResult_ChannelFeaturesDecodeErrorZ");
-       *ret_conv = CResult_ChannelFeaturesDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+uint32_tArray  __attribute__((visibility("default"))) TS_RoutingMessageHandler_get_next_channel_announcements(uint32_t this_arg, int64_t starting_point, int8_t batch_amount) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
+       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 = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t h = 0; h < ret_var.datalen; h++) {
+               LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* ret_conv_59_conv = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ");
+               *ret_conv_59_conv = ret_var.data[h];
+               ret_arr_ptr[h] = ((uint64_t)ret_conv_59_conv);
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ChannelFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ), "LDKCResult_ChannelFeaturesDecodeErrorZ");
-       *ret_conv = CResult_ChannelFeaturesDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+uint32_tArray  __attribute__((visibility("default"))) TS_RoutingMessageHandler_get_next_node_announcements(uint32_t this_arg, int8_tArray starting_point, int8_t batch_amount) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
+       LDKPublicKey starting_point_ref;
+       CHECK(starting_point->arr_len == 33);
+       memcpy(starting_point_ref.compressed_form, starting_point->elems, 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 = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t s = 0; s < ret_var.datalen; s++) {
+               LDKNodeAnnouncement ret_conv_18_var = ret_var.data[s];
+               uint64_t ret_conv_18_ref = 0;
+               CHECK((((uint64_t)ret_conv_18_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_conv_18_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_18_var);
+               ret_conv_18_ref = (uint64_t)ret_conv_18_var.inner;
+               if (ret_conv_18_var.is_owned) {
+                       ret_conv_18_ref |= 1;
+               }
+               ret_arr_ptr[s] = ret_conv_18_ref;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelFeaturesDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ChannelFeaturesDecodeErrorZ* o_conv = (LDKCResult_ChannelFeaturesDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ChannelFeaturesDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_RoutingMessageHandler_sync_routing_table(uint32_t this_arg, int8_tArray their_node_id, uint32_t init) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKInit init_conv;
+       init_conv.inner = (void*)(init & (~1));
+       init_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(init_conv);
+       (this_arg_conv->sync_routing_table)(this_arg_conv->this_arg, their_node_id_ref, &init_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ChannelFeaturesDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_ChannelFeaturesDecodeErrorZ _res_conv = *(LDKCResult_ChannelFeaturesDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_ChannelFeaturesDecodeErrorZ_free(_res_conv);
+uint32_t  __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_reply_channel_range(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKReplyChannelRange msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       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 (uint64_t)ret_conv;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = NodeFeatures_clone(&o_conv);
-       LDKCResult_NodeFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeFeaturesDecodeErrorZ), "LDKCResult_NodeFeaturesDecodeErrorZ");
-       *ret_conv = CResult_NodeFeaturesDecodeErrorZ_ok(o_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) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKReplyShortChannelIdsEnd msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       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 (uint64_t)ret_conv;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_NodeFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeFeaturesDecodeErrorZ), "LDKCResult_NodeFeaturesDecodeErrorZ");
-       *ret_conv = CResult_NodeFeaturesDecodeErrorZ_err(e_conv);
+uint32_t  __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_query_channel_range(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKQueryChannelRange msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       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 (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_NodeFeaturesDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_NodeFeaturesDecodeErrorZ* o_conv = (LDKCResult_NodeFeaturesDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_NodeFeaturesDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_query_short_channel_ids(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKQueryShortChannelIds msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       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 (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_NodeFeaturesDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_NodeFeaturesDecodeErrorZ _res_conv = *(LDKCResult_NodeFeaturesDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_NodeFeaturesDecodeErrorZ_free(_res_conv);
+typedef struct LDKCustomMessageReader_JCalls {
+       atomic_size_t refcnt;
+       uint32_t read_meth;
+} LDKCustomMessageReader_JCalls;
+static void LDKCustomMessageReader_JCalls_free(void* this_arg) {
+       LDKCustomMessageReader_JCalls *j_calls = (LDKCustomMessageReader_JCalls*) this_arg;
+       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
+               js_free_function_ptr(j_calls->read_meth);
+               FREE(j_calls);
+       }
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceFeaturesDecodeErrorZ_ok(uint32_t o) {
-       LDKInvoiceFeatures o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = InvoiceFeatures_clone(&o_conv);
-       LDKCResult_InvoiceFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ), "LDKCResult_InvoiceFeaturesDecodeErrorZ");
-       *ret_conv = CResult_InvoiceFeaturesDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+LDKCResult_COption_TypeZDecodeErrorZ read_LDKCustomMessageReader_jcall(const void* this_arg, uint16_t message_type, LDKu8slice buffer) {
+       LDKCustomMessageReader_JCalls *j_calls = (LDKCustomMessageReader_JCalls*) this_arg;
+       LDKu8slice buffer_var = buffer;
+       int8_tArray buffer_arr = init_int8_tArray(buffer_var.datalen);
+       memcpy(buffer_arr->elems, buffer_var.data, buffer_var.datalen);
+       uint32_t ret = js_invoke_function_2(j_calls->read_meth, (uint32_t)message_type, (uint32_t)buffer_arr);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_COption_TypeZDecodeErrorZ ret_conv = *(LDKCResult_COption_TypeZDecodeErrorZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceFeaturesDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_InvoiceFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ), "LDKCResult_InvoiceFeaturesDecodeErrorZ");
-       *ret_conv = CResult_InvoiceFeaturesDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+static void LDKCustomMessageReader_JCalls_cloned(LDKCustomMessageReader* new_obj) {
+       LDKCustomMessageReader_JCalls *j_calls = (LDKCustomMessageReader_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
+static inline LDKCustomMessageReader LDKCustomMessageReader_init (/*TODO: JS Object Reference */void* o) {
+       LDKCustomMessageReader_JCalls *calls = MALLOC(sizeof(LDKCustomMessageReader_JCalls), "LDKCustomMessageReader_JCalls");
+       atomic_init(&calls->refcnt, 1);
+       //TODO: Assign calls->o from o
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_InvoiceFeaturesDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_InvoiceFeaturesDecodeErrorZ* o_conv = (LDKCResult_InvoiceFeaturesDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_InvoiceFeaturesDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+       LDKCustomMessageReader ret = {
+               .this_arg = (void*) calls,
+               .read = read_LDKCustomMessageReader_jcall,
+               .free = LDKCustomMessageReader_JCalls_free,
+       };
+       return ret;
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_InvoiceFeaturesDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_InvoiceFeaturesDecodeErrorZ _res_conv = *(LDKCResult_InvoiceFeaturesDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_InvoiceFeaturesDecodeErrorZ_free(_res_conv);
+long  __attribute__((visibility("default"))) TS_LDKCustomMessageReader_new(/*TODO: JS Object Reference */void* o) {
+       LDKCustomMessageReader *res_ptr = MALLOC(sizeof(LDKCustomMessageReader), "LDKCustomMessageReader");
+       *res_ptr = LDKCustomMessageReader_init(o);
+       return (long)res_ptr;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelTypeFeaturesDecodeErrorZ_ok(uint32_t o) {
-       LDKChannelTypeFeatures o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = ChannelTypeFeatures_clone(&o_conv);
-       LDKCResult_ChannelTypeFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ), "LDKCResult_ChannelTypeFeaturesDecodeErrorZ");
-       *ret_conv = CResult_ChannelTypeFeaturesDecodeErrorZ_ok(o_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CustomMessageReader_read(uint32_t this_arg, int16_t message_type, int8_tArray buffer) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKCustomMessageReader* this_arg_conv = (LDKCustomMessageReader*)this_arg_ptr;
+       LDKu8slice buffer_ref;
+       buffer_ref.datalen = buffer->arr_len;
+       buffer_ref.data = buffer->elems;
+       LDKCResult_COption_TypeZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_TypeZDecodeErrorZ), "LDKCResult_COption_TypeZDecodeErrorZ");
+       *ret_conv = (this_arg_conv->read)(this_arg_conv->this_arg, message_type, buffer_ref);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelTypeFeaturesDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ChannelTypeFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ), "LDKCResult_ChannelTypeFeaturesDecodeErrorZ");
-       *ret_conv = CResult_ChannelTypeFeaturesDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+typedef struct LDKCustomMessageHandler_JCalls {
+       atomic_size_t refcnt;
+       LDKCustomMessageReader_JCalls* CustomMessageReader;
+       uint32_t handle_custom_message_meth;
+       uint32_t get_and_clear_pending_msg_meth;
+} LDKCustomMessageHandler_JCalls;
+static void LDKCustomMessageHandler_JCalls_free(void* this_arg) {
+       LDKCustomMessageHandler_JCalls *j_calls = (LDKCustomMessageHandler_JCalls*) this_arg;
+       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
+               js_free_function_ptr(j_calls->handle_custom_message_meth);
+               js_free_function_ptr(j_calls->get_and_clear_pending_msg_meth);
+               FREE(j_calls);
+       }
+}
+LDKCResult_NoneLightningErrorZ handle_custom_message_LDKCustomMessageHandler_jcall(const void* this_arg, LDKType msg, LDKPublicKey sender_node_id) {
+       LDKCustomMessageHandler_JCalls *j_calls = (LDKCustomMessageHandler_JCalls*) this_arg;
+       LDKType* msg_ret = MALLOC(sizeof(LDKType), "LDKType");
+       *msg_ret = msg;
+       int8_tArray sender_node_id_arr = init_int8_tArray(33);
+       memcpy(sender_node_id_arr->elems, sender_node_id.compressed_form, 33);
+       uint32_t ret = js_invoke_function_2(j_calls->handle_custom_message_meth, (uint32_t)(uint64_t)msg_ret, (uint32_t)sender_node_id_arr);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
+}
+LDKCVec_C2Tuple_PublicKeyTypeZZ get_and_clear_pending_msg_LDKCustomMessageHandler_jcall(const void* this_arg) {
+       LDKCustomMessageHandler_JCalls *j_calls = (LDKCustomMessageHandler_JCalls*) this_arg;
+       uint32_tArray ret = (uint32_tArray)js_invoke_function_0(j_calls->get_and_clear_pending_msg_meth);
+       LDKCVec_C2Tuple_PublicKeyTypeZZ ret_constr;
+       ret_constr.datalen = ret->arr_len;
+       if (ret_constr.datalen > 0)
+               ret_constr.data = MALLOC(ret_constr.datalen * sizeof(LDKC2Tuple_PublicKeyTypeZ), "LDKCVec_C2Tuple_PublicKeyTypeZZ Elements");
+       else
+               ret_constr.data = NULL;
+       uint32_t* ret_vals = ret->elems;
+       for (size_t z = 0; z < ret_constr.datalen; z++) {
+               uint32_t ret_conv_25 = ret_vals[z];
+               void* ret_conv_25_ptr = (void*)(((uint64_t)ret_conv_25) & ~1);
+               CHECK_ACCESS(ret_conv_25_ptr);
+               LDKC2Tuple_PublicKeyTypeZ ret_conv_25_conv = *(LDKC2Tuple_PublicKeyTypeZ*)(ret_conv_25_ptr);
+               FREE((void*)ret_conv_25);
+               ret_constr.data[z] = ret_conv_25_conv;
+       }
+       return ret_constr;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelTypeFeaturesDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ChannelTypeFeaturesDecodeErrorZ* o_conv = (LDKCResult_ChannelTypeFeaturesDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ChannelTypeFeaturesDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+static void LDKCustomMessageHandler_JCalls_cloned(LDKCustomMessageHandler* new_obj) {
+       LDKCustomMessageHandler_JCalls *j_calls = (LDKCustomMessageHandler_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+       atomic_fetch_add_explicit(&j_calls->CustomMessageReader->refcnt, 1, memory_order_release);
 }
+static inline LDKCustomMessageHandler LDKCustomMessageHandler_init (/*TODO: JS Object Reference */void* o, /*TODO: JS Object Reference */void* CustomMessageReader) {
+       LDKCustomMessageHandler_JCalls *calls = MALLOC(sizeof(LDKCustomMessageHandler_JCalls), "LDKCustomMessageHandler_JCalls");
+       atomic_init(&calls->refcnt, 1);
+       //TODO: Assign calls->o from o
 
-void  __attribute__((visibility("default"))) TS_CResult_ChannelTypeFeaturesDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_ChannelTypeFeaturesDecodeErrorZ _res_conv = *(LDKCResult_ChannelTypeFeaturesDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_ChannelTypeFeaturesDecodeErrorZ_free(_res_conv);
+       LDKCustomMessageHandler ret = {
+               .this_arg = (void*) calls,
+               .handle_custom_message = handle_custom_message_LDKCustomMessageHandler_jcall,
+               .get_and_clear_pending_msg = get_and_clear_pending_msg_LDKCustomMessageHandler_jcall,
+               .free = LDKCustomMessageHandler_JCalls_free,
+               .CustomMessageReader = LDKCustomMessageReader_init(CustomMessageReader),
+       };
+       calls->CustomMessageReader = ret.CustomMessageReader.this_arg;
+       return ret;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_ok(uint32_t o) {
-       LDKDelayedPaymentOutputDescriptor o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = DelayedPaymentOutputDescriptor_clone(&o_conv);
-       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ");
-       *ret_conv = CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+long  __attribute__((visibility("default"))) TS_LDKCustomMessageHandler_new(/*TODO: JS Object Reference */void* o, /*TODO: JS Object Reference */ void* CustomMessageReader) {
+       LDKCustomMessageHandler *res_ptr = MALLOC(sizeof(LDKCustomMessageHandler), "LDKCustomMessageHandler");
+       *res_ptr = LDKCustomMessageHandler_init(o, CustomMessageReader);
+       return (long)res_ptr;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ");
-       *ret_conv = CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_err(e_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CustomMessageHandler_handle_custom_message(uint32_t this_arg, uint32_t msg, int8_tArray sender_node_id) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKCustomMessageHandler* this_arg_conv = (LDKCustomMessageHandler*)this_arg_ptr;
+       void* msg_ptr = (void*)(((uint64_t)msg) & ~1);
+       CHECK_ACCESS(msg_ptr);
+       LDKType msg_conv = *(LDKType*)(msg_ptr);
+       LDKPublicKey sender_node_id_ref;
+       CHECK(sender_node_id->arr_len == 33);
+       memcpy(sender_node_id_ref.compressed_form, sender_node_id->elems, 33);
+       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
+       *ret_conv = (this_arg_conv->handle_custom_message)(this_arg_conv->this_arg, msg_conv, sender_node_id_ref);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* o_conv = (LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ _res_conv = *(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(_res_conv);
+uint32_tArray  __attribute__((visibility("default"))) TS_CustomMessageHandler_get_and_clear_pending_msg(uint32_t this_arg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKCustomMessageHandler* this_arg_conv = (LDKCustomMessageHandler*)this_arg_ptr;
+       LDKCVec_C2Tuple_PublicKeyTypeZZ ret_var = (this_arg_conv->get_and_clear_pending_msg)(this_arg_conv->this_arg);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t z = 0; z < ret_var.datalen; z++) {
+               LDKC2Tuple_PublicKeyTypeZ* ret_conv_25_conv = MALLOC(sizeof(LDKC2Tuple_PublicKeyTypeZ), "LDKC2Tuple_PublicKeyTypeZ");
+               *ret_conv_25_conv = ret_var.data[z];
+               ret_arr_ptr[z] = ((uint64_t)ret_conv_25_conv);
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-static inline uint64_t CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone_ptr(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ");
-       *ret_conv = CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone(arg);
-       return (uint64_t)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_function_ptr(j_calls->send_data_meth);
+               js_free_function_ptr(j_calls->disconnect_socket_meth);
+               js_free_function_ptr(j_calls->eq_meth);
+               js_free_function_ptr(j_calls->hash_meth);
+               FREE(j_calls);
+       }
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* arg_conv = (LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+uintptr_t send_data_LDKSocketDescriptor_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_int8_tArray(data_var.datalen);
+       memcpy(data_arr->elems, data_var.data, data_var.datalen);
+       return js_invoke_function_2(j_calls->send_data_meth, (uint32_t)data_arr, (uint32_t)resume_read);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* orig_conv = (LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ*)(orig & ~1);
-       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ");
-       *ret_conv = CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+void disconnect_socket_LDKSocketDescriptor_jcall(void* this_arg) {
+       LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg;
+       js_invoke_function_0(j_calls->disconnect_socket_meth);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_ok(uint32_t o) {
-       LDKStaticPaymentOutputDescriptor o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = StaticPaymentOutputDescriptor_clone(&o_conv);
-       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ");
-       *ret_conv = CResult_StaticPaymentOutputDescriptorDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+bool eq_LDKSocketDescriptor_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, (uint32_t)(uint64_t)other_arg_clone);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ");
-       *ret_conv = CResult_StaticPaymentOutputDescriptorDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+uint64_t hash_LDKSocketDescriptor_jcall(const void* this_arg) {
+       LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg;
+       return js_invoke_function_0(j_calls->hash_meth);
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* o_conv = (LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_StaticPaymentOutputDescriptorDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+static void LDKSocketDescriptor_JCalls_cloned(LDKSocketDescriptor* new_obj) {
+       LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
+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
 
-void  __attribute__((visibility("default"))) TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ _res_conv = *(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(_res_conv);
+       LDKSocketDescriptor ret = {
+               .this_arg = (void*) calls,
+               .send_data = send_data_LDKSocketDescriptor_jcall,
+               .disconnect_socket = disconnect_socket_LDKSocketDescriptor_jcall,
+               .eq = eq_LDKSocketDescriptor_jcall,
+               .hash = hash_LDKSocketDescriptor_jcall,
+               .cloned = LDKSocketDescriptor_JCalls_cloned,
+               .free = LDKSocketDescriptor_JCalls_free,
+       };
+       return ret;
 }
-
-static inline uint64_t CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone_ptr(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ");
-       *ret_conv = CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone(arg);
-       return (uint64_t)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;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* arg_conv = (LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_SocketDescriptor_send_data(uint32_t this_arg, int8_tArray data, jboolean resume_read) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKSocketDescriptor* this_arg_conv = (LDKSocketDescriptor*)this_arg_ptr;
+       LDKu8slice data_ref;
+       data_ref.datalen = data->arr_len;
+       data_ref.data = data->elems;
+       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_StaticPaymentOutputDescriptorDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* orig_conv = (LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ*)(orig & ~1);
-       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ");
-       *ret_conv = CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_SocketDescriptor_disconnect_socket(uint32_t this_arg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKSocketDescriptor* this_arg_conv = (LDKSocketDescriptor*)this_arg_ptr;
+       (this_arg_conv->disconnect_socket)(this_arg_conv->this_arg);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescriptorDecodeErrorZ_ok(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKSpendableOutputDescriptor o_conv = *(LDKSpendableOutputDescriptor*)(o_ptr);
-       o_conv = SpendableOutputDescriptor_clone((LDKSpendableOutputDescriptor*)(((uint64_t)o) & ~1));
-       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ), "LDKCResult_SpendableOutputDescriptorDecodeErrorZ");
-       *ret_conv = CResult_SpendableOutputDescriptorDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+int64_t  __attribute__((visibility("default"))) TS_SocketDescriptor_hash(uint32_t this_arg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKSocketDescriptor* this_arg_conv = (LDKSocketDescriptor*)this_arg_ptr;
+       int64_t ret_val = (this_arg_conv->hash)(this_arg_conv->this_arg);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescriptorDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ), "LDKCResult_SpendableOutputDescriptorDecodeErrorZ");
-       *ret_conv = CResult_SpendableOutputDescriptorDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+typedef struct LDKScore_JCalls {
+       atomic_size_t refcnt;
+       uint32_t channel_penalty_msat_meth;
+       uint32_t payment_path_failed_meth;
+       uint32_t payment_path_successful_meth;
+       uint32_t write_meth;
+} LDKScore_JCalls;
+static void LDKScore_JCalls_free(void* this_arg) {
+       LDKScore_JCalls *j_calls = (LDKScore_JCalls*) this_arg;
+       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
+               js_free_function_ptr(j_calls->channel_penalty_msat_meth);
+               js_free_function_ptr(j_calls->payment_path_failed_meth);
+               js_free_function_ptr(j_calls->payment_path_successful_meth);
+               js_free_function_ptr(j_calls->write_meth);
+               FREE(j_calls);
+       }
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescriptorDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* o_conv = (LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_SpendableOutputDescriptorDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+uint64_t channel_penalty_msat_LDKScore_jcall(const void* this_arg, uint64_t short_channel_id, uint64_t send_amt_msat, LDKCOption_u64Z channel_capacity_msat, const LDKNodeId * source, const LDKNodeId * target) {
+       LDKScore_JCalls *j_calls = (LDKScore_JCalls*) this_arg;
+       LDKCOption_u64Z *channel_capacity_msat_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
+       *channel_capacity_msat_copy = channel_capacity_msat;
+       uint64_t channel_capacity_msat_ref = (uint64_t)channel_capacity_msat_copy;
+       LDKNodeId source_var = *source;
+       uint64_t source_ref = 0;
+       source_var = NodeId_clone(source);
+       CHECK((((uint64_t)source_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&source_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(source_var);
+       source_ref = (uint64_t)source_var.inner;
+       if (source_var.is_owned) {
+               source_ref |= 1;
+       }
+       LDKNodeId target_var = *target;
+       uint64_t target_ref = 0;
+       target_var = NodeId_clone(target);
+       CHECK((((uint64_t)target_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&target_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(target_var);
+       target_ref = (uint64_t)target_var.inner;
+       if (target_var.is_owned) {
+               target_ref |= 1;
+       }
+       return js_invoke_function_5(j_calls->channel_penalty_msat_meth, (uint32_t)short_channel_id, (uint32_t)send_amt_msat, (uint32_t)channel_capacity_msat_ref, (uint32_t)source_ref, (uint32_t)target_ref);
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescriptorDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_SpendableOutputDescriptorDecodeErrorZ _res_conv = *(LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_SpendableOutputDescriptorDecodeErrorZ_free(_res_conv);
+void payment_path_failed_LDKScore_jcall(void* this_arg, LDKCVec_RouteHopZ path, uint64_t short_channel_id) {
+       LDKScore_JCalls *j_calls = (LDKScore_JCalls*) this_arg;
+       LDKCVec_RouteHopZ path_var = path;
+       uint32_tArray path_arr = NULL;
+       path_arr = init_uint32_tArray(path_var.datalen);
+       uint32_t *path_arr_ptr = (uint32_t*)(path_arr + 4);
+       for (size_t k = 0; k < path_var.datalen; k++) {
+               LDKRouteHop path_conv_10_var = path_var.data[k];
+               uint64_t path_conv_10_ref = 0;
+               CHECK((((uint64_t)path_conv_10_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&path_conv_10_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_var);
+               path_conv_10_ref = (uint64_t)path_conv_10_var.inner;
+               if (path_conv_10_var.is_owned) {
+                       path_conv_10_ref |= 1;
+               }
+               path_arr_ptr[k] = path_conv_10_ref;
+       }
+       
+       FREE(path_var.data);
+       js_invoke_function_2(j_calls->payment_path_failed_meth, (uint32_t)path_arr, (uint32_t)short_channel_id);
 }
-
-static inline uint64_t CResult_SpendableOutputDescriptorDecodeErrorZ_clone_ptr(LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ), "LDKCResult_SpendableOutputDescriptorDecodeErrorZ");
-       *ret_conv = CResult_SpendableOutputDescriptorDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+void payment_path_successful_LDKScore_jcall(void* this_arg, LDKCVec_RouteHopZ path) {
+       LDKScore_JCalls *j_calls = (LDKScore_JCalls*) this_arg;
+       LDKCVec_RouteHopZ path_var = path;
+       uint32_tArray path_arr = NULL;
+       path_arr = init_uint32_tArray(path_var.datalen);
+       uint32_t *path_arr_ptr = (uint32_t*)(path_arr + 4);
+       for (size_t k = 0; k < path_var.datalen; k++) {
+               LDKRouteHop path_conv_10_var = path_var.data[k];
+               uint64_t path_conv_10_ref = 0;
+               CHECK((((uint64_t)path_conv_10_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&path_conv_10_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_var);
+               path_conv_10_ref = (uint64_t)path_conv_10_var.inner;
+               if (path_conv_10_var.is_owned) {
+                       path_conv_10_ref |= 1;
+               }
+               path_arr_ptr[k] = path_conv_10_ref;
+       }
+       
+       FREE(path_var.data);
+       js_invoke_function_1(j_calls->payment_path_successful_meth, (uint32_t)path_arr);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescriptorDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* arg_conv = (LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_SpendableOutputDescriptorDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+LDKCVec_u8Z write_LDKScore_jcall(const void* this_arg) {
+       LDKScore_JCalls *j_calls = (LDKScore_JCalls*) this_arg;
+       int8_tArray ret = (int8_tArray)js_invoke_function_0(j_calls->write_meth);
+       LDKCVec_u8Z ret_ref;
+       ret_ref.datalen = ret->arr_len;
+       ret_ref.data = MALLOC(ret_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(ret_ref.data, ret->elems, ret_ref.datalen);
+       return ret_ref;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescriptorDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* orig_conv = (LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(orig & ~1);
-       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ), "LDKCResult_SpendableOutputDescriptorDecodeErrorZ");
-       *ret_conv = CResult_SpendableOutputDescriptorDecodeErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+static void LDKScore_JCalls_cloned(LDKScore* new_obj) {
+       LDKScore_JCalls *j_calls = (LDKScore_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
+static inline LDKScore LDKScore_init (/*TODO: JS Object Reference */void* o) {
+       LDKScore_JCalls *calls = MALLOC(sizeof(LDKScore_JCalls), "LDKScore_JCalls");
+       atomic_init(&calls->refcnt, 1);
+       //TODO: Assign calls->o from o
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneNoneZ_ok() {
-       LDKCResult_NoneNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneNoneZ), "LDKCResult_NoneNoneZ");
-       *ret_conv = CResult_NoneNoneZ_ok();
-       return (uint64_t)ret_conv;
+       LDKScore ret = {
+               .this_arg = (void*) calls,
+               .channel_penalty_msat = channel_penalty_msat_LDKScore_jcall,
+               .payment_path_failed = payment_path_failed_LDKScore_jcall,
+               .payment_path_successful = payment_path_successful_LDKScore_jcall,
+               .write = write_LDKScore_jcall,
+               .free = LDKScore_JCalls_free,
+       };
+       return ret;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneNoneZ_err() {
-       LDKCResult_NoneNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneNoneZ), "LDKCResult_NoneNoneZ");
-       *ret_conv = CResult_NoneNoneZ_err();
-       return (uint64_t)ret_conv;
+long  __attribute__((visibility("default"))) TS_LDKScore_new(/*TODO: JS Object Reference */void* o) {
+       LDKScore *res_ptr = MALLOC(sizeof(LDKScore), "LDKScore");
+       *res_ptr = LDKScore_init(o);
+       return (long)res_ptr;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_NoneNoneZ_is_ok(uint32_t o) {
-       LDKCResult_NoneNoneZ* o_conv = (LDKCResult_NoneNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_NoneNoneZ_is_ok(o_conv);
+int64_t  __attribute__((visibility("default"))) TS_Score_channel_penalty_msat(uint32_t this_arg, int64_t short_channel_id, int64_t send_amt_msat, uint32_t channel_capacity_msat, uint32_t source, uint32_t target) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKScore* this_arg_conv = (LDKScore*)this_arg_ptr;
+       void* channel_capacity_msat_ptr = (void*)(((uint64_t)channel_capacity_msat) & ~1);
+       CHECK_ACCESS(channel_capacity_msat_ptr);
+       LDKCOption_u64Z channel_capacity_msat_conv = *(LDKCOption_u64Z*)(channel_capacity_msat_ptr);
+       channel_capacity_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)channel_capacity_msat) & ~1));
+       LDKNodeId source_conv;
+       source_conv.inner = (void*)(source & (~1));
+       source_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(source_conv);
+       LDKNodeId target_conv;
+       target_conv.inner = (void*)(target & (~1));
+       target_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(target_conv);
+       int64_t ret_val = (this_arg_conv->channel_penalty_msat)(this_arg_conv->this_arg, short_channel_id, send_amt_msat, channel_capacity_msat_conv, &source_conv, &target_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_NoneNoneZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_NoneNoneZ _res_conv = *(LDKCResult_NoneNoneZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_NoneNoneZ_free(_res_conv);
+void  __attribute__((visibility("default"))) TS_Score_payment_path_failed(uint32_t this_arg, uint32_tArray path, int64_t short_channel_id) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKScore* this_arg_conv = (LDKScore*)this_arg_ptr;
+       LDKCVec_RouteHopZ path_constr;
+       path_constr.datalen = path->arr_len;
+       if (path_constr.datalen > 0)
+               path_constr.data = MALLOC(path_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements");
+       else
+               path_constr.data = NULL;
+       uint32_t* path_vals = path->elems;
+       for (size_t k = 0; k < path_constr.datalen; k++) {
+               uint32_t path_conv_10 = path_vals[k];
+               LDKRouteHop path_conv_10_conv;
+               path_conv_10_conv.inner = (void*)(path_conv_10 & (~1));
+               path_conv_10_conv.is_owned = (path_conv_10 & 1) || (path_conv_10 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_conv);
+               path_conv_10_conv = RouteHop_clone(&path_conv_10_conv);
+               path_constr.data[k] = path_conv_10_conv;
+       }
+       (this_arg_conv->payment_path_failed)(this_arg_conv->this_arg, path_constr, short_channel_id);
 }
 
-static inline uint64_t CResult_NoneNoneZ_clone_ptr(LDKCResult_NoneNoneZ *NONNULL_PTR arg) {
-       LDKCResult_NoneNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneNoneZ), "LDKCResult_NoneNoneZ");
-       *ret_conv = CResult_NoneNoneZ_clone(arg);
-       return (uint64_t)ret_conv;
-}
-int64_t  __attribute__((visibility("default"))) TS_CResult_NoneNoneZ_clone_ptr(uint32_t arg) {
-       LDKCResult_NoneNoneZ* arg_conv = (LDKCResult_NoneNoneZ*)(arg & ~1);
-       int64_t ret_val = CResult_NoneNoneZ_clone_ptr(arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_Score_payment_path_successful(uint32_t this_arg, uint32_tArray path) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKScore* this_arg_conv = (LDKScore*)this_arg_ptr;
+       LDKCVec_RouteHopZ path_constr;
+       path_constr.datalen = path->arr_len;
+       if (path_constr.datalen > 0)
+               path_constr.data = MALLOC(path_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements");
+       else
+               path_constr.data = NULL;
+       uint32_t* path_vals = path->elems;
+       for (size_t k = 0; k < path_constr.datalen; k++) {
+               uint32_t path_conv_10 = path_vals[k];
+               LDKRouteHop path_conv_10_conv;
+               path_conv_10_conv.inner = (void*)(path_conv_10 & (~1));
+               path_conv_10_conv.is_owned = (path_conv_10 & 1) || (path_conv_10 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_conv);
+               path_conv_10_conv = RouteHop_clone(&path_conv_10_conv);
+               path_constr.data[k] = path_conv_10_conv;
+       }
+       (this_arg_conv->payment_path_successful)(this_arg_conv->this_arg, path_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneNoneZ_clone(uint32_t orig) {
-       LDKCResult_NoneNoneZ* orig_conv = (LDKCResult_NoneNoneZ*)(orig & ~1);
-       LDKCResult_NoneNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneNoneZ), "LDKCResult_NoneNoneZ");
-       *ret_conv = CResult_NoneNoneZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_Score_write(uint32_t this_arg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKScore* this_arg_conv = (LDKScore*)this_arg_ptr;
+       LDKCVec_u8Z ret_var = (this_arg_conv->write)(this_arg_conv->this_arg);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-static inline uint64_t C2Tuple_SignatureCVec_SignatureZZ_clone_ptr(LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR arg) {
-       LDKC2Tuple_SignatureCVec_SignatureZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ), "LDKC2Tuple_SignatureCVec_SignatureZZ");
-       *ret_conv = C2Tuple_SignatureCVec_SignatureZZ_clone(arg);
-       return ((uint64_t)ret_conv);
+typedef struct LDKLockableScore_JCalls {
+       atomic_size_t refcnt;
+       uint32_t lock_meth;
+} LDKLockableScore_JCalls;
+static void LDKLockableScore_JCalls_free(void* this_arg) {
+       LDKLockableScore_JCalls *j_calls = (LDKLockableScore_JCalls*) this_arg;
+       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
+               js_free_function_ptr(j_calls->lock_meth);
+               FREE(j_calls);
+       }
 }
-int64_t  __attribute__((visibility("default"))) TS_C2Tuple_SignatureCVec_SignatureZZ_clone_ptr(uint32_t arg) {
-       LDKC2Tuple_SignatureCVec_SignatureZZ* arg_conv = (LDKC2Tuple_SignatureCVec_SignatureZZ*)(arg & ~1);
-       int64_t ret_val = C2Tuple_SignatureCVec_SignatureZZ_clone_ptr(arg_conv);
-       return ret_val;
+LDKScore lock_LDKLockableScore_jcall(const void* this_arg) {
+       LDKLockableScore_JCalls *j_calls = (LDKLockableScore_JCalls*) this_arg;
+       uint32_t ret = js_invoke_function_0(j_calls->lock_meth);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKScore ret_conv = *(LDKScore*)(ret_ptr);// Warning: we may need a move here but no clone is available for LDKScore
+       
+       return ret_conv;
 }
-
-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_conv = MALLOC(sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ), "LDKC2Tuple_SignatureCVec_SignatureZZ");
-       *ret_conv = C2Tuple_SignatureCVec_SignatureZZ_clone(orig_conv);
-       return ((uint64_t)ret_conv);
+static void LDKLockableScore_JCalls_cloned(LDKLockableScore* new_obj) {
+       LDKLockableScore_JCalls *j_calls = (LDKLockableScore_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_SignatureCVec_SignatureZZ_new(int8_tArray a, ptrArray b) {
-       LDKSignature a_ref;
-       CHECK(*((uint32_t*)a) == 64);
-       memcpy(a_ref.compact_form, (uint8_t*)(a + 4), 64);
-       LDKCVec_SignatureZ b_constr;
-       b_constr.datalen = *((uint32_t*)b);
-       if (b_constr.datalen > 0)
-               b_constr.data = MALLOC(b_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ Elements");
-       else
-               b_constr.data = NULL;
-       int8_tArray* b_vals = (int8_tArray*)(b + 4);
-       for (size_t m = 0; m < b_constr.datalen; m++) {
-               int8_tArray b_conv_12 = b_vals[m];
-               LDKSignature b_conv_12_ref;
-               CHECK(*((uint32_t*)b_conv_12) == 64);
-               memcpy(b_conv_12_ref.compact_form, (uint8_t*)(b_conv_12 + 4), 64);
-               b_constr.data[m] = b_conv_12_ref;
-       }
-       LDKC2Tuple_SignatureCVec_SignatureZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ), "LDKC2Tuple_SignatureCVec_SignatureZZ");
-       *ret_conv = C2Tuple_SignatureCVec_SignatureZZ_new(a_ref, b_constr);
-       return ((uint64_t)ret_conv);
+static inline LDKLockableScore LDKLockableScore_init (/*TODO: JS Object Reference */void* o) {
+       LDKLockableScore_JCalls *calls = MALLOC(sizeof(LDKLockableScore_JCalls), "LDKLockableScore_JCalls");
+       atomic_init(&calls->refcnt, 1);
+       //TODO: Assign calls->o from o
+
+       LDKLockableScore ret = {
+               .this_arg = (void*) calls,
+               .lock = lock_LDKLockableScore_jcall,
+               .free = LDKLockableScore_JCalls_free,
+       };
+       return ret;
+}
+long  __attribute__((visibility("default"))) TS_LDKLockableScore_new(/*TODO: JS Object Reference */void* o) {
+       LDKLockableScore *res_ptr = MALLOC(sizeof(LDKLockableScore), "LDKLockableScore");
+       *res_ptr = LDKLockableScore_init(o);
+       return (long)res_ptr;
+}
+uint32_t  __attribute__((visibility("default"))) TS_LockableScore_lock(uint32_t this_arg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKLockableScore* this_arg_conv = (LDKLockableScore*)this_arg_ptr;
+       LDKScore* ret_ret = MALLOC(sizeof(LDKScore), "LDKScore");
+       *ret_ret = (this_arg_conv->lock)(this_arg_conv->this_arg);
+       return (uint64_t)ret_ret;
 }
 
-void  __attribute__((visibility("default"))) TS_C2Tuple_SignatureCVec_SignatureZZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKC2Tuple_SignatureCVec_SignatureZZ _res_conv = *(LDKC2Tuple_SignatureCVec_SignatureZZ*)(_res_ptr);
-       FREE((void*)_res);
-       C2Tuple_SignatureCVec_SignatureZZ_free(_res_conv);
+jstring  __attribute__((visibility("default"))) TS__ldk_get_compiled_version() {
+       LDKStr ret_str = _ldk_get_compiled_version();
+       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
+       Str_free(ret_str);
+       return ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKC2Tuple_SignatureCVec_SignatureZZ o_conv = *(LDKC2Tuple_SignatureCVec_SignatureZZ*)(o_ptr);
-       o_conv = C2Tuple_SignatureCVec_SignatureZZ_clone((LDKC2Tuple_SignatureCVec_SignatureZZ*)(((uint64_t)o) & ~1));
-       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ), "LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ");
-       *ret_conv = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+jstring  __attribute__((visibility("default"))) TS__ldk_c_bindings_get_compiled_version() {
+       LDKStr ret_str = _ldk_c_bindings_get_compiled_version();
+       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
+       Str_free(ret_str);
+       return ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err() {
-       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ), "LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ");
-       *ret_conv = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err();
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_Transaction_free(int8_tArray _res) {
+       LDKTransaction _res_ref;
+       _res_ref.datalen = _res->arr_len;
+       _res_ref.data = MALLOC(_res_ref.datalen, "LDKTransaction Bytes");
+       memcpy(_res_ref.data, _res->elems, _res_ref.datalen);
+       _res_ref.data_is_owned = true;
+       Transaction_free(_res_ref);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_is_ok(uint32_t o) {
-       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* o_conv = (LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_is_ok(o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_TxOut_new(int8_tArray script_pubkey, int64_t value) {
+       LDKCVec_u8Z script_pubkey_ref;
+       script_pubkey_ref.datalen = script_pubkey->arr_len;
+       script_pubkey_ref.data = MALLOC(script_pubkey_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(script_pubkey_ref.data, script_pubkey->elems, script_pubkey_ref.datalen);
+       LDKTxOut* ret_ref = MALLOC(sizeof(LDKTxOut), "LDKTxOut");
+       *ret_ref = TxOut_new(script_pubkey_ref, value);
+       return (uint64_t)ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_TxOut_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ _res_conv = *(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(_res_ptr);
+       LDKTxOut _res_conv = *(LDKTxOut*)(_res_ptr);
        FREE((void*)_res);
-       CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(_res_conv);
+       TxOut_free(_res_conv);
 }
 
-static inline uint64_t CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone_ptr(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR arg) {
-       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ), "LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ");
-       *ret_conv = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline uint64_t TxOut_clone_ptr(LDKTxOut *NONNULL_PTR arg) {
+       LDKTxOut* ret_ref = MALLOC(sizeof(LDKTxOut), "LDKTxOut");
+       *ret_ref = TxOut_clone(arg);
+       return (uint64_t)ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone_ptr(uint32_t arg) {
-       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* arg_conv = (LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(arg & ~1);
-       int64_t ret_val = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_TxOut_clone_ptr(uint32_t arg) {
+       LDKTxOut* arg_conv = (LDKTxOut*)(arg & ~1);
+       int64_t ret_val = TxOut_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(uint32_t orig) {
-       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* orig_conv = (LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(orig & ~1);
-       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ), "LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ");
-       *ret_conv = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(orig_conv);
-       return (uint64_t)ret_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 (uint64_t)ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SignatureNoneZ_ok(int8_tArray o) {
-       LDKSignature o_ref;
-       CHECK(*((uint32_t*)o) == 64);
-       memcpy(o_ref.compact_form, (uint8_t*)(o + 4), 64);
-       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
-       *ret_conv = CResult_SignatureNoneZ_ok(o_ref);
+void  __attribute__((visibility("default"))) TS_Str_free(jstring _res) {
+       LDKStr dummy = { .chars = NULL, .len = 0, .chars_is_owned = false };
+       Str_free(dummy);
+}
+
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = ChannelConfig_clone(&o_conv);
+       LDKCResult_ChannelConfigDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelConfigDecodeErrorZ), "LDKCResult_ChannelConfigDecodeErrorZ");
+       *ret_conv = CResult_ChannelConfigDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SignatureNoneZ_err() {
-       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
-       *ret_conv = CResult_SignatureNoneZ_err();
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_ChannelConfigDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelConfigDecodeErrorZ), "LDKCResult_ChannelConfigDecodeErrorZ");
+       *ret_conv = CResult_ChannelConfigDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_SignatureNoneZ_is_ok(uint32_t o) {
-       LDKCResult_SignatureNoneZ* o_conv = (LDKCResult_SignatureNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_SignatureNoneZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelConfigDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ChannelConfigDecodeErrorZ* o_conv = (LDKCResult_ChannelConfigDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ChannelConfigDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_SignatureNoneZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ChannelConfigDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_SignatureNoneZ _res_conv = *(LDKCResult_SignatureNoneZ*)(_res_ptr);
+       LDKCResult_ChannelConfigDecodeErrorZ _res_conv = *(LDKCResult_ChannelConfigDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_SignatureNoneZ_free(_res_conv);
+       CResult_ChannelConfigDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_SignatureNoneZ_clone_ptr(LDKCResult_SignatureNoneZ *NONNULL_PTR arg) {
-       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
-       *ret_conv = CResult_SignatureNoneZ_clone(arg);
+static inline uint64_t CResult_ChannelConfigDecodeErrorZ_clone_ptr(LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_ChannelConfigDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelConfigDecodeErrorZ), "LDKCResult_ChannelConfigDecodeErrorZ");
+       *ret_conv = CResult_ChannelConfigDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_SignatureNoneZ_clone_ptr(uint32_t arg) {
-       LDKCResult_SignatureNoneZ* arg_conv = (LDKCResult_SignatureNoneZ*)(arg & ~1);
-       int64_t ret_val = CResult_SignatureNoneZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_ChannelConfigDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ChannelConfigDecodeErrorZ* arg_conv = (LDKCResult_ChannelConfigDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_ChannelConfigDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SignatureNoneZ_clone(uint32_t orig) {
-       LDKCResult_SignatureNoneZ* orig_conv = (LDKCResult_SignatureNoneZ*)(orig & ~1);
-       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
-       *ret_conv = CResult_SignatureNoneZ_clone(orig_conv);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SignDecodeErrorZ_ok(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKSign o_conv = *(LDKSign*)(o_ptr);
-       LDKCResult_SignDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SignDecodeErrorZ), "LDKCResult_SignDecodeErrorZ");
-       *ret_conv = CResult_SignDecodeErrorZ_ok(o_conv);
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = OutPoint_clone(&o_conv);
+       LDKCResult_OutPointDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OutPointDecodeErrorZ), "LDKCResult_OutPointDecodeErrorZ");
+       *ret_conv = CResult_OutPointDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SignDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_SignDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SignDecodeErrorZ), "LDKCResult_SignDecodeErrorZ");
-       *ret_conv = CResult_SignDecodeErrorZ_err(e_conv);
+       LDKCResult_OutPointDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OutPointDecodeErrorZ), "LDKCResult_OutPointDecodeErrorZ");
+       *ret_conv = CResult_OutPointDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_SignDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_SignDecodeErrorZ* o_conv = (LDKCResult_SignDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_SignDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_OutPointDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_OutPointDecodeErrorZ* o_conv = (LDKCResult_OutPointDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_OutPointDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_SignDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_OutPointDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_SignDecodeErrorZ _res_conv = *(LDKCResult_SignDecodeErrorZ*)(_res_ptr);
+       LDKCResult_OutPointDecodeErrorZ _res_conv = *(LDKCResult_OutPointDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_SignDecodeErrorZ_free(_res_conv);
+       CResult_OutPointDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_SignDecodeErrorZ_clone_ptr(LDKCResult_SignDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_SignDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SignDecodeErrorZ), "LDKCResult_SignDecodeErrorZ");
-       *ret_conv = CResult_SignDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_OutPointDecodeErrorZ_clone_ptr(LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_OutPointDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OutPointDecodeErrorZ), "LDKCResult_OutPointDecodeErrorZ");
+       *ret_conv = CResult_OutPointDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_SignDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_SignDecodeErrorZ* arg_conv = (LDKCResult_SignDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_SignDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_OutPointDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_OutPointDecodeErrorZ* arg_conv = (LDKCResult_OutPointDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_OutPointDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SignDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_SignDecodeErrorZ* orig_conv = (LDKCResult_SignDecodeErrorZ*)(orig & ~1);
-       LDKCResult_SignDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SignDecodeErrorZ), "LDKCResult_SignDecodeErrorZ");
-       *ret_conv = CResult_SignDecodeErrorZ_clone(orig_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 (uint64_t)ret_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_SecretKeyErrorZ_ok(int8_tArray o) {
+       LDKSecretKey o_ref;
+       CHECK(o->arr_len == 32);
+       memcpy(o_ref.bytes, o->elems, 32);
+       LDKCResult_SecretKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SecretKeyErrorZ), "LDKCResult_SecretKeyErrorZ");
+       *ret_conv = CResult_SecretKeyErrorZ_ok(o_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RecoverableSignatureNoneZ_ok(int8_tArray arg) {
-       LDKRecoverableSignature arg_ref;
-       CHECK(*((uint32_t*)arg) == 68);
-       memcpy(arg_ref.serialized_form, (uint8_t*)(arg + 4), 68);
-       LDKCResult_RecoverableSignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_RecoverableSignatureNoneZ), "LDKCResult_RecoverableSignatureNoneZ");
-       *ret_conv = CResult_RecoverableSignatureNoneZ_ok(arg_ref);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RecoverableSignatureNoneZ_err() {
-       LDKCResult_RecoverableSignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_RecoverableSignatureNoneZ), "LDKCResult_RecoverableSignatureNoneZ");
-       *ret_conv = CResult_RecoverableSignatureNoneZ_err();
+jboolean  __attribute__((visibility("default"))) TS_CResult_SecretKeyErrorZ_is_ok(uint32_t o) {
+       LDKCResult_SecretKeyErrorZ* o_conv = (LDKCResult_SecretKeyErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_SecretKeyErrorZ_is_ok(o_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_CResult_SecretKeyErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_SecretKeyErrorZ _res_conv = *(LDKCResult_SecretKeyErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_SecretKeyErrorZ_free(_res_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PublicKeyErrorZ_ok(int8_tArray o) {
+       LDKPublicKey o_ref;
+       CHECK(o->arr_len == 33);
+       memcpy(o_ref.compressed_form, o->elems, 33);
+       LDKCResult_PublicKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeyErrorZ), "LDKCResult_PublicKeyErrorZ");
+       *ret_conv = CResult_PublicKeyErrorZ_ok(o_ref);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_RecoverableSignatureNoneZ_is_ok(uint32_t o) {
-       LDKCResult_RecoverableSignatureNoneZ* o_conv = (LDKCResult_RecoverableSignatureNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_RecoverableSignatureNoneZ_is_ok(o_conv);
+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 (uint64_t)ret_conv;
+}
+
+jboolean  __attribute__((visibility("default"))) TS_CResult_PublicKeyErrorZ_is_ok(uint32_t o) {
+       LDKCResult_PublicKeyErrorZ* o_conv = (LDKCResult_PublicKeyErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_PublicKeyErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_RecoverableSignatureNoneZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_PublicKeyErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_RecoverableSignatureNoneZ _res_conv = *(LDKCResult_RecoverableSignatureNoneZ*)(_res_ptr);
+       LDKCResult_PublicKeyErrorZ _res_conv = *(LDKCResult_PublicKeyErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_RecoverableSignatureNoneZ_free(_res_conv);
+       CResult_PublicKeyErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_RecoverableSignatureNoneZ_clone_ptr(LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR arg) {
-       LDKCResult_RecoverableSignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_RecoverableSignatureNoneZ), "LDKCResult_RecoverableSignatureNoneZ");
-       *ret_conv = CResult_RecoverableSignatureNoneZ_clone(arg);
+static inline uint64_t CResult_PublicKeyErrorZ_clone_ptr(LDKCResult_PublicKeyErrorZ *NONNULL_PTR arg) {
+       LDKCResult_PublicKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeyErrorZ), "LDKCResult_PublicKeyErrorZ");
+       *ret_conv = CResult_PublicKeyErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_RecoverableSignatureNoneZ_clone_ptr(uint32_t arg) {
-       LDKCResult_RecoverableSignatureNoneZ* arg_conv = (LDKCResult_RecoverableSignatureNoneZ*)(arg & ~1);
-       int64_t ret_val = CResult_RecoverableSignatureNoneZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_PublicKeyErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_PublicKeyErrorZ* arg_conv = (LDKCResult_PublicKeyErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_PublicKeyErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RecoverableSignatureNoneZ_clone(uint32_t orig) {
-       LDKCResult_RecoverableSignatureNoneZ* orig_conv = (LDKCResult_RecoverableSignatureNoneZ*)(orig & ~1);
-       LDKCResult_RecoverableSignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_RecoverableSignatureNoneZ), "LDKCResult_RecoverableSignatureNoneZ");
-       *ret_conv = CResult_RecoverableSignatureNoneZ_clone(orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PublicKeyErrorZ_clone(uint32_t orig) {
+       LDKCResult_PublicKeyErrorZ* orig_conv = (LDKCResult_PublicKeyErrorZ*)(orig & ~1);
+       LDKCResult_PublicKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeyErrorZ), "LDKCResult_PublicKeyErrorZ");
+       *ret_conv = CResult_PublicKeyErrorZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_CVec_CVec_u8ZZ_free(ptrArray _res) {
-       LDKCVec_CVec_u8ZZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKCVec_u8Z), "LDKCVec_CVec_u8ZZ 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 _res_conv_12 = _res_vals[m];
-               LDKCVec_u8Z _res_conv_12_ref;
-               _res_conv_12_ref.datalen = *((uint32_t*)_res_conv_12);
-               _res_conv_12_ref.data = MALLOC(_res_conv_12_ref.datalen, "LDKCVec_u8Z Bytes");
-               memcpy(_res_conv_12_ref.data, (uint8_t*)(_res_conv_12 + 4), _res_conv_12_ref.datalen);
-               _res_constr.data[m] = _res_conv_12_ref;
-       }
-       CVec_CVec_u8ZZ_free(_res_constr);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_CVec_CVec_u8ZZNoneZ_ok(ptrArray o) {
-       LDKCVec_CVec_u8ZZ o_constr;
-       o_constr.datalen = *((uint32_t*)o);
-       if (o_constr.datalen > 0)
-               o_constr.data = MALLOC(o_constr.datalen * sizeof(LDKCVec_u8Z), "LDKCVec_CVec_u8ZZ 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 o_conv_12 = o_vals[m];
-               LDKCVec_u8Z o_conv_12_ref;
-               o_conv_12_ref.datalen = *((uint32_t*)o_conv_12);
-               o_conv_12_ref.data = MALLOC(o_conv_12_ref.datalen, "LDKCVec_u8Z Bytes");
-               memcpy(o_conv_12_ref.data, (uint8_t*)(o_conv_12 + 4), o_conv_12_ref.datalen);
-               o_constr.data[m] = o_conv_12_ref;
-       }
-       LDKCResult_CVec_CVec_u8ZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ), "LDKCResult_CVec_CVec_u8ZZNoneZ");
-       *ret_conv = CResult_CVec_CVec_u8ZZNoneZ_ok(o_constr);
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = TxCreationKeys_clone(&o_conv);
+       LDKCResult_TxCreationKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysDecodeErrorZ), "LDKCResult_TxCreationKeysDecodeErrorZ");
+       *ret_conv = CResult_TxCreationKeysDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_CVec_CVec_u8ZZNoneZ_err() {
-       LDKCResult_CVec_CVec_u8ZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ), "LDKCResult_CVec_CVec_u8ZZNoneZ");
-       *ret_conv = CResult_CVec_CVec_u8ZZNoneZ_err();
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_TxCreationKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysDecodeErrorZ), "LDKCResult_TxCreationKeysDecodeErrorZ");
+       *ret_conv = CResult_TxCreationKeysDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_CVec_CVec_u8ZZNoneZ_is_ok(uint32_t o) {
-       LDKCResult_CVec_CVec_u8ZZNoneZ* o_conv = (LDKCResult_CVec_CVec_u8ZZNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_CVec_CVec_u8ZZNoneZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_TxCreationKeysDecodeErrorZ* o_conv = (LDKCResult_TxCreationKeysDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_TxCreationKeysDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_CVec_CVec_u8ZZNoneZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_CVec_CVec_u8ZZNoneZ _res_conv = *(LDKCResult_CVec_CVec_u8ZZNoneZ*)(_res_ptr);
+       LDKCResult_TxCreationKeysDecodeErrorZ _res_conv = *(LDKCResult_TxCreationKeysDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_CVec_CVec_u8ZZNoneZ_free(_res_conv);
+       CResult_TxCreationKeysDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_CVec_CVec_u8ZZNoneZ_clone_ptr(LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR arg) {
-       LDKCResult_CVec_CVec_u8ZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ), "LDKCResult_CVec_CVec_u8ZZNoneZ");
-       *ret_conv = CResult_CVec_CVec_u8ZZNoneZ_clone(arg);
+static inline uint64_t CResult_TxCreationKeysDecodeErrorZ_clone_ptr(LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_TxCreationKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysDecodeErrorZ), "LDKCResult_TxCreationKeysDecodeErrorZ");
+       *ret_conv = CResult_TxCreationKeysDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_CVec_CVec_u8ZZNoneZ_clone_ptr(uint32_t arg) {
-       LDKCResult_CVec_CVec_u8ZZNoneZ* arg_conv = (LDKCResult_CVec_CVec_u8ZZNoneZ*)(arg & ~1);
-       int64_t ret_val = CResult_CVec_CVec_u8ZZNoneZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_TxCreationKeysDecodeErrorZ* arg_conv = (LDKCResult_TxCreationKeysDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_TxCreationKeysDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_CVec_CVec_u8ZZNoneZ_clone(uint32_t orig) {
-       LDKCResult_CVec_CVec_u8ZZNoneZ* orig_conv = (LDKCResult_CVec_CVec_u8ZZNoneZ*)(orig & ~1);
-       LDKCResult_CVec_CVec_u8ZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ), "LDKCResult_CVec_CVec_u8ZZNoneZ");
-       *ret_conv = CResult_CVec_CVec_u8ZZNoneZ_clone(orig_conv);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InMemorySignerDecodeErrorZ_ok(uint32_t o) {
-       LDKInMemorySigner o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = InMemorySigner_clone(&o_conv);
-       LDKCResult_InMemorySignerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InMemorySignerDecodeErrorZ), "LDKCResult_InMemorySignerDecodeErrorZ");
-       *ret_conv = CResult_InMemorySignerDecodeErrorZ_ok(o_conv);
+       o_conv = ChannelPublicKeys_clone(&o_conv);
+       LDKCResult_ChannelPublicKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ), "LDKCResult_ChannelPublicKeysDecodeErrorZ");
+       *ret_conv = CResult_ChannelPublicKeysDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InMemorySignerDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_InMemorySignerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InMemorySignerDecodeErrorZ), "LDKCResult_InMemorySignerDecodeErrorZ");
-       *ret_conv = CResult_InMemorySignerDecodeErrorZ_err(e_conv);
+       LDKCResult_ChannelPublicKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ), "LDKCResult_ChannelPublicKeysDecodeErrorZ");
+       *ret_conv = CResult_ChannelPublicKeysDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_InMemorySignerDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_InMemorySignerDecodeErrorZ* o_conv = (LDKCResult_InMemorySignerDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_InMemorySignerDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelPublicKeysDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ChannelPublicKeysDecodeErrorZ* o_conv = (LDKCResult_ChannelPublicKeysDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ChannelPublicKeysDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_InMemorySignerDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ChannelPublicKeysDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_InMemorySignerDecodeErrorZ _res_conv = *(LDKCResult_InMemorySignerDecodeErrorZ*)(_res_ptr);
+       LDKCResult_ChannelPublicKeysDecodeErrorZ _res_conv = *(LDKCResult_ChannelPublicKeysDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_InMemorySignerDecodeErrorZ_free(_res_conv);
+       CResult_ChannelPublicKeysDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_InMemorySignerDecodeErrorZ_clone_ptr(LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_InMemorySignerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InMemorySignerDecodeErrorZ), "LDKCResult_InMemorySignerDecodeErrorZ");
-       *ret_conv = CResult_InMemorySignerDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_ChannelPublicKeysDecodeErrorZ_clone_ptr(LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_ChannelPublicKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ), "LDKCResult_ChannelPublicKeysDecodeErrorZ");
+       *ret_conv = CResult_ChannelPublicKeysDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_InMemorySignerDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_InMemorySignerDecodeErrorZ* arg_conv = (LDKCResult_InMemorySignerDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_InMemorySignerDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_ChannelPublicKeysDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ChannelPublicKeysDecodeErrorZ* arg_conv = (LDKCResult_ChannelPublicKeysDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_ChannelPublicKeysDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InMemorySignerDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_InMemorySignerDecodeErrorZ* orig_conv = (LDKCResult_InMemorySignerDecodeErrorZ*)(orig & ~1);
-       LDKCResult_InMemorySignerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InMemorySignerDecodeErrorZ), "LDKCResult_InMemorySignerDecodeErrorZ");
-       *ret_conv = CResult_InMemorySignerDecodeErrorZ_clone(orig_conv);
+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 (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_CVec_TxOutZ_free(uint32_tArray _res) {
-       LDKCVec_TxOutZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKTxOut), "LDKCVec_TxOutZ 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 _res_conv_7 = _res_vals[h];
-               void* _res_conv_7_ptr = (void*)(((uint64_t)_res_conv_7) & ~1);
-               CHECK_ACCESS(_res_conv_7_ptr);
-               LDKTxOut _res_conv_7_conv = *(LDKTxOut*)(_res_conv_7_ptr);
-               FREE((void*)_res_conv_7);
-               _res_constr.data[h] = _res_conv_7_conv;
-       }
-       CVec_TxOutZ_free(_res_constr);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_TransactionNoneZ_ok(int8_tArray o) {
-       LDKTransaction o_ref;
-       o_ref.datalen = *((uint32_t*)o);
-       o_ref.data = MALLOC(o_ref.datalen, "LDKTransaction Bytes");
-       memcpy(o_ref.data, (uint8_t*)(o + 4), o_ref.datalen);
-       o_ref.data_is_owned = true;
-       LDKCResult_TransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TransactionNoneZ), "LDKCResult_TransactionNoneZ");
-       *ret_conv = CResult_TransactionNoneZ_ok(o_ref);
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = TxCreationKeys_clone(&o_conv);
+       LDKCResult_TxCreationKeysErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysErrorZ), "LDKCResult_TxCreationKeysErrorZ");
+       *ret_conv = CResult_TxCreationKeysErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_TransactionNoneZ_err() {
-       LDKCResult_TransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TransactionNoneZ), "LDKCResult_TransactionNoneZ");
-       *ret_conv = CResult_TransactionNoneZ_err();
+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 (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_TransactionNoneZ_is_ok(uint32_t o) {
-       LDKCResult_TransactionNoneZ* o_conv = (LDKCResult_TransactionNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_TransactionNoneZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysErrorZ_is_ok(uint32_t o) {
+       LDKCResult_TxCreationKeysErrorZ* o_conv = (LDKCResult_TxCreationKeysErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_TxCreationKeysErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_TransactionNoneZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_TransactionNoneZ _res_conv = *(LDKCResult_TransactionNoneZ*)(_res_ptr);
+       LDKCResult_TxCreationKeysErrorZ _res_conv = *(LDKCResult_TxCreationKeysErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_TransactionNoneZ_free(_res_conv);
+       CResult_TxCreationKeysErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_TransactionNoneZ_clone_ptr(LDKCResult_TransactionNoneZ *NONNULL_PTR arg) {
-       LDKCResult_TransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TransactionNoneZ), "LDKCResult_TransactionNoneZ");
-       *ret_conv = CResult_TransactionNoneZ_clone(arg);
+static inline uint64_t CResult_TxCreationKeysErrorZ_clone_ptr(LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR arg) {
+       LDKCResult_TxCreationKeysErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysErrorZ), "LDKCResult_TxCreationKeysErrorZ");
+       *ret_conv = CResult_TxCreationKeysErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_TransactionNoneZ_clone_ptr(uint32_t arg) {
-       LDKCResult_TransactionNoneZ* arg_conv = (LDKCResult_TransactionNoneZ*)(arg & ~1);
-       int64_t ret_val = CResult_TransactionNoneZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_TxCreationKeysErrorZ* arg_conv = (LDKCResult_TxCreationKeysErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_TxCreationKeysErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_TransactionNoneZ_clone(uint32_t orig) {
-       LDKCResult_TransactionNoneZ* orig_conv = (LDKCResult_TransactionNoneZ*)(orig & ~1);
-       LDKCResult_TransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TransactionNoneZ), "LDKCResult_TransactionNoneZ");
-       *ret_conv = CResult_TransactionNoneZ_clone(orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysErrorZ_clone(uint32_t orig) {
+       LDKCResult_TxCreationKeysErrorZ* orig_conv = (LDKCResult_TxCreationKeysErrorZ*)(orig & ~1);
+       LDKCResult_TxCreationKeysErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysErrorZ), "LDKCResult_TxCreationKeysErrorZ");
+       *ret_conv = CResult_TxCreationKeysErrorZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-static inline uint64_t C2Tuple_BlockHashChannelMonitorZ_clone_ptr(LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR arg) {
-       LDKC2Tuple_BlockHashChannelMonitorZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelMonitorZ), "LDKC2Tuple_BlockHashChannelMonitorZ");
-       *ret_conv = C2Tuple_BlockHashChannelMonitorZ_clone(arg);
-       return ((uint64_t)ret_conv);
-}
-int64_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_clone_ptr(uint32_t arg) {
-       LDKC2Tuple_BlockHashChannelMonitorZ* arg_conv = (LDKC2Tuple_BlockHashChannelMonitorZ*)(arg & ~1);
-       int64_t ret_val = C2Tuple_BlockHashChannelMonitorZ_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_clone(uint32_t orig) {
-       LDKC2Tuple_BlockHashChannelMonitorZ* orig_conv = (LDKC2Tuple_BlockHashChannelMonitorZ*)(orig & ~1);
-       LDKC2Tuple_BlockHashChannelMonitorZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelMonitorZ), "LDKC2Tuple_BlockHashChannelMonitorZ");
-       *ret_conv = C2Tuple_BlockHashChannelMonitorZ_clone(orig_conv);
-       return ((uint64_t)ret_conv);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_new(int8_tArray a, uint32_t b) {
-       LDKThirtyTwoBytes a_ref;
-       CHECK(*((uint32_t*)a) == 32);
-       memcpy(a_ref.data, (uint8_t*)(a + 4), 32);
-       LDKChannelMonitor b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = (b & 1) || (b == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       b_conv = ChannelMonitor_clone(&b_conv);
-       LDKC2Tuple_BlockHashChannelMonitorZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelMonitorZ), "LDKC2Tuple_BlockHashChannelMonitorZ");
-       *ret_conv = C2Tuple_BlockHashChannelMonitorZ_new(a_ref, b_conv);
-       return ((uint64_t)ret_conv);
+uint32_t  __attribute__((visibility("default"))) TS_COption_u32Z_some(int32_t o) {
+       LDKCOption_u32Z *ret_copy = MALLOC(sizeof(LDKCOption_u32Z), "LDKCOption_u32Z");
+       *ret_copy = COption_u32Z_some(o);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_free(uint32_t _res) {
+uint32_t  __attribute__((visibility("default"))) TS_COption_u32Z_none() {
+       LDKCOption_u32Z *ret_copy = MALLOC(sizeof(LDKCOption_u32Z), "LDKCOption_u32Z");
+       *ret_copy = COption_u32Z_none();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+void  __attribute__((visibility("default"))) TS_COption_u32Z_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKC2Tuple_BlockHashChannelMonitorZ _res_conv = *(LDKC2Tuple_BlockHashChannelMonitorZ*)(_res_ptr);
+       LDKCOption_u32Z _res_conv = *(LDKCOption_u32Z*)(_res_ptr);
        FREE((void*)_res);
-       C2Tuple_BlockHashChannelMonitorZ_free(_res_conv);
+       COption_u32Z_free(_res_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_CVec_C2Tuple_BlockHashChannelMonitorZZ_free(uint32_tArray _res) {
-       LDKCVec_C2Tuple_BlockHashChannelMonitorZZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC2Tuple_BlockHashChannelMonitorZ), "LDKCVec_C2Tuple_BlockHashChannelMonitorZZ Elements");
-       else
-               _res_constr.data = NULL;
-       uint32_t* _res_vals = (uint32_t*)(_res + 4);
-       for (size_t j = 0; j < _res_constr.datalen; j++) {
-               uint32_t _res_conv_35 = _res_vals[j];
-               void* _res_conv_35_ptr = (void*)(((uint64_t)_res_conv_35) & ~1);
-               CHECK_ACCESS(_res_conv_35_ptr);
-               LDKC2Tuple_BlockHashChannelMonitorZ _res_conv_35_conv = *(LDKC2Tuple_BlockHashChannelMonitorZ*)(_res_conv_35_ptr);
-               FREE((void*)_res_conv_35);
-               _res_constr.data[j] = _res_conv_35_conv;
-       }
-       CVec_C2Tuple_BlockHashChannelMonitorZZ_free(_res_constr);
+static inline uint64_t COption_u32Z_clone_ptr(LDKCOption_u32Z *NONNULL_PTR arg) {
+       LDKCOption_u32Z *ret_copy = MALLOC(sizeof(LDKCOption_u32Z), "LDKCOption_u32Z");
+       *ret_copy = COption_u32Z_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_COption_u32Z_clone_ptr(uint32_t arg) {
+       LDKCOption_u32Z* arg_conv = (LDKCOption_u32Z*)arg;
+       int64_t ret_val = COption_u32Z_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_ok(uint32_tArray o) {
-       LDKCVec_C2Tuple_BlockHashChannelMonitorZZ o_constr;
-       o_constr.datalen = *((uint32_t*)o);
-       if (o_constr.datalen > 0)
-               o_constr.data = MALLOC(o_constr.datalen * sizeof(LDKC2Tuple_BlockHashChannelMonitorZ), "LDKCVec_C2Tuple_BlockHashChannelMonitorZZ Elements");
-       else
-               o_constr.data = NULL;
-       uint32_t* o_vals = (uint32_t*)(o + 4);
-       for (size_t j = 0; j < o_constr.datalen; j++) {
-               uint32_t o_conv_35 = o_vals[j];
-               void* o_conv_35_ptr = (void*)(((uint64_t)o_conv_35) & ~1);
-               CHECK_ACCESS(o_conv_35_ptr);
-               LDKC2Tuple_BlockHashChannelMonitorZ o_conv_35_conv = *(LDKC2Tuple_BlockHashChannelMonitorZ*)(o_conv_35_ptr);
-               o_conv_35_conv = C2Tuple_BlockHashChannelMonitorZ_clone((LDKC2Tuple_BlockHashChannelMonitorZ*)(((uint64_t)o_conv_35) & ~1));
-               o_constr.data[j] = o_conv_35_conv;
-       }
-       LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ), "LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ");
-       *ret_conv = CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_ok(o_constr);
+uint32_t  __attribute__((visibility("default"))) TS_COption_u32Z_clone(uint32_t orig) {
+       LDKCOption_u32Z* orig_conv = (LDKCOption_u32Z*)orig;
+       LDKCOption_u32Z *ret_copy = MALLOC(sizeof(LDKCOption_u32Z), "LDKCOption_u32Z");
+       *ret_copy = COption_u32Z_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = HTLCOutputInCommitment_clone(&o_conv);
+       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ), "LDKCResult_HTLCOutputInCommitmentDecodeErrorZ");
+       *ret_conv = CResult_HTLCOutputInCommitmentDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_err(uint32_t e) {
-       LDKIOError e_conv = LDKIOError_from_js(e);
-       LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ), "LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ");
-       *ret_conv = CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_err(e_conv);
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ), "LDKCResult_HTLCOutputInCommitmentDecodeErrorZ");
+       *ret_conv = CResult_HTLCOutputInCommitmentDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_is_ok(uint32_t o) {
-       LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* o_conv = (LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_HTLCOutputInCommitmentDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* o_conv = (LDKCResult_HTLCOutputInCommitmentDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_HTLCOutputInCommitmentDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_HTLCOutputInCommitmentDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ _res_conv = *(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ*)(_res_ptr);
+       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ _res_conv = *(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(_res_conv);
+       CResult_HTLCOutputInCommitmentDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_clone_ptr(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ *NONNULL_PTR arg) {
-       LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ), "LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ");
-       *ret_conv = CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_clone(arg);
+static inline uint64_t CResult_HTLCOutputInCommitmentDecodeErrorZ_clone_ptr(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ), "LDKCResult_HTLCOutputInCommitmentDecodeErrorZ");
+       *ret_conv = CResult_HTLCOutputInCommitmentDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* arg_conv = (LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_HTLCOutputInCommitmentDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* arg_conv = (LDKCResult_HTLCOutputInCommitmentDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_HTLCOutputInCommitmentDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_clone(uint32_t orig) {
-       LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* orig_conv = (LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ*)(orig & ~1);
-       LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ), "LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ");
-       *ret_conv = CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_clone(orig_conv);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_u16Z_some(int16_t o) {
-       LDKCOption_u16Z *ret_copy = MALLOC(sizeof(LDKCOption_u16Z), "LDKCOption_u16Z");
-       *ret_copy = COption_u16Z_some(o);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_COption_NoneZ_some() {
+       uint32_t ret_conv = LDKCOption_NoneZ_to_js(COption_NoneZ_some());
+       return ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_u16Z_none() {
-       LDKCOption_u16Z *ret_copy = MALLOC(sizeof(LDKCOption_u16Z), "LDKCOption_u16Z");
-       *ret_copy = COption_u16Z_none();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_COption_NoneZ_none() {
+       uint32_t ret_conv = LDKCOption_NoneZ_to_js(COption_NoneZ_none());
+       return ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_COption_u16Z_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_COption_NoneZ_free(uint32_t _res) {
+       LDKCOption_NoneZ _res_conv = LDKCOption_NoneZ_from_js(_res);
+       COption_NoneZ_free(_res_conv);
+}
+
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = CounterpartyChannelTransactionParameters_clone(&o_conv);
+       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ), "LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ");
+       *ret_conv = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_ok(o_conv);
+       return (uint64_t)ret_conv;
+}
+
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ), "LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ");
+       *ret_conv = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
+}
+
+jboolean  __attribute__((visibility("default"))) TS_CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* o_conv = (LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_is_ok(o_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCOption_u16Z _res_conv = *(LDKCOption_u16Z*)(_res_ptr);
+       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ _res_conv = *(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       COption_u16Z_free(_res_conv);
+       CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t COption_u16Z_clone_ptr(LDKCOption_u16Z *NONNULL_PTR arg) {
-       LDKCOption_u16Z *ret_copy = MALLOC(sizeof(LDKCOption_u16Z), "LDKCOption_u16Z");
-       *ret_copy = COption_u16Z_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+static inline uint64_t CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone_ptr(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ), "LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ");
+       *ret_conv = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_COption_u16Z_clone_ptr(uint32_t arg) {
-       LDKCOption_u16Z* arg_conv = (LDKCOption_u16Z*)arg;
-       int64_t ret_val = COption_u16Z_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* arg_conv = (LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_u16Z_clone(uint32_t orig) {
-       LDKCOption_u16Z* orig_conv = (LDKCOption_u16Z*)orig;
-       LDKCOption_u16Z *ret_copy = MALLOC(sizeof(LDKCOption_u16Z), "LDKCOption_u16Z");
-       *ret_copy = COption_u16Z_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_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 (uint64_t)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();
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = ChannelTransactionParameters_clone(&o_conv);
+       LDKCResult_ChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ), "LDKCResult_ChannelTransactionParametersDecodeErrorZ");
+       *ret_conv = CResult_ChannelTransactionParametersDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneAPIErrorZ_err(uint32_t e) {
-       void* e_ptr = (void*)(((uint64_t)e) & ~1);
-       CHECK_ACCESS(e_ptr);
-       LDKAPIError e_conv = *(LDKAPIError*)(e_ptr);
-       e_conv = APIError_clone((LDKAPIError*)(((uint64_t)e) & ~1));
-       LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
-       *ret_conv = CResult_NoneAPIErrorZ_err(e_conv);
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_ChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ), "LDKCResult_ChannelTransactionParametersDecodeErrorZ");
+       *ret_conv = CResult_ChannelTransactionParametersDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_NoneAPIErrorZ_is_ok(uint32_t o) {
-       LDKCResult_NoneAPIErrorZ* o_conv = (LDKCResult_NoneAPIErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_NoneAPIErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelTransactionParametersDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ChannelTransactionParametersDecodeErrorZ* o_conv = (LDKCResult_ChannelTransactionParametersDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ChannelTransactionParametersDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_NoneAPIErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ChannelTransactionParametersDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_NoneAPIErrorZ _res_conv = *(LDKCResult_NoneAPIErrorZ*)(_res_ptr);
+       LDKCResult_ChannelTransactionParametersDecodeErrorZ _res_conv = *(LDKCResult_ChannelTransactionParametersDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_NoneAPIErrorZ_free(_res_conv);
+       CResult_ChannelTransactionParametersDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_NoneAPIErrorZ_clone_ptr(LDKCResult_NoneAPIErrorZ *NONNULL_PTR arg) {
-       LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
-       *ret_conv = CResult_NoneAPIErrorZ_clone(arg);
+static inline uint64_t CResult_ChannelTransactionParametersDecodeErrorZ_clone_ptr(LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_ChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ), "LDKCResult_ChannelTransactionParametersDecodeErrorZ");
+       *ret_conv = CResult_ChannelTransactionParametersDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_NoneAPIErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_NoneAPIErrorZ* arg_conv = (LDKCResult_NoneAPIErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_NoneAPIErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_ChannelTransactionParametersDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ChannelTransactionParametersDecodeErrorZ* arg_conv = (LDKCResult_ChannelTransactionParametersDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_ChannelTransactionParametersDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_CVec_CResult_NoneAPIErrorZZ_free(uint32_tArray _res) {
-       LDKCVec_CResult_NoneAPIErrorZZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKCResult_NoneAPIErrorZ), "LDKCVec_CResult_NoneAPIErrorZZ Elements");
-       else
-               _res_constr.data = NULL;
-       uint32_t* _res_vals = (uint32_t*)(_res + 4);
-       for (size_t w = 0; w < _res_constr.datalen; w++) {
-               uint32_t _res_conv_22 = _res_vals[w];
-               void* _res_conv_22_ptr = (void*)(((uint64_t)_res_conv_22) & ~1);
-               CHECK_ACCESS(_res_conv_22_ptr);
-               LDKCResult_NoneAPIErrorZ _res_conv_22_conv = *(LDKCResult_NoneAPIErrorZ*)(_res_conv_22_ptr);
-               FREE((void*)_res_conv_22);
-               _res_constr.data[w] = _res_conv_22_conv;
-       }
-       CVec_CResult_NoneAPIErrorZZ_free(_res_constr);
-}
-
-void  __attribute__((visibility("default"))) TS_CVec_APIErrorZ_free(uint32_tArray _res) {
-       LDKCVec_APIErrorZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
+void  __attribute__((visibility("default"))) TS_CVec_SignatureZ_free(ptrArray _res) {
+       LDKCVec_SignatureZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
        if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKAPIError), "LDKCVec_APIErrorZ Elements");
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ 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 _res_conv_10 = _res_vals[k];
-               void* _res_conv_10_ptr = (void*)(((uint64_t)_res_conv_10) & ~1);
-               CHECK_ACCESS(_res_conv_10_ptr);
-               LDKAPIError _res_conv_10_conv = *(LDKAPIError*)(_res_conv_10_ptr);
-               FREE((void*)_res_conv_10);
-               _res_constr.data[k] = _res_conv_10_conv;
+       int8_tArray* _res_vals = (void*) _res->elems;
+       for (size_t m = 0; m < _res_constr.datalen; m++) {
+               int8_tArray _res_conv_12 = _res_vals[m];
+               LDKSignature _res_conv_12_ref;
+               CHECK(_res_conv_12->arr_len == 64);
+               memcpy(_res_conv_12_ref.compact_form, _res_conv_12->elems, 64);
+               _res_constr.data[m] = _res_conv_12_ref;
        }
-       CVec_APIErrorZ_free(_res_constr);
+       CVec_SignatureZ_free(_res_constr);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult__u832APIErrorZ_ok(int8_tArray o) {
-       LDKThirtyTwoBytes o_ref;
-       CHECK(*((uint32_t*)o) == 32);
-       memcpy(o_ref.data, (uint8_t*)(o + 4), 32);
-       LDKCResult__u832APIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult__u832APIErrorZ), "LDKCResult__u832APIErrorZ");
-       *ret_conv = CResult__u832APIErrorZ_ok(o_ref);
+
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = HolderCommitmentTransaction_clone(&o_conv);
+       LDKCResult_HolderCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ), "LDKCResult_HolderCommitmentTransactionDecodeErrorZ");
+       *ret_conv = CResult_HolderCommitmentTransactionDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult__u832APIErrorZ_err(uint32_t e) {
-       void* e_ptr = (void*)(((uint64_t)e) & ~1);
-       CHECK_ACCESS(e_ptr);
-       LDKAPIError e_conv = *(LDKAPIError*)(e_ptr);
-       e_conv = APIError_clone((LDKAPIError*)(((uint64_t)e) & ~1));
-       LDKCResult__u832APIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult__u832APIErrorZ), "LDKCResult__u832APIErrorZ");
-       *ret_conv = CResult__u832APIErrorZ_err(e_conv);
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_HolderCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ), "LDKCResult_HolderCommitmentTransactionDecodeErrorZ");
+       *ret_conv = CResult_HolderCommitmentTransactionDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult__u832APIErrorZ_is_ok(uint32_t o) {
-       LDKCResult__u832APIErrorZ* o_conv = (LDKCResult__u832APIErrorZ*)(o & ~1);
-       jboolean ret_val = CResult__u832APIErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_HolderCommitmentTransactionDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_HolderCommitmentTransactionDecodeErrorZ* o_conv = (LDKCResult_HolderCommitmentTransactionDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_HolderCommitmentTransactionDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult__u832APIErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_HolderCommitmentTransactionDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult__u832APIErrorZ _res_conv = *(LDKCResult__u832APIErrorZ*)(_res_ptr);
+       LDKCResult_HolderCommitmentTransactionDecodeErrorZ _res_conv = *(LDKCResult_HolderCommitmentTransactionDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult__u832APIErrorZ_free(_res_conv);
+       CResult_HolderCommitmentTransactionDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult__u832APIErrorZ_clone_ptr(LDKCResult__u832APIErrorZ *NONNULL_PTR arg) {
-       LDKCResult__u832APIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult__u832APIErrorZ), "LDKCResult__u832APIErrorZ");
-       *ret_conv = CResult__u832APIErrorZ_clone(arg);
+static inline uint64_t CResult_HolderCommitmentTransactionDecodeErrorZ_clone_ptr(LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_HolderCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ), "LDKCResult_HolderCommitmentTransactionDecodeErrorZ");
+       *ret_conv = CResult_HolderCommitmentTransactionDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult__u832APIErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult__u832APIErrorZ* arg_conv = (LDKCResult__u832APIErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult__u832APIErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_HolderCommitmentTransactionDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_HolderCommitmentTransactionDecodeErrorZ* arg_conv = (LDKCResult_HolderCommitmentTransactionDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_HolderCommitmentTransactionDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult__u832APIErrorZ_clone(uint32_t orig) {
-       LDKCResult__u832APIErrorZ* orig_conv = (LDKCResult__u832APIErrorZ*)(orig & ~1);
-       LDKCResult__u832APIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult__u832APIErrorZ), "LDKCResult__u832APIErrorZ");
-       *ret_conv = CResult__u832APIErrorZ_clone(orig_conv);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentSendFailureZ_ok(int8_tArray o) {
-       LDKThirtyTwoBytes o_ref;
-       CHECK(*((uint32_t*)o) == 32);
-       memcpy(o_ref.data, (uint8_t*)(o + 4), 32);
-       LDKCResult_PaymentIdPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentSendFailureZ), "LDKCResult_PaymentIdPaymentSendFailureZ");
-       *ret_conv = CResult_PaymentIdPaymentSendFailureZ_ok(o_ref);
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = BuiltCommitmentTransaction_clone(&o_conv);
+       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ), "LDKCResult_BuiltCommitmentTransactionDecodeErrorZ");
+       *ret_conv = CResult_BuiltCommitmentTransactionDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentSendFailureZ_err(uint32_t e) {
-       void* e_ptr = (void*)(((uint64_t)e) & ~1);
-       CHECK_ACCESS(e_ptr);
-       LDKPaymentSendFailure e_conv = *(LDKPaymentSendFailure*)(e_ptr);
-       e_conv = PaymentSendFailure_clone((LDKPaymentSendFailure*)(((uint64_t)e) & ~1));
-       LDKCResult_PaymentIdPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentSendFailureZ), "LDKCResult_PaymentIdPaymentSendFailureZ");
-       *ret_conv = CResult_PaymentIdPaymentSendFailureZ_err(e_conv);
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ), "LDKCResult_BuiltCommitmentTransactionDecodeErrorZ");
+       *ret_conv = CResult_BuiltCommitmentTransactionDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentSendFailureZ_is_ok(uint32_t o) {
-       LDKCResult_PaymentIdPaymentSendFailureZ* o_conv = (LDKCResult_PaymentIdPaymentSendFailureZ*)(o & ~1);
-       jboolean ret_val = CResult_PaymentIdPaymentSendFailureZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_BuiltCommitmentTransactionDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* o_conv = (LDKCResult_BuiltCommitmentTransactionDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_BuiltCommitmentTransactionDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentSendFailureZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_BuiltCommitmentTransactionDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_PaymentIdPaymentSendFailureZ _res_conv = *(LDKCResult_PaymentIdPaymentSendFailureZ*)(_res_ptr);
+       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ _res_conv = *(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_PaymentIdPaymentSendFailureZ_free(_res_conv);
+       CResult_BuiltCommitmentTransactionDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_PaymentIdPaymentSendFailureZ_clone_ptr(LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR arg) {
-       LDKCResult_PaymentIdPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentSendFailureZ), "LDKCResult_PaymentIdPaymentSendFailureZ");
-       *ret_conv = CResult_PaymentIdPaymentSendFailureZ_clone(arg);
+static inline uint64_t CResult_BuiltCommitmentTransactionDecodeErrorZ_clone_ptr(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ), "LDKCResult_BuiltCommitmentTransactionDecodeErrorZ");
+       *ret_conv = CResult_BuiltCommitmentTransactionDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentSendFailureZ_clone_ptr(uint32_t arg) {
-       LDKCResult_PaymentIdPaymentSendFailureZ* arg_conv = (LDKCResult_PaymentIdPaymentSendFailureZ*)(arg & ~1);
-       int64_t ret_val = CResult_PaymentIdPaymentSendFailureZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_BuiltCommitmentTransactionDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* arg_conv = (LDKCResult_BuiltCommitmentTransactionDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_BuiltCommitmentTransactionDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentSendFailureZ_clone(uint32_t orig) {
-       LDKCResult_PaymentIdPaymentSendFailureZ* orig_conv = (LDKCResult_PaymentIdPaymentSendFailureZ*)(orig & ~1);
-       LDKCResult_PaymentIdPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentSendFailureZ), "LDKCResult_PaymentIdPaymentSendFailureZ");
-       *ret_conv = CResult_PaymentIdPaymentSendFailureZ_clone(orig_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 (uint64_t)ret_conv;
 }
 
-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_TrustedClosingTransactionNoneZ_ok(uint32_t o) {
+       LDKTrustedClosingTransaction o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = (o & 1) || (o == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       // Warning: we need a move here but no clone is available for LDKTrustedClosingTransaction
+       LDKCResult_TrustedClosingTransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TrustedClosingTransactionNoneZ), "LDKCResult_TrustedClosingTransactionNoneZ");
+       *ret_conv = CResult_TrustedClosingTransactionNoneZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NonePaymentSendFailureZ_err(uint32_t e) {
-       void* e_ptr = (void*)(((uint64_t)e) & ~1);
-       CHECK_ACCESS(e_ptr);
-       LDKPaymentSendFailure e_conv = *(LDKPaymentSendFailure*)(e_ptr);
-       e_conv = PaymentSendFailure_clone((LDKPaymentSendFailure*)(((uint64_t)e) & ~1));
-       LDKCResult_NonePaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePaymentSendFailureZ), "LDKCResult_NonePaymentSendFailureZ");
-       *ret_conv = CResult_NonePaymentSendFailureZ_err(e_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_TrustedClosingTransactionNoneZ_err() {
+       LDKCResult_TrustedClosingTransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TrustedClosingTransactionNoneZ), "LDKCResult_TrustedClosingTransactionNoneZ");
+       *ret_conv = CResult_TrustedClosingTransactionNoneZ_err();
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_NonePaymentSendFailureZ_is_ok(uint32_t o) {
-       LDKCResult_NonePaymentSendFailureZ* o_conv = (LDKCResult_NonePaymentSendFailureZ*)(o & ~1);
-       jboolean ret_val = CResult_NonePaymentSendFailureZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_TrustedClosingTransactionNoneZ_is_ok(uint32_t o) {
+       LDKCResult_TrustedClosingTransactionNoneZ* o_conv = (LDKCResult_TrustedClosingTransactionNoneZ*)(o & ~1);
+       jboolean ret_val = CResult_TrustedClosingTransactionNoneZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_NonePaymentSendFailureZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_TrustedClosingTransactionNoneZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_NonePaymentSendFailureZ _res_conv = *(LDKCResult_NonePaymentSendFailureZ*)(_res_ptr);
+       LDKCResult_TrustedClosingTransactionNoneZ _res_conv = *(LDKCResult_TrustedClosingTransactionNoneZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_NonePaymentSendFailureZ_free(_res_conv);
+       CResult_TrustedClosingTransactionNoneZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_NonePaymentSendFailureZ_clone_ptr(LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR arg) {
-       LDKCResult_NonePaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePaymentSendFailureZ), "LDKCResult_NonePaymentSendFailureZ");
-       *ret_conv = CResult_NonePaymentSendFailureZ_clone(arg);
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = CommitmentTransaction_clone(&o_conv);
+       LDKCResult_CommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ), "LDKCResult_CommitmentTransactionDecodeErrorZ");
+       *ret_conv = CResult_CommitmentTransactionDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_NonePaymentSendFailureZ_clone_ptr(uint32_t arg) {
-       LDKCResult_NonePaymentSendFailureZ* arg_conv = (LDKCResult_NonePaymentSendFailureZ*)(arg & ~1);
-       int64_t ret_val = CResult_NonePaymentSendFailureZ_clone_ptr(arg_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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_CommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ), "LDKCResult_CommitmentTransactionDecodeErrorZ");
+       *ret_conv = CResult_CommitmentTransactionDecodeErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
+}
+
+jboolean  __attribute__((visibility("default"))) TS_CResult_CommitmentTransactionDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_CommitmentTransactionDecodeErrorZ* o_conv = (LDKCResult_CommitmentTransactionDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_CommitmentTransactionDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-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 (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_CResult_CommitmentTransactionDecodeErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_CommitmentTransactionDecodeErrorZ _res_conv = *(LDKCResult_CommitmentTransactionDecodeErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_CommitmentTransactionDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t C2Tuple_PaymentHashPaymentIdZ_clone_ptr(LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR arg) {
-       LDKC2Tuple_PaymentHashPaymentIdZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentIdZ), "LDKC2Tuple_PaymentHashPaymentIdZ");
-       *ret_conv = C2Tuple_PaymentHashPaymentIdZ_clone(arg);
-       return ((uint64_t)ret_conv);
+static inline uint64_t CResult_CommitmentTransactionDecodeErrorZ_clone_ptr(LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_CommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ), "LDKCResult_CommitmentTransactionDecodeErrorZ");
+       *ret_conv = CResult_CommitmentTransactionDecodeErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentIdZ_clone_ptr(uint32_t arg) {
-       LDKC2Tuple_PaymentHashPaymentIdZ* arg_conv = (LDKC2Tuple_PaymentHashPaymentIdZ*)(arg & ~1);
-       int64_t ret_val = C2Tuple_PaymentHashPaymentIdZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_CommitmentTransactionDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_CommitmentTransactionDecodeErrorZ* arg_conv = (LDKCResult_CommitmentTransactionDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_CommitmentTransactionDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentIdZ_clone(uint32_t orig) {
-       LDKC2Tuple_PaymentHashPaymentIdZ* orig_conv = (LDKC2Tuple_PaymentHashPaymentIdZ*)(orig & ~1);
-       LDKC2Tuple_PaymentHashPaymentIdZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentIdZ), "LDKC2Tuple_PaymentHashPaymentIdZ");
-       *ret_conv = C2Tuple_PaymentHashPaymentIdZ_clone(orig_conv);
-       return ((uint64_t)ret_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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentIdZ_new(int8_tArray a, int8_tArray b) {
-       LDKThirtyTwoBytes a_ref;
-       CHECK(*((uint32_t*)a) == 32);
-       memcpy(a_ref.data, (uint8_t*)(a + 4), 32);
-       LDKThirtyTwoBytes b_ref;
-       CHECK(*((uint32_t*)b) == 32);
-       memcpy(b_ref.data, (uint8_t*)(b + 4), 32);
-       LDKC2Tuple_PaymentHashPaymentIdZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentIdZ), "LDKC2Tuple_PaymentHashPaymentIdZ");
-       *ret_conv = C2Tuple_PaymentHashPaymentIdZ_new(a_ref, b_ref);
-       return ((uint64_t)ret_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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       // 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 (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentIdZ_free(uint32_t _res) {
+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 (uint64_t)ret_conv;
+}
+
+jboolean  __attribute__((visibility("default"))) TS_CResult_TrustedCommitmentTransactionNoneZ_is_ok(uint32_t o) {
+       LDKCResult_TrustedCommitmentTransactionNoneZ* o_conv = (LDKCResult_TrustedCommitmentTransactionNoneZ*)(o & ~1);
+       jboolean ret_val = CResult_TrustedCommitmentTransactionNoneZ_is_ok(o_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_CResult_TrustedCommitmentTransactionNoneZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKC2Tuple_PaymentHashPaymentIdZ _res_conv = *(LDKC2Tuple_PaymentHashPaymentIdZ*)(_res_ptr);
+       LDKCResult_TrustedCommitmentTransactionNoneZ _res_conv = *(LDKCResult_TrustedCommitmentTransactionNoneZ*)(_res_ptr);
        FREE((void*)_res);
-       C2Tuple_PaymentHashPaymentIdZ_free(_res_conv);
+       CResult_TrustedCommitmentTransactionNoneZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_ok(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKC2Tuple_PaymentHashPaymentIdZ o_conv = *(LDKC2Tuple_PaymentHashPaymentIdZ*)(o_ptr);
-       o_conv = C2Tuple_PaymentHashPaymentIdZ_clone((LDKC2Tuple_PaymentHashPaymentIdZ*)(((uint64_t)o) & ~1));
-       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ), "LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ");
-       *ret_conv = CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_ok(o_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_CVec_SignatureZNoneZ_ok(ptrArray o) {
+       LDKCVec_SignatureZ o_constr;
+       o_constr.datalen = o->arr_len;
+       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 = (void*) o->elems;
+       for (size_t m = 0; m < o_constr.datalen; m++) {
+               int8_tArray o_conv_12 = o_vals[m];
+               LDKSignature o_conv_12_ref;
+               CHECK(o_conv_12->arr_len == 64);
+               memcpy(o_conv_12_ref.compact_form, o_conv_12->elems, 64);
+               o_constr.data[m] = o_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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_err(uint32_t e) {
-       void* e_ptr = (void*)(((uint64_t)e) & ~1);
-       CHECK_ACCESS(e_ptr);
-       LDKPaymentSendFailure e_conv = *(LDKPaymentSendFailure*)(e_ptr);
-       e_conv = PaymentSendFailure_clone((LDKPaymentSendFailure*)(((uint64_t)e) & ~1));
-       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ), "LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ");
-       *ret_conv = CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_err(e_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 (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_is_ok(uint32_t o) {
-       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* o_conv = (LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ*)(o & ~1);
-       jboolean ret_val = CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_CVec_SignatureZNoneZ_is_ok(uint32_t o) {
+       LDKCResult_CVec_SignatureZNoneZ* o_conv = (LDKCResult_CVec_SignatureZNoneZ*)(o & ~1);
+       jboolean ret_val = CResult_CVec_SignatureZNoneZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_CVec_SignatureZNoneZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ _res_conv = *(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ*)(_res_ptr);
+       LDKCResult_CVec_SignatureZNoneZ _res_conv = *(LDKCResult_CVec_SignatureZNoneZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(_res_conv);
+       CResult_CVec_SignatureZNoneZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone_ptr(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR arg) {
-       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ), "LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ");
-       *ret_conv = CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone(arg);
+static inline uint64_t CResult_CVec_SignatureZNoneZ_clone_ptr(LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR arg) {
+       LDKCResult_CVec_SignatureZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_SignatureZNoneZ), "LDKCResult_CVec_SignatureZNoneZ");
+       *ret_conv = CResult_CVec_SignatureZNoneZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone_ptr(uint32_t arg) {
-       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* arg_conv = (LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ*)(arg & ~1);
-       int64_t ret_val = CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_CVec_SignatureZNoneZ_clone_ptr(uint32_t arg) {
+       LDKCResult_CVec_SignatureZNoneZ* arg_conv = (LDKCResult_CVec_SignatureZNoneZ*)(arg & ~1);
+       int64_t ret_val = CResult_CVec_SignatureZNoneZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone(uint32_t orig) {
-       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* orig_conv = (LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ*)(orig & ~1);
-       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ), "LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ");
-       *ret_conv = CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone(orig_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 (uint64_t)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 _res_conv_12 = _res_vals[m];
-               void* _res_conv_12_ptr = (void*)(((uint64_t)_res_conv_12) & ~1);
-               CHECK_ACCESS(_res_conv_12_ptr);
-               LDKNetAddress _res_conv_12_conv = *(LDKNetAddress*)(_res_conv_12_ptr);
-               FREE((void*)_res_conv_12);
-               _res_constr.data[m] = _res_conv_12_conv;
-       }
-       CVec_NetAddressZ_free(_res_constr);
-}
-
-static inline uint64_t C2Tuple_PaymentHashPaymentSecretZ_clone_ptr(LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR arg) {
-       LDKC2Tuple_PaymentHashPaymentSecretZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ), "LDKC2Tuple_PaymentHashPaymentSecretZ");
-       *ret_conv = C2Tuple_PaymentHashPaymentSecretZ_clone(arg);
-       return ((uint64_t)ret_conv);
-}
-int64_t  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentSecretZ_clone_ptr(uint32_t arg) {
-       LDKC2Tuple_PaymentHashPaymentSecretZ* arg_conv = (LDKC2Tuple_PaymentHashPaymentSecretZ*)(arg & ~1);
-       int64_t ret_val = C2Tuple_PaymentHashPaymentSecretZ_clone_ptr(arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptDecodeErrorZ_ok(uint32_t o) {
+       LDKShutdownScript o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = (o & 1) || (o == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = ShutdownScript_clone(&o_conv);
+       LDKCResult_ShutdownScriptDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptDecodeErrorZ), "LDKCResult_ShutdownScriptDecodeErrorZ");
+       *ret_conv = CResult_ShutdownScriptDecodeErrorZ_ok(o_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentSecretZ_clone(uint32_t orig) {
-       LDKC2Tuple_PaymentHashPaymentSecretZ* orig_conv = (LDKC2Tuple_PaymentHashPaymentSecretZ*)(orig & ~1);
-       LDKC2Tuple_PaymentHashPaymentSecretZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ), "LDKC2Tuple_PaymentHashPaymentSecretZ");
-       *ret_conv = C2Tuple_PaymentHashPaymentSecretZ_clone(orig_conv);
-       return ((uint64_t)ret_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptDecodeErrorZ_err(uint32_t e) {
+       LDKDecodeError e_conv;
+       e_conv.inner = (void*)(e & (~1));
+       e_conv.is_owned = (e & 1) || (e == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_ShutdownScriptDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptDecodeErrorZ), "LDKCResult_ShutdownScriptDecodeErrorZ");
+       *ret_conv = CResult_ShutdownScriptDecodeErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentSecretZ_new(int8_tArray a, int8_tArray b) {
-       LDKThirtyTwoBytes a_ref;
-       CHECK(*((uint32_t*)a) == 32);
-       memcpy(a_ref.data, (uint8_t*)(a + 4), 32);
-       LDKThirtyTwoBytes b_ref;
-       CHECK(*((uint32_t*)b) == 32);
-       memcpy(b_ref.data, (uint8_t*)(b + 4), 32);
-       LDKC2Tuple_PaymentHashPaymentSecretZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ), "LDKC2Tuple_PaymentHashPaymentSecretZ");
-       *ret_conv = C2Tuple_PaymentHashPaymentSecretZ_new(a_ref, b_ref);
-       return ((uint64_t)ret_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ShutdownScriptDecodeErrorZ* o_conv = (LDKCResult_ShutdownScriptDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ShutdownScriptDecodeErrorZ_is_ok(o_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentSecretZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKC2Tuple_PaymentHashPaymentSecretZ _res_conv = *(LDKC2Tuple_PaymentHashPaymentSecretZ*)(_res_ptr);
+       LDKCResult_ShutdownScriptDecodeErrorZ _res_conv = *(LDKCResult_ShutdownScriptDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       C2Tuple_PaymentHashPaymentSecretZ_free(_res_conv);
+       CResult_ShutdownScriptDecodeErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_ok(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKC2Tuple_PaymentHashPaymentSecretZ o_conv = *(LDKC2Tuple_PaymentHashPaymentSecretZ*)(o_ptr);
-       o_conv = C2Tuple_PaymentHashPaymentSecretZ_clone((LDKC2Tuple_PaymentHashPaymentSecretZ*)(((uint64_t)o) & ~1));
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ");
-       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_ok(o_conv);
+static inline uint64_t CResult_ShutdownScriptDecodeErrorZ_clone_ptr(LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_ShutdownScriptDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptDecodeErrorZ), "LDKCResult_ShutdownScriptDecodeErrorZ");
+       *ret_conv = CResult_ShutdownScriptDecodeErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ShutdownScriptDecodeErrorZ* arg_conv = (LDKCResult_ShutdownScriptDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_ShutdownScriptDecodeErrorZ_clone_ptr(arg_conv);
+       return ret_val;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_ShutdownScriptDecodeErrorZ* orig_conv = (LDKCResult_ShutdownScriptDecodeErrorZ*)(orig & ~1);
+       LDKCResult_ShutdownScriptDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptDecodeErrorZ), "LDKCResult_ShutdownScriptDecodeErrorZ");
+       *ret_conv = CResult_ShutdownScriptDecodeErrorZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_err() {
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ");
-       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_err();
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptInvalidShutdownScriptZ_ok(uint32_t o) {
+       LDKShutdownScript o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = (o & 1) || (o == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = ShutdownScript_clone(&o_conv);
+       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ), "LDKCResult_ShutdownScriptInvalidShutdownScriptZ");
+       *ret_conv = CResult_ShutdownScriptInvalidShutdownScriptZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_is_ok(uint32_t o) {
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* o_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_is_ok(o_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptInvalidShutdownScriptZ_err(uint32_t e) {
+       LDKInvalidShutdownScript e_conv;
+       e_conv.inner = (void*)(e & (~1));
+       e_conv.is_owned = (e & 1) || (e == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = InvalidShutdownScript_clone(&e_conv);
+       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ), "LDKCResult_ShutdownScriptInvalidShutdownScriptZ");
+       *ret_conv = CResult_ShutdownScriptInvalidShutdownScriptZ_err(e_conv);
+       return (uint64_t)ret_conv;
+}
+
+jboolean  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptInvalidShutdownScriptZ_is_ok(uint32_t o) {
+       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* o_conv = (LDKCResult_ShutdownScriptInvalidShutdownScriptZ*)(o & ~1);
+       jboolean ret_val = CResult_ShutdownScriptInvalidShutdownScriptZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptInvalidShutdownScriptZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ _res_conv = *(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ*)(_res_ptr);
+       LDKCResult_ShutdownScriptInvalidShutdownScriptZ _res_conv = *(LDKCResult_ShutdownScriptInvalidShutdownScriptZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(_res_conv);
+       CResult_ShutdownScriptInvalidShutdownScriptZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone_ptr(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *NONNULL_PTR arg) {
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ");
-       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone(arg);
+static inline uint64_t CResult_ShutdownScriptInvalidShutdownScriptZ_clone_ptr(LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR arg) {
+       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ), "LDKCResult_ShutdownScriptInvalidShutdownScriptZ");
+       *ret_conv = CResult_ShutdownScriptInvalidShutdownScriptZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone_ptr(uint32_t arg) {
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* arg_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ*)(arg & ~1);
-       int64_t ret_val = CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptInvalidShutdownScriptZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* arg_conv = (LDKCResult_ShutdownScriptInvalidShutdownScriptZ*)(arg & ~1);
+       int64_t ret_val = CResult_ShutdownScriptInvalidShutdownScriptZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone(uint32_t orig) {
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* orig_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ*)(orig & ~1);
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ");
-       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone(orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptInvalidShutdownScriptZ_clone(uint32_t orig) {
+       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* orig_conv = (LDKCResult_ShutdownScriptInvalidShutdownScriptZ*)(orig & ~1);
+       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ), "LDKCResult_ShutdownScriptInvalidShutdownScriptZ");
+       *ret_conv = CResult_ShutdownScriptInvalidShutdownScriptZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_ok(uint32_t o) {
+uint32_t  __attribute__((visibility("default"))) TS_COption_TypeZ_some(uint32_t o) {
        void* o_ptr = (void*)(((uint64_t)o) & ~1);
        CHECK_ACCESS(o_ptr);
-       LDKC2Tuple_PaymentHashPaymentSecretZ o_conv = *(LDKC2Tuple_PaymentHashPaymentSecretZ*)(o_ptr);
-       o_conv = C2Tuple_PaymentHashPaymentSecretZ_clone((LDKC2Tuple_PaymentHashPaymentSecretZ*)(((uint64_t)o) & ~1));
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ");
-       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_err(uint32_t e) {
-       void* e_ptr = (void*)(((uint64_t)e) & ~1);
-       CHECK_ACCESS(e_ptr);
-       LDKAPIError e_conv = *(LDKAPIError*)(e_ptr);
-       e_conv = APIError_clone((LDKAPIError*)(((uint64_t)e) & ~1));
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ");
-       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+       LDKType o_conv = *(LDKType*)(o_ptr);
+       LDKCOption_TypeZ *ret_copy = MALLOC(sizeof(LDKCOption_TypeZ), "LDKCOption_TypeZ");
+       *ret_copy = COption_TypeZ_some(o_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_is_ok(uint32_t o) {
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* o_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_is_ok(o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_COption_TypeZ_none() {
+       LDKCOption_TypeZ *ret_copy = MALLOC(sizeof(LDKCOption_TypeZ), "LDKCOption_TypeZ");
+       *ret_copy = COption_TypeZ_none();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_COption_TypeZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ _res_conv = *(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ*)(_res_ptr);
+       LDKCOption_TypeZ _res_conv = *(LDKCOption_TypeZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(_res_conv);
+       COption_TypeZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone_ptr(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *NONNULL_PTR arg) {
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ");
-       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline uint64_t COption_TypeZ_clone_ptr(LDKCOption_TypeZ *NONNULL_PTR arg) {
+       LDKCOption_TypeZ *ret_copy = MALLOC(sizeof(LDKCOption_TypeZ), "LDKCOption_TypeZ");
+       *ret_copy = COption_TypeZ_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* arg_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_COption_TypeZ_clone_ptr(uint32_t arg) {
+       LDKCOption_TypeZ* arg_conv = (LDKCOption_TypeZ*)arg;
+       int64_t ret_val = COption_TypeZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone(uint32_t orig) {
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* orig_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ*)(orig & ~1);
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ");
-       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_COption_TypeZ_clone(uint32_t orig) {
+       LDKCOption_TypeZ* orig_conv = (LDKCOption_TypeZ*)orig;
+       LDKCOption_TypeZ *ret_copy = MALLOC(sizeof(LDKCOption_TypeZ), "LDKCOption_TypeZ");
+       *ret_copy = COption_TypeZ_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretNoneZ_ok(int8_tArray o) {
-       LDKThirtyTwoBytes o_ref;
-       CHECK(*((uint32_t*)o) == 32);
-       memcpy(o_ref.data, (uint8_t*)(o + 4), 32);
-       LDKCResult_PaymentSecretNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretNoneZ), "LDKCResult_PaymentSecretNoneZ");
-       *ret_conv = CResult_PaymentSecretNoneZ_ok(o_ref);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_TypeZDecodeErrorZ_ok(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKCOption_TypeZ o_conv = *(LDKCOption_TypeZ*)(o_ptr);
+       o_conv = COption_TypeZ_clone((LDKCOption_TypeZ*)(((uint64_t)o) & ~1));
+       LDKCResult_COption_TypeZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_TypeZDecodeErrorZ), "LDKCResult_COption_TypeZDecodeErrorZ");
+       *ret_conv = CResult_COption_TypeZDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretNoneZ_err() {
-       LDKCResult_PaymentSecretNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretNoneZ), "LDKCResult_PaymentSecretNoneZ");
-       *ret_conv = CResult_PaymentSecretNoneZ_err();
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_TypeZDecodeErrorZ_err(uint32_t e) {
+       LDKDecodeError e_conv;
+       e_conv.inner = (void*)(e & (~1));
+       e_conv.is_owned = (e & 1) || (e == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_COption_TypeZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_TypeZDecodeErrorZ), "LDKCResult_COption_TypeZDecodeErrorZ");
+       *ret_conv = CResult_COption_TypeZDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_PaymentSecretNoneZ_is_ok(uint32_t o) {
-       LDKCResult_PaymentSecretNoneZ* o_conv = (LDKCResult_PaymentSecretNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_PaymentSecretNoneZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_COption_TypeZDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_COption_TypeZDecodeErrorZ* o_conv = (LDKCResult_COption_TypeZDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_COption_TypeZDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_PaymentSecretNoneZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_COption_TypeZDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_PaymentSecretNoneZ _res_conv = *(LDKCResult_PaymentSecretNoneZ*)(_res_ptr);
+       LDKCResult_COption_TypeZDecodeErrorZ _res_conv = *(LDKCResult_COption_TypeZDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_PaymentSecretNoneZ_free(_res_conv);
+       CResult_COption_TypeZDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_PaymentSecretNoneZ_clone_ptr(LDKCResult_PaymentSecretNoneZ *NONNULL_PTR arg) {
-       LDKCResult_PaymentSecretNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretNoneZ), "LDKCResult_PaymentSecretNoneZ");
-       *ret_conv = CResult_PaymentSecretNoneZ_clone(arg);
+static inline uint64_t CResult_COption_TypeZDecodeErrorZ_clone_ptr(LDKCResult_COption_TypeZDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_COption_TypeZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_TypeZDecodeErrorZ), "LDKCResult_COption_TypeZDecodeErrorZ");
+       *ret_conv = CResult_COption_TypeZDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretNoneZ_clone_ptr(uint32_t arg) {
-       LDKCResult_PaymentSecretNoneZ* arg_conv = (LDKCResult_PaymentSecretNoneZ*)(arg & ~1);
-       int64_t ret_val = CResult_PaymentSecretNoneZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_COption_TypeZDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_COption_TypeZDecodeErrorZ* arg_conv = (LDKCResult_COption_TypeZDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_COption_TypeZDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretNoneZ_clone(uint32_t orig) {
-       LDKCResult_PaymentSecretNoneZ* orig_conv = (LDKCResult_PaymentSecretNoneZ*)(orig & ~1);
-       LDKCResult_PaymentSecretNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretNoneZ), "LDKCResult_PaymentSecretNoneZ");
-       *ret_conv = CResult_PaymentSecretNoneZ_clone(orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_TypeZDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_COption_TypeZDecodeErrorZ* orig_conv = (LDKCResult_COption_TypeZDecodeErrorZ*)(orig & ~1);
+       LDKCResult_COption_TypeZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_TypeZDecodeErrorZ), "LDKCResult_COption_TypeZDecodeErrorZ");
+       *ret_conv = CResult_COption_TypeZDecodeErrorZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretAPIErrorZ_ok(int8_tArray o) {
-       LDKThirtyTwoBytes o_ref;
-       CHECK(*((uint32_t*)o) == 32);
-       memcpy(o_ref.data, (uint8_t*)(o + 4), 32);
-       LDKCResult_PaymentSecretAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretAPIErrorZ), "LDKCResult_PaymentSecretAPIErrorZ");
-       *ret_conv = CResult_PaymentSecretAPIErrorZ_ok(o_ref);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_StringErrorZ_ok(jstring o) {
+       LDKStr o_conv = str_ref_to_owned_c(o);
+       LDKCResult_StringErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StringErrorZ), "LDKCResult_StringErrorZ");
+       *ret_conv = CResult_StringErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretAPIErrorZ_err(uint32_t e) {
-       void* e_ptr = (void*)(((uint64_t)e) & ~1);
-       CHECK_ACCESS(e_ptr);
-       LDKAPIError e_conv = *(LDKAPIError*)(e_ptr);
-       e_conv = APIError_clone((LDKAPIError*)(((uint64_t)e) & ~1));
-       LDKCResult_PaymentSecretAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretAPIErrorZ), "LDKCResult_PaymentSecretAPIErrorZ");
-       *ret_conv = CResult_PaymentSecretAPIErrorZ_err(e_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_StringErrorZ_err(uint32_t e) {
+       LDKSecp256k1Error e_conv = LDKSecp256k1Error_from_js(e);
+       LDKCResult_StringErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StringErrorZ), "LDKCResult_StringErrorZ");
+       *ret_conv = CResult_StringErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_PaymentSecretAPIErrorZ_is_ok(uint32_t o) {
-       LDKCResult_PaymentSecretAPIErrorZ* o_conv = (LDKCResult_PaymentSecretAPIErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_PaymentSecretAPIErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_StringErrorZ_is_ok(uint32_t o) {
+       LDKCResult_StringErrorZ* o_conv = (LDKCResult_StringErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_StringErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_PaymentSecretAPIErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_StringErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_PaymentSecretAPIErrorZ _res_conv = *(LDKCResult_PaymentSecretAPIErrorZ*)(_res_ptr);
+       LDKCResult_StringErrorZ _res_conv = *(LDKCResult_StringErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_PaymentSecretAPIErrorZ_free(_res_conv);
-}
-
-static inline uint64_t CResult_PaymentSecretAPIErrorZ_clone_ptr(LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR arg) {
-       LDKCResult_PaymentSecretAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretAPIErrorZ), "LDKCResult_PaymentSecretAPIErrorZ");
-       *ret_conv = CResult_PaymentSecretAPIErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
-}
-int64_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretAPIErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_PaymentSecretAPIErrorZ* arg_conv = (LDKCResult_PaymentSecretAPIErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_PaymentSecretAPIErrorZ_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretAPIErrorZ_clone(uint32_t orig) {
-       LDKCResult_PaymentSecretAPIErrorZ* orig_conv = (LDKCResult_PaymentSecretAPIErrorZ*)(orig & ~1);
-       LDKCResult_PaymentSecretAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretAPIErrorZ), "LDKCResult_PaymentSecretAPIErrorZ");
-       *ret_conv = CResult_PaymentSecretAPIErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+       CResult_StringErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentPreimageAPIErrorZ_ok(int8_tArray o) {
-       LDKThirtyTwoBytes o_ref;
-       CHECK(*((uint32_t*)o) == 32);
-       memcpy(o_ref.data, (uint8_t*)(o + 4), 32);
-       LDKCResult_PaymentPreimageAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentPreimageAPIErrorZ), "LDKCResult_PaymentPreimageAPIErrorZ");
-       *ret_conv = CResult_PaymentPreimageAPIErrorZ_ok(o_ref);
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = ChannelMonitorUpdate_clone(&o_conv);
+       LDKCResult_ChannelMonitorUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ), "LDKCResult_ChannelMonitorUpdateDecodeErrorZ");
+       *ret_conv = CResult_ChannelMonitorUpdateDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentPreimageAPIErrorZ_err(uint32_t e) {
-       void* e_ptr = (void*)(((uint64_t)e) & ~1);
-       CHECK_ACCESS(e_ptr);
-       LDKAPIError e_conv = *(LDKAPIError*)(e_ptr);
-       e_conv = APIError_clone((LDKAPIError*)(((uint64_t)e) & ~1));
-       LDKCResult_PaymentPreimageAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentPreimageAPIErrorZ), "LDKCResult_PaymentPreimageAPIErrorZ");
-       *ret_conv = CResult_PaymentPreimageAPIErrorZ_err(e_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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_ChannelMonitorUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ), "LDKCResult_ChannelMonitorUpdateDecodeErrorZ");
+       *ret_conv = CResult_ChannelMonitorUpdateDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_PaymentPreimageAPIErrorZ_is_ok(uint32_t o) {
-       LDKCResult_PaymentPreimageAPIErrorZ* o_conv = (LDKCResult_PaymentPreimageAPIErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_PaymentPreimageAPIErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelMonitorUpdateDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ChannelMonitorUpdateDecodeErrorZ* o_conv = (LDKCResult_ChannelMonitorUpdateDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ChannelMonitorUpdateDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_PaymentPreimageAPIErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ChannelMonitorUpdateDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_PaymentPreimageAPIErrorZ _res_conv = *(LDKCResult_PaymentPreimageAPIErrorZ*)(_res_ptr);
+       LDKCResult_ChannelMonitorUpdateDecodeErrorZ _res_conv = *(LDKCResult_ChannelMonitorUpdateDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_PaymentPreimageAPIErrorZ_free(_res_conv);
+       CResult_ChannelMonitorUpdateDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_PaymentPreimageAPIErrorZ_clone_ptr(LDKCResult_PaymentPreimageAPIErrorZ *NONNULL_PTR arg) {
-       LDKCResult_PaymentPreimageAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentPreimageAPIErrorZ), "LDKCResult_PaymentPreimageAPIErrorZ");
-       *ret_conv = CResult_PaymentPreimageAPIErrorZ_clone(arg);
+static inline uint64_t CResult_ChannelMonitorUpdateDecodeErrorZ_clone_ptr(LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_ChannelMonitorUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ), "LDKCResult_ChannelMonitorUpdateDecodeErrorZ");
+       *ret_conv = CResult_ChannelMonitorUpdateDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_PaymentPreimageAPIErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_PaymentPreimageAPIErrorZ* arg_conv = (LDKCResult_PaymentPreimageAPIErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_PaymentPreimageAPIErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_ChannelMonitorUpdateDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ChannelMonitorUpdateDecodeErrorZ* arg_conv = (LDKCResult_ChannelMonitorUpdateDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_ChannelMonitorUpdateDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentPreimageAPIErrorZ_clone(uint32_t orig) {
-       LDKCResult_PaymentPreimageAPIErrorZ* orig_conv = (LDKCResult_PaymentPreimageAPIErrorZ*)(orig & ~1);
-       LDKCResult_PaymentPreimageAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentPreimageAPIErrorZ), "LDKCResult_PaymentPreimageAPIErrorZ");
-       *ret_conv = CResult_PaymentPreimageAPIErrorZ_clone(orig_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 (uint64_t)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 _res_conv_16 = _res_vals[q];
-               LDKChannelMonitor _res_conv_16_conv;
-               _res_conv_16_conv.inner = (void*)(_res_conv_16 & (~1));
-               _res_conv_16_conv.is_owned = (_res_conv_16 & 1) || (_res_conv_16 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_16_conv);
-               _res_constr.data[q] = _res_conv_16_conv;
-       }
-       CVec_ChannelMonitorZ_free(_res_constr);
+uint32_t  __attribute__((visibility("default"))) TS_COption_MonitorEventZ_some(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKMonitorEvent o_conv = *(LDKMonitorEvent*)(o_ptr);
+       o_conv = MonitorEvent_clone((LDKMonitorEvent*)(((uint64_t)o) & ~1));
+       LDKCOption_MonitorEventZ *ret_copy = MALLOC(sizeof(LDKCOption_MonitorEventZ), "LDKCOption_MonitorEventZ");
+       *ret_copy = COption_MonitorEventZ_some(o_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       // Warning: we need a move here but no clone is available for LDKChannelManager
-       LDKC2Tuple_BlockHashChannelManagerZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelManagerZ), "LDKC2Tuple_BlockHashChannelManagerZ");
-       *ret_conv = C2Tuple_BlockHashChannelManagerZ_new(a_ref, b_conv);
-       return ((uint64_t)ret_conv);
+uint32_t  __attribute__((visibility("default"))) TS_COption_MonitorEventZ_none() {
+       LDKCOption_MonitorEventZ *ret_copy = MALLOC(sizeof(LDKCOption_MonitorEventZ), "LDKCOption_MonitorEventZ");
+       *ret_copy = COption_MonitorEventZ_none();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelManagerZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_COption_MonitorEventZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKC2Tuple_BlockHashChannelManagerZ _res_conv = *(LDKC2Tuple_BlockHashChannelManagerZ*)(_res_ptr);
+       LDKCOption_MonitorEventZ _res_conv = *(LDKCOption_MonitorEventZ*)(_res_ptr);
        FREE((void*)_res);
-       C2Tuple_BlockHashChannelManagerZ_free(_res_conv);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKC2Tuple_BlockHashChannelManagerZ o_conv = *(LDKC2Tuple_BlockHashChannelManagerZ*)(o_ptr);
-       // Warning: we may need a move here but no clone is available for LDKC2Tuple_BlockHashChannelManagerZ
-       LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ");
-       *ret_conv = CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+       COption_MonitorEventZ_free(_res_conv);
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       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);
-       return (uint64_t)ret_conv;
+static inline uint64_t COption_MonitorEventZ_clone_ptr(LDKCOption_MonitorEventZ *NONNULL_PTR arg) {
+       LDKCOption_MonitorEventZ *ret_copy = MALLOC(sizeof(LDKCOption_MonitorEventZ), "LDKCOption_MonitorEventZ");
+       *ret_copy = COption_MonitorEventZ_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* o_conv = (LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_is_ok(o_conv);
+int64_t  __attribute__((visibility("default"))) TS_COption_MonitorEventZ_clone_ptr(uint32_t arg) {
+       LDKCOption_MonitorEventZ* arg_conv = (LDKCOption_MonitorEventZ*)arg;
+       int64_t ret_val = COption_MonitorEventZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ _res_conv = *(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(_res_conv);
-}
-
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = ChannelConfig_clone(&o_conv);
-       LDKCResult_ChannelConfigDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelConfigDecodeErrorZ), "LDKCResult_ChannelConfigDecodeErrorZ");
-       *ret_conv = CResult_ChannelConfigDecodeErrorZ_ok(o_conv);
+uint32_t  __attribute__((visibility("default"))) TS_COption_MonitorEventZ_clone(uint32_t orig) {
+       LDKCOption_MonitorEventZ* orig_conv = (LDKCOption_MonitorEventZ*)orig;
+       LDKCOption_MonitorEventZ *ret_copy = MALLOC(sizeof(LDKCOption_MonitorEventZ), "LDKCOption_MonitorEventZ");
+       *ret_copy = COption_MonitorEventZ_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_MonitorEventZDecodeErrorZ_ok(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKCOption_MonitorEventZ o_conv = *(LDKCOption_MonitorEventZ*)(o_ptr);
+       o_conv = COption_MonitorEventZ_clone((LDKCOption_MonitorEventZ*)(((uint64_t)o) & ~1));
+       LDKCResult_COption_MonitorEventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ), "LDKCResult_COption_MonitorEventZDecodeErrorZ");
+       *ret_conv = CResult_COption_MonitorEventZDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelConfigDecodeErrorZ_err(uint32_t e) {
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_MonitorEventZDecodeErrorZ_err(uint32_t e) {
        LDKDecodeError e_conv;
        e_conv.inner = (void*)(e & (~1));
        e_conv.is_owned = (e & 1) || (e == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ChannelConfigDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelConfigDecodeErrorZ), "LDKCResult_ChannelConfigDecodeErrorZ");
-       *ret_conv = CResult_ChannelConfigDecodeErrorZ_err(e_conv);
+       LDKCResult_COption_MonitorEventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ), "LDKCResult_COption_MonitorEventZDecodeErrorZ");
+       *ret_conv = CResult_COption_MonitorEventZDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelConfigDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ChannelConfigDecodeErrorZ* o_conv = (LDKCResult_ChannelConfigDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ChannelConfigDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_COption_MonitorEventZDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_COption_MonitorEventZDecodeErrorZ* o_conv = (LDKCResult_COption_MonitorEventZDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_COption_MonitorEventZDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ChannelConfigDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_COption_MonitorEventZDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_ChannelConfigDecodeErrorZ _res_conv = *(LDKCResult_ChannelConfigDecodeErrorZ*)(_res_ptr);
+       LDKCResult_COption_MonitorEventZDecodeErrorZ _res_conv = *(LDKCResult_COption_MonitorEventZDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_ChannelConfigDecodeErrorZ_free(_res_conv);
+       CResult_COption_MonitorEventZDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_ChannelConfigDecodeErrorZ_clone_ptr(LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ChannelConfigDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelConfigDecodeErrorZ), "LDKCResult_ChannelConfigDecodeErrorZ");
-       *ret_conv = CResult_ChannelConfigDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_COption_MonitorEventZDecodeErrorZ_clone_ptr(LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_COption_MonitorEventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ), "LDKCResult_COption_MonitorEventZDecodeErrorZ");
+       *ret_conv = CResult_COption_MonitorEventZDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_ChannelConfigDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ChannelConfigDecodeErrorZ* arg_conv = (LDKCResult_ChannelConfigDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ChannelConfigDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_COption_MonitorEventZDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_COption_MonitorEventZDecodeErrorZ* arg_conv = (LDKCResult_COption_MonitorEventZDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_COption_MonitorEventZDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_MonitorEventZDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_COption_MonitorEventZDecodeErrorZ* orig_conv = (LDKCResult_COption_MonitorEventZDecodeErrorZ*)(orig & ~1);
+       LDKCResult_COption_MonitorEventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ), "LDKCResult_COption_MonitorEventZDecodeErrorZ");
+       *ret_conv = CResult_COption_MonitorEventZDecodeErrorZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_OutPointDecodeErrorZ_ok(uint32_t o) {
-       LDKOutPoint o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = OutPoint_clone(&o_conv);
-       LDKCResult_OutPointDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OutPointDecodeErrorZ), "LDKCResult_OutPointDecodeErrorZ");
-       *ret_conv = CResult_OutPointDecodeErrorZ_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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_OutPointDecodeErrorZ_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_OutPointDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OutPointDecodeErrorZ), "LDKCResult_OutPointDecodeErrorZ");
-       *ret_conv = CResult_OutPointDecodeErrorZ_err(e_conv);
+       LDKCResult_HTLCUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCUpdateDecodeErrorZ), "LDKCResult_HTLCUpdateDecodeErrorZ");
+       *ret_conv = CResult_HTLCUpdateDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_OutPointDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_OutPointDecodeErrorZ* o_conv = (LDKCResult_OutPointDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_OutPointDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_HTLCUpdateDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_HTLCUpdateDecodeErrorZ* o_conv = (LDKCResult_HTLCUpdateDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_HTLCUpdateDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_OutPointDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_HTLCUpdateDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_OutPointDecodeErrorZ _res_conv = *(LDKCResult_OutPointDecodeErrorZ*)(_res_ptr);
+       LDKCResult_HTLCUpdateDecodeErrorZ _res_conv = *(LDKCResult_HTLCUpdateDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_OutPointDecodeErrorZ_free(_res_conv);
+       CResult_HTLCUpdateDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_OutPointDecodeErrorZ_clone_ptr(LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_OutPointDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OutPointDecodeErrorZ), "LDKCResult_OutPointDecodeErrorZ");
-       *ret_conv = CResult_OutPointDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_HTLCUpdateDecodeErrorZ_clone_ptr(LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_HTLCUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCUpdateDecodeErrorZ), "LDKCResult_HTLCUpdateDecodeErrorZ");
+       *ret_conv = CResult_HTLCUpdateDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_OutPointDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_OutPointDecodeErrorZ* arg_conv = (LDKCResult_OutPointDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_OutPointDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_HTLCUpdateDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_HTLCUpdateDecodeErrorZ* arg_conv = (LDKCResult_HTLCUpdateDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_HTLCUpdateDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_TypeZ_some(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKType o_conv = *(LDKType*)(o_ptr);
-       LDKCOption_TypeZ *ret_copy = MALLOC(sizeof(LDKCOption_TypeZ), "LDKCOption_TypeZ");
-       *ret_copy = COption_TypeZ_some(o_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneNoneZ_ok() {
+       LDKCResult_NoneNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneNoneZ), "LDKCResult_NoneNoneZ");
+       *ret_conv = CResult_NoneNoneZ_ok();
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_TypeZ_none() {
-       LDKCOption_TypeZ *ret_copy = MALLOC(sizeof(LDKCOption_TypeZ), "LDKCOption_TypeZ");
-       *ret_copy = COption_TypeZ_none();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneNoneZ_err() {
+       LDKCResult_NoneNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneNoneZ), "LDKCResult_NoneNoneZ");
+       *ret_conv = CResult_NoneNoneZ_err();
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_COption_TypeZ_free(uint32_t _res) {
+jboolean  __attribute__((visibility("default"))) TS_CResult_NoneNoneZ_is_ok(uint32_t o) {
+       LDKCResult_NoneNoneZ* o_conv = (LDKCResult_NoneNoneZ*)(o & ~1);
+       jboolean ret_val = CResult_NoneNoneZ_is_ok(o_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_CResult_NoneNoneZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCOption_TypeZ _res_conv = *(LDKCOption_TypeZ*)(_res_ptr);
+       LDKCResult_NoneNoneZ _res_conv = *(LDKCResult_NoneNoneZ*)(_res_ptr);
        FREE((void*)_res);
-       COption_TypeZ_free(_res_conv);
+       CResult_NoneNoneZ_free(_res_conv);
 }
 
-static inline uint64_t COption_TypeZ_clone_ptr(LDKCOption_TypeZ *NONNULL_PTR arg) {
-       LDKCOption_TypeZ *ret_copy = MALLOC(sizeof(LDKCOption_TypeZ), "LDKCOption_TypeZ");
-       *ret_copy = COption_TypeZ_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+static inline uint64_t CResult_NoneNoneZ_clone_ptr(LDKCResult_NoneNoneZ *NONNULL_PTR arg) {
+       LDKCResult_NoneNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneNoneZ), "LDKCResult_NoneNoneZ");
+       *ret_conv = CResult_NoneNoneZ_clone(arg);
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_COption_TypeZ_clone_ptr(uint32_t arg) {
-       LDKCOption_TypeZ* arg_conv = (LDKCOption_TypeZ*)arg;
-       int64_t ret_val = COption_TypeZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_NoneNoneZ_clone_ptr(uint32_t arg) {
+       LDKCResult_NoneNoneZ* arg_conv = (LDKCResult_NoneNoneZ*)(arg & ~1);
+       int64_t ret_val = CResult_NoneNoneZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_TypeZ_clone(uint32_t orig) {
-       LDKCOption_TypeZ* orig_conv = (LDKCOption_TypeZ*)orig;
-       LDKCOption_TypeZ *ret_copy = MALLOC(sizeof(LDKCOption_TypeZ), "LDKCOption_TypeZ");
-       *ret_copy = COption_TypeZ_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_TypeZDecodeErrorZ_ok(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKCOption_TypeZ o_conv = *(LDKCOption_TypeZ*)(o_ptr);
-       o_conv = COption_TypeZ_clone((LDKCOption_TypeZ*)(((uint64_t)o) & ~1));
-       LDKCResult_COption_TypeZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_TypeZDecodeErrorZ), "LDKCResult_COption_TypeZDecodeErrorZ");
-       *ret_conv = CResult_COption_TypeZDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_TypeZDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_COption_TypeZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_TypeZDecodeErrorZ), "LDKCResult_COption_TypeZDecodeErrorZ");
-       *ret_conv = CResult_COption_TypeZDecodeErrorZ_err(e_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneNoneZ_clone(uint32_t orig) {
+       LDKCResult_NoneNoneZ* orig_conv = (LDKCResult_NoneNoneZ*)(orig & ~1);
+       LDKCResult_NoneNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneNoneZ), "LDKCResult_NoneNoneZ");
+       *ret_conv = CResult_NoneNoneZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_COption_TypeZDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_COption_TypeZDecodeErrorZ* o_conv = (LDKCResult_COption_TypeZDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_COption_TypeZDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_OutPointScriptZ_new(uint32_t a, int8_tArray b) {
+       LDKOutPoint a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = (a & 1) || (a == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       a_conv = OutPoint_clone(&a_conv);
+       LDKCVec_u8Z b_ref;
+       b_ref.datalen = b->arr_len;
+       b_ref.data = MALLOC(b_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(b_ref.data, b->elems, b_ref.datalen);
+       LDKC2Tuple_OutPointScriptZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_OutPointScriptZ), "LDKC2Tuple_OutPointScriptZ");
+       *ret_conv = C2Tuple_OutPointScriptZ_new(a_conv, b_ref);
+       return ((uint64_t)ret_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_COption_TypeZDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_C2Tuple_OutPointScriptZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_COption_TypeZDecodeErrorZ _res_conv = *(LDKCResult_COption_TypeZDecodeErrorZ*)(_res_ptr);
+       LDKC2Tuple_OutPointScriptZ _res_conv = *(LDKC2Tuple_OutPointScriptZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_COption_TypeZDecodeErrorZ_free(_res_conv);
-}
-
-static inline uint64_t CResult_COption_TypeZDecodeErrorZ_clone_ptr(LDKCResult_COption_TypeZDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_COption_TypeZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_TypeZDecodeErrorZ), "LDKCResult_COption_TypeZDecodeErrorZ");
-       *ret_conv = CResult_COption_TypeZDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
-}
-int64_t  __attribute__((visibility("default"))) TS_CResult_COption_TypeZDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_COption_TypeZDecodeErrorZ* arg_conv = (LDKCResult_COption_TypeZDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_COption_TypeZDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+       C2Tuple_OutPointScriptZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_TypeZDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_COption_TypeZDecodeErrorZ* orig_conv = (LDKCResult_COption_TypeZDecodeErrorZ*)(orig & ~1);
-       LDKCResult_COption_TypeZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_TypeZDecodeErrorZ), "LDKCResult_COption_TypeZDecodeErrorZ");
-       *ret_conv = CResult_COption_TypeZDecodeErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_u32ScriptZ_new(int32_t a, int8_tArray b) {
+       LDKCVec_u8Z b_ref;
+       b_ref.datalen = b->arr_len;
+       b_ref.data = MALLOC(b_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(b_ref.data, b->elems, b_ref.datalen);
+       LDKC2Tuple_u32ScriptZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_u32ScriptZ), "LDKC2Tuple_u32ScriptZ");
+       *ret_conv = C2Tuple_u32ScriptZ_new(a, b_ref);
+       return ((uint64_t)ret_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentErrorZ_ok(int8_tArray o) {
-       LDKThirtyTwoBytes o_ref;
-       CHECK(*((uint32_t*)o) == 32);
-       memcpy(o_ref.data, (uint8_t*)(o + 4), 32);
-       LDKCResult_PaymentIdPaymentErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentErrorZ), "LDKCResult_PaymentIdPaymentErrorZ");
-       *ret_conv = CResult_PaymentIdPaymentErrorZ_ok(o_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_C2Tuple_u32ScriptZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKC2Tuple_u32ScriptZ _res_conv = *(LDKC2Tuple_u32ScriptZ*)(_res_ptr);
+       FREE((void*)_res);
+       C2Tuple_u32ScriptZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentErrorZ_err(uint32_t e) {
-       void* e_ptr = (void*)(((uint64_t)e) & ~1);
-       CHECK_ACCESS(e_ptr);
-       LDKPaymentError e_conv = *(LDKPaymentError*)(e_ptr);
-       e_conv = PaymentError_clone((LDKPaymentError*)(((uint64_t)e) & ~1));
-       LDKCResult_PaymentIdPaymentErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentErrorZ), "LDKCResult_PaymentIdPaymentErrorZ");
-       *ret_conv = CResult_PaymentIdPaymentErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_CVec_C2Tuple_u32ScriptZZ_free(uint32_tArray _res) {
+       LDKCVec_C2Tuple_u32ScriptZZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC2Tuple_u32ScriptZ), "LDKCVec_C2Tuple_u32ScriptZZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t v = 0; v < _res_constr.datalen; v++) {
+               uint32_t _res_conv_21 = _res_vals[v];
+               void* _res_conv_21_ptr = (void*)(((uint64_t)_res_conv_21) & ~1);
+               CHECK_ACCESS(_res_conv_21_ptr);
+               LDKC2Tuple_u32ScriptZ _res_conv_21_conv = *(LDKC2Tuple_u32ScriptZ*)(_res_conv_21_ptr);
+               FREE((void*)_res_conv_21);
+               _res_constr.data[v] = _res_conv_21_conv;
+       }
+       CVec_C2Tuple_u32ScriptZZ_free(_res_constr);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentErrorZ_is_ok(uint32_t o) {
-       LDKCResult_PaymentIdPaymentErrorZ* o_conv = (LDKCResult_PaymentIdPaymentErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_PaymentIdPaymentErrorZ_is_ok(o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_new(int8_tArray a, uint32_tArray b) {
+       LDKThirtyTwoBytes a_ref;
+       CHECK(a->arr_len == 32);
+       memcpy(a_ref.data, a->elems, 32);
+       LDKCVec_C2Tuple_u32ScriptZZ b_constr;
+       b_constr.datalen = b->arr_len;
+       if (b_constr.datalen > 0)
+               b_constr.data = MALLOC(b_constr.datalen * sizeof(LDKC2Tuple_u32ScriptZ), "LDKCVec_C2Tuple_u32ScriptZZ Elements");
+       else
+               b_constr.data = NULL;
+       uint32_t* b_vals = b->elems;
+       for (size_t v = 0; v < b_constr.datalen; v++) {
+               uint32_t b_conv_21 = b_vals[v];
+               void* b_conv_21_ptr = (void*)(((uint64_t)b_conv_21) & ~1);
+               CHECK_ACCESS(b_conv_21_ptr);
+               LDKC2Tuple_u32ScriptZ b_conv_21_conv = *(LDKC2Tuple_u32ScriptZ*)(b_conv_21_ptr);
+               // Warning: we may need a move here but no clone is available for LDKC2Tuple_u32ScriptZ
+               b_constr.data[v] = b_conv_21_conv;
+       }
+       LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ");
+       *ret_conv = C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_new(a_ref, b_constr);
+       return ((uint64_t)ret_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_PaymentIdPaymentErrorZ _res_conv = *(LDKCResult_PaymentIdPaymentErrorZ*)(_res_ptr);
+       LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ _res_conv = *(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_PaymentIdPaymentErrorZ_free(_res_conv);
+       C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_PaymentIdPaymentErrorZ_clone_ptr(LDKCResult_PaymentIdPaymentErrorZ *NONNULL_PTR arg) {
-       LDKCResult_PaymentIdPaymentErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentErrorZ), "LDKCResult_PaymentIdPaymentErrorZ");
-       *ret_conv = CResult_PaymentIdPaymentErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
-}
-int64_t  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_PaymentIdPaymentErrorZ* arg_conv = (LDKCResult_PaymentIdPaymentErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_PaymentIdPaymentErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(uint32_tArray _res) {
+       LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ), "LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t o = 0; o < _res_constr.datalen; o++) {
+               uint32_t _res_conv_40 = _res_vals[o];
+               void* _res_conv_40_ptr = (void*)(((uint64_t)_res_conv_40) & ~1);
+               CHECK_ACCESS(_res_conv_40_ptr);
+               LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ _res_conv_40_conv = *(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ*)(_res_conv_40_ptr);
+               FREE((void*)_res_conv_40);
+               _res_constr.data[o] = _res_conv_40_conv;
+       }
+       CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(_res_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentErrorZ_clone(uint32_t orig) {
-       LDKCResult_PaymentIdPaymentErrorZ* orig_conv = (LDKCResult_PaymentIdPaymentErrorZ*)(orig & ~1);
-       LDKCResult_PaymentIdPaymentErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentErrorZ), "LDKCResult_PaymentIdPaymentErrorZ");
-       *ret_conv = CResult_PaymentIdPaymentErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_CVec_MonitorEventZ_free(uint32_tArray _res) {
+       LDKCVec_MonitorEventZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKMonitorEvent), "LDKCVec_MonitorEventZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t o = 0; o < _res_constr.datalen; o++) {
+               uint32_t _res_conv_14 = _res_vals[o];
+               void* _res_conv_14_ptr = (void*)(((uint64_t)_res_conv_14) & ~1);
+               CHECK_ACCESS(_res_conv_14_ptr);
+               LDKMonitorEvent _res_conv_14_conv = *(LDKMonitorEvent*)(_res_conv_14_ptr);
+               FREE((void*)_res_conv_14);
+               _res_constr.data[o] = _res_conv_14_conv;
+       }
+       CVec_MonitorEventZ_free(_res_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SiPrefixNoneZ_ok(uint32_t o) {
-       LDKSiPrefix o_conv = LDKSiPrefix_from_js(o);
-       LDKCResult_SiPrefixNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SiPrefixNoneZ), "LDKCResult_SiPrefixNoneZ");
-       *ret_conv = CResult_SiPrefixNoneZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_CVec_EventZ_free(uint32_tArray _res) {
+       LDKCVec_EventZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       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 = _res->elems;
+       for (size_t h = 0; h < _res_constr.datalen; h++) {
+               uint32_t _res_conv_7 = _res_vals[h];
+               void* _res_conv_7_ptr = (void*)(((uint64_t)_res_conv_7) & ~1);
+               CHECK_ACCESS(_res_conv_7_ptr);
+               LDKEvent _res_conv_7_conv = *(LDKEvent*)(_res_conv_7_ptr);
+               FREE((void*)_res_conv_7);
+               _res_constr.data[h] = _res_conv_7_conv;
+       }
+       CVec_EventZ_free(_res_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SiPrefixNoneZ_err() {
-       LDKCResult_SiPrefixNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SiPrefixNoneZ), "LDKCResult_SiPrefixNoneZ");
-       *ret_conv = CResult_SiPrefixNoneZ_err();
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_CVec_TransactionZ_free(ptrArray _res) {
+       LDKCVec_TransactionZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKTransaction), "LDKCVec_TransactionZ Elements");
+       else
+               _res_constr.data = NULL;
+       int8_tArray* _res_vals = (void*) _res->elems;
+       for (size_t m = 0; m < _res_constr.datalen; m++) {
+               int8_tArray _res_conv_12 = _res_vals[m];
+               LDKTransaction _res_conv_12_ref;
+               _res_conv_12_ref.datalen = _res_conv_12->arr_len;
+               _res_conv_12_ref.data = MALLOC(_res_conv_12_ref.datalen, "LDKTransaction Bytes");
+               memcpy(_res_conv_12_ref.data, _res_conv_12->elems, _res_conv_12_ref.datalen);
+               _res_conv_12_ref.data_is_owned = true;
+               _res_constr.data[m] = _res_conv_12_ref;
+       }
+       CVec_TransactionZ_free(_res_constr);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_SiPrefixNoneZ_is_ok(uint32_t o) {
-       LDKCResult_SiPrefixNoneZ* o_conv = (LDKCResult_SiPrefixNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_SiPrefixNoneZ_is_ok(o_conv);
+static inline uint64_t C2Tuple_usizeTransactionZ_clone_ptr(LDKC2Tuple_usizeTransactionZ *NONNULL_PTR arg) {
+       LDKC2Tuple_usizeTransactionZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ), "LDKC2Tuple_usizeTransactionZ");
+       *ret_conv = C2Tuple_usizeTransactionZ_clone(arg);
+       return ((uint64_t)ret_conv);
+}
+int64_t  __attribute__((visibility("default"))) TS_C2Tuple_usizeTransactionZ_clone_ptr(uint32_t arg) {
+       LDKC2Tuple_usizeTransactionZ* arg_conv = (LDKC2Tuple_usizeTransactionZ*)(arg & ~1);
+       int64_t ret_val = C2Tuple_usizeTransactionZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_SiPrefixNoneZ_free(uint32_t _res) {
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_usizeTransactionZ_clone(uint32_t orig) {
+       LDKC2Tuple_usizeTransactionZ* orig_conv = (LDKC2Tuple_usizeTransactionZ*)(orig & ~1);
+       LDKC2Tuple_usizeTransactionZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ), "LDKC2Tuple_usizeTransactionZ");
+       *ret_conv = C2Tuple_usizeTransactionZ_clone(orig_conv);
+       return ((uint64_t)ret_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_usizeTransactionZ_new(int64_t a, int8_tArray b) {
+       LDKTransaction b_ref;
+       b_ref.datalen = b->arr_len;
+       b_ref.data = MALLOC(b_ref.datalen, "LDKTransaction Bytes");
+       memcpy(b_ref.data, b->elems, b_ref.datalen);
+       b_ref.data_is_owned = true;
+       LDKC2Tuple_usizeTransactionZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ), "LDKC2Tuple_usizeTransactionZ");
+       *ret_conv = C2Tuple_usizeTransactionZ_new(a, b_ref);
+       return ((uint64_t)ret_conv);
+}
+
+void  __attribute__((visibility("default"))) TS_C2Tuple_usizeTransactionZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_SiPrefixNoneZ _res_conv = *(LDKCResult_SiPrefixNoneZ*)(_res_ptr);
+       LDKC2Tuple_usizeTransactionZ _res_conv = *(LDKC2Tuple_usizeTransactionZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_SiPrefixNoneZ_free(_res_conv);
+       C2Tuple_usizeTransactionZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_SiPrefixNoneZ_clone_ptr(LDKCResult_SiPrefixNoneZ *NONNULL_PTR arg) {
-       LDKCResult_SiPrefixNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SiPrefixNoneZ), "LDKCResult_SiPrefixNoneZ");
-       *ret_conv = CResult_SiPrefixNoneZ_clone(arg);
-       return (uint64_t)ret_conv;
-}
-int64_t  __attribute__((visibility("default"))) TS_CResult_SiPrefixNoneZ_clone_ptr(uint32_t arg) {
-       LDKCResult_SiPrefixNoneZ* arg_conv = (LDKCResult_SiPrefixNoneZ*)(arg & ~1);
-       int64_t ret_val = CResult_SiPrefixNoneZ_clone_ptr(arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_CVec_C2Tuple_usizeTransactionZZ_free(uint32_tArray _res) {
+       LDKCVec_C2Tuple_usizeTransactionZZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC2Tuple_usizeTransactionZ), "LDKCVec_C2Tuple_usizeTransactionZZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t c = 0; c < _res_constr.datalen; c++) {
+               uint32_t _res_conv_28 = _res_vals[c];
+               void* _res_conv_28_ptr = (void*)(((uint64_t)_res_conv_28) & ~1);
+               CHECK_ACCESS(_res_conv_28_ptr);
+               LDKC2Tuple_usizeTransactionZ _res_conv_28_conv = *(LDKC2Tuple_usizeTransactionZ*)(_res_conv_28_ptr);
+               FREE((void*)_res_conv_28);
+               _res_constr.data[c] = _res_conv_28_conv;
+       }
+       CVec_C2Tuple_usizeTransactionZZ_free(_res_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SiPrefixNoneZ_clone(uint32_t orig) {
-       LDKCResult_SiPrefixNoneZ* orig_conv = (LDKCResult_SiPrefixNoneZ*)(orig & ~1);
-       LDKCResult_SiPrefixNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SiPrefixNoneZ), "LDKCResult_SiPrefixNoneZ");
-       *ret_conv = CResult_SiPrefixNoneZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+static inline uint64_t C2Tuple_u32TxOutZ_clone_ptr(LDKC2Tuple_u32TxOutZ *NONNULL_PTR arg) {
+       LDKC2Tuple_u32TxOutZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_u32TxOutZ), "LDKC2Tuple_u32TxOutZ");
+       *ret_conv = C2Tuple_u32TxOutZ_clone(arg);
+       return ((uint64_t)ret_conv);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceNoneZ_ok(uint32_t o) {
-       LDKInvoice o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = Invoice_clone(&o_conv);
-       LDKCResult_InvoiceNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceNoneZ), "LDKCResult_InvoiceNoneZ");
-       *ret_conv = CResult_InvoiceNoneZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+int64_t  __attribute__((visibility("default"))) TS_C2Tuple_u32TxOutZ_clone_ptr(uint32_t arg) {
+       LDKC2Tuple_u32TxOutZ* arg_conv = (LDKC2Tuple_u32TxOutZ*)(arg & ~1);
+       int64_t ret_val = C2Tuple_u32TxOutZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceNoneZ_err() {
-       LDKCResult_InvoiceNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceNoneZ), "LDKCResult_InvoiceNoneZ");
-       *ret_conv = CResult_InvoiceNoneZ_err();
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_u32TxOutZ_clone(uint32_t orig) {
+       LDKC2Tuple_u32TxOutZ* orig_conv = (LDKC2Tuple_u32TxOutZ*)(orig & ~1);
+       LDKC2Tuple_u32TxOutZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_u32TxOutZ), "LDKC2Tuple_u32TxOutZ");
+       *ret_conv = C2Tuple_u32TxOutZ_clone(orig_conv);
+       return ((uint64_t)ret_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_InvoiceNoneZ_is_ok(uint32_t o) {
-       LDKCResult_InvoiceNoneZ* o_conv = (LDKCResult_InvoiceNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_InvoiceNoneZ_is_ok(o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_u32TxOutZ_new(int32_t a, uint32_t b) {
+       void* b_ptr = (void*)(((uint64_t)b) & ~1);
+       CHECK_ACCESS(b_ptr);
+       LDKTxOut b_conv = *(LDKTxOut*)(b_ptr);
+       b_conv = TxOut_clone((LDKTxOut*)(((uint64_t)b) & ~1));
+       LDKC2Tuple_u32TxOutZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_u32TxOutZ), "LDKC2Tuple_u32TxOutZ");
+       *ret_conv = C2Tuple_u32TxOutZ_new(a, b_conv);
+       return ((uint64_t)ret_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_InvoiceNoneZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_C2Tuple_u32TxOutZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_InvoiceNoneZ _res_conv = *(LDKCResult_InvoiceNoneZ*)(_res_ptr);
+       LDKC2Tuple_u32TxOutZ _res_conv = *(LDKC2Tuple_u32TxOutZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_InvoiceNoneZ_free(_res_conv);
+       C2Tuple_u32TxOutZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_InvoiceNoneZ_clone_ptr(LDKCResult_InvoiceNoneZ *NONNULL_PTR arg) {
-       LDKCResult_InvoiceNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceNoneZ), "LDKCResult_InvoiceNoneZ");
-       *ret_conv = CResult_InvoiceNoneZ_clone(arg);
-       return (uint64_t)ret_conv;
-}
-int64_t  __attribute__((visibility("default"))) TS_CResult_InvoiceNoneZ_clone_ptr(uint32_t arg) {
-       LDKCResult_InvoiceNoneZ* arg_conv = (LDKCResult_InvoiceNoneZ*)(arg & ~1);
-       int64_t ret_val = CResult_InvoiceNoneZ_clone_ptr(arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_CVec_C2Tuple_u32TxOutZZ_free(uint32_tArray _res) {
+       LDKCVec_C2Tuple_u32TxOutZZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC2Tuple_u32TxOutZ), "LDKCVec_C2Tuple_u32TxOutZZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t u = 0; u < _res_constr.datalen; u++) {
+               uint32_t _res_conv_20 = _res_vals[u];
+               void* _res_conv_20_ptr = (void*)(((uint64_t)_res_conv_20) & ~1);
+               CHECK_ACCESS(_res_conv_20_ptr);
+               LDKC2Tuple_u32TxOutZ _res_conv_20_conv = *(LDKC2Tuple_u32TxOutZ*)(_res_conv_20_ptr);
+               FREE((void*)_res_conv_20);
+               _res_constr.data[u] = _res_conv_20_conv;
+       }
+       CVec_C2Tuple_u32TxOutZZ_free(_res_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceNoneZ_clone(uint32_t orig) {
-       LDKCResult_InvoiceNoneZ* orig_conv = (LDKCResult_InvoiceNoneZ*)(orig & ~1);
-       LDKCResult_InvoiceNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceNoneZ), "LDKCResult_InvoiceNoneZ");
-       *ret_conv = CResult_InvoiceNoneZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+static inline uint64_t C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone_ptr(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR arg) {
+       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ");
+       *ret_conv = C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone(arg);
+       return ((uint64_t)ret_conv);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SignedRawInvoiceNoneZ_ok(uint32_t o) {
-       LDKSignedRawInvoice o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = SignedRawInvoice_clone(&o_conv);
-       LDKCResult_SignedRawInvoiceNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignedRawInvoiceNoneZ), "LDKCResult_SignedRawInvoiceNoneZ");
-       *ret_conv = CResult_SignedRawInvoiceNoneZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+int64_t  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone_ptr(uint32_t arg) {
+       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* arg_conv = (LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ*)(arg & ~1);
+       int64_t ret_val = C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SignedRawInvoiceNoneZ_err() {
-       LDKCResult_SignedRawInvoiceNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignedRawInvoiceNoneZ), "LDKCResult_SignedRawInvoiceNoneZ");
-       *ret_conv = CResult_SignedRawInvoiceNoneZ_err();
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone(uint32_t orig) {
+       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* orig_conv = (LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ*)(orig & ~1);
+       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ");
+       *ret_conv = C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone(orig_conv);
+       return ((uint64_t)ret_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_SignedRawInvoiceNoneZ_is_ok(uint32_t o) {
-       LDKCResult_SignedRawInvoiceNoneZ* o_conv = (LDKCResult_SignedRawInvoiceNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_SignedRawInvoiceNoneZ_is_ok(o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new(int8_tArray a, uint32_tArray b) {
+       LDKThirtyTwoBytes a_ref;
+       CHECK(a->arr_len == 32);
+       memcpy(a_ref.data, a->elems, 32);
+       LDKCVec_C2Tuple_u32TxOutZZ b_constr;
+       b_constr.datalen = b->arr_len;
+       if (b_constr.datalen > 0)
+               b_constr.data = MALLOC(b_constr.datalen * sizeof(LDKC2Tuple_u32TxOutZ), "LDKCVec_C2Tuple_u32TxOutZZ Elements");
+       else
+               b_constr.data = NULL;
+       uint32_t* b_vals = b->elems;
+       for (size_t u = 0; u < b_constr.datalen; u++) {
+               uint32_t b_conv_20 = b_vals[u];
+               void* b_conv_20_ptr = (void*)(((uint64_t)b_conv_20) & ~1);
+               CHECK_ACCESS(b_conv_20_ptr);
+               LDKC2Tuple_u32TxOutZ b_conv_20_conv = *(LDKC2Tuple_u32TxOutZ*)(b_conv_20_ptr);
+               b_conv_20_conv = C2Tuple_u32TxOutZ_clone((LDKC2Tuple_u32TxOutZ*)(((uint64_t)b_conv_20) & ~1));
+               b_constr.data[u] = b_conv_20_conv;
+       }
+       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ");
+       *ret_conv = C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new(a_ref, b_constr);
+       return ((uint64_t)ret_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_SignedRawInvoiceNoneZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_SignedRawInvoiceNoneZ _res_conv = *(LDKCResult_SignedRawInvoiceNoneZ*)(_res_ptr);
+       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ _res_conv = *(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_SignedRawInvoiceNoneZ_free(_res_conv);
+       C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_SignedRawInvoiceNoneZ_clone_ptr(LDKCResult_SignedRawInvoiceNoneZ *NONNULL_PTR arg) {
-       LDKCResult_SignedRawInvoiceNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignedRawInvoiceNoneZ), "LDKCResult_SignedRawInvoiceNoneZ");
-       *ret_conv = CResult_SignedRawInvoiceNoneZ_clone(arg);
-       return (uint64_t)ret_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 = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ), "LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t n = 0; n < _res_constr.datalen; n++) {
+               uint32_t _res_conv_39 = _res_vals[n];
+               void* _res_conv_39_ptr = (void*)(((uint64_t)_res_conv_39) & ~1);
+               CHECK_ACCESS(_res_conv_39_ptr);
+               LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ _res_conv_39_conv = *(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ*)(_res_conv_39_ptr);
+               FREE((void*)_res_conv_39);
+               _res_constr.data[n] = _res_conv_39_conv;
+       }
+       CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_free(_res_constr);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_SignedRawInvoiceNoneZ_clone_ptr(uint32_t arg) {
-       LDKCResult_SignedRawInvoiceNoneZ* arg_conv = (LDKCResult_SignedRawInvoiceNoneZ*)(arg & ~1);
-       int64_t ret_val = CResult_SignedRawInvoiceNoneZ_clone_ptr(arg_conv);
-       return ret_val;
+
+void  __attribute__((visibility("default"))) TS_CVec_TxidZ_free(ptrArray _res) {
+       LDKCVec_TxidZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKThirtyTwoBytes), "LDKCVec_TxidZ Elements");
+       else
+               _res_constr.data = NULL;
+       int8_tArray* _res_vals = (void*) _res->elems;
+       for (size_t m = 0; m < _res_constr.datalen; m++) {
+               int8_tArray _res_conv_12 = _res_vals[m];
+               LDKThirtyTwoBytes _res_conv_12_ref;
+               CHECK(_res_conv_12->arr_len == 32);
+               memcpy(_res_conv_12_ref.data, _res_conv_12->elems, 32);
+               _res_constr.data[m] = _res_conv_12_ref;
+       }
+       CVec_TxidZ_free(_res_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SignedRawInvoiceNoneZ_clone(uint32_t orig) {
-       LDKCResult_SignedRawInvoiceNoneZ* orig_conv = (LDKCResult_SignedRawInvoiceNoneZ*)(orig & ~1);
-       LDKCResult_SignedRawInvoiceNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignedRawInvoiceNoneZ), "LDKCResult_SignedRawInvoiceNoneZ");
-       *ret_conv = CResult_SignedRawInvoiceNoneZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_CVec_BalanceZ_free(uint32_tArray _res) {
+       LDKCVec_BalanceZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKBalance), "LDKCVec_BalanceZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t j = 0; j < _res_constr.datalen; j++) {
+               uint32_t _res_conv_9 = _res_vals[j];
+               void* _res_conv_9_ptr = (void*)(((uint64_t)_res_conv_9) & ~1);
+               CHECK_ACCESS(_res_conv_9_ptr);
+               LDKBalance _res_conv_9_conv = *(LDKBalance*)(_res_conv_9_ptr);
+               FREE((void*)_res_conv_9);
+               _res_constr.data[j] = _res_conv_9_conv;
+       }
+       CVec_BalanceZ_free(_res_constr);
 }
 
-static inline uint64_t C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone_ptr(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR arg) {
-       LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* ret_conv = MALLOC(sizeof(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ), "LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ");
-       *ret_conv = C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone(arg);
+static inline uint64_t C2Tuple_BlockHashChannelMonitorZ_clone_ptr(LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR arg) {
+       LDKC2Tuple_BlockHashChannelMonitorZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelMonitorZ), "LDKC2Tuple_BlockHashChannelMonitorZ");
+       *ret_conv = C2Tuple_BlockHashChannelMonitorZ_clone(arg);
        return ((uint64_t)ret_conv);
 }
-int64_t  __attribute__((visibility("default"))) TS_C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone_ptr(uint32_t arg) {
-       LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* arg_conv = (LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ*)(arg & ~1);
-       int64_t ret_val = C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_clone_ptr(uint32_t arg) {
+       LDKC2Tuple_BlockHashChannelMonitorZ* arg_conv = (LDKC2Tuple_BlockHashChannelMonitorZ*)(arg & ~1);
+       int64_t ret_val = C2Tuple_BlockHashChannelMonitorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone(uint32_t orig) {
-       LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* orig_conv = (LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ*)(orig & ~1);
-       LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* ret_conv = MALLOC(sizeof(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ), "LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ");
-       *ret_conv = C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone(orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_clone(uint32_t orig) {
+       LDKC2Tuple_BlockHashChannelMonitorZ* orig_conv = (LDKC2Tuple_BlockHashChannelMonitorZ*)(orig & ~1);
+       LDKC2Tuple_BlockHashChannelMonitorZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelMonitorZ), "LDKC2Tuple_BlockHashChannelMonitorZ");
+       *ret_conv = C2Tuple_BlockHashChannelMonitorZ_clone(orig_conv);
        return ((uint64_t)ret_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_RawInvoice_u832InvoiceSignatureZ_new(uint32_t a, int8_tArray b, uint32_t c) {
-       LDKRawInvoice a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = (a & 1) || (a == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       a_conv = RawInvoice_clone(&a_conv);
-       LDKThirtyTwoBytes b_ref;
-       CHECK(*((uint32_t*)b) == 32);
-       memcpy(b_ref.data, (uint8_t*)(b + 4), 32);
-       LDKInvoiceSignature c_conv;
-       c_conv.inner = (void*)(c & (~1));
-       c_conv.is_owned = (c & 1) || (c == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(c_conv);
-       c_conv = InvoiceSignature_clone(&c_conv);
-       LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* ret_conv = MALLOC(sizeof(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ), "LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ");
-       *ret_conv = C3Tuple_RawInvoice_u832InvoiceSignatureZ_new(a_conv, b_ref, c_conv);
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_new(int8_tArray a, uint32_t b) {
+       LDKThirtyTwoBytes a_ref;
+       CHECK(a->arr_len == 32);
+       memcpy(a_ref.data, a->elems, 32);
+       LDKChannelMonitor b_conv;
+       b_conv.inner = (void*)(b & (~1));
+       b_conv.is_owned = (b & 1) || (b == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
+       b_conv = ChannelMonitor_clone(&b_conv);
+       LDKC2Tuple_BlockHashChannelMonitorZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelMonitorZ), "LDKC2Tuple_BlockHashChannelMonitorZ");
+       *ret_conv = C2Tuple_BlockHashChannelMonitorZ_new(a_ref, b_conv);
        return ((uint64_t)ret_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_C3Tuple_RawInvoice_u832InvoiceSignatureZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ _res_conv = *(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ*)(_res_ptr);
+       LDKC2Tuple_BlockHashChannelMonitorZ _res_conv = *(LDKC2Tuple_BlockHashChannelMonitorZ*)(_res_ptr);
        FREE((void*)_res);
-       C3Tuple_RawInvoice_u832InvoiceSignatureZ_free(_res_conv);
+       C2Tuple_BlockHashChannelMonitorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PayeePubKeyErrorZ_ok(uint32_t o) {
-       LDKPayeePubKey o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = PayeePubKey_clone(&o_conv);
-       LDKCResult_PayeePubKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeePubKeyErrorZ), "LDKCResult_PayeePubKeyErrorZ");
-       *ret_conv = CResult_PayeePubKeyErrorZ_ok(o_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKC2Tuple_BlockHashChannelMonitorZ o_conv = *(LDKC2Tuple_BlockHashChannelMonitorZ*)(o_ptr);
+       o_conv = C2Tuple_BlockHashChannelMonitorZ_clone((LDKC2Tuple_BlockHashChannelMonitorZ*)(((uint64_t)o) & ~1));
+       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ");
+       *ret_conv = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PayeePubKeyErrorZ_err(uint32_t e) {
-       LDKSecp256k1Error e_conv = LDKSecp256k1Error_from_js(e);
-       LDKCResult_PayeePubKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeePubKeyErrorZ), "LDKCResult_PayeePubKeyErrorZ");
-       *ret_conv = CResult_PayeePubKeyErrorZ_err(e_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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       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 (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_PayeePubKeyErrorZ_is_ok(uint32_t o) {
-       LDKCResult_PayeePubKeyErrorZ* o_conv = (LDKCResult_PayeePubKeyErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_PayeePubKeyErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* o_conv = (LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_PayeePubKeyErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_PayeePubKeyErrorZ _res_conv = *(LDKCResult_PayeePubKeyErrorZ*)(_res_ptr);
+       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ _res_conv = *(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_PayeePubKeyErrorZ_free(_res_conv);
+       CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_PayeePubKeyErrorZ_clone_ptr(LDKCResult_PayeePubKeyErrorZ *NONNULL_PTR arg) {
-       LDKCResult_PayeePubKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeePubKeyErrorZ), "LDKCResult_PayeePubKeyErrorZ");
-       *ret_conv = CResult_PayeePubKeyErrorZ_clone(arg);
+static inline uint64_t CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone_ptr(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ");
+       *ret_conv = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_PayeePubKeyErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_PayeePubKeyErrorZ* arg_conv = (LDKCResult_PayeePubKeyErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_PayeePubKeyErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* arg_conv = (LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PayeePubKeyErrorZ_clone(uint32_t orig) {
-       LDKCResult_PayeePubKeyErrorZ* orig_conv = (LDKCResult_PayeePubKeyErrorZ*)(orig & ~1);
-       LDKCResult_PayeePubKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeePubKeyErrorZ), "LDKCResult_PayeePubKeyErrorZ");
-       *ret_conv = CResult_PayeePubKeyErrorZ_clone(orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* orig_conv = (LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(orig & ~1);
+       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ");
+       *ret_conv = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_CVec_PrivateRouteZ_free(uint32_tArray _res) {
-       LDKCVec_PrivateRouteZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKPrivateRoute), "LDKCVec_PrivateRouteZ Elements");
-       else
-               _res_constr.data = NULL;
-       uint32_t* _res_vals = (uint32_t*)(_res + 4);
-       for (size_t o = 0; o < _res_constr.datalen; o++) {
-               uint32_t _res_conv_14 = _res_vals[o];
-               LDKPrivateRoute _res_conv_14_conv;
-               _res_conv_14_conv.inner = (void*)(_res_conv_14 & (~1));
-               _res_conv_14_conv.is_owned = (_res_conv_14 & 1) || (_res_conv_14 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_14_conv);
-               _res_constr.data[o] = _res_conv_14_conv;
-       }
-       CVec_PrivateRouteZ_free(_res_constr);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PositiveTimestampCreationErrorZ_ok(uint32_t o) {
-       LDKPositiveTimestamp o_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHopDecodeErrorZ_ok(uint32_t o) {
+       LDKRouteHop o_conv;
        o_conv.inner = (void*)(o & (~1));
        o_conv.is_owned = (o & 1) || (o == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = PositiveTimestamp_clone(&o_conv);
-       LDKCResult_PositiveTimestampCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PositiveTimestampCreationErrorZ), "LDKCResult_PositiveTimestampCreationErrorZ");
-       *ret_conv = CResult_PositiveTimestampCreationErrorZ_ok(o_conv);
+       o_conv = RouteHop_clone(&o_conv);
+       LDKCResult_RouteHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHopDecodeErrorZ), "LDKCResult_RouteHopDecodeErrorZ");
+       *ret_conv = CResult_RouteHopDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PositiveTimestampCreationErrorZ_err(uint32_t e) {
-       LDKCreationError e_conv = LDKCreationError_from_js(e);
-       LDKCResult_PositiveTimestampCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PositiveTimestampCreationErrorZ), "LDKCResult_PositiveTimestampCreationErrorZ");
-       *ret_conv = CResult_PositiveTimestampCreationErrorZ_err(e_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHopDecodeErrorZ_err(uint32_t e) {
+       LDKDecodeError e_conv;
+       e_conv.inner = (void*)(e & (~1));
+       e_conv.is_owned = (e & 1) || (e == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_RouteHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHopDecodeErrorZ), "LDKCResult_RouteHopDecodeErrorZ");
+       *ret_conv = CResult_RouteHopDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_PositiveTimestampCreationErrorZ_is_ok(uint32_t o) {
-       LDKCResult_PositiveTimestampCreationErrorZ* o_conv = (LDKCResult_PositiveTimestampCreationErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_PositiveTimestampCreationErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_RouteHopDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_RouteHopDecodeErrorZ* o_conv = (LDKCResult_RouteHopDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_RouteHopDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_PositiveTimestampCreationErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_RouteHopDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_PositiveTimestampCreationErrorZ _res_conv = *(LDKCResult_PositiveTimestampCreationErrorZ*)(_res_ptr);
+       LDKCResult_RouteHopDecodeErrorZ _res_conv = *(LDKCResult_RouteHopDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_PositiveTimestampCreationErrorZ_free(_res_conv);
+       CResult_RouteHopDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_PositiveTimestampCreationErrorZ_clone_ptr(LDKCResult_PositiveTimestampCreationErrorZ *NONNULL_PTR arg) {
-       LDKCResult_PositiveTimestampCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PositiveTimestampCreationErrorZ), "LDKCResult_PositiveTimestampCreationErrorZ");
-       *ret_conv = CResult_PositiveTimestampCreationErrorZ_clone(arg);
+static inline uint64_t CResult_RouteHopDecodeErrorZ_clone_ptr(LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_RouteHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHopDecodeErrorZ), "LDKCResult_RouteHopDecodeErrorZ");
+       *ret_conv = CResult_RouteHopDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_PositiveTimestampCreationErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_PositiveTimestampCreationErrorZ* arg_conv = (LDKCResult_PositiveTimestampCreationErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_PositiveTimestampCreationErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_RouteHopDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_RouteHopDecodeErrorZ* arg_conv = (LDKCResult_RouteHopDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_RouteHopDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PositiveTimestampCreationErrorZ_clone(uint32_t orig) {
-       LDKCResult_PositiveTimestampCreationErrorZ* orig_conv = (LDKCResult_PositiveTimestampCreationErrorZ*)(orig & ~1);
-       LDKCResult_PositiveTimestampCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PositiveTimestampCreationErrorZ), "LDKCResult_PositiveTimestampCreationErrorZ");
-       *ret_conv = CResult_PositiveTimestampCreationErrorZ_clone(orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHopDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_RouteHopDecodeErrorZ* orig_conv = (LDKCResult_RouteHopDecodeErrorZ*)(orig & ~1);
+       LDKCResult_RouteHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHopDecodeErrorZ), "LDKCResult_RouteHopDecodeErrorZ");
+       *ret_conv = CResult_RouteHopDecodeErrorZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneSemanticErrorZ_ok() {
-       LDKCResult_NoneSemanticErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneSemanticErrorZ), "LDKCResult_NoneSemanticErrorZ");
-       *ret_conv = CResult_NoneSemanticErrorZ_ok();
+void  __attribute__((visibility("default"))) TS_CVec_RouteHopZ_free(uint32_tArray _res) {
+       LDKCVec_RouteHopZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       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 = _res->elems;
+       for (size_t k = 0; k < _res_constr.datalen; k++) {
+               uint32_t _res_conv_10 = _res_vals[k];
+               LDKRouteHop _res_conv_10_conv;
+               _res_conv_10_conv.inner = (void*)(_res_conv_10 & (~1));
+               _res_conv_10_conv.is_owned = (_res_conv_10 & 1) || (_res_conv_10 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_10_conv);
+               _res_constr.data[k] = _res_conv_10_conv;
+       }
+       CVec_RouteHopZ_free(_res_constr);
+}
+
+void  __attribute__((visibility("default"))) TS_CVec_CVec_RouteHopZZ_free(ptrArray _res) {
+       LDKCVec_CVec_RouteHopZZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       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 = (void*) _res->elems;
+       for (size_t m = 0; m < _res_constr.datalen; m++) {
+               uint32_tArray _res_conv_12 = _res_vals[m];
+               LDKCVec_RouteHopZ _res_conv_12_constr;
+               _res_conv_12_constr.datalen = _res_conv_12->arr_len;
+               if (_res_conv_12_constr.datalen > 0)
+                       _res_conv_12_constr.data = MALLOC(_res_conv_12_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements");
+               else
+                       _res_conv_12_constr.data = NULL;
+               uint32_t* _res_conv_12_vals = _res_conv_12->elems;
+               for (size_t k = 0; k < _res_conv_12_constr.datalen; k++) {
+                       uint32_t _res_conv_12_conv_10 = _res_conv_12_vals[k];
+                       LDKRouteHop _res_conv_12_conv_10_conv;
+                       _res_conv_12_conv_10_conv.inner = (void*)(_res_conv_12_conv_10 & (~1));
+                       _res_conv_12_conv_10_conv.is_owned = (_res_conv_12_conv_10 & 1) || (_res_conv_12_conv_10 == 0);
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_12_conv_10_conv);
+                       _res_conv_12_constr.data[k] = _res_conv_12_conv_10_conv;
+               }
+               _res_constr.data[m] = _res_conv_12_constr;
+       }
+       CVec_CVec_RouteHopZZ_free(_res_constr);
+}
+
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = Route_clone(&o_conv);
+       LDKCResult_RouteDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteDecodeErrorZ), "LDKCResult_RouteDecodeErrorZ");
+       *ret_conv = CResult_RouteDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneSemanticErrorZ_err(uint32_t e) {
-       LDKSemanticError e_conv = LDKSemanticError_from_js(e);
-       LDKCResult_NoneSemanticErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneSemanticErrorZ), "LDKCResult_NoneSemanticErrorZ");
-       *ret_conv = CResult_NoneSemanticErrorZ_err(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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(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 (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_NoneSemanticErrorZ_is_ok(uint32_t o) {
-       LDKCResult_NoneSemanticErrorZ* o_conv = (LDKCResult_NoneSemanticErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_NoneSemanticErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_RouteDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_RouteDecodeErrorZ* o_conv = (LDKCResult_RouteDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_RouteDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_NoneSemanticErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_RouteDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_NoneSemanticErrorZ _res_conv = *(LDKCResult_NoneSemanticErrorZ*)(_res_ptr);
+       LDKCResult_RouteDecodeErrorZ _res_conv = *(LDKCResult_RouteDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_NoneSemanticErrorZ_free(_res_conv);
+       CResult_RouteDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_NoneSemanticErrorZ_clone_ptr(LDKCResult_NoneSemanticErrorZ *NONNULL_PTR arg) {
-       LDKCResult_NoneSemanticErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneSemanticErrorZ), "LDKCResult_NoneSemanticErrorZ");
-       *ret_conv = CResult_NoneSemanticErrorZ_clone(arg);
+static inline uint64_t CResult_RouteDecodeErrorZ_clone_ptr(LDKCResult_RouteDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_RouteDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteDecodeErrorZ), "LDKCResult_RouteDecodeErrorZ");
+       *ret_conv = CResult_RouteDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_NoneSemanticErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_NoneSemanticErrorZ* arg_conv = (LDKCResult_NoneSemanticErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_NoneSemanticErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_RouteDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_RouteDecodeErrorZ* arg_conv = (LDKCResult_RouteDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_RouteDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneSemanticErrorZ_clone(uint32_t orig) {
-       LDKCResult_NoneSemanticErrorZ* orig_conv = (LDKCResult_NoneSemanticErrorZ*)(orig & ~1);
-       LDKCResult_NoneSemanticErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneSemanticErrorZ), "LDKCResult_NoneSemanticErrorZ");
-       *ret_conv = CResult_NoneSemanticErrorZ_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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceSemanticErrorZ_ok(uint32_t o) {
-       LDKInvoice o_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteParametersDecodeErrorZ_ok(uint32_t o) {
+       LDKRouteParameters o_conv;
        o_conv.inner = (void*)(o & (~1));
        o_conv.is_owned = (o & 1) || (o == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = Invoice_clone(&o_conv);
-       LDKCResult_InvoiceSemanticErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceSemanticErrorZ), "LDKCResult_InvoiceSemanticErrorZ");
-       *ret_conv = CResult_InvoiceSemanticErrorZ_ok(o_conv);
+       o_conv = RouteParameters_clone(&o_conv);
+       LDKCResult_RouteParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteParametersDecodeErrorZ), "LDKCResult_RouteParametersDecodeErrorZ");
+       *ret_conv = CResult_RouteParametersDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceSemanticErrorZ_err(uint32_t e) {
-       LDKSemanticError e_conv = LDKSemanticError_from_js(e);
-       LDKCResult_InvoiceSemanticErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceSemanticErrorZ), "LDKCResult_InvoiceSemanticErrorZ");
-       *ret_conv = CResult_InvoiceSemanticErrorZ_err(e_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteParametersDecodeErrorZ_err(uint32_t e) {
+       LDKDecodeError e_conv;
+       e_conv.inner = (void*)(e & (~1));
+       e_conv.is_owned = (e & 1) || (e == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_RouteParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteParametersDecodeErrorZ), "LDKCResult_RouteParametersDecodeErrorZ");
+       *ret_conv = CResult_RouteParametersDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_InvoiceSemanticErrorZ_is_ok(uint32_t o) {
-       LDKCResult_InvoiceSemanticErrorZ* o_conv = (LDKCResult_InvoiceSemanticErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_InvoiceSemanticErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_RouteParametersDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_RouteParametersDecodeErrorZ* o_conv = (LDKCResult_RouteParametersDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_RouteParametersDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_InvoiceSemanticErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_RouteParametersDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_InvoiceSemanticErrorZ _res_conv = *(LDKCResult_InvoiceSemanticErrorZ*)(_res_ptr);
+       LDKCResult_RouteParametersDecodeErrorZ _res_conv = *(LDKCResult_RouteParametersDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_InvoiceSemanticErrorZ_free(_res_conv);
+       CResult_RouteParametersDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_InvoiceSemanticErrorZ_clone_ptr(LDKCResult_InvoiceSemanticErrorZ *NONNULL_PTR arg) {
-       LDKCResult_InvoiceSemanticErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceSemanticErrorZ), "LDKCResult_InvoiceSemanticErrorZ");
-       *ret_conv = CResult_InvoiceSemanticErrorZ_clone(arg);
+static inline uint64_t CResult_RouteParametersDecodeErrorZ_clone_ptr(LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_RouteParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteParametersDecodeErrorZ), "LDKCResult_RouteParametersDecodeErrorZ");
+       *ret_conv = CResult_RouteParametersDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_InvoiceSemanticErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_InvoiceSemanticErrorZ* arg_conv = (LDKCResult_InvoiceSemanticErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_InvoiceSemanticErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_RouteParametersDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_RouteParametersDecodeErrorZ* arg_conv = (LDKCResult_RouteParametersDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_RouteParametersDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceSemanticErrorZ_clone(uint32_t orig) {
-       LDKCResult_InvoiceSemanticErrorZ* orig_conv = (LDKCResult_InvoiceSemanticErrorZ*)(orig & ~1);
-       LDKCResult_InvoiceSemanticErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceSemanticErrorZ), "LDKCResult_InvoiceSemanticErrorZ");
-       *ret_conv = CResult_InvoiceSemanticErrorZ_clone(orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteParametersDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_RouteParametersDecodeErrorZ* orig_conv = (LDKCResult_RouteParametersDecodeErrorZ*)(orig & ~1);
+       LDKCResult_RouteParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteParametersDecodeErrorZ), "LDKCResult_RouteParametersDecodeErrorZ");
+       *ret_conv = CResult_RouteParametersDecodeErrorZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_DescriptionCreationErrorZ_ok(uint32_t o) {
-       LDKDescription o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = Description_clone(&o_conv);
-       LDKCResult_DescriptionCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DescriptionCreationErrorZ), "LDKCResult_DescriptionCreationErrorZ");
-       *ret_conv = CResult_DescriptionCreationErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_CVec_RouteHintZ_free(uint32_tArray _res) {
+       LDKCVec_RouteHintZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       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 = _res->elems;
+       for (size_t l = 0; l < _res_constr.datalen; l++) {
+               uint32_t _res_conv_11 = _res_vals[l];
+               LDKRouteHint _res_conv_11_conv;
+               _res_conv_11_conv.inner = (void*)(_res_conv_11 & (~1));
+               _res_conv_11_conv.is_owned = (_res_conv_11 & 1) || (_res_conv_11 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_11_conv);
+               _res_constr.data[l] = _res_conv_11_conv;
+       }
+       CVec_RouteHintZ_free(_res_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_DescriptionCreationErrorZ_err(uint32_t e) {
-       LDKCreationError e_conv = LDKCreationError_from_js(e);
-       LDKCResult_DescriptionCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DescriptionCreationErrorZ), "LDKCResult_DescriptionCreationErrorZ");
-       *ret_conv = CResult_DescriptionCreationErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_COption_u64Z_some(int64_t o) {
+       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
+       *ret_copy = COption_u64Z_some(o);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_DescriptionCreationErrorZ_is_ok(uint32_t o) {
-       LDKCResult_DescriptionCreationErrorZ* o_conv = (LDKCResult_DescriptionCreationErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_DescriptionCreationErrorZ_is_ok(o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_COption_u64Z_none() {
+       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
+       *ret_copy = COption_u64Z_none();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_DescriptionCreationErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_COption_u64Z_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_DescriptionCreationErrorZ _res_conv = *(LDKCResult_DescriptionCreationErrorZ*)(_res_ptr);
+       LDKCOption_u64Z _res_conv = *(LDKCOption_u64Z*)(_res_ptr);
        FREE((void*)_res);
-       CResult_DescriptionCreationErrorZ_free(_res_conv);
+       COption_u64Z_free(_res_conv);
 }
 
-static inline uint64_t CResult_DescriptionCreationErrorZ_clone_ptr(LDKCResult_DescriptionCreationErrorZ *NONNULL_PTR arg) {
-       LDKCResult_DescriptionCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DescriptionCreationErrorZ), "LDKCResult_DescriptionCreationErrorZ");
-       *ret_conv = CResult_DescriptionCreationErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline uint64_t COption_u64Z_clone_ptr(LDKCOption_u64Z *NONNULL_PTR arg) {
+       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
+       *ret_copy = COption_u64Z_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_DescriptionCreationErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_DescriptionCreationErrorZ* arg_conv = (LDKCResult_DescriptionCreationErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_DescriptionCreationErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_COption_u64Z_clone_ptr(uint32_t arg) {
+       LDKCOption_u64Z* arg_conv = (LDKCOption_u64Z*)arg;
+       int64_t ret_val = COption_u64Z_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_DescriptionCreationErrorZ_clone(uint32_t orig) {
-       LDKCResult_DescriptionCreationErrorZ* orig_conv = (LDKCResult_DescriptionCreationErrorZ*)(orig & ~1);
-       LDKCResult_DescriptionCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DescriptionCreationErrorZ), "LDKCResult_DescriptionCreationErrorZ");
-       *ret_conv = CResult_DescriptionCreationErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_COption_u64Z_clone(uint32_t orig) {
+       LDKCOption_u64Z* orig_conv = (LDKCOption_u64Z*)orig;
+       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
+       *ret_copy = COption_u64Z_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ExpiryTimeCreationErrorZ_ok(uint32_t o) {
-       LDKExpiryTime o_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PayeeDecodeErrorZ_ok(uint32_t o) {
+       LDKPayee o_conv;
        o_conv.inner = (void*)(o & (~1));
        o_conv.is_owned = (o & 1) || (o == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = ExpiryTime_clone(&o_conv);
-       LDKCResult_ExpiryTimeCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ExpiryTimeCreationErrorZ), "LDKCResult_ExpiryTimeCreationErrorZ");
-       *ret_conv = CResult_ExpiryTimeCreationErrorZ_ok(o_conv);
+       o_conv = Payee_clone(&o_conv);
+       LDKCResult_PayeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeeDecodeErrorZ), "LDKCResult_PayeeDecodeErrorZ");
+       *ret_conv = CResult_PayeeDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ExpiryTimeCreationErrorZ_err(uint32_t e) {
-       LDKCreationError e_conv = LDKCreationError_from_js(e);
-       LDKCResult_ExpiryTimeCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ExpiryTimeCreationErrorZ), "LDKCResult_ExpiryTimeCreationErrorZ");
-       *ret_conv = CResult_ExpiryTimeCreationErrorZ_err(e_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PayeeDecodeErrorZ_err(uint32_t e) {
+       LDKDecodeError e_conv;
+       e_conv.inner = (void*)(e & (~1));
+       e_conv.is_owned = (e & 1) || (e == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_PayeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeeDecodeErrorZ), "LDKCResult_PayeeDecodeErrorZ");
+       *ret_conv = CResult_PayeeDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ExpiryTimeCreationErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ExpiryTimeCreationErrorZ* o_conv = (LDKCResult_ExpiryTimeCreationErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ExpiryTimeCreationErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_PayeeDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_PayeeDecodeErrorZ* o_conv = (LDKCResult_PayeeDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_PayeeDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ExpiryTimeCreationErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_PayeeDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_ExpiryTimeCreationErrorZ _res_conv = *(LDKCResult_ExpiryTimeCreationErrorZ*)(_res_ptr);
+       LDKCResult_PayeeDecodeErrorZ _res_conv = *(LDKCResult_PayeeDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_ExpiryTimeCreationErrorZ_free(_res_conv);
+       CResult_PayeeDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_ExpiryTimeCreationErrorZ_clone_ptr(LDKCResult_ExpiryTimeCreationErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ExpiryTimeCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ExpiryTimeCreationErrorZ), "LDKCResult_ExpiryTimeCreationErrorZ");
-       *ret_conv = CResult_ExpiryTimeCreationErrorZ_clone(arg);
+static inline uint64_t CResult_PayeeDecodeErrorZ_clone_ptr(LDKCResult_PayeeDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_PayeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeeDecodeErrorZ), "LDKCResult_PayeeDecodeErrorZ");
+       *ret_conv = CResult_PayeeDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_ExpiryTimeCreationErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ExpiryTimeCreationErrorZ* arg_conv = (LDKCResult_ExpiryTimeCreationErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ExpiryTimeCreationErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_PayeeDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_PayeeDecodeErrorZ* arg_conv = (LDKCResult_PayeeDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_PayeeDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ExpiryTimeCreationErrorZ_clone(uint32_t orig) {
-       LDKCResult_ExpiryTimeCreationErrorZ* orig_conv = (LDKCResult_ExpiryTimeCreationErrorZ*)(orig & ~1);
-       LDKCResult_ExpiryTimeCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ExpiryTimeCreationErrorZ), "LDKCResult_ExpiryTimeCreationErrorZ");
-       *ret_conv = CResult_ExpiryTimeCreationErrorZ_clone(orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PayeeDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_PayeeDecodeErrorZ* orig_conv = (LDKCResult_PayeeDecodeErrorZ*)(orig & ~1);
+       LDKCResult_PayeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeeDecodeErrorZ), "LDKCResult_PayeeDecodeErrorZ");
+       *ret_conv = CResult_PayeeDecodeErrorZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PrivateRouteCreationErrorZ_ok(uint32_t o) {
-       LDKPrivateRoute o_conv;
+void  __attribute__((visibility("default"))) TS_CVec_RouteHintHopZ_free(uint32_tArray _res) {
+       LDKCVec_RouteHintHopZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKRouteHintHop), "LDKCVec_RouteHintHopZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t o = 0; o < _res_constr.datalen; o++) {
+               uint32_t _res_conv_14 = _res_vals[o];
+               LDKRouteHintHop _res_conv_14_conv;
+               _res_conv_14_conv.inner = (void*)(_res_conv_14 & (~1));
+               _res_conv_14_conv.is_owned = (_res_conv_14 & 1) || (_res_conv_14 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_14_conv);
+               _res_constr.data[o] = _res_conv_14_conv;
+       }
+       CVec_RouteHintHopZ_free(_res_constr);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintDecodeErrorZ_ok(uint32_t o) {
+       LDKRouteHint o_conv;
        o_conv.inner = (void*)(o & (~1));
        o_conv.is_owned = (o & 1) || (o == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = PrivateRoute_clone(&o_conv);
-       LDKCResult_PrivateRouteCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PrivateRouteCreationErrorZ), "LDKCResult_PrivateRouteCreationErrorZ");
-       *ret_conv = CResult_PrivateRouteCreationErrorZ_ok(o_conv);
+       o_conv = RouteHint_clone(&o_conv);
+       LDKCResult_RouteHintDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintDecodeErrorZ), "LDKCResult_RouteHintDecodeErrorZ");
+       *ret_conv = CResult_RouteHintDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PrivateRouteCreationErrorZ_err(uint32_t e) {
-       LDKCreationError e_conv = LDKCreationError_from_js(e);
-       LDKCResult_PrivateRouteCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PrivateRouteCreationErrorZ), "LDKCResult_PrivateRouteCreationErrorZ");
-       *ret_conv = CResult_PrivateRouteCreationErrorZ_err(e_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintDecodeErrorZ_err(uint32_t e) {
+       LDKDecodeError e_conv;
+       e_conv.inner = (void*)(e & (~1));
+       e_conv.is_owned = (e & 1) || (e == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_RouteHintDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintDecodeErrorZ), "LDKCResult_RouteHintDecodeErrorZ");
+       *ret_conv = CResult_RouteHintDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_PrivateRouteCreationErrorZ_is_ok(uint32_t o) {
-       LDKCResult_PrivateRouteCreationErrorZ* o_conv = (LDKCResult_PrivateRouteCreationErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_PrivateRouteCreationErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_RouteHintDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_RouteHintDecodeErrorZ* o_conv = (LDKCResult_RouteHintDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_RouteHintDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_PrivateRouteCreationErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_RouteHintDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_PrivateRouteCreationErrorZ _res_conv = *(LDKCResult_PrivateRouteCreationErrorZ*)(_res_ptr);
+       LDKCResult_RouteHintDecodeErrorZ _res_conv = *(LDKCResult_RouteHintDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_PrivateRouteCreationErrorZ_free(_res_conv);
+       CResult_RouteHintDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_PrivateRouteCreationErrorZ_clone_ptr(LDKCResult_PrivateRouteCreationErrorZ *NONNULL_PTR arg) {
-       LDKCResult_PrivateRouteCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PrivateRouteCreationErrorZ), "LDKCResult_PrivateRouteCreationErrorZ");
-       *ret_conv = CResult_PrivateRouteCreationErrorZ_clone(arg);
+static inline uint64_t CResult_RouteHintDecodeErrorZ_clone_ptr(LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_RouteHintDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintDecodeErrorZ), "LDKCResult_RouteHintDecodeErrorZ");
+       *ret_conv = CResult_RouteHintDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_PrivateRouteCreationErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_PrivateRouteCreationErrorZ* arg_conv = (LDKCResult_PrivateRouteCreationErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_PrivateRouteCreationErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_RouteHintDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_RouteHintDecodeErrorZ* arg_conv = (LDKCResult_RouteHintDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_RouteHintDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PrivateRouteCreationErrorZ_clone(uint32_t orig) {
-       LDKCResult_PrivateRouteCreationErrorZ* orig_conv = (LDKCResult_PrivateRouteCreationErrorZ*)(orig & ~1);
-       LDKCResult_PrivateRouteCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PrivateRouteCreationErrorZ), "LDKCResult_PrivateRouteCreationErrorZ");
-       *ret_conv = CResult_PrivateRouteCreationErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_StringErrorZ_ok(jstring o) {
-       LDKStr o_conv = str_ref_to_owned_c(o);
-       LDKCResult_StringErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StringErrorZ), "LDKCResult_StringErrorZ");
-       *ret_conv = CResult_StringErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_StringErrorZ_err(uint32_t e) {
-       LDKSecp256k1Error e_conv = LDKSecp256k1Error_from_js(e);
-       LDKCResult_StringErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StringErrorZ), "LDKCResult_StringErrorZ");
-       *ret_conv = CResult_StringErrorZ_err(e_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_RouteHintDecodeErrorZ* orig_conv = (LDKCResult_RouteHintDecodeErrorZ*)(orig & ~1);
+       LDKCResult_RouteHintDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintDecodeErrorZ), "LDKCResult_RouteHintDecodeErrorZ");
+       *ret_conv = CResult_RouteHintDecodeErrorZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_StringErrorZ_is_ok(uint32_t o) {
-       LDKCResult_StringErrorZ* o_conv = (LDKCResult_StringErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_StringErrorZ_is_ok(o_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_CResult_StringErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_StringErrorZ _res_conv = *(LDKCResult_StringErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_StringErrorZ_free(_res_conv);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelMonitorUpdateDecodeErrorZ_ok(uint32_t o) {
-       LDKChannelMonitorUpdate o_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintHopDecodeErrorZ_ok(uint32_t o) {
+       LDKRouteHintHop o_conv;
        o_conv.inner = (void*)(o & (~1));
        o_conv.is_owned = (o & 1) || (o == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       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 = RouteHintHop_clone(&o_conv);
+       LDKCResult_RouteHintHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintHopDecodeErrorZ), "LDKCResult_RouteHintHopDecodeErrorZ");
+       *ret_conv = CResult_RouteHintHopDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelMonitorUpdateDecodeErrorZ_err(uint32_t e) {
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintHopDecodeErrorZ_err(uint32_t e) {
        LDKDecodeError e_conv;
        e_conv.inner = (void*)(e & (~1));
        e_conv.is_owned = (e & 1) || (e == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ChannelMonitorUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ), "LDKCResult_ChannelMonitorUpdateDecodeErrorZ");
-       *ret_conv = CResult_ChannelMonitorUpdateDecodeErrorZ_err(e_conv);
+       LDKCResult_RouteHintHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintHopDecodeErrorZ), "LDKCResult_RouteHintHopDecodeErrorZ");
+       *ret_conv = CResult_RouteHintHopDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelMonitorUpdateDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ChannelMonitorUpdateDecodeErrorZ* o_conv = (LDKCResult_ChannelMonitorUpdateDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ChannelMonitorUpdateDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_RouteHintHopDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_RouteHintHopDecodeErrorZ* o_conv = (LDKCResult_RouteHintHopDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_RouteHintHopDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ChannelMonitorUpdateDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_RouteHintHopDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_ChannelMonitorUpdateDecodeErrorZ _res_conv = *(LDKCResult_ChannelMonitorUpdateDecodeErrorZ*)(_res_ptr);
+       LDKCResult_RouteHintHopDecodeErrorZ _res_conv = *(LDKCResult_RouteHintHopDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_ChannelMonitorUpdateDecodeErrorZ_free(_res_conv);
+       CResult_RouteHintHopDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_ChannelMonitorUpdateDecodeErrorZ_clone_ptr(LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ChannelMonitorUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ), "LDKCResult_ChannelMonitorUpdateDecodeErrorZ");
-       *ret_conv = CResult_ChannelMonitorUpdateDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_RouteHintHopDecodeErrorZ_clone_ptr(LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_RouteHintHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintHopDecodeErrorZ), "LDKCResult_RouteHintHopDecodeErrorZ");
+       *ret_conv = CResult_RouteHintHopDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_ChannelMonitorUpdateDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ChannelMonitorUpdateDecodeErrorZ* arg_conv = (LDKCResult_ChannelMonitorUpdateDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ChannelMonitorUpdateDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_RouteHintHopDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_RouteHintHopDecodeErrorZ* arg_conv = (LDKCResult_RouteHintHopDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_RouteHintHopDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintHopDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_RouteHintHopDecodeErrorZ* orig_conv = (LDKCResult_RouteHintHopDecodeErrorZ*)(orig & ~1);
+       LDKCResult_RouteHintHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintHopDecodeErrorZ), "LDKCResult_RouteHintHopDecodeErrorZ");
+       *ret_conv = CResult_RouteHintHopDecodeErrorZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_MonitorEventZ_some(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKMonitorEvent o_conv = *(LDKMonitorEvent*)(o_ptr);
-       o_conv = MonitorEvent_clone((LDKMonitorEvent*)(((uint64_t)o) & ~1));
-       LDKCOption_MonitorEventZ *ret_copy = MALLOC(sizeof(LDKCOption_MonitorEventZ), "LDKCOption_MonitorEventZ");
-       *ret_copy = COption_MonitorEventZ_some(o_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_COption_MonitorEventZ_none() {
-       LDKCOption_MonitorEventZ *ret_copy = MALLOC(sizeof(LDKCOption_MonitorEventZ), "LDKCOption_MonitorEventZ");
-       *ret_copy = COption_MonitorEventZ_none();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-void  __attribute__((visibility("default"))) TS_COption_MonitorEventZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCOption_MonitorEventZ _res_conv = *(LDKCOption_MonitorEventZ*)(_res_ptr);
-       FREE((void*)_res);
-       COption_MonitorEventZ_free(_res_conv);
-}
-
-static inline uint64_t COption_MonitorEventZ_clone_ptr(LDKCOption_MonitorEventZ *NONNULL_PTR arg) {
-       LDKCOption_MonitorEventZ *ret_copy = MALLOC(sizeof(LDKCOption_MonitorEventZ), "LDKCOption_MonitorEventZ");
-       *ret_copy = COption_MonitorEventZ_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_COption_MonitorEventZ_clone_ptr(uint32_t arg) {
-       LDKCOption_MonitorEventZ* arg_conv = (LDKCOption_MonitorEventZ*)arg;
-       int64_t ret_val = COption_MonitorEventZ_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_COption_MonitorEventZ_clone(uint32_t orig) {
-       LDKCOption_MonitorEventZ* orig_conv = (LDKCOption_MonitorEventZ*)orig;
-       LDKCOption_MonitorEventZ *ret_copy = MALLOC(sizeof(LDKCOption_MonitorEventZ), "LDKCOption_MonitorEventZ");
-       *ret_copy = COption_MonitorEventZ_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_CVec_ChannelDetailsZ_free(uint32_tArray _res) {
+       LDKCVec_ChannelDetailsZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       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 = _res->elems;
+       for (size_t q = 0; q < _res_constr.datalen; q++) {
+               uint32_t _res_conv_16 = _res_vals[q];
+               LDKChannelDetails _res_conv_16_conv;
+               _res_conv_16_conv.inner = (void*)(_res_conv_16 & (~1));
+               _res_conv_16_conv.is_owned = (_res_conv_16 & 1) || (_res_conv_16 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_16_conv);
+               _res_constr.data[q] = _res_conv_16_conv;
+       }
+       CVec_ChannelDetailsZ_free(_res_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_MonitorEventZDecodeErrorZ_ok(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKCOption_MonitorEventZ o_conv = *(LDKCOption_MonitorEventZ*)(o_ptr);
-       o_conv = COption_MonitorEventZ_clone((LDKCOption_MonitorEventZ*)(((uint64_t)o) & ~1));
-       LDKCResult_COption_MonitorEventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ), "LDKCResult_COption_MonitorEventZDecodeErrorZ");
-       *ret_conv = CResult_COption_MonitorEventZDecodeErrorZ_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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = Route_clone(&o_conv);
+       LDKCResult_RouteLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteLightningErrorZ), "LDKCResult_RouteLightningErrorZ");
+       *ret_conv = CResult_RouteLightningErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_MonitorEventZDecodeErrorZ_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_COption_MonitorEventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ), "LDKCResult_COption_MonitorEventZDecodeErrorZ");
-       *ret_conv = CResult_COption_MonitorEventZDecodeErrorZ_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 (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_COption_MonitorEventZDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_COption_MonitorEventZDecodeErrorZ* o_conv = (LDKCResult_COption_MonitorEventZDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_COption_MonitorEventZDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_RouteLightningErrorZ_is_ok(uint32_t o) {
+       LDKCResult_RouteLightningErrorZ* o_conv = (LDKCResult_RouteLightningErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_RouteLightningErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_COption_MonitorEventZDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_RouteLightningErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_COption_MonitorEventZDecodeErrorZ _res_conv = *(LDKCResult_COption_MonitorEventZDecodeErrorZ*)(_res_ptr);
+       LDKCResult_RouteLightningErrorZ _res_conv = *(LDKCResult_RouteLightningErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_COption_MonitorEventZDecodeErrorZ_free(_res_conv);
+       CResult_RouteLightningErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_COption_MonitorEventZDecodeErrorZ_clone_ptr(LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_COption_MonitorEventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ), "LDKCResult_COption_MonitorEventZDecodeErrorZ");
-       *ret_conv = CResult_COption_MonitorEventZDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_RouteLightningErrorZ_clone_ptr(LDKCResult_RouteLightningErrorZ *NONNULL_PTR arg) {
+       LDKCResult_RouteLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteLightningErrorZ), "LDKCResult_RouteLightningErrorZ");
+       *ret_conv = CResult_RouteLightningErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_COption_MonitorEventZDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_COption_MonitorEventZDecodeErrorZ* arg_conv = (LDKCResult_COption_MonitorEventZDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_COption_MonitorEventZDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_RouteLightningErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_RouteLightningErrorZ* arg_conv = (LDKCResult_RouteLightningErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_RouteLightningErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_MonitorEventZDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_COption_MonitorEventZDecodeErrorZ* orig_conv = (LDKCResult_COption_MonitorEventZDecodeErrorZ*)(orig & ~1);
-       LDKCResult_COption_MonitorEventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ), "LDKCResult_COption_MonitorEventZDecodeErrorZ");
-       *ret_conv = CResult_COption_MonitorEventZDecodeErrorZ_clone(orig_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 (uint64_t)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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneLightningErrorZ_ok() {
+       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
+       *ret_conv = CResult_NoneLightningErrorZ_ok();
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_HTLCUpdateDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_HTLCUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCUpdateDecodeErrorZ), "LDKCResult_HTLCUpdateDecodeErrorZ");
-       *ret_conv = CResult_HTLCUpdateDecodeErrorZ_err(e_conv);
+       e_conv = LightningError_clone(&e_conv);
+       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
+       *ret_conv = CResult_NoneLightningErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_HTLCUpdateDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_HTLCUpdateDecodeErrorZ* o_conv = (LDKCResult_HTLCUpdateDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_HTLCUpdateDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_NoneLightningErrorZ_is_ok(uint32_t o) {
+       LDKCResult_NoneLightningErrorZ* o_conv = (LDKCResult_NoneLightningErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_NoneLightningErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_HTLCUpdateDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_NoneLightningErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_HTLCUpdateDecodeErrorZ _res_conv = *(LDKCResult_HTLCUpdateDecodeErrorZ*)(_res_ptr);
+       LDKCResult_NoneLightningErrorZ _res_conv = *(LDKCResult_NoneLightningErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_HTLCUpdateDecodeErrorZ_free(_res_conv);
+       CResult_NoneLightningErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_HTLCUpdateDecodeErrorZ_clone_ptr(LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_HTLCUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCUpdateDecodeErrorZ), "LDKCResult_HTLCUpdateDecodeErrorZ");
-       *ret_conv = CResult_HTLCUpdateDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_NoneLightningErrorZ_clone_ptr(LDKCResult_NoneLightningErrorZ *NONNULL_PTR arg) {
+       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
+       *ret_conv = CResult_NoneLightningErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_HTLCUpdateDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_HTLCUpdateDecodeErrorZ* arg_conv = (LDKCResult_HTLCUpdateDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_HTLCUpdateDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_NoneLightningErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_NoneLightningErrorZ* arg_conv = (LDKCResult_NoneLightningErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_NoneLightningErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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);
        return (uint64_t)ret_conv;
 }
 
-static inline uint64_t C2Tuple_OutPointScriptZ_clone_ptr(LDKC2Tuple_OutPointScriptZ *NONNULL_PTR arg) {
-       LDKC2Tuple_OutPointScriptZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_OutPointScriptZ), "LDKC2Tuple_OutPointScriptZ");
-       *ret_conv = C2Tuple_OutPointScriptZ_clone(arg);
+static inline uint64_t C2Tuple_PublicKeyTypeZ_clone_ptr(LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR arg) {
+       LDKC2Tuple_PublicKeyTypeZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PublicKeyTypeZ), "LDKC2Tuple_PublicKeyTypeZ");
+       *ret_conv = C2Tuple_PublicKeyTypeZ_clone(arg);
        return ((uint64_t)ret_conv);
 }
-int64_t  __attribute__((visibility("default"))) TS_C2Tuple_OutPointScriptZ_clone_ptr(uint32_t arg) {
-       LDKC2Tuple_OutPointScriptZ* arg_conv = (LDKC2Tuple_OutPointScriptZ*)(arg & ~1);
-       int64_t ret_val = C2Tuple_OutPointScriptZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_C2Tuple_PublicKeyTypeZ_clone_ptr(uint32_t arg) {
+       LDKC2Tuple_PublicKeyTypeZ* arg_conv = (LDKC2Tuple_PublicKeyTypeZ*)(arg & ~1);
+       int64_t ret_val = C2Tuple_PublicKeyTypeZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_OutPointScriptZ_clone(uint32_t orig) {
-       LDKC2Tuple_OutPointScriptZ* orig_conv = (LDKC2Tuple_OutPointScriptZ*)(orig & ~1);
-       LDKC2Tuple_OutPointScriptZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_OutPointScriptZ), "LDKC2Tuple_OutPointScriptZ");
-       *ret_conv = C2Tuple_OutPointScriptZ_clone(orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_PublicKeyTypeZ_clone(uint32_t orig) {
+       LDKC2Tuple_PublicKeyTypeZ* orig_conv = (LDKC2Tuple_PublicKeyTypeZ*)(orig & ~1);
+       LDKC2Tuple_PublicKeyTypeZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PublicKeyTypeZ), "LDKC2Tuple_PublicKeyTypeZ");
+       *ret_conv = C2Tuple_PublicKeyTypeZ_clone(orig_conv);
        return ((uint64_t)ret_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_OutPointScriptZ_new(uint32_t a, int8_tArray b) {
-       LDKOutPoint a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = (a & 1) || (a == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       a_conv = OutPoint_clone(&a_conv);
-       LDKCVec_u8Z b_ref;
-       b_ref.datalen = *((uint32_t*)b);
-       b_ref.data = MALLOC(b_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(b_ref.data, (uint8_t*)(b + 4), b_ref.datalen);
-       LDKC2Tuple_OutPointScriptZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_OutPointScriptZ), "LDKC2Tuple_OutPointScriptZ");
-       *ret_conv = C2Tuple_OutPointScriptZ_new(a_conv, b_ref);
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_PublicKeyTypeZ_new(int8_tArray a, uint32_t b) {
+       LDKPublicKey a_ref;
+       CHECK(a->arr_len == 33);
+       memcpy(a_ref.compressed_form, a->elems, 33);
+       void* b_ptr = (void*)(((uint64_t)b) & ~1);
+       CHECK_ACCESS(b_ptr);
+       LDKType b_conv = *(LDKType*)(b_ptr);
+       LDKC2Tuple_PublicKeyTypeZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PublicKeyTypeZ), "LDKC2Tuple_PublicKeyTypeZ");
+       *ret_conv = C2Tuple_PublicKeyTypeZ_new(a_ref, b_conv);
        return ((uint64_t)ret_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_C2Tuple_OutPointScriptZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_C2Tuple_PublicKeyTypeZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKC2Tuple_OutPointScriptZ _res_conv = *(LDKC2Tuple_OutPointScriptZ*)(_res_ptr);
+       LDKC2Tuple_PublicKeyTypeZ _res_conv = *(LDKC2Tuple_PublicKeyTypeZ*)(_res_ptr);
        FREE((void*)_res);
-       C2Tuple_OutPointScriptZ_free(_res_conv);
+       C2Tuple_PublicKeyTypeZ_free(_res_conv);
 }
 
-static inline uint64_t C2Tuple_u32ScriptZ_clone_ptr(LDKC2Tuple_u32ScriptZ *NONNULL_PTR arg) {
-       LDKC2Tuple_u32ScriptZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_u32ScriptZ), "LDKC2Tuple_u32ScriptZ");
-       *ret_conv = C2Tuple_u32ScriptZ_clone(arg);
-       return ((uint64_t)ret_conv);
+void  __attribute__((visibility("default"))) TS_CVec_C2Tuple_PublicKeyTypeZZ_free(uint32_tArray _res) {
+       LDKCVec_C2Tuple_PublicKeyTypeZZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC2Tuple_PublicKeyTypeZ), "LDKCVec_C2Tuple_PublicKeyTypeZZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t z = 0; z < _res_constr.datalen; z++) {
+               uint32_t _res_conv_25 = _res_vals[z];
+               void* _res_conv_25_ptr = (void*)(((uint64_t)_res_conv_25) & ~1);
+               CHECK_ACCESS(_res_conv_25_ptr);
+               LDKC2Tuple_PublicKeyTypeZ _res_conv_25_conv = *(LDKC2Tuple_PublicKeyTypeZ*)(_res_conv_25_ptr);
+               FREE((void*)_res_conv_25);
+               _res_constr.data[z] = _res_conv_25_conv;
+       }
+       CVec_C2Tuple_PublicKeyTypeZZ_free(_res_constr);
 }
-int64_t  __attribute__((visibility("default"))) TS_C2Tuple_u32ScriptZ_clone_ptr(uint32_t arg) {
-       LDKC2Tuple_u32ScriptZ* arg_conv = (LDKC2Tuple_u32ScriptZ*)(arg & ~1);
-       int64_t ret_val = C2Tuple_u32ScriptZ_clone_ptr(arg_conv);
-       return ret_val;
+
+void  __attribute__((visibility("default"))) TS_CVec_MessageSendEventZ_free(uint32_tArray _res) {
+       LDKCVec_MessageSendEventZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       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 = _res->elems;
+       for (size_t s = 0; s < _res_constr.datalen; s++) {
+               uint32_t _res_conv_18 = _res_vals[s];
+               void* _res_conv_18_ptr = (void*)(((uint64_t)_res_conv_18) & ~1);
+               CHECK_ACCESS(_res_conv_18_ptr);
+               LDKMessageSendEvent _res_conv_18_conv = *(LDKMessageSendEvent*)(_res_conv_18_ptr);
+               FREE((void*)_res_conv_18);
+               _res_constr.data[s] = _res_conv_18_conv;
+       }
+       CVec_MessageSendEventZ_free(_res_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_u32ScriptZ_clone(uint32_t orig) {
-       LDKC2Tuple_u32ScriptZ* orig_conv = (LDKC2Tuple_u32ScriptZ*)(orig & ~1);
-       LDKC2Tuple_u32ScriptZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_u32ScriptZ), "LDKC2Tuple_u32ScriptZ");
-       *ret_conv = C2Tuple_u32ScriptZ_clone(orig_conv);
-       return ((uint64_t)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 = CResult_boolLightningErrorZ_ok(o);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_u32ScriptZ_new(int32_t a, int8_tArray b) {
-       LDKCVec_u8Z b_ref;
-       b_ref.datalen = *((uint32_t*)b);
-       b_ref.data = MALLOC(b_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(b_ref.data, (uint8_t*)(b + 4), b_ref.datalen);
-       LDKC2Tuple_u32ScriptZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_u32ScriptZ), "LDKC2Tuple_u32ScriptZ");
-       *ret_conv = C2Tuple_u32ScriptZ_new(a, b_ref);
-       return ((uint64_t)ret_conv);
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = LightningError_clone(&e_conv);
+       LDKCResult_boolLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolLightningErrorZ), "LDKCResult_boolLightningErrorZ");
+       *ret_conv = CResult_boolLightningErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_C2Tuple_u32ScriptZ_free(uint32_t _res) {
+jboolean  __attribute__((visibility("default"))) TS_CResult_boolLightningErrorZ_is_ok(uint32_t o) {
+       LDKCResult_boolLightningErrorZ* o_conv = (LDKCResult_boolLightningErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_boolLightningErrorZ_is_ok(o_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_CResult_boolLightningErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKC2Tuple_u32ScriptZ _res_conv = *(LDKC2Tuple_u32ScriptZ*)(_res_ptr);
+       LDKCResult_boolLightningErrorZ _res_conv = *(LDKCResult_boolLightningErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       C2Tuple_u32ScriptZ_free(_res_conv);
+       CResult_boolLightningErrorZ_free(_res_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_CVec_C2Tuple_u32ScriptZZ_free(uint32_tArray _res) {
-       LDKCVec_C2Tuple_u32ScriptZZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC2Tuple_u32ScriptZ), "LDKCVec_C2Tuple_u32ScriptZZ Elements");
-       else
-               _res_constr.data = NULL;
-       uint32_t* _res_vals = (uint32_t*)(_res + 4);
-       for (size_t v = 0; v < _res_constr.datalen; v++) {
-               uint32_t _res_conv_21 = _res_vals[v];
-               void* _res_conv_21_ptr = (void*)(((uint64_t)_res_conv_21) & ~1);
-               CHECK_ACCESS(_res_conv_21_ptr);
-               LDKC2Tuple_u32ScriptZ _res_conv_21_conv = *(LDKC2Tuple_u32ScriptZ*)(_res_conv_21_ptr);
-               FREE((void*)_res_conv_21);
-               _res_constr.data[v] = _res_conv_21_conv;
-       }
-       CVec_C2Tuple_u32ScriptZZ_free(_res_constr);
+static inline uint64_t CResult_boolLightningErrorZ_clone_ptr(LDKCResult_boolLightningErrorZ *NONNULL_PTR arg) {
+       LDKCResult_boolLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolLightningErrorZ), "LDKCResult_boolLightningErrorZ");
+       *ret_conv = CResult_boolLightningErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_boolLightningErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_boolLightningErrorZ* arg_conv = (LDKCResult_boolLightningErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_boolLightningErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-static inline uint64_t C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone_ptr(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR arg) {
-       LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ");
-       *ret_conv = C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone(arg);
+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);
+       return (uint64_t)ret_conv;
+}
+
+static inline uint64_t C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone_ptr(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR arg) {
+       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* ret_conv = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ");
+       *ret_conv = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(arg);
        return ((uint64_t)ret_conv);
 }
-int64_t  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone_ptr(uint32_t arg) {
-       LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* arg_conv = (LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ*)(arg & ~1);
-       int64_t ret_val = C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone_ptr(uint32_t arg) {
+       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* arg_conv = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(arg & ~1);
+       int64_t ret_val = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone(uint32_t orig) {
-       LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* orig_conv = (LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ*)(orig & ~1);
-       LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ");
-       *ret_conv = C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone(orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(uint32_t orig) {
+       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* orig_conv = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(orig & ~1);
+       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* ret_conv = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ");
+       *ret_conv = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(orig_conv);
        return ((uint64_t)ret_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_new(int8_tArray a, uint32_tArray b) {
-       LDKThirtyTwoBytes a_ref;
-       CHECK(*((uint32_t*)a) == 32);
-       memcpy(a_ref.data, (uint8_t*)(a + 4), 32);
-       LDKCVec_C2Tuple_u32ScriptZZ b_constr;
-       b_constr.datalen = *((uint32_t*)b);
-       if (b_constr.datalen > 0)
-               b_constr.data = MALLOC(b_constr.datalen * sizeof(LDKC2Tuple_u32ScriptZ), "LDKCVec_C2Tuple_u32ScriptZZ Elements");
-       else
-               b_constr.data = NULL;
-       uint32_t* b_vals = (uint32_t*)(b + 4);
-       for (size_t v = 0; v < b_constr.datalen; v++) {
-               uint32_t b_conv_21 = b_vals[v];
-               void* b_conv_21_ptr = (void*)(((uint64_t)b_conv_21) & ~1);
-               CHECK_ACCESS(b_conv_21_ptr);
-               LDKC2Tuple_u32ScriptZ b_conv_21_conv = *(LDKC2Tuple_u32ScriptZ*)(b_conv_21_ptr);
-               b_conv_21_conv = C2Tuple_u32ScriptZ_clone((LDKC2Tuple_u32ScriptZ*)(((uint64_t)b_conv_21) & ~1));
-               b_constr.data[v] = b_conv_21_conv;
-       }
-       LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ");
-       *ret_conv = C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_new(a_ref, b_constr);
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       a_conv = ChannelAnnouncement_clone(&a_conv);
+       LDKChannelUpdate b_conv;
+       b_conv.inner = (void*)(b & (~1));
+       b_conv.is_owned = (b & 1) || (b == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
+       b_conv = ChannelUpdate_clone(&b_conv);
+       LDKChannelUpdate c_conv;
+       c_conv.inner = (void*)(c & (~1));
+       c_conv.is_owned = (c & 1) || (c == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(c_conv);
+       c_conv = ChannelUpdate_clone(&c_conv);
+       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* ret_conv = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ");
+       *ret_conv = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(a_conv, b_conv, c_conv);
        return ((uint64_t)ret_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ _res_conv = *(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ*)(_res_ptr);
+       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ _res_conv = *(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(_res_ptr);
        FREE((void*)_res);
-       C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(_res_conv);
+       C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(_res_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(uint32_tArray _res) {
-       LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
+void  __attribute__((visibility("default"))) TS_CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(uint32_tArray _res) {
+       LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
        if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ), "LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ Elements");
+               _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 o = 0; o < _res_constr.datalen; o++) {
-               uint32_t _res_conv_40 = _res_vals[o];
-               void* _res_conv_40_ptr = (void*)(((uint64_t)_res_conv_40) & ~1);
-               CHECK_ACCESS(_res_conv_40_ptr);
-               LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ _res_conv_40_conv = *(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ*)(_res_conv_40_ptr);
-               FREE((void*)_res_conv_40);
-               _res_constr.data[o] = _res_conv_40_conv;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t h = 0; h < _res_constr.datalen; h++) {
+               uint32_t _res_conv_59 = _res_vals[h];
+               void* _res_conv_59_ptr = (void*)(((uint64_t)_res_conv_59) & ~1);
+               CHECK_ACCESS(_res_conv_59_ptr);
+               LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ _res_conv_59_conv = *(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(_res_conv_59_ptr);
+               FREE((void*)_res_conv_59);
+               _res_constr.data[h] = _res_conv_59_conv;
        }
-       CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(_res_constr);
+       CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(_res_constr);
 }
 
-void  __attribute__((visibility("default"))) TS_CVec_EventZ_free(uint32_tArray _res) {
-       LDKCVec_EventZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
+void  __attribute__((visibility("default"))) TS_CVec_NodeAnnouncementZ_free(uint32_tArray _res) {
+       LDKCVec_NodeAnnouncementZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
        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(LDKNodeAnnouncement), "LDKCVec_NodeAnnouncementZ 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 _res_conv_7 = _res_vals[h];
-               void* _res_conv_7_ptr = (void*)(((uint64_t)_res_conv_7) & ~1);
-               CHECK_ACCESS(_res_conv_7_ptr);
-               LDKEvent _res_conv_7_conv = *(LDKEvent*)(_res_conv_7_ptr);
-               FREE((void*)_res_conv_7);
-               _res_constr.data[h] = _res_conv_7_conv;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t s = 0; s < _res_constr.datalen; s++) {
+               uint32_t _res_conv_18 = _res_vals[s];
+               LDKNodeAnnouncement _res_conv_18_conv;
+               _res_conv_18_conv.inner = (void*)(_res_conv_18 & (~1));
+               _res_conv_18_conv.is_owned = (_res_conv_18 & 1) || (_res_conv_18 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_18_conv);
+               _res_constr.data[s] = _res_conv_18_conv;
        }
-       CVec_EventZ_free(_res_constr);
+       CVec_NodeAnnouncementZ_free(_res_constr);
 }
 
-void  __attribute__((visibility("default"))) TS_CVec_TransactionZ_free(ptrArray _res) {
-       LDKCVec_TransactionZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
+void  __attribute__((visibility("default"))) TS_CVec_PublicKeyZ_free(ptrArray _res) {
+       LDKCVec_PublicKeyZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
        if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKTransaction), "LDKCVec_TransactionZ Elements");
+               _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);
+       int8_tArray* _res_vals = (void*) _res->elems;
        for (size_t m = 0; m < _res_constr.datalen; m++) {
                int8_tArray _res_conv_12 = _res_vals[m];
-               LDKTransaction _res_conv_12_ref;
-               _res_conv_12_ref.datalen = *((uint32_t*)_res_conv_12);
-               _res_conv_12_ref.data = MALLOC(_res_conv_12_ref.datalen, "LDKTransaction Bytes");
-               memcpy(_res_conv_12_ref.data, (uint8_t*)(_res_conv_12 + 4), _res_conv_12_ref.datalen);
-               _res_conv_12_ref.data_is_owned = true;
+               LDKPublicKey _res_conv_12_ref;
+               CHECK(_res_conv_12->arr_len == 33);
+               memcpy(_res_conv_12_ref.compressed_form, _res_conv_12->elems, 33);
                _res_constr.data[m] = _res_conv_12_ref;
        }
-       CVec_TransactionZ_free(_res_constr);
+       CVec_PublicKeyZ_free(_res_constr);
 }
 
-static inline uint64_t C2Tuple_u32TxOutZ_clone_ptr(LDKC2Tuple_u32TxOutZ *NONNULL_PTR arg) {
-       LDKC2Tuple_u32TxOutZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_u32TxOutZ), "LDKC2Tuple_u32TxOutZ");
-       *ret_conv = C2Tuple_u32TxOutZ_clone(arg);
-       return ((uint64_t)ret_conv);
+void  __attribute__((visibility("default"))) TS_CVec_u8Z_free(int8_tArray _res) {
+       LDKCVec_u8Z _res_ref;
+       _res_ref.datalen = _res->arr_len;
+       _res_ref.data = MALLOC(_res_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(_res_ref.data, _res->elems, _res_ref.datalen);
+       CVec_u8Z_free(_res_ref);
 }
-int64_t  __attribute__((visibility("default"))) TS_C2Tuple_u32TxOutZ_clone_ptr(uint32_t arg) {
-       LDKC2Tuple_u32TxOutZ* arg_conv = (LDKC2Tuple_u32TxOutZ*)(arg & ~1);
-       int64_t ret_val = C2Tuple_u32TxOutZ_clone_ptr(arg_conv);
-       return ret_val;
+
+uint32_t  __attribute__((visibility("default"))) TS_CResult_CVec_u8ZPeerHandleErrorZ_ok(int8_tArray o) {
+       LDKCVec_u8Z o_ref;
+       o_ref.datalen = o->arr_len;
+       o_ref.data = MALLOC(o_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(o_ref.data, o->elems, 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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_u32TxOutZ_clone(uint32_t orig) {
-       LDKC2Tuple_u32TxOutZ* orig_conv = (LDKC2Tuple_u32TxOutZ*)(orig & ~1);
-       LDKC2Tuple_u32TxOutZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_u32TxOutZ), "LDKC2Tuple_u32TxOutZ");
-       *ret_conv = C2Tuple_u32TxOutZ_clone(orig_conv);
-       return ((uint64_t)ret_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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_u32TxOutZ_new(int32_t a, uint32_t b) {
-       void* b_ptr = (void*)(((uint64_t)b) & ~1);
-       CHECK_ACCESS(b_ptr);
-       LDKTxOut b_conv = *(LDKTxOut*)(b_ptr);
-       b_conv = TxOut_clone((LDKTxOut*)(((uint64_t)b) & ~1));
-       LDKC2Tuple_u32TxOutZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_u32TxOutZ), "LDKC2Tuple_u32TxOutZ");
-       *ret_conv = C2Tuple_u32TxOutZ_new(a, b_conv);
-       return ((uint64_t)ret_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_CVec_u8ZPeerHandleErrorZ_is_ok(uint32_t o) {
+       LDKCResult_CVec_u8ZPeerHandleErrorZ* o_conv = (LDKCResult_CVec_u8ZPeerHandleErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_CVec_u8ZPeerHandleErrorZ_is_ok(o_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_C2Tuple_u32TxOutZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_CVec_u8ZPeerHandleErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKC2Tuple_u32TxOutZ _res_conv = *(LDKC2Tuple_u32TxOutZ*)(_res_ptr);
+       LDKCResult_CVec_u8ZPeerHandleErrorZ _res_conv = *(LDKCResult_CVec_u8ZPeerHandleErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       C2Tuple_u32TxOutZ_free(_res_conv);
+       CResult_CVec_u8ZPeerHandleErrorZ_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);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC2Tuple_u32TxOutZ), "LDKCVec_C2Tuple_u32TxOutZZ Elements");
-       else
-               _res_constr.data = NULL;
-       uint32_t* _res_vals = (uint32_t*)(_res + 4);
-       for (size_t u = 0; u < _res_constr.datalen; u++) {
-               uint32_t _res_conv_20 = _res_vals[u];
-               void* _res_conv_20_ptr = (void*)(((uint64_t)_res_conv_20) & ~1);
-               CHECK_ACCESS(_res_conv_20_ptr);
-               LDKC2Tuple_u32TxOutZ _res_conv_20_conv = *(LDKC2Tuple_u32TxOutZ*)(_res_conv_20_ptr);
-               FREE((void*)_res_conv_20);
-               _res_constr.data[u] = _res_conv_20_conv;
-       }
-       CVec_C2Tuple_u32TxOutZZ_free(_res_constr);
+static inline uint64_t CResult_CVec_u8ZPeerHandleErrorZ_clone_ptr(LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR arg) {
+       LDKCResult_CVec_u8ZPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ), "LDKCResult_CVec_u8ZPeerHandleErrorZ");
+       *ret_conv = CResult_CVec_u8ZPeerHandleErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_CVec_u8ZPeerHandleErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_CVec_u8ZPeerHandleErrorZ* arg_conv = (LDKCResult_CVec_u8ZPeerHandleErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_CVec_u8ZPeerHandleErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-static inline uint64_t C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone_ptr(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR arg) {
-       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ");
-       *ret_conv = C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone(arg);
-       return ((uint64_t)ret_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 (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone_ptr(uint32_t arg) {
-       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* arg_conv = (LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ*)(arg & ~1);
-       int64_t ret_val = C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone_ptr(arg_conv);
-       return ret_val;
+
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone(uint32_t orig) {
-       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* orig_conv = (LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ*)(orig & ~1);
-       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ");
-       *ret_conv = C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone(orig_conv);
-       return ((uint64_t)ret_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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = PeerHandleError_clone(&e_conv);
+       LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ");
+       *ret_conv = CResult_NonePeerHandleErrorZ_err(e_conv);
+       return (uint64_t)ret_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);
-       memcpy(a_ref.data, (uint8_t*)(a + 4), 32);
-       LDKCVec_C2Tuple_u32TxOutZZ b_constr;
-       b_constr.datalen = *((uint32_t*)b);
-       if (b_constr.datalen > 0)
-               b_constr.data = MALLOC(b_constr.datalen * sizeof(LDKC2Tuple_u32TxOutZ), "LDKCVec_C2Tuple_u32TxOutZZ Elements");
-       else
-               b_constr.data = NULL;
-       uint32_t* b_vals = (uint32_t*)(b + 4);
-       for (size_t u = 0; u < b_constr.datalen; u++) {
-               uint32_t b_conv_20 = b_vals[u];
-               void* b_conv_20_ptr = (void*)(((uint64_t)b_conv_20) & ~1);
-               CHECK_ACCESS(b_conv_20_ptr);
-               LDKC2Tuple_u32TxOutZ b_conv_20_conv = *(LDKC2Tuple_u32TxOutZ*)(b_conv_20_ptr);
-               b_conv_20_conv = C2Tuple_u32TxOutZ_clone((LDKC2Tuple_u32TxOutZ*)(((uint64_t)b_conv_20) & ~1));
-               b_constr.data[u] = b_conv_20_conv;
-       }
-       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ");
-       *ret_conv = C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new(a_ref, b_constr);
-       return ((uint64_t)ret_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_NonePeerHandleErrorZ_is_ok(uint32_t o) {
+       LDKCResult_NonePeerHandleErrorZ* o_conv = (LDKCResult_NonePeerHandleErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_NonePeerHandleErrorZ_is_ok(o_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_NonePeerHandleErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ _res_conv = *(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ*)(_res_ptr);
+       LDKCResult_NonePeerHandleErrorZ _res_conv = *(LDKCResult_NonePeerHandleErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(_res_conv);
+       CResult_NonePeerHandleErrorZ_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);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ), "LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ Elements");
-       else
-               _res_constr.data = NULL;
-       uint32_t* _res_vals = (uint32_t*)(_res + 4);
-       for (size_t n = 0; n < _res_constr.datalen; n++) {
-               uint32_t _res_conv_39 = _res_vals[n];
-               void* _res_conv_39_ptr = (void*)(((uint64_t)_res_conv_39) & ~1);
-               CHECK_ACCESS(_res_conv_39_ptr);
-               LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ _res_conv_39_conv = *(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ*)(_res_conv_39_ptr);
-               FREE((void*)_res_conv_39);
-               _res_constr.data[n] = _res_conv_39_conv;
-       }
-       CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_free(_res_constr);
+static inline uint64_t CResult_NonePeerHandleErrorZ_clone_ptr(LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR arg) {
+       LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ");
+       *ret_conv = CResult_NonePeerHandleErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_NonePeerHandleErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_NonePeerHandleErrorZ* arg_conv = (LDKCResult_NonePeerHandleErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_NonePeerHandleErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CVec_BalanceZ_free(uint32_tArray _res) {
-       LDKCVec_BalanceZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKBalance), "LDKCVec_BalanceZ Elements");
-       else
-               _res_constr.data = NULL;
-       uint32_t* _res_vals = (uint32_t*)(_res + 4);
-       for (size_t j = 0; j < _res_constr.datalen; j++) {
-               uint32_t _res_conv_9 = _res_vals[j];
-               void* _res_conv_9_ptr = (void*)(((uint64_t)_res_conv_9) & ~1);
-               CHECK_ACCESS(_res_conv_9_ptr);
-               LDKBalance _res_conv_9_conv = *(LDKBalance*)(_res_conv_9_ptr);
-               FREE((void*)_res_conv_9);
-               _res_constr.data[j] = _res_conv_9_conv;
-       }
-       CVec_BalanceZ_free(_res_constr);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKC2Tuple_BlockHashChannelMonitorZ o_conv = *(LDKC2Tuple_BlockHashChannelMonitorZ*)(o_ptr);
-       o_conv = C2Tuple_BlockHashChannelMonitorZ_clone((LDKC2Tuple_BlockHashChannelMonitorZ*)(((uint64_t)o) & ~1));
-       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ");
-       *ret_conv = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(o_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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       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);
+       e_conv = PeerHandleError_clone(&e_conv);
+       LDKCResult_boolPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolPeerHandleErrorZ), "LDKCResult_boolPeerHandleErrorZ");
+       *ret_conv = CResult_boolPeerHandleErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* o_conv = (LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_boolPeerHandleErrorZ_is_ok(uint32_t o) {
+       LDKCResult_boolPeerHandleErrorZ* o_conv = (LDKCResult_boolPeerHandleErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_boolPeerHandleErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_boolPeerHandleErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ _res_conv = *(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(_res_ptr);
+       LDKCResult_boolPeerHandleErrorZ _res_conv = *(LDKCResult_boolPeerHandleErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(_res_conv);
+       CResult_boolPeerHandleErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone_ptr(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ");
-       *ret_conv = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_boolPeerHandleErrorZ_clone_ptr(LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR arg) {
+       LDKCResult_boolPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolPeerHandleErrorZ), "LDKCResult_boolPeerHandleErrorZ");
+       *ret_conv = CResult_boolPeerHandleErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* arg_conv = (LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_boolPeerHandleErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_boolPeerHandleErrorZ* arg_conv = (LDKCResult_boolPeerHandleErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_boolPeerHandleErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* orig_conv = (LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(orig & ~1);
-       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ");
-       *ret_conv = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone(orig_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 (uint64_t)ret_conv;
 }
 
-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_TxOutAccessErrorZ_ok(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKTxOut o_conv = *(LDKTxOut*)(o_ptr);
+       o_conv = TxOut_clone((LDKTxOut*)(((uint64_t)o) & ~1));
+       LDKCResult_TxOutAccessErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxOutAccessErrorZ), "LDKCResult_TxOutAccessErrorZ");
+       *ret_conv = CResult_TxOutAccessErrorZ_ok(o_conv);
        return (uint64_t)ret_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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = LightningError_clone(&e_conv);
-       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
-       *ret_conv = CResult_NoneLightningErrorZ_err(e_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 (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_NoneLightningErrorZ_is_ok(uint32_t o) {
-       LDKCResult_NoneLightningErrorZ* o_conv = (LDKCResult_NoneLightningErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_NoneLightningErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_TxOutAccessErrorZ_is_ok(uint32_t o) {
+       LDKCResult_TxOutAccessErrorZ* o_conv = (LDKCResult_TxOutAccessErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_TxOutAccessErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_NoneLightningErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_TxOutAccessErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_NoneLightningErrorZ _res_conv = *(LDKCResult_NoneLightningErrorZ*)(_res_ptr);
+       LDKCResult_TxOutAccessErrorZ _res_conv = *(LDKCResult_TxOutAccessErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_NoneLightningErrorZ_free(_res_conv);
+       CResult_TxOutAccessErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_NoneLightningErrorZ_clone_ptr(LDKCResult_NoneLightningErrorZ *NONNULL_PTR arg) {
-       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
-       *ret_conv = CResult_NoneLightningErrorZ_clone(arg);
+static inline uint64_t CResult_TxOutAccessErrorZ_clone_ptr(LDKCResult_TxOutAccessErrorZ *NONNULL_PTR arg) {
+       LDKCResult_TxOutAccessErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxOutAccessErrorZ), "LDKCResult_TxOutAccessErrorZ");
+       *ret_conv = CResult_TxOutAccessErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_NoneLightningErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_NoneLightningErrorZ* arg_conv = (LDKCResult_NoneLightningErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_NoneLightningErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_TxOutAccessErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_TxOutAccessErrorZ* arg_conv = (LDKCResult_TxOutAccessErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_TxOutAccessErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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_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 (uint64_t)ret_conv;
 }
 
-static inline uint64_t C2Tuple_PublicKeyTypeZ_clone_ptr(LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR arg) {
-       LDKC2Tuple_PublicKeyTypeZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PublicKeyTypeZ), "LDKC2Tuple_PublicKeyTypeZ");
-       *ret_conv = C2Tuple_PublicKeyTypeZ_clone(arg);
-       return ((uint64_t)ret_conv);
-}
-int64_t  __attribute__((visibility("default"))) TS_C2Tuple_PublicKeyTypeZ_clone_ptr(uint32_t arg) {
-       LDKC2Tuple_PublicKeyTypeZ* arg_conv = (LDKC2Tuple_PublicKeyTypeZ*)(arg & ~1);
-       int64_t ret_val = C2Tuple_PublicKeyTypeZ_clone_ptr(arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneChannelMonitorUpdateErrZ_ok() {
+       LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ");
+       *ret_conv = CResult_NoneChannelMonitorUpdateErrZ_ok();
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_PublicKeyTypeZ_clone(uint32_t orig) {
-       LDKC2Tuple_PublicKeyTypeZ* orig_conv = (LDKC2Tuple_PublicKeyTypeZ*)(orig & ~1);
-       LDKC2Tuple_PublicKeyTypeZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PublicKeyTypeZ), "LDKC2Tuple_PublicKeyTypeZ");
-       *ret_conv = C2Tuple_PublicKeyTypeZ_clone(orig_conv);
-       return ((uint64_t)ret_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneChannelMonitorUpdateErrZ_err(uint32_t e) {
+       LDKChannelMonitorUpdateErr e_conv = LDKChannelMonitorUpdateErr_from_js(e);
+       LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ");
+       *ret_conv = CResult_NoneChannelMonitorUpdateErrZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_PublicKeyTypeZ_new(int8_tArray a, uint32_t b) {
-       LDKPublicKey a_ref;
-       CHECK(*((uint32_t*)a) == 33);
-       memcpy(a_ref.compressed_form, (uint8_t*)(a + 4), 33);
-       void* b_ptr = (void*)(((uint64_t)b) & ~1);
-       CHECK_ACCESS(b_ptr);
-       LDKType b_conv = *(LDKType*)(b_ptr);
-       LDKC2Tuple_PublicKeyTypeZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PublicKeyTypeZ), "LDKC2Tuple_PublicKeyTypeZ");
-       *ret_conv = C2Tuple_PublicKeyTypeZ_new(a_ref, b_conv);
-       return ((uint64_t)ret_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_NoneChannelMonitorUpdateErrZ_is_ok(uint32_t o) {
+       LDKCResult_NoneChannelMonitorUpdateErrZ* o_conv = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(o & ~1);
+       jboolean ret_val = CResult_NoneChannelMonitorUpdateErrZ_is_ok(o_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_C2Tuple_PublicKeyTypeZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_NoneChannelMonitorUpdateErrZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKC2Tuple_PublicKeyTypeZ _res_conv = *(LDKC2Tuple_PublicKeyTypeZ*)(_res_ptr);
+       LDKCResult_NoneChannelMonitorUpdateErrZ _res_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(_res_ptr);
        FREE((void*)_res);
-       C2Tuple_PublicKeyTypeZ_free(_res_conv);
+       CResult_NoneChannelMonitorUpdateErrZ_free(_res_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_CVec_C2Tuple_PublicKeyTypeZZ_free(uint32_tArray _res) {
-       LDKCVec_C2Tuple_PublicKeyTypeZZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC2Tuple_PublicKeyTypeZ), "LDKCVec_C2Tuple_PublicKeyTypeZZ Elements");
-       else
-               _res_constr.data = NULL;
-       uint32_t* _res_vals = (uint32_t*)(_res + 4);
-       for (size_t z = 0; z < _res_constr.datalen; z++) {
-               uint32_t _res_conv_25 = _res_vals[z];
-               void* _res_conv_25_ptr = (void*)(((uint64_t)_res_conv_25) & ~1);
-               CHECK_ACCESS(_res_conv_25_ptr);
-               LDKC2Tuple_PublicKeyTypeZ _res_conv_25_conv = *(LDKC2Tuple_PublicKeyTypeZ*)(_res_conv_25_ptr);
-               FREE((void*)_res_conv_25);
-               _res_constr.data[z] = _res_conv_25_conv;
-       }
-       CVec_C2Tuple_PublicKeyTypeZZ_free(_res_constr);
+static inline uint64_t CResult_NoneChannelMonitorUpdateErrZ_clone_ptr(LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR arg) {
+       LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ");
+       *ret_conv = CResult_NoneChannelMonitorUpdateErrZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_NoneChannelMonitorUpdateErrZ_clone_ptr(uint32_t arg) {
+       LDKCResult_NoneChannelMonitorUpdateErrZ* arg_conv = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(arg & ~1);
+       int64_t ret_val = CResult_NoneChannelMonitorUpdateErrZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-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_NoneChannelMonitorUpdateErrZ_clone(uint32_t orig) {
+       LDKCResult_NoneChannelMonitorUpdateErrZ* orig_conv = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(orig & ~1);
+       LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ");
+       *ret_conv = CResult_NoneChannelMonitorUpdateErrZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = LightningError_clone(&e_conv);
-       LDKCResult_boolLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolLightningErrorZ), "LDKCResult_boolLightningErrorZ");
-       *ret_conv = CResult_boolLightningErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_COption_C2Tuple_usizeTransactionZZ_some(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKC2Tuple_usizeTransactionZ o_conv = *(LDKC2Tuple_usizeTransactionZ*)(o_ptr);
+       o_conv = C2Tuple_usizeTransactionZ_clone((LDKC2Tuple_usizeTransactionZ*)(((uint64_t)o) & ~1));
+       LDKCOption_C2Tuple_usizeTransactionZZ *ret_copy = MALLOC(sizeof(LDKCOption_C2Tuple_usizeTransactionZZ), "LDKCOption_C2Tuple_usizeTransactionZZ");
+       *ret_copy = COption_C2Tuple_usizeTransactionZZ_some(o_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_boolLightningErrorZ_is_ok(uint32_t o) {
-       LDKCResult_boolLightningErrorZ* o_conv = (LDKCResult_boolLightningErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_boolLightningErrorZ_is_ok(o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_COption_C2Tuple_usizeTransactionZZ_none() {
+       LDKCOption_C2Tuple_usizeTransactionZZ *ret_copy = MALLOC(sizeof(LDKCOption_C2Tuple_usizeTransactionZZ), "LDKCOption_C2Tuple_usizeTransactionZZ");
+       *ret_copy = COption_C2Tuple_usizeTransactionZZ_none();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_boolLightningErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_COption_C2Tuple_usizeTransactionZZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_boolLightningErrorZ _res_conv = *(LDKCResult_boolLightningErrorZ*)(_res_ptr);
+       LDKCOption_C2Tuple_usizeTransactionZZ _res_conv = *(LDKCOption_C2Tuple_usizeTransactionZZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_boolLightningErrorZ_free(_res_conv);
-}
-
-static inline uint64_t CResult_boolLightningErrorZ_clone_ptr(LDKCResult_boolLightningErrorZ *NONNULL_PTR arg) {
-       LDKCResult_boolLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolLightningErrorZ), "LDKCResult_boolLightningErrorZ");
-       *ret_conv = CResult_boolLightningErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
-}
-int64_t  __attribute__((visibility("default"))) TS_CResult_boolLightningErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_boolLightningErrorZ* arg_conv = (LDKCResult_boolLightningErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_boolLightningErrorZ_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-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);
-       return (uint64_t)ret_conv;
+       COption_C2Tuple_usizeTransactionZZ_free(_res_conv);
 }
 
-static inline uint64_t C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone_ptr(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR arg) {
-       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* ret_conv = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ");
-       *ret_conv = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(arg);
-       return ((uint64_t)ret_conv);
+static inline uint64_t COption_C2Tuple_usizeTransactionZZ_clone_ptr(LDKCOption_C2Tuple_usizeTransactionZZ *NONNULL_PTR arg) {
+       LDKCOption_C2Tuple_usizeTransactionZZ *ret_copy = MALLOC(sizeof(LDKCOption_C2Tuple_usizeTransactionZZ), "LDKCOption_C2Tuple_usizeTransactionZZ");
+       *ret_copy = COption_C2Tuple_usizeTransactionZZ_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone_ptr(uint32_t arg) {
-       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* arg_conv = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(arg & ~1);
-       int64_t ret_val = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_COption_C2Tuple_usizeTransactionZZ_clone_ptr(uint32_t arg) {
+       LDKCOption_C2Tuple_usizeTransactionZZ* arg_conv = (LDKCOption_C2Tuple_usizeTransactionZZ*)arg;
+       int64_t ret_val = COption_C2Tuple_usizeTransactionZZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(uint32_t orig) {
-       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* orig_conv = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(orig & ~1);
-       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* ret_conv = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ");
-       *ret_conv = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(orig_conv);
-       return ((uint64_t)ret_conv);
+uint32_t  __attribute__((visibility("default"))) TS_COption_C2Tuple_usizeTransactionZZ_clone(uint32_t orig) {
+       LDKCOption_C2Tuple_usizeTransactionZZ* orig_conv = (LDKCOption_C2Tuple_usizeTransactionZZ*)orig;
+       LDKCOption_C2Tuple_usizeTransactionZZ *ret_copy = MALLOC(sizeof(LDKCOption_C2Tuple_usizeTransactionZZ), "LDKCOption_C2Tuple_usizeTransactionZZ");
+       *ret_copy = COption_C2Tuple_usizeTransactionZZ_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return 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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       a_conv = ChannelAnnouncement_clone(&a_conv);
-       LDKChannelUpdate b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = (b & 1) || (b == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       b_conv = ChannelUpdate_clone(&b_conv);
-       LDKChannelUpdate c_conv;
-       c_conv.inner = (void*)(c & (~1));
-       c_conv.is_owned = (c & 1) || (c == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(c_conv);
-       c_conv = ChannelUpdate_clone(&c_conv);
-       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* ret_conv = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ");
-       *ret_conv = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(a_conv, b_conv, c_conv);
-       return ((uint64_t)ret_conv);
+uint32_t  __attribute__((visibility("default"))) TS_COption_ClosureReasonZ_some(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKClosureReason o_conv = *(LDKClosureReason*)(o_ptr);
+       o_conv = ClosureReason_clone((LDKClosureReason*)(((uint64_t)o) & ~1));
+       LDKCOption_ClosureReasonZ *ret_copy = MALLOC(sizeof(LDKCOption_ClosureReasonZ), "LDKCOption_ClosureReasonZ");
+       *ret_copy = COption_ClosureReasonZ_some(o_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(uint32_t _res) {
+uint32_t  __attribute__((visibility("default"))) TS_COption_ClosureReasonZ_none() {
+       LDKCOption_ClosureReasonZ *ret_copy = MALLOC(sizeof(LDKCOption_ClosureReasonZ), "LDKCOption_ClosureReasonZ");
+       *ret_copy = COption_ClosureReasonZ_none();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+void  __attribute__((visibility("default"))) TS_COption_ClosureReasonZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ _res_conv = *(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(_res_ptr);
+       LDKCOption_ClosureReasonZ _res_conv = *(LDKCOption_ClosureReasonZ*)(_res_ptr);
        FREE((void*)_res);
-       C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(_res_conv);
+       COption_ClosureReasonZ_free(_res_conv);
 }
 
-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 h = 0; h < _res_constr.datalen; h++) {
-               uint32_t _res_conv_59 = _res_vals[h];
-               void* _res_conv_59_ptr = (void*)(((uint64_t)_res_conv_59) & ~1);
-               CHECK_ACCESS(_res_conv_59_ptr);
-               LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ _res_conv_59_conv = *(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(_res_conv_59_ptr);
-               FREE((void*)_res_conv_59);
-               _res_constr.data[h] = _res_conv_59_conv;
-       }
-       CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(_res_constr);
+static inline uint64_t COption_ClosureReasonZ_clone_ptr(LDKCOption_ClosureReasonZ *NONNULL_PTR arg) {
+       LDKCOption_ClosureReasonZ *ret_copy = MALLOC(sizeof(LDKCOption_ClosureReasonZ), "LDKCOption_ClosureReasonZ");
+       *ret_copy = COption_ClosureReasonZ_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
-
-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 _res_conv_18 = _res_vals[s];
-               LDKNodeAnnouncement _res_conv_18_conv;
-               _res_conv_18_conv.inner = (void*)(_res_conv_18 & (~1));
-               _res_conv_18_conv.is_owned = (_res_conv_18 & 1) || (_res_conv_18 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_18_conv);
-               _res_constr.data[s] = _res_conv_18_conv;
-       }
-       CVec_NodeAnnouncementZ_free(_res_constr);
+int64_t  __attribute__((visibility("default"))) TS_COption_ClosureReasonZ_clone_ptr(uint32_t arg) {
+       LDKCOption_ClosureReasonZ* arg_conv = (LDKCOption_ClosureReasonZ*)arg;
+       int64_t ret_val = COption_ClosureReasonZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-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 _res_conv_12 = _res_vals[m];
-               LDKPublicKey _res_conv_12_ref;
-               CHECK(*((uint32_t*)_res_conv_12) == 33);
-               memcpy(_res_conv_12_ref.compressed_form, (uint8_t*)(_res_conv_12 + 4), 33);
-               _res_constr.data[m] = _res_conv_12_ref;
-       }
-       CVec_PublicKeyZ_free(_res_constr);
+uint32_t  __attribute__((visibility("default"))) TS_COption_ClosureReasonZ_clone(uint32_t orig) {
+       LDKCOption_ClosureReasonZ* orig_conv = (LDKCOption_ClosureReasonZ*)orig;
+       LDKCOption_ClosureReasonZ *ret_copy = MALLOC(sizeof(LDKCOption_ClosureReasonZ), "LDKCOption_ClosureReasonZ");
+       *ret_copy = COption_ClosureReasonZ_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-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_COption_ClosureReasonZDecodeErrorZ_ok(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKCOption_ClosureReasonZ o_conv = *(LDKCOption_ClosureReasonZ*)(o_ptr);
+       o_conv = COption_ClosureReasonZ_clone((LDKCOption_ClosureReasonZ*)(((uint64_t)o) & ~1));
+       LDKCResult_COption_ClosureReasonZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ), "LDKCResult_COption_ClosureReasonZDecodeErrorZ");
+       *ret_conv = CResult_COption_ClosureReasonZDecodeErrorZ_ok(o_conv);
        return (uint64_t)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_COption_ClosureReasonZDecodeErrorZ_err(uint32_t e) {
+       LDKDecodeError e_conv;
        e_conv.inner = (void*)(e & (~1));
        e_conv.is_owned = (e & 1) || (e == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       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_COption_ClosureReasonZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ), "LDKCResult_COption_ClosureReasonZDecodeErrorZ");
+       *ret_conv = CResult_COption_ClosureReasonZDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_CVec_u8ZPeerHandleErrorZ_is_ok(uint32_t o) {
-       LDKCResult_CVec_u8ZPeerHandleErrorZ* o_conv = (LDKCResult_CVec_u8ZPeerHandleErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_CVec_u8ZPeerHandleErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_COption_ClosureReasonZDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_COption_ClosureReasonZDecodeErrorZ* o_conv = (LDKCResult_COption_ClosureReasonZDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_COption_ClosureReasonZDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_CVec_u8ZPeerHandleErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_COption_ClosureReasonZDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_CVec_u8ZPeerHandleErrorZ _res_conv = *(LDKCResult_CVec_u8ZPeerHandleErrorZ*)(_res_ptr);
+       LDKCResult_COption_ClosureReasonZDecodeErrorZ _res_conv = *(LDKCResult_COption_ClosureReasonZDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_CVec_u8ZPeerHandleErrorZ_free(_res_conv);
+       CResult_COption_ClosureReasonZDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_CVec_u8ZPeerHandleErrorZ_clone_ptr(LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR arg) {
-       LDKCResult_CVec_u8ZPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ), "LDKCResult_CVec_u8ZPeerHandleErrorZ");
-       *ret_conv = CResult_CVec_u8ZPeerHandleErrorZ_clone(arg);
+static inline uint64_t CResult_COption_ClosureReasonZDecodeErrorZ_clone_ptr(LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_COption_ClosureReasonZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ), "LDKCResult_COption_ClosureReasonZDecodeErrorZ");
+       *ret_conv = CResult_COption_ClosureReasonZDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_CVec_u8ZPeerHandleErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_CVec_u8ZPeerHandleErrorZ* arg_conv = (LDKCResult_CVec_u8ZPeerHandleErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_CVec_u8ZPeerHandleErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_COption_ClosureReasonZDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_COption_ClosureReasonZDecodeErrorZ* arg_conv = (LDKCResult_COption_ClosureReasonZDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_COption_ClosureReasonZDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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_COption_ClosureReasonZDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_COption_ClosureReasonZDecodeErrorZ* orig_conv = (LDKCResult_COption_ClosureReasonZDecodeErrorZ*)(orig & ~1);
+       LDKCResult_COption_ClosureReasonZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ), "LDKCResult_COption_ClosureReasonZDecodeErrorZ");
+       *ret_conv = CResult_COption_ClosureReasonZDecodeErrorZ_clone(orig_conv);
        return (uint64_t)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();
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_COption_NetworkUpdateZ_some(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKNetworkUpdate o_conv = *(LDKNetworkUpdate*)(o_ptr);
+       o_conv = NetworkUpdate_clone((LDKNetworkUpdate*)(((uint64_t)o) & ~1));
+       LDKCOption_NetworkUpdateZ *ret_copy = MALLOC(sizeof(LDKCOption_NetworkUpdateZ), "LDKCOption_NetworkUpdateZ");
+       *ret_copy = COption_NetworkUpdateZ_some(o_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = PeerHandleError_clone(&e_conv);
-       LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ");
-       *ret_conv = CResult_NonePeerHandleErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_COption_NetworkUpdateZ_none() {
+       LDKCOption_NetworkUpdateZ *ret_copy = MALLOC(sizeof(LDKCOption_NetworkUpdateZ), "LDKCOption_NetworkUpdateZ");
+       *ret_copy = COption_NetworkUpdateZ_none();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_NonePeerHandleErrorZ_is_ok(uint32_t o) {
-       LDKCResult_NonePeerHandleErrorZ* o_conv = (LDKCResult_NonePeerHandleErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_NonePeerHandleErrorZ_is_ok(o_conv);
+void  __attribute__((visibility("default"))) TS_COption_NetworkUpdateZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCOption_NetworkUpdateZ _res_conv = *(LDKCOption_NetworkUpdateZ*)(_res_ptr);
+       FREE((void*)_res);
+       COption_NetworkUpdateZ_free(_res_conv);
+}
+
+static inline uint64_t COption_NetworkUpdateZ_clone_ptr(LDKCOption_NetworkUpdateZ *NONNULL_PTR arg) {
+       LDKCOption_NetworkUpdateZ *ret_copy = MALLOC(sizeof(LDKCOption_NetworkUpdateZ), "LDKCOption_NetworkUpdateZ");
+       *ret_copy = COption_NetworkUpdateZ_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_COption_NetworkUpdateZ_clone_ptr(uint32_t arg) {
+       LDKCOption_NetworkUpdateZ* arg_conv = (LDKCOption_NetworkUpdateZ*)arg;
+       int64_t ret_val = COption_NetworkUpdateZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_NonePeerHandleErrorZ_free(uint32_t _res) {
+uint32_t  __attribute__((visibility("default"))) TS_COption_NetworkUpdateZ_clone(uint32_t orig) {
+       LDKCOption_NetworkUpdateZ* orig_conv = (LDKCOption_NetworkUpdateZ*)orig;
+       LDKCOption_NetworkUpdateZ *ret_copy = MALLOC(sizeof(LDKCOption_NetworkUpdateZ), "LDKCOption_NetworkUpdateZ");
+       *ret_copy = COption_NetworkUpdateZ_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+void  __attribute__((visibility("default"))) TS_CVec_SpendableOutputDescriptorZ_free(uint32_tArray _res) {
+       LDKCVec_SpendableOutputDescriptorZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       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 = _res->elems;
+       for (size_t b = 0; b < _res_constr.datalen; b++) {
+               uint32_t _res_conv_27 = _res_vals[b];
+               void* _res_conv_27_ptr = (void*)(((uint64_t)_res_conv_27) & ~1);
+               CHECK_ACCESS(_res_conv_27_ptr);
+               LDKSpendableOutputDescriptor _res_conv_27_conv = *(LDKSpendableOutputDescriptor*)(_res_conv_27_ptr);
+               FREE((void*)_res_conv_27);
+               _res_constr.data[b] = _res_conv_27_conv;
+       }
+       CVec_SpendableOutputDescriptorZ_free(_res_constr);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_COption_EventZ_some(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKEvent o_conv = *(LDKEvent*)(o_ptr);
+       o_conv = Event_clone((LDKEvent*)(((uint64_t)o) & ~1));
+       LDKCOption_EventZ *ret_copy = MALLOC(sizeof(LDKCOption_EventZ), "LDKCOption_EventZ");
+       *ret_copy = COption_EventZ_some(o_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_COption_EventZ_none() {
+       LDKCOption_EventZ *ret_copy = MALLOC(sizeof(LDKCOption_EventZ), "LDKCOption_EventZ");
+       *ret_copy = COption_EventZ_none();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+void  __attribute__((visibility("default"))) TS_COption_EventZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_NonePeerHandleErrorZ _res_conv = *(LDKCResult_NonePeerHandleErrorZ*)(_res_ptr);
+       LDKCOption_EventZ _res_conv = *(LDKCOption_EventZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_NonePeerHandleErrorZ_free(_res_conv);
+       COption_EventZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_NonePeerHandleErrorZ_clone_ptr(LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR arg) {
-       LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ");
-       *ret_conv = CResult_NonePeerHandleErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline uint64_t COption_EventZ_clone_ptr(LDKCOption_EventZ *NONNULL_PTR arg) {
+       LDKCOption_EventZ *ret_copy = MALLOC(sizeof(LDKCOption_EventZ), "LDKCOption_EventZ");
+       *ret_copy = COption_EventZ_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_NonePeerHandleErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_NonePeerHandleErrorZ* arg_conv = (LDKCResult_NonePeerHandleErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_NonePeerHandleErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_COption_EventZ_clone_ptr(uint32_t arg) {
+       LDKCOption_EventZ* arg_conv = (LDKCOption_EventZ*)arg;
+       int64_t ret_val = COption_EventZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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 (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_COption_EventZ_clone(uint32_t orig) {
+       LDKCOption_EventZ* orig_conv = (LDKCOption_EventZ*)orig;
+       LDKCOption_EventZ *ret_copy = MALLOC(sizeof(LDKCOption_EventZ), "LDKCOption_EventZ");
+       *ret_copy = COption_EventZ_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-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_COption_EventZDecodeErrorZ_ok(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKCOption_EventZ o_conv = *(LDKCOption_EventZ*)(o_ptr);
+       o_conv = COption_EventZ_clone((LDKCOption_EventZ*)(((uint64_t)o) & ~1));
+       LDKCResult_COption_EventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_EventZDecodeErrorZ), "LDKCResult_COption_EventZDecodeErrorZ");
+       *ret_conv = CResult_COption_EventZDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_boolPeerHandleErrorZ_err(uint32_t e) {
-       LDKPeerHandleError e_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_EventZDecodeErrorZ_err(uint32_t e) {
+       LDKDecodeError e_conv;
        e_conv.inner = (void*)(e & (~1));
        e_conv.is_owned = (e & 1) || (e == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       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_COption_EventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_EventZDecodeErrorZ), "LDKCResult_COption_EventZDecodeErrorZ");
+       *ret_conv = CResult_COption_EventZDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_boolPeerHandleErrorZ_is_ok(uint32_t o) {
-       LDKCResult_boolPeerHandleErrorZ* o_conv = (LDKCResult_boolPeerHandleErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_boolPeerHandleErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_COption_EventZDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_COption_EventZDecodeErrorZ* o_conv = (LDKCResult_COption_EventZDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_COption_EventZDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_boolPeerHandleErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_COption_EventZDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_boolPeerHandleErrorZ _res_conv = *(LDKCResult_boolPeerHandleErrorZ*)(_res_ptr);
+       LDKCResult_COption_EventZDecodeErrorZ _res_conv = *(LDKCResult_COption_EventZDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_boolPeerHandleErrorZ_free(_res_conv);
+       CResult_COption_EventZDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_boolPeerHandleErrorZ_clone_ptr(LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR arg) {
-       LDKCResult_boolPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolPeerHandleErrorZ), "LDKCResult_boolPeerHandleErrorZ");
-       *ret_conv = CResult_boolPeerHandleErrorZ_clone(arg);
+static inline uint64_t CResult_COption_EventZDecodeErrorZ_clone_ptr(LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_COption_EventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_EventZDecodeErrorZ), "LDKCResult_COption_EventZDecodeErrorZ");
+       *ret_conv = CResult_COption_EventZDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_boolPeerHandleErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_boolPeerHandleErrorZ* arg_conv = (LDKCResult_boolPeerHandleErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_boolPeerHandleErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_COption_EventZDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_COption_EventZDecodeErrorZ* arg_conv = (LDKCResult_COption_EventZDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_COption_EventZDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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_COption_EventZDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_COption_EventZDecodeErrorZ* orig_conv = (LDKCResult_COption_EventZDecodeErrorZ*)(orig & ~1);
+       LDKCResult_COption_EventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_EventZDecodeErrorZ), "LDKCResult_COption_EventZDecodeErrorZ");
+       *ret_conv = CResult_COption_EventZDecodeErrorZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
@@ -14209,6 +12220,25 @@ uint32_t  __attribute__((visibility("default"))) TS_CResult_RoutingFeesDecodeErr
        return (uint64_t)ret_conv;
 }
 
+void  __attribute__((visibility("default"))) TS_CVec_NetAddressZ_free(uint32_tArray _res) {
+       LDKCVec_NetAddressZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       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 = _res->elems;
+       for (size_t m = 0; m < _res_constr.datalen; m++) {
+               uint32_t _res_conv_12 = _res_vals[m];
+               void* _res_conv_12_ptr = (void*)(((uint64_t)_res_conv_12) & ~1);
+               CHECK_ACCESS(_res_conv_12_ptr);
+               LDKNetAddress _res_conv_12_conv = *(LDKNetAddress*)(_res_conv_12_ptr);
+               FREE((void*)_res_conv_12);
+               _res_constr.data[m] = _res_conv_12_conv;
+       }
+       CVec_NetAddressZ_free(_res_constr);
+}
+
 uint32_t  __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementInfoDecodeErrorZ_ok(uint32_t o) {
        LDKNodeAnnouncementInfo o_conv;
        o_conv.inner = (void*)(o & (~1));
@@ -14266,12 +12296,12 @@ uint32_t  __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementInfo
 
 void  __attribute__((visibility("default"))) TS_CVec_u64Z_free(int64_tArray _res) {
        LDKCVec_u64Z _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
+       _res_constr.datalen = _res->arr_len;
        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);
+       int64_t* _res_vals = _res->elems;
        for (size_t i = 0; i < _res_constr.datalen; i++) {
                int64_t _res_conv_8 = _res_vals[i];
                _res_constr.data[i] = _res_conv_8;
@@ -14391,12 +12421,12 @@ uint32_t  __attribute__((visibility("default"))) TS_CResult_NetworkGraphDecodeEr
 
 uint32_t  __attribute__((visibility("default"))) TS_COption_CVec_NetAddressZZ_some(uint32_tArray o) {
        LDKCVec_NetAddressZ o_constr;
-       o_constr.datalen = *((uint32_t*)o);
+       o_constr.datalen = o->arr_len;
        if (o_constr.datalen > 0)
                o_constr.data = MALLOC(o_constr.datalen * sizeof(LDKNetAddress), "LDKCVec_NetAddressZ Elements");
        else
                o_constr.data = NULL;
-       uint32_t* o_vals = (uint32_t*)(o + 4);
+       uint32_t* o_vals = o->elems;
        for (size_t m = 0; m < o_constr.datalen; m++) {
                uint32_t o_conv_12 = o_vals[m];
                void* o_conv_12_ptr = (void*)(((uint64_t)o_conv_12) & ~1);
@@ -14436,5183 +12466,4607 @@ uint64_t ret_ref = (uint64_t)ret_copy;
 int64_t  __attribute__((visibility("default"))) TS_COption_CVec_NetAddressZZ_clone_ptr(uint32_t arg) {
        LDKCOption_CVec_NetAddressZZ* arg_conv = (LDKCOption_CVec_NetAddressZZ*)arg;
        int64_t ret_val = COption_CVec_NetAddressZZ_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_COption_CVec_NetAddressZZ_clone(uint32_t orig) {
-       LDKCOption_CVec_NetAddressZZ* orig_conv = (LDKCOption_CVec_NetAddressZZ*)orig;
-       LDKCOption_CVec_NetAddressZZ *ret_copy = MALLOC(sizeof(LDKCOption_CVec_NetAddressZZ), "LDKCOption_CVec_NetAddressZZ");
-       *ret_copy = COption_CVec_NetAddressZZ_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NetAddressDecodeErrorZ_ok(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKNetAddress o_conv = *(LDKNetAddress*)(o_ptr);
-       o_conv = NetAddress_clone((LDKNetAddress*)(((uint64_t)o) & ~1));
-       LDKCResult_NetAddressDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetAddressDecodeErrorZ), "LDKCResult_NetAddressDecodeErrorZ");
-       *ret_conv = CResult_NetAddressDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NetAddressDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_NetAddressDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetAddressDecodeErrorZ), "LDKCResult_NetAddressDecodeErrorZ");
-       *ret_conv = CResult_NetAddressDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
-}
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_NetAddressDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_NetAddressDecodeErrorZ* o_conv = (LDKCResult_NetAddressDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_NetAddressDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_CResult_NetAddressDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_NetAddressDecodeErrorZ _res_conv = *(LDKCResult_NetAddressDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_NetAddressDecodeErrorZ_free(_res_conv);
-}
-
-static inline uint64_t CResult_NetAddressDecodeErrorZ_clone_ptr(LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_NetAddressDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetAddressDecodeErrorZ), "LDKCResult_NetAddressDecodeErrorZ");
-       *ret_conv = CResult_NetAddressDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
-}
-int64_t  __attribute__((visibility("default"))) TS_CResult_NetAddressDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_NetAddressDecodeErrorZ* arg_conv = (LDKCResult_NetAddressDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_NetAddressDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NetAddressDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_NetAddressDecodeErrorZ* orig_conv = (LDKCResult_NetAddressDecodeErrorZ*)(orig & ~1);
-       LDKCResult_NetAddressDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetAddressDecodeErrorZ), "LDKCResult_NetAddressDecodeErrorZ");
-       *ret_conv = CResult_NetAddressDecodeErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
-}
-
-void  __attribute__((visibility("default"))) TS_CVec_UpdateAddHTLCZ_free(uint32_tArray _res) {
-       LDKCVec_UpdateAddHTLCZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKUpdateAddHTLC), "LDKCVec_UpdateAddHTLCZ Elements");
-       else
-               _res_constr.data = NULL;
-       uint32_t* _res_vals = (uint32_t*)(_res + 4);
-       for (size_t p = 0; p < _res_constr.datalen; p++) {
-               uint32_t _res_conv_15 = _res_vals[p];
-               LDKUpdateAddHTLC _res_conv_15_conv;
-               _res_conv_15_conv.inner = (void*)(_res_conv_15 & (~1));
-               _res_conv_15_conv.is_owned = (_res_conv_15 & 1) || (_res_conv_15 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_15_conv);
-               _res_constr.data[p] = _res_conv_15_conv;
-       }
-       CVec_UpdateAddHTLCZ_free(_res_constr);
-}
-
-void  __attribute__((visibility("default"))) TS_CVec_UpdateFulfillHTLCZ_free(uint32_tArray _res) {
-       LDKCVec_UpdateFulfillHTLCZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKUpdateFulfillHTLC), "LDKCVec_UpdateFulfillHTLCZ Elements");
-       else
-               _res_constr.data = NULL;
-       uint32_t* _res_vals = (uint32_t*)(_res + 4);
-       for (size_t t = 0; t < _res_constr.datalen; t++) {
-               uint32_t _res_conv_19 = _res_vals[t];
-               LDKUpdateFulfillHTLC _res_conv_19_conv;
-               _res_conv_19_conv.inner = (void*)(_res_conv_19 & (~1));
-               _res_conv_19_conv.is_owned = (_res_conv_19 & 1) || (_res_conv_19 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_19_conv);
-               _res_constr.data[t] = _res_conv_19_conv;
-       }
-       CVec_UpdateFulfillHTLCZ_free(_res_constr);
-}
-
-void  __attribute__((visibility("default"))) TS_CVec_UpdateFailHTLCZ_free(uint32_tArray _res) {
-       LDKCVec_UpdateFailHTLCZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKUpdateFailHTLC), "LDKCVec_UpdateFailHTLCZ 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 _res_conv_16 = _res_vals[q];
-               LDKUpdateFailHTLC _res_conv_16_conv;
-               _res_conv_16_conv.inner = (void*)(_res_conv_16 & (~1));
-               _res_conv_16_conv.is_owned = (_res_conv_16 & 1) || (_res_conv_16 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_16_conv);
-               _res_constr.data[q] = _res_conv_16_conv;
-       }
-       CVec_UpdateFailHTLCZ_free(_res_constr);
-}
-
-void  __attribute__((visibility("default"))) TS_CVec_UpdateFailMalformedHTLCZ_free(uint32_tArray _res) {
-       LDKCVec_UpdateFailMalformedHTLCZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKUpdateFailMalformedHTLC), "LDKCVec_UpdateFailMalformedHTLCZ Elements");
-       else
-               _res_constr.data = NULL;
-       uint32_t* _res_vals = (uint32_t*)(_res + 4);
-       for (size_t z = 0; z < _res_constr.datalen; z++) {
-               uint32_t _res_conv_25 = _res_vals[z];
-               LDKUpdateFailMalformedHTLC _res_conv_25_conv;
-               _res_conv_25_conv.inner = (void*)(_res_conv_25 & (~1));
-               _res_conv_25_conv.is_owned = (_res_conv_25 & 1) || (_res_conv_25 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_25_conv);
-               _res_constr.data[z] = _res_conv_25_conv;
-       }
-       CVec_UpdateFailMalformedHTLCZ_free(_res_constr);
-}
-
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = AcceptChannel_clone(&o_conv);
-       LDKCResult_AcceptChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AcceptChannelDecodeErrorZ), "LDKCResult_AcceptChannelDecodeErrorZ");
-       *ret_conv = CResult_AcceptChannelDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(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 (uint64_t)ret_conv;
-}
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_AcceptChannelDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_AcceptChannelDecodeErrorZ* o_conv = (LDKCResult_AcceptChannelDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_AcceptChannelDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_CResult_AcceptChannelDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_AcceptChannelDecodeErrorZ _res_conv = *(LDKCResult_AcceptChannelDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_AcceptChannelDecodeErrorZ_free(_res_conv);
-}
-
-static inline uint64_t CResult_AcceptChannelDecodeErrorZ_clone_ptr(LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_AcceptChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AcceptChannelDecodeErrorZ), "LDKCResult_AcceptChannelDecodeErrorZ");
-       *ret_conv = CResult_AcceptChannelDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
-}
-int64_t  __attribute__((visibility("default"))) TS_CResult_AcceptChannelDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_AcceptChannelDecodeErrorZ* arg_conv = (LDKCResult_AcceptChannelDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_AcceptChannelDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-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 (uint64_t)ret_conv;
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_AnnouncementSignaturesDecodeErrorZ_ok(uint32_t o) {
-       LDKAnnouncementSignatures o_conv;
+uint32_t  __attribute__((visibility("default"))) TS_COption_CVec_NetAddressZZ_clone(uint32_t orig) {
+       LDKCOption_CVec_NetAddressZZ* orig_conv = (LDKCOption_CVec_NetAddressZZ*)orig;
+       LDKCOption_CVec_NetAddressZZ *ret_copy = MALLOC(sizeof(LDKCOption_CVec_NetAddressZZ), "LDKCOption_CVec_NetAddressZZ");
+       *ret_copy = COption_CVec_NetAddressZZ_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ScoringParametersDecodeErrorZ_ok(uint32_t o) {
+       LDKScoringParameters o_conv;
        o_conv.inner = (void*)(o & (~1));
        o_conv.is_owned = (o & 1) || (o == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = AnnouncementSignatures_clone(&o_conv);
-       LDKCResult_AnnouncementSignaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ), "LDKCResult_AnnouncementSignaturesDecodeErrorZ");
-       *ret_conv = CResult_AnnouncementSignaturesDecodeErrorZ_ok(o_conv);
+       // Warning: we need a move here but no clone is available for LDKScoringParameters
+       LDKCResult_ScoringParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ScoringParametersDecodeErrorZ), "LDKCResult_ScoringParametersDecodeErrorZ");
+       *ret_conv = CResult_ScoringParametersDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_AnnouncementSignaturesDecodeErrorZ_err(uint32_t e) {
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ScoringParametersDecodeErrorZ_err(uint32_t e) {
        LDKDecodeError e_conv;
        e_conv.inner = (void*)(e & (~1));
        e_conv.is_owned = (e & 1) || (e == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       LDKCResult_ScoringParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ScoringParametersDecodeErrorZ), "LDKCResult_ScoringParametersDecodeErrorZ");
+       *ret_conv = CResult_ScoringParametersDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_AnnouncementSignaturesDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_AnnouncementSignaturesDecodeErrorZ* o_conv = (LDKCResult_AnnouncementSignaturesDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_AnnouncementSignaturesDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ScoringParametersDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ScoringParametersDecodeErrorZ* o_conv = (LDKCResult_ScoringParametersDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ScoringParametersDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_AnnouncementSignaturesDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ScoringParametersDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_AnnouncementSignaturesDecodeErrorZ _res_conv = *(LDKCResult_AnnouncementSignaturesDecodeErrorZ*)(_res_ptr);
+       LDKCResult_ScoringParametersDecodeErrorZ _res_conv = *(LDKCResult_ScoringParametersDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_AnnouncementSignaturesDecodeErrorZ_free(_res_conv);
-}
-
-static inline uint64_t CResult_AnnouncementSignaturesDecodeErrorZ_clone_ptr(LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_AnnouncementSignaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ), "LDKCResult_AnnouncementSignaturesDecodeErrorZ");
-       *ret_conv = CResult_AnnouncementSignaturesDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
-}
-int64_t  __attribute__((visibility("default"))) TS_CResult_AnnouncementSignaturesDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_AnnouncementSignaturesDecodeErrorZ* arg_conv = (LDKCResult_AnnouncementSignaturesDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_AnnouncementSignaturesDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-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 (uint64_t)ret_conv;
+       CResult_ScoringParametersDecodeErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelReestablishDecodeErrorZ_ok(uint32_t o) {
-       LDKChannelReestablish o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = ChannelReestablish_clone(&o_conv);
-       LDKCResult_ChannelReestablishDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelReestablishDecodeErrorZ), "LDKCResult_ChannelReestablishDecodeErrorZ");
-       *ret_conv = CResult_ChannelReestablishDecodeErrorZ_ok(o_conv);
+       o_conv = InitFeatures_clone(&o_conv);
+       LDKCResult_InitFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitFeaturesDecodeErrorZ), "LDKCResult_InitFeaturesDecodeErrorZ");
+       *ret_conv = CResult_InitFeaturesDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelReestablishDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ChannelReestablishDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelReestablishDecodeErrorZ), "LDKCResult_ChannelReestablishDecodeErrorZ");
-       *ret_conv = CResult_ChannelReestablishDecodeErrorZ_err(e_conv);
+       LDKCResult_InitFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitFeaturesDecodeErrorZ), "LDKCResult_InitFeaturesDecodeErrorZ");
+       *ret_conv = CResult_InitFeaturesDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelReestablishDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ChannelReestablishDecodeErrorZ* o_conv = (LDKCResult_ChannelReestablishDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ChannelReestablishDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_InitFeaturesDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_InitFeaturesDecodeErrorZ* o_conv = (LDKCResult_InitFeaturesDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_InitFeaturesDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ChannelReestablishDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_InitFeaturesDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_ChannelReestablishDecodeErrorZ _res_conv = *(LDKCResult_ChannelReestablishDecodeErrorZ*)(_res_ptr);
+       LDKCResult_InitFeaturesDecodeErrorZ _res_conv = *(LDKCResult_InitFeaturesDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_ChannelReestablishDecodeErrorZ_free(_res_conv);
-}
-
-static inline uint64_t CResult_ChannelReestablishDecodeErrorZ_clone_ptr(LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ChannelReestablishDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelReestablishDecodeErrorZ), "LDKCResult_ChannelReestablishDecodeErrorZ");
-       *ret_conv = CResult_ChannelReestablishDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
-}
-int64_t  __attribute__((visibility("default"))) TS_CResult_ChannelReestablishDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ChannelReestablishDecodeErrorZ* arg_conv = (LDKCResult_ChannelReestablishDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ChannelReestablishDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-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 (uint64_t)ret_conv;
+       CResult_InitFeaturesDecodeErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedDecodeErrorZ_ok(uint32_t o) {
-       LDKClosingSigned o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = ChannelFeatures_clone(&o_conv);
+       LDKCResult_ChannelFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ), "LDKCResult_ChannelFeaturesDecodeErrorZ");
+       *ret_conv = CResult_ChannelFeaturesDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ClosingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedDecodeErrorZ), "LDKCResult_ClosingSignedDecodeErrorZ");
-       *ret_conv = CResult_ClosingSignedDecodeErrorZ_err(e_conv);
+       LDKCResult_ChannelFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ), "LDKCResult_ChannelFeaturesDecodeErrorZ");
+       *ret_conv = CResult_ChannelFeaturesDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ClosingSignedDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ClosingSignedDecodeErrorZ* o_conv = (LDKCResult_ClosingSignedDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ClosingSignedDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelFeaturesDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ChannelFeaturesDecodeErrorZ* o_conv = (LDKCResult_ChannelFeaturesDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ChannelFeaturesDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ClosingSignedDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ChannelFeaturesDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_ClosingSignedDecodeErrorZ _res_conv = *(LDKCResult_ClosingSignedDecodeErrorZ*)(_res_ptr);
+       LDKCResult_ChannelFeaturesDecodeErrorZ _res_conv = *(LDKCResult_ChannelFeaturesDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_ClosingSignedDecodeErrorZ_free(_res_conv);
-}
-
-static inline uint64_t CResult_ClosingSignedDecodeErrorZ_clone_ptr(LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ClosingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedDecodeErrorZ), "LDKCResult_ClosingSignedDecodeErrorZ");
-       *ret_conv = CResult_ClosingSignedDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
-}
-int64_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ClosingSignedDecodeErrorZ* arg_conv = (LDKCResult_ClosingSignedDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ClosingSignedDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-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 (uint64_t)ret_conv;
+       CResult_ChannelFeaturesDecodeErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_ok(uint32_t o) {
-       LDKClosingSignedFeeRange o_conv;
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = ClosingSignedFeeRange_clone(&o_conv);
-       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ), "LDKCResult_ClosingSignedFeeRangeDecodeErrorZ");
-       *ret_conv = CResult_ClosingSignedFeeRangeDecodeErrorZ_ok(o_conv);
+       o_conv = NodeFeatures_clone(&o_conv);
+       LDKCResult_NodeFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeFeaturesDecodeErrorZ), "LDKCResult_NodeFeaturesDecodeErrorZ");
+       *ret_conv = CResult_NodeFeaturesDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ), "LDKCResult_ClosingSignedFeeRangeDecodeErrorZ");
-       *ret_conv = CResult_ClosingSignedFeeRangeDecodeErrorZ_err(e_conv);
+       LDKCResult_NodeFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeFeaturesDecodeErrorZ), "LDKCResult_NodeFeaturesDecodeErrorZ");
+       *ret_conv = CResult_NodeFeaturesDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* o_conv = (LDKCResult_ClosingSignedFeeRangeDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ClosingSignedFeeRangeDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_NodeFeaturesDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_NodeFeaturesDecodeErrorZ* o_conv = (LDKCResult_NodeFeaturesDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_NodeFeaturesDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_NodeFeaturesDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ _res_conv = *(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ*)(_res_ptr);
+       LDKCResult_NodeFeaturesDecodeErrorZ _res_conv = *(LDKCResult_NodeFeaturesDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_ClosingSignedFeeRangeDecodeErrorZ_free(_res_conv);
-}
-
-static inline uint64_t CResult_ClosingSignedFeeRangeDecodeErrorZ_clone_ptr(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ), "LDKCResult_ClosingSignedFeeRangeDecodeErrorZ");
-       *ret_conv = CResult_ClosingSignedFeeRangeDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
-}
-int64_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* arg_conv = (LDKCResult_ClosingSignedFeeRangeDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ClosingSignedFeeRangeDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* orig_conv = (LDKCResult_ClosingSignedFeeRangeDecodeErrorZ*)(orig & ~1);
-       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ), "LDKCResult_ClosingSignedFeeRangeDecodeErrorZ");
-       *ret_conv = CResult_ClosingSignedFeeRangeDecodeErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+       CResult_NodeFeaturesDecodeErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_CommitmentSignedDecodeErrorZ_ok(uint32_t o) {
-       LDKCommitmentSigned o_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceFeaturesDecodeErrorZ_ok(uint32_t o) {
+       LDKInvoiceFeatures o_conv;
        o_conv.inner = (void*)(o & (~1));
        o_conv.is_owned = (o & 1) || (o == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = InvoiceFeatures_clone(&o_conv);
+       LDKCResult_InvoiceFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ), "LDKCResult_InvoiceFeaturesDecodeErrorZ");
+       *ret_conv = CResult_InvoiceFeaturesDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_CommitmentSignedDecodeErrorZ_err(uint32_t e) {
+uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceFeaturesDecodeErrorZ_err(uint32_t e) {
        LDKDecodeError e_conv;
        e_conv.inner = (void*)(e & (~1));
        e_conv.is_owned = (e & 1) || (e == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_CommitmentSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentSignedDecodeErrorZ), "LDKCResult_CommitmentSignedDecodeErrorZ");
-       *ret_conv = CResult_CommitmentSignedDecodeErrorZ_err(e_conv);
+       LDKCResult_InvoiceFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ), "LDKCResult_InvoiceFeaturesDecodeErrorZ");
+       *ret_conv = CResult_InvoiceFeaturesDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_CommitmentSignedDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_CommitmentSignedDecodeErrorZ* o_conv = (LDKCResult_CommitmentSignedDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_CommitmentSignedDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_InvoiceFeaturesDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_InvoiceFeaturesDecodeErrorZ* o_conv = (LDKCResult_InvoiceFeaturesDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_InvoiceFeaturesDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_CommitmentSignedDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_InvoiceFeaturesDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_CommitmentSignedDecodeErrorZ _res_conv = *(LDKCResult_CommitmentSignedDecodeErrorZ*)(_res_ptr);
+       LDKCResult_InvoiceFeaturesDecodeErrorZ _res_conv = *(LDKCResult_InvoiceFeaturesDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_CommitmentSignedDecodeErrorZ_free(_res_conv);
+       CResult_InvoiceFeaturesDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_CommitmentSignedDecodeErrorZ_clone_ptr(LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_CommitmentSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentSignedDecodeErrorZ), "LDKCResult_CommitmentSignedDecodeErrorZ");
-       *ret_conv = CResult_CommitmentSignedDecodeErrorZ_clone(arg);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelTypeFeaturesDecodeErrorZ_ok(uint32_t o) {
+       LDKChannelTypeFeatures o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = (o & 1) || (o == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = ChannelTypeFeatures_clone(&o_conv);
+       LDKCResult_ChannelTypeFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ), "LDKCResult_ChannelTypeFeaturesDecodeErrorZ");
+       *ret_conv = CResult_ChannelTypeFeaturesDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_CommitmentSignedDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_CommitmentSignedDecodeErrorZ* arg_conv = (LDKCResult_CommitmentSignedDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_CommitmentSignedDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
-}
 
-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);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelTypeFeaturesDecodeErrorZ_err(uint32_t e) {
+       LDKDecodeError e_conv;
+       e_conv.inner = (void*)(e & (~1));
+       e_conv.is_owned = (e & 1) || (e == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_ChannelTypeFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ), "LDKCResult_ChannelTypeFeaturesDecodeErrorZ");
+       *ret_conv = CResult_ChannelTypeFeaturesDecodeErrorZ_err(e_conv);
        return (uint64_t)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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelTypeFeaturesDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ChannelTypeFeaturesDecodeErrorZ* o_conv = (LDKCResult_ChannelTypeFeaturesDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ChannelTypeFeaturesDecodeErrorZ_is_ok(o_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_CResult_ChannelTypeFeaturesDecodeErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_ChannelTypeFeaturesDecodeErrorZ _res_conv = *(LDKCResult_ChannelTypeFeaturesDecodeErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_ChannelTypeFeaturesDecodeErrorZ_free(_res_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NetAddressDecodeErrorZ_ok(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKNetAddress o_conv = *(LDKNetAddress*)(o_ptr);
+       o_conv = NetAddress_clone((LDKNetAddress*)(((uint64_t)o) & ~1));
+       LDKCResult_NetAddressDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetAddressDecodeErrorZ), "LDKCResult_NetAddressDecodeErrorZ");
+       *ret_conv = CResult_NetAddressDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_FundingCreatedDecodeErrorZ_err(uint32_t e) {
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NetAddressDecodeErrorZ_err(uint32_t e) {
        LDKDecodeError e_conv;
        e_conv.inner = (void*)(e & (~1));
        e_conv.is_owned = (e & 1) || (e == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_FundingCreatedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingCreatedDecodeErrorZ), "LDKCResult_FundingCreatedDecodeErrorZ");
-       *ret_conv = CResult_FundingCreatedDecodeErrorZ_err(e_conv);
+       LDKCResult_NetAddressDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetAddressDecodeErrorZ), "LDKCResult_NetAddressDecodeErrorZ");
+       *ret_conv = CResult_NetAddressDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_FundingCreatedDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_FundingCreatedDecodeErrorZ* o_conv = (LDKCResult_FundingCreatedDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_FundingCreatedDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_NetAddressDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_NetAddressDecodeErrorZ* o_conv = (LDKCResult_NetAddressDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_NetAddressDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_FundingCreatedDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_NetAddressDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_FundingCreatedDecodeErrorZ _res_conv = *(LDKCResult_FundingCreatedDecodeErrorZ*)(_res_ptr);
+       LDKCResult_NetAddressDecodeErrorZ _res_conv = *(LDKCResult_NetAddressDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_FundingCreatedDecodeErrorZ_free(_res_conv);
+       CResult_NetAddressDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_FundingCreatedDecodeErrorZ_clone_ptr(LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_FundingCreatedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingCreatedDecodeErrorZ), "LDKCResult_FundingCreatedDecodeErrorZ");
-       *ret_conv = CResult_FundingCreatedDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_NetAddressDecodeErrorZ_clone_ptr(LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_NetAddressDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetAddressDecodeErrorZ), "LDKCResult_NetAddressDecodeErrorZ");
+       *ret_conv = CResult_NetAddressDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_FundingCreatedDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_FundingCreatedDecodeErrorZ* arg_conv = (LDKCResult_FundingCreatedDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_FundingCreatedDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_NetAddressDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_NetAddressDecodeErrorZ* arg_conv = (LDKCResult_NetAddressDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_NetAddressDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NetAddressDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_NetAddressDecodeErrorZ* orig_conv = (LDKCResult_NetAddressDecodeErrorZ*)(orig & ~1);
+       LDKCResult_NetAddressDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetAddressDecodeErrorZ), "LDKCResult_NetAddressDecodeErrorZ");
+       *ret_conv = CResult_NetAddressDecodeErrorZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_FundingSignedDecodeErrorZ_ok(uint32_t o) {
-       LDKFundingSigned o_conv;
+void  __attribute__((visibility("default"))) TS_CVec_UpdateAddHTLCZ_free(uint32_tArray _res) {
+       LDKCVec_UpdateAddHTLCZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKUpdateAddHTLC), "LDKCVec_UpdateAddHTLCZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t p = 0; p < _res_constr.datalen; p++) {
+               uint32_t _res_conv_15 = _res_vals[p];
+               LDKUpdateAddHTLC _res_conv_15_conv;
+               _res_conv_15_conv.inner = (void*)(_res_conv_15 & (~1));
+               _res_conv_15_conv.is_owned = (_res_conv_15 & 1) || (_res_conv_15 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_15_conv);
+               _res_constr.data[p] = _res_conv_15_conv;
+       }
+       CVec_UpdateAddHTLCZ_free(_res_constr);
+}
+
+void  __attribute__((visibility("default"))) TS_CVec_UpdateFulfillHTLCZ_free(uint32_tArray _res) {
+       LDKCVec_UpdateFulfillHTLCZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKUpdateFulfillHTLC), "LDKCVec_UpdateFulfillHTLCZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t t = 0; t < _res_constr.datalen; t++) {
+               uint32_t _res_conv_19 = _res_vals[t];
+               LDKUpdateFulfillHTLC _res_conv_19_conv;
+               _res_conv_19_conv.inner = (void*)(_res_conv_19 & (~1));
+               _res_conv_19_conv.is_owned = (_res_conv_19 & 1) || (_res_conv_19 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_19_conv);
+               _res_constr.data[t] = _res_conv_19_conv;
+       }
+       CVec_UpdateFulfillHTLCZ_free(_res_constr);
+}
+
+void  __attribute__((visibility("default"))) TS_CVec_UpdateFailHTLCZ_free(uint32_tArray _res) {
+       LDKCVec_UpdateFailHTLCZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKUpdateFailHTLC), "LDKCVec_UpdateFailHTLCZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t q = 0; q < _res_constr.datalen; q++) {
+               uint32_t _res_conv_16 = _res_vals[q];
+               LDKUpdateFailHTLC _res_conv_16_conv;
+               _res_conv_16_conv.inner = (void*)(_res_conv_16 & (~1));
+               _res_conv_16_conv.is_owned = (_res_conv_16 & 1) || (_res_conv_16 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_16_conv);
+               _res_constr.data[q] = _res_conv_16_conv;
+       }
+       CVec_UpdateFailHTLCZ_free(_res_constr);
+}
+
+void  __attribute__((visibility("default"))) TS_CVec_UpdateFailMalformedHTLCZ_free(uint32_tArray _res) {
+       LDKCVec_UpdateFailMalformedHTLCZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKUpdateFailMalformedHTLC), "LDKCVec_UpdateFailMalformedHTLCZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t z = 0; z < _res_constr.datalen; z++) {
+               uint32_t _res_conv_25 = _res_vals[z];
+               LDKUpdateFailMalformedHTLC _res_conv_25_conv;
+               _res_conv_25_conv.inner = (void*)(_res_conv_25 & (~1));
+               _res_conv_25_conv.is_owned = (_res_conv_25 & 1) || (_res_conv_25 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_25_conv);
+               _res_constr.data[z] = _res_conv_25_conv;
+       }
+       CVec_UpdateFailMalformedHTLCZ_free(_res_constr);
+}
+
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = AcceptChannel_clone(&o_conv);
+       LDKCResult_AcceptChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AcceptChannelDecodeErrorZ), "LDKCResult_AcceptChannelDecodeErrorZ");
+       *ret_conv = CResult_AcceptChannelDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_FundingSignedDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_FundingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingSignedDecodeErrorZ), "LDKCResult_FundingSignedDecodeErrorZ");
-       *ret_conv = CResult_FundingSignedDecodeErrorZ_err(e_conv);
+       LDKCResult_AcceptChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AcceptChannelDecodeErrorZ), "LDKCResult_AcceptChannelDecodeErrorZ");
+       *ret_conv = CResult_AcceptChannelDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_FundingSignedDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_FundingSignedDecodeErrorZ* o_conv = (LDKCResult_FundingSignedDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_FundingSignedDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_AcceptChannelDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_AcceptChannelDecodeErrorZ* o_conv = (LDKCResult_AcceptChannelDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_AcceptChannelDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_FundingSignedDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_AcceptChannelDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_FundingSignedDecodeErrorZ _res_conv = *(LDKCResult_FundingSignedDecodeErrorZ*)(_res_ptr);
+       LDKCResult_AcceptChannelDecodeErrorZ _res_conv = *(LDKCResult_AcceptChannelDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_FundingSignedDecodeErrorZ_free(_res_conv);
+       CResult_AcceptChannelDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_FundingSignedDecodeErrorZ_clone_ptr(LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_FundingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingSignedDecodeErrorZ), "LDKCResult_FundingSignedDecodeErrorZ");
-       *ret_conv = CResult_FundingSignedDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_AcceptChannelDecodeErrorZ_clone_ptr(LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_AcceptChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AcceptChannelDecodeErrorZ), "LDKCResult_AcceptChannelDecodeErrorZ");
+       *ret_conv = CResult_AcceptChannelDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_FundingSignedDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_FundingSignedDecodeErrorZ* arg_conv = (LDKCResult_FundingSignedDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_FundingSignedDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_AcceptChannelDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_AcceptChannelDecodeErrorZ* arg_conv = (LDKCResult_AcceptChannelDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_AcceptChannelDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_FundingLockedDecodeErrorZ_ok(uint32_t o) {
-       LDKFundingLocked o_conv;
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = AnnouncementSignatures_clone(&o_conv);
+       LDKCResult_AnnouncementSignaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ), "LDKCResult_AnnouncementSignaturesDecodeErrorZ");
+       *ret_conv = CResult_AnnouncementSignaturesDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_FundingLockedDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_FundingLockedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingLockedDecodeErrorZ), "LDKCResult_FundingLockedDecodeErrorZ");
-       *ret_conv = CResult_FundingLockedDecodeErrorZ_err(e_conv);
+       LDKCResult_AnnouncementSignaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ), "LDKCResult_AnnouncementSignaturesDecodeErrorZ");
+       *ret_conv = CResult_AnnouncementSignaturesDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_FundingLockedDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_FundingLockedDecodeErrorZ* o_conv = (LDKCResult_FundingLockedDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_FundingLockedDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_AnnouncementSignaturesDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_AnnouncementSignaturesDecodeErrorZ* o_conv = (LDKCResult_AnnouncementSignaturesDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_AnnouncementSignaturesDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_FundingLockedDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_AnnouncementSignaturesDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_FundingLockedDecodeErrorZ _res_conv = *(LDKCResult_FundingLockedDecodeErrorZ*)(_res_ptr);
+       LDKCResult_AnnouncementSignaturesDecodeErrorZ _res_conv = *(LDKCResult_AnnouncementSignaturesDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_FundingLockedDecodeErrorZ_free(_res_conv);
+       CResult_AnnouncementSignaturesDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_FundingLockedDecodeErrorZ_clone_ptr(LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_FundingLockedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingLockedDecodeErrorZ), "LDKCResult_FundingLockedDecodeErrorZ");
-       *ret_conv = CResult_FundingLockedDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_AnnouncementSignaturesDecodeErrorZ_clone_ptr(LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_AnnouncementSignaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ), "LDKCResult_AnnouncementSignaturesDecodeErrorZ");
+       *ret_conv = CResult_AnnouncementSignaturesDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_FundingLockedDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_FundingLockedDecodeErrorZ* arg_conv = (LDKCResult_FundingLockedDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_FundingLockedDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_AnnouncementSignaturesDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_AnnouncementSignaturesDecodeErrorZ* arg_conv = (LDKCResult_AnnouncementSignaturesDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_AnnouncementSignaturesDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InitDecodeErrorZ_ok(uint32_t o) {
-       LDKInit o_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelReestablishDecodeErrorZ_ok(uint32_t o) {
+       LDKChannelReestablish o_conv;
        o_conv.inner = (void*)(o & (~1));
        o_conv.is_owned = (o & 1) || (o == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       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 = ChannelReestablish_clone(&o_conv);
+       LDKCResult_ChannelReestablishDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelReestablishDecodeErrorZ), "LDKCResult_ChannelReestablishDecodeErrorZ");
+       *ret_conv = CResult_ChannelReestablishDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InitDecodeErrorZ_err(uint32_t e) {
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelReestablishDecodeErrorZ_err(uint32_t e) {
        LDKDecodeError e_conv;
        e_conv.inner = (void*)(e & (~1));
        e_conv.is_owned = (e & 1) || (e == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_InitDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitDecodeErrorZ), "LDKCResult_InitDecodeErrorZ");
-       *ret_conv = CResult_InitDecodeErrorZ_err(e_conv);
+       LDKCResult_ChannelReestablishDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelReestablishDecodeErrorZ), "LDKCResult_ChannelReestablishDecodeErrorZ");
+       *ret_conv = CResult_ChannelReestablishDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_InitDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_InitDecodeErrorZ* o_conv = (LDKCResult_InitDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_InitDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelReestablishDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ChannelReestablishDecodeErrorZ* o_conv = (LDKCResult_ChannelReestablishDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ChannelReestablishDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_InitDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ChannelReestablishDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_InitDecodeErrorZ _res_conv = *(LDKCResult_InitDecodeErrorZ*)(_res_ptr);
+       LDKCResult_ChannelReestablishDecodeErrorZ _res_conv = *(LDKCResult_ChannelReestablishDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_InitDecodeErrorZ_free(_res_conv);
+       CResult_ChannelReestablishDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_InitDecodeErrorZ_clone_ptr(LDKCResult_InitDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_InitDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitDecodeErrorZ), "LDKCResult_InitDecodeErrorZ");
-       *ret_conv = CResult_InitDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_ChannelReestablishDecodeErrorZ_clone_ptr(LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_ChannelReestablishDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelReestablishDecodeErrorZ), "LDKCResult_ChannelReestablishDecodeErrorZ");
+       *ret_conv = CResult_ChannelReestablishDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_InitDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_InitDecodeErrorZ* arg_conv = (LDKCResult_InitDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_InitDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_ChannelReestablishDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ChannelReestablishDecodeErrorZ* arg_conv = (LDKCResult_ChannelReestablishDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_ChannelReestablishDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_OpenChannelDecodeErrorZ_ok(uint32_t o) {
-       LDKOpenChannel o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = OpenChannel_clone(&o_conv);
-       LDKCResult_OpenChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OpenChannelDecodeErrorZ), "LDKCResult_OpenChannelDecodeErrorZ");
-       *ret_conv = CResult_OpenChannelDecodeErrorZ_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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_OpenChannelDecodeErrorZ_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_OpenChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OpenChannelDecodeErrorZ), "LDKCResult_OpenChannelDecodeErrorZ");
-       *ret_conv = CResult_OpenChannelDecodeErrorZ_err(e_conv);
+       LDKCResult_ClosingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedDecodeErrorZ), "LDKCResult_ClosingSignedDecodeErrorZ");
+       *ret_conv = CResult_ClosingSignedDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_OpenChannelDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_OpenChannelDecodeErrorZ* o_conv = (LDKCResult_OpenChannelDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_OpenChannelDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ClosingSignedDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ClosingSignedDecodeErrorZ* o_conv = (LDKCResult_ClosingSignedDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ClosingSignedDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_OpenChannelDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ClosingSignedDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_OpenChannelDecodeErrorZ _res_conv = *(LDKCResult_OpenChannelDecodeErrorZ*)(_res_ptr);
+       LDKCResult_ClosingSignedDecodeErrorZ _res_conv = *(LDKCResult_ClosingSignedDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_OpenChannelDecodeErrorZ_free(_res_conv);
+       CResult_ClosingSignedDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_OpenChannelDecodeErrorZ_clone_ptr(LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_OpenChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OpenChannelDecodeErrorZ), "LDKCResult_OpenChannelDecodeErrorZ");
-       *ret_conv = CResult_OpenChannelDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_ClosingSignedDecodeErrorZ_clone_ptr(LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_ClosingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedDecodeErrorZ), "LDKCResult_ClosingSignedDecodeErrorZ");
+       *ret_conv = CResult_ClosingSignedDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_OpenChannelDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_OpenChannelDecodeErrorZ* arg_conv = (LDKCResult_OpenChannelDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_OpenChannelDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ClosingSignedDecodeErrorZ* arg_conv = (LDKCResult_ClosingSignedDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_ClosingSignedDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RevokeAndACKDecodeErrorZ_ok(uint32_t o) {
-       LDKRevokeAndACK o_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_ok(uint32_t o) {
+       LDKClosingSignedFeeRange o_conv;
        o_conv.inner = (void*)(o & (~1));
        o_conv.is_owned = (o & 1) || (o == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = ClosingSignedFeeRange_clone(&o_conv);
+       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ), "LDKCResult_ClosingSignedFeeRangeDecodeErrorZ");
+       *ret_conv = CResult_ClosingSignedFeeRangeDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RevokeAndACKDecodeErrorZ_err(uint32_t e) {
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_err(uint32_t e) {
        LDKDecodeError e_conv;
        e_conv.inner = (void*)(e & (~1));
        e_conv.is_owned = (e & 1) || (e == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_RevokeAndACKDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RevokeAndACKDecodeErrorZ), "LDKCResult_RevokeAndACKDecodeErrorZ");
-       *ret_conv = CResult_RevokeAndACKDecodeErrorZ_err(e_conv);
+       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ), "LDKCResult_ClosingSignedFeeRangeDecodeErrorZ");
+       *ret_conv = CResult_ClosingSignedFeeRangeDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_RevokeAndACKDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_RevokeAndACKDecodeErrorZ* o_conv = (LDKCResult_RevokeAndACKDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_RevokeAndACKDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* o_conv = (LDKCResult_ClosingSignedFeeRangeDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ClosingSignedFeeRangeDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_RevokeAndACKDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_RevokeAndACKDecodeErrorZ _res_conv = *(LDKCResult_RevokeAndACKDecodeErrorZ*)(_res_ptr);
+       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ _res_conv = *(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_RevokeAndACKDecodeErrorZ_free(_res_conv);
+       CResult_ClosingSignedFeeRangeDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_RevokeAndACKDecodeErrorZ_clone_ptr(LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_RevokeAndACKDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RevokeAndACKDecodeErrorZ), "LDKCResult_RevokeAndACKDecodeErrorZ");
-       *ret_conv = CResult_RevokeAndACKDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_ClosingSignedFeeRangeDecodeErrorZ_clone_ptr(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ), "LDKCResult_ClosingSignedFeeRangeDecodeErrorZ");
+       *ret_conv = CResult_ClosingSignedFeeRangeDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_RevokeAndACKDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_RevokeAndACKDecodeErrorZ* arg_conv = (LDKCResult_RevokeAndACKDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_RevokeAndACKDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* arg_conv = (LDKCResult_ClosingSignedFeeRangeDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_ClosingSignedFeeRangeDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* orig_conv = (LDKCResult_ClosingSignedFeeRangeDecodeErrorZ*)(orig & ~1);
+       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ), "LDKCResult_ClosingSignedFeeRangeDecodeErrorZ");
+       *ret_conv = CResult_ClosingSignedFeeRangeDecodeErrorZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownDecodeErrorZ_ok(uint32_t o) {
-       LDKShutdown o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = CommitmentSigned_clone(&o_conv);
+       LDKCResult_CommitmentSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentSignedDecodeErrorZ), "LDKCResult_CommitmentSignedDecodeErrorZ");
+       *ret_conv = CResult_CommitmentSignedDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownDecodeErrorZ_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ShutdownDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownDecodeErrorZ), "LDKCResult_ShutdownDecodeErrorZ");
-       *ret_conv = CResult_ShutdownDecodeErrorZ_err(e_conv);
+       LDKCResult_CommitmentSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentSignedDecodeErrorZ), "LDKCResult_CommitmentSignedDecodeErrorZ");
+       *ret_conv = CResult_CommitmentSignedDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ShutdownDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ShutdownDecodeErrorZ* o_conv = (LDKCResult_ShutdownDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ShutdownDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_CommitmentSignedDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_CommitmentSignedDecodeErrorZ* o_conv = (LDKCResult_CommitmentSignedDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_CommitmentSignedDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ShutdownDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_CommitmentSignedDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_ShutdownDecodeErrorZ _res_conv = *(LDKCResult_ShutdownDecodeErrorZ*)(_res_ptr);
+       LDKCResult_CommitmentSignedDecodeErrorZ _res_conv = *(LDKCResult_CommitmentSignedDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_ShutdownDecodeErrorZ_free(_res_conv);
+       CResult_CommitmentSignedDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_ShutdownDecodeErrorZ_clone_ptr(LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ShutdownDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownDecodeErrorZ), "LDKCResult_ShutdownDecodeErrorZ");
-       *ret_conv = CResult_ShutdownDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_CommitmentSignedDecodeErrorZ_clone_ptr(LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_CommitmentSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentSignedDecodeErrorZ), "LDKCResult_CommitmentSignedDecodeErrorZ");
+       *ret_conv = CResult_CommitmentSignedDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_ShutdownDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ShutdownDecodeErrorZ* arg_conv = (LDKCResult_ShutdownDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ShutdownDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_CommitmentSignedDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_CommitmentSignedDecodeErrorZ* arg_conv = (LDKCResult_CommitmentSignedDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_CommitmentSignedDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFailHTLCDecodeErrorZ_ok(uint32_t o) {
-       LDKUpdateFailHTLC o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = FundingCreated_clone(&o_conv);
+       LDKCResult_FundingCreatedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingCreatedDecodeErrorZ), "LDKCResult_FundingCreatedDecodeErrorZ");
+       *ret_conv = CResult_FundingCreatedDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFailHTLCDecodeErrorZ_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_UpdateFailHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ), "LDKCResult_UpdateFailHTLCDecodeErrorZ");
-       *ret_conv = CResult_UpdateFailHTLCDecodeErrorZ_err(e_conv);
+       LDKCResult_FundingCreatedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingCreatedDecodeErrorZ), "LDKCResult_FundingCreatedDecodeErrorZ");
+       *ret_conv = CResult_FundingCreatedDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_UpdateFailHTLCDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_UpdateFailHTLCDecodeErrorZ* o_conv = (LDKCResult_UpdateFailHTLCDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_UpdateFailHTLCDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_FundingCreatedDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_FundingCreatedDecodeErrorZ* o_conv = (LDKCResult_FundingCreatedDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_FundingCreatedDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_UpdateFailHTLCDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_FundingCreatedDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_UpdateFailHTLCDecodeErrorZ _res_conv = *(LDKCResult_UpdateFailHTLCDecodeErrorZ*)(_res_ptr);
+       LDKCResult_FundingCreatedDecodeErrorZ _res_conv = *(LDKCResult_FundingCreatedDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_UpdateFailHTLCDecodeErrorZ_free(_res_conv);
+       CResult_FundingCreatedDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_UpdateFailHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_UpdateFailHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ), "LDKCResult_UpdateFailHTLCDecodeErrorZ");
-       *ret_conv = CResult_UpdateFailHTLCDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_FundingCreatedDecodeErrorZ_clone_ptr(LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_FundingCreatedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingCreatedDecodeErrorZ), "LDKCResult_FundingCreatedDecodeErrorZ");
+       *ret_conv = CResult_FundingCreatedDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_UpdateFailHTLCDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_UpdateFailHTLCDecodeErrorZ* arg_conv = (LDKCResult_UpdateFailHTLCDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_UpdateFailHTLCDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_FundingCreatedDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_FundingCreatedDecodeErrorZ* arg_conv = (LDKCResult_FundingCreatedDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_FundingCreatedDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_ok(uint32_t o) {
-       LDKUpdateFailMalformedHTLC o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = FundingSigned_clone(&o_conv);
+       LDKCResult_FundingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingSignedDecodeErrorZ), "LDKCResult_FundingSignedDecodeErrorZ");
+       *ret_conv = CResult_FundingSignedDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ), "LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ");
-       *ret_conv = CResult_UpdateFailMalformedHTLCDecodeErrorZ_err(e_conv);
+       LDKCResult_FundingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingSignedDecodeErrorZ), "LDKCResult_FundingSignedDecodeErrorZ");
+       *ret_conv = CResult_FundingSignedDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* o_conv = (LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_UpdateFailMalformedHTLCDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_FundingSignedDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_FundingSignedDecodeErrorZ* o_conv = (LDKCResult_FundingSignedDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_FundingSignedDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_FundingSignedDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ _res_conv = *(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ*)(_res_ptr);
+       LDKCResult_FundingSignedDecodeErrorZ _res_conv = *(LDKCResult_FundingSignedDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(_res_conv);
+       CResult_FundingSignedDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ), "LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ");
-       *ret_conv = CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_FundingSignedDecodeErrorZ_clone_ptr(LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_FundingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingSignedDecodeErrorZ), "LDKCResult_FundingSignedDecodeErrorZ");
+       *ret_conv = CResult_FundingSignedDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* arg_conv = (LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_FundingSignedDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_FundingSignedDecodeErrorZ* arg_conv = (LDKCResult_FundingSignedDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_FundingSignedDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFeeDecodeErrorZ_ok(uint32_t o) {
-       LDKUpdateFee o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = FundingLocked_clone(&o_conv);
+       LDKCResult_FundingLockedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingLockedDecodeErrorZ), "LDKCResult_FundingLockedDecodeErrorZ");
+       *ret_conv = CResult_FundingLockedDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFeeDecodeErrorZ_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_UpdateFeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFeeDecodeErrorZ), "LDKCResult_UpdateFeeDecodeErrorZ");
-       *ret_conv = CResult_UpdateFeeDecodeErrorZ_err(e_conv);
+       LDKCResult_FundingLockedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingLockedDecodeErrorZ), "LDKCResult_FundingLockedDecodeErrorZ");
+       *ret_conv = CResult_FundingLockedDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_UpdateFeeDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_UpdateFeeDecodeErrorZ* o_conv = (LDKCResult_UpdateFeeDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_UpdateFeeDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_FundingLockedDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_FundingLockedDecodeErrorZ* o_conv = (LDKCResult_FundingLockedDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_FundingLockedDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_UpdateFeeDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_FundingLockedDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_UpdateFeeDecodeErrorZ _res_conv = *(LDKCResult_UpdateFeeDecodeErrorZ*)(_res_ptr);
+       LDKCResult_FundingLockedDecodeErrorZ _res_conv = *(LDKCResult_FundingLockedDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_UpdateFeeDecodeErrorZ_free(_res_conv);
+       CResult_FundingLockedDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_UpdateFeeDecodeErrorZ_clone_ptr(LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_UpdateFeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFeeDecodeErrorZ), "LDKCResult_UpdateFeeDecodeErrorZ");
-       *ret_conv = CResult_UpdateFeeDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_FundingLockedDecodeErrorZ_clone_ptr(LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_FundingLockedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingLockedDecodeErrorZ), "LDKCResult_FundingLockedDecodeErrorZ");
+       *ret_conv = CResult_FundingLockedDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_UpdateFeeDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_UpdateFeeDecodeErrorZ* arg_conv = (LDKCResult_UpdateFeeDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_UpdateFeeDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_FundingLockedDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_FundingLockedDecodeErrorZ* arg_conv = (LDKCResult_FundingLockedDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_FundingLockedDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFulfillHTLCDecodeErrorZ_ok(uint32_t o) {
-       LDKUpdateFulfillHTLC o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = Init_clone(&o_conv);
+       LDKCResult_InitDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitDecodeErrorZ), "LDKCResult_InitDecodeErrorZ");
+       *ret_conv = CResult_InitDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFulfillHTLCDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_UpdateFulfillHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ), "LDKCResult_UpdateFulfillHTLCDecodeErrorZ");
-       *ret_conv = CResult_UpdateFulfillHTLCDecodeErrorZ_err(e_conv);
+       LDKCResult_InitDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitDecodeErrorZ), "LDKCResult_InitDecodeErrorZ");
+       *ret_conv = CResult_InitDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_UpdateFulfillHTLCDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_UpdateFulfillHTLCDecodeErrorZ* o_conv = (LDKCResult_UpdateFulfillHTLCDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_UpdateFulfillHTLCDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_InitDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_InitDecodeErrorZ* o_conv = (LDKCResult_InitDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_InitDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_UpdateFulfillHTLCDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_InitDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_UpdateFulfillHTLCDecodeErrorZ _res_conv = *(LDKCResult_UpdateFulfillHTLCDecodeErrorZ*)(_res_ptr);
+       LDKCResult_InitDecodeErrorZ _res_conv = *(LDKCResult_InitDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_UpdateFulfillHTLCDecodeErrorZ_free(_res_conv);
+       CResult_InitDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_UpdateFulfillHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_UpdateFulfillHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ), "LDKCResult_UpdateFulfillHTLCDecodeErrorZ");
-       *ret_conv = CResult_UpdateFulfillHTLCDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_InitDecodeErrorZ_clone_ptr(LDKCResult_InitDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_InitDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitDecodeErrorZ), "LDKCResult_InitDecodeErrorZ");
+       *ret_conv = CResult_InitDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_UpdateFulfillHTLCDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_UpdateFulfillHTLCDecodeErrorZ* arg_conv = (LDKCResult_UpdateFulfillHTLCDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_UpdateFulfillHTLCDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_InitDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_InitDecodeErrorZ* arg_conv = (LDKCResult_InitDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_InitDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateAddHTLCDecodeErrorZ_ok(uint32_t o) {
-       LDKUpdateAddHTLC o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = OpenChannel_clone(&o_conv);
+       LDKCResult_OpenChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OpenChannelDecodeErrorZ), "LDKCResult_OpenChannelDecodeErrorZ");
+       *ret_conv = CResult_OpenChannelDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateAddHTLCDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_UpdateAddHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ), "LDKCResult_UpdateAddHTLCDecodeErrorZ");
-       *ret_conv = CResult_UpdateAddHTLCDecodeErrorZ_err(e_conv);
+       LDKCResult_OpenChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OpenChannelDecodeErrorZ), "LDKCResult_OpenChannelDecodeErrorZ");
+       *ret_conv = CResult_OpenChannelDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_UpdateAddHTLCDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_UpdateAddHTLCDecodeErrorZ* o_conv = (LDKCResult_UpdateAddHTLCDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_UpdateAddHTLCDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_OpenChannelDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_OpenChannelDecodeErrorZ* o_conv = (LDKCResult_OpenChannelDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_OpenChannelDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_UpdateAddHTLCDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_OpenChannelDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_UpdateAddHTLCDecodeErrorZ _res_conv = *(LDKCResult_UpdateAddHTLCDecodeErrorZ*)(_res_ptr);
+       LDKCResult_OpenChannelDecodeErrorZ _res_conv = *(LDKCResult_OpenChannelDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_UpdateAddHTLCDecodeErrorZ_free(_res_conv);
+       CResult_OpenChannelDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_UpdateAddHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_UpdateAddHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ), "LDKCResult_UpdateAddHTLCDecodeErrorZ");
-       *ret_conv = CResult_UpdateAddHTLCDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_OpenChannelDecodeErrorZ_clone_ptr(LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_OpenChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OpenChannelDecodeErrorZ), "LDKCResult_OpenChannelDecodeErrorZ");
+       *ret_conv = CResult_OpenChannelDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_UpdateAddHTLCDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_UpdateAddHTLCDecodeErrorZ* arg_conv = (LDKCResult_UpdateAddHTLCDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_UpdateAddHTLCDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_OpenChannelDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_OpenChannelDecodeErrorZ* arg_conv = (LDKCResult_OpenChannelDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_OpenChannelDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PingDecodeErrorZ_ok(uint32_t o) {
-       LDKPing 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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       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 = RevokeAndACK_clone(&o_conv);
+       LDKCResult_RevokeAndACKDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RevokeAndACKDecodeErrorZ), "LDKCResult_RevokeAndACKDecodeErrorZ");
+       *ret_conv = CResult_RevokeAndACKDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PingDecodeErrorZ_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       LDKCResult_RevokeAndACKDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RevokeAndACKDecodeErrorZ), "LDKCResult_RevokeAndACKDecodeErrorZ");
+       *ret_conv = CResult_RevokeAndACKDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_PingDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_PingDecodeErrorZ* o_conv = (LDKCResult_PingDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_PingDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_RevokeAndACKDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_RevokeAndACKDecodeErrorZ* o_conv = (LDKCResult_RevokeAndACKDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_RevokeAndACKDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_PingDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_RevokeAndACKDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_PingDecodeErrorZ _res_conv = *(LDKCResult_PingDecodeErrorZ*)(_res_ptr);
+       LDKCResult_RevokeAndACKDecodeErrorZ _res_conv = *(LDKCResult_RevokeAndACKDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_PingDecodeErrorZ_free(_res_conv);
+       CResult_RevokeAndACKDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_PingDecodeErrorZ_clone_ptr(LDKCResult_PingDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_PingDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PingDecodeErrorZ), "LDKCResult_PingDecodeErrorZ");
-       *ret_conv = CResult_PingDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_RevokeAndACKDecodeErrorZ_clone_ptr(LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_RevokeAndACKDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RevokeAndACKDecodeErrorZ), "LDKCResult_RevokeAndACKDecodeErrorZ");
+       *ret_conv = CResult_RevokeAndACKDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_PingDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_PingDecodeErrorZ* arg_conv = (LDKCResult_PingDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_PingDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_RevokeAndACKDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_RevokeAndACKDecodeErrorZ* arg_conv = (LDKCResult_RevokeAndACKDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_RevokeAndACKDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PongDecodeErrorZ_ok(uint32_t o) {
-       LDKPong o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       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 = Shutdown_clone(&o_conv);
+       LDKCResult_ShutdownDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownDecodeErrorZ), "LDKCResult_ShutdownDecodeErrorZ");
+       *ret_conv = CResult_ShutdownDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PongDecodeErrorZ_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       LDKCResult_ShutdownDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownDecodeErrorZ), "LDKCResult_ShutdownDecodeErrorZ");
+       *ret_conv = CResult_ShutdownDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_PongDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_PongDecodeErrorZ* o_conv = (LDKCResult_PongDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_PongDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ShutdownDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ShutdownDecodeErrorZ* o_conv = (LDKCResult_ShutdownDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ShutdownDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_PongDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ShutdownDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_PongDecodeErrorZ _res_conv = *(LDKCResult_PongDecodeErrorZ*)(_res_ptr);
+       LDKCResult_ShutdownDecodeErrorZ _res_conv = *(LDKCResult_ShutdownDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_PongDecodeErrorZ_free(_res_conv);
+       CResult_ShutdownDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_PongDecodeErrorZ_clone_ptr(LDKCResult_PongDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_PongDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PongDecodeErrorZ), "LDKCResult_PongDecodeErrorZ");
-       *ret_conv = CResult_PongDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_ShutdownDecodeErrorZ_clone_ptr(LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_ShutdownDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownDecodeErrorZ), "LDKCResult_ShutdownDecodeErrorZ");
+       *ret_conv = CResult_ShutdownDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_PongDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_PongDecodeErrorZ* arg_conv = (LDKCResult_PongDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_PongDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_ShutdownDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ShutdownDecodeErrorZ* arg_conv = (LDKCResult_ShutdownDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_ShutdownDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(uint32_t o) {
-       LDKUnsignedChannelAnnouncement o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       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 = UpdateFailHTLC_clone(&o_conv);
+       LDKCResult_UpdateFailHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ), "LDKCResult_UpdateFailHTLCDecodeErrorZ");
+       *ret_conv = CResult_UpdateFailHTLCDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       LDKCResult_UpdateFailHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ), "LDKCResult_UpdateFailHTLCDecodeErrorZ");
+       *ret_conv = CResult_UpdateFailHTLCDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* o_conv = (LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_UnsignedChannelAnnouncementDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_UpdateFailHTLCDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_UpdateFailHTLCDecodeErrorZ* o_conv = (LDKCResult_UpdateFailHTLCDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_UpdateFailHTLCDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_UpdateFailHTLCDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ _res_conv = *(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(_res_ptr);
+       LDKCResult_UpdateFailHTLCDecodeErrorZ _res_conv = *(LDKCResult_UpdateFailHTLCDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(_res_conv);
+       CResult_UpdateFailHTLCDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ), "LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ");
-       *ret_conv = CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_UpdateFailHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_UpdateFailHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ), "LDKCResult_UpdateFailHTLCDecodeErrorZ");
+       *ret_conv = CResult_UpdateFailHTLCDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* arg_conv = (LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_UpdateFailHTLCDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_UpdateFailHTLCDecodeErrorZ* arg_conv = (LDKCResult_UpdateFailHTLCDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_UpdateFailHTLCDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelAnnouncementDecodeErrorZ_ok(uint32_t o) {
-       LDKChannelAnnouncement o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = ChannelAnnouncement_clone(&o_conv);
-       LDKCResult_ChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ), "LDKCResult_ChannelAnnouncementDecodeErrorZ");
-       *ret_conv = CResult_ChannelAnnouncementDecodeErrorZ_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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelAnnouncementDecodeErrorZ_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ), "LDKCResult_ChannelAnnouncementDecodeErrorZ");
-       *ret_conv = CResult_ChannelAnnouncementDecodeErrorZ_err(e_conv);
+       LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ), "LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ");
+       *ret_conv = CResult_UpdateFailMalformedHTLCDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelAnnouncementDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ChannelAnnouncementDecodeErrorZ* o_conv = (LDKCResult_ChannelAnnouncementDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ChannelAnnouncementDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* o_conv = (LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_UpdateFailMalformedHTLCDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ChannelAnnouncementDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_ChannelAnnouncementDecodeErrorZ _res_conv = *(LDKCResult_ChannelAnnouncementDecodeErrorZ*)(_res_ptr);
+       LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ _res_conv = *(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_ChannelAnnouncementDecodeErrorZ_free(_res_conv);
+       CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_ChannelAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ), "LDKCResult_ChannelAnnouncementDecodeErrorZ");
-       *ret_conv = CResult_ChannelAnnouncementDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ), "LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ");
+       *ret_conv = CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_ChannelAnnouncementDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ChannelAnnouncementDecodeErrorZ* arg_conv = (LDKCResult_ChannelAnnouncementDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ChannelAnnouncementDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* arg_conv = (LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelUpdateDecodeErrorZ_ok(uint32_t o) {
-       LDKUnsignedChannelUpdate o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       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 = UpdateFee_clone(&o_conv);
+       LDKCResult_UpdateFeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFeeDecodeErrorZ), "LDKCResult_UpdateFeeDecodeErrorZ");
+       *ret_conv = CResult_UpdateFeeDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelUpdateDecodeErrorZ_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_UnsignedChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ), "LDKCResult_UnsignedChannelUpdateDecodeErrorZ");
-       *ret_conv = CResult_UnsignedChannelUpdateDecodeErrorZ_err(e_conv);
+       LDKCResult_UpdateFeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFeeDecodeErrorZ), "LDKCResult_UpdateFeeDecodeErrorZ");
+       *ret_conv = CResult_UpdateFeeDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelUpdateDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_UnsignedChannelUpdateDecodeErrorZ* o_conv = (LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_UnsignedChannelUpdateDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_UpdateFeeDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_UpdateFeeDecodeErrorZ* o_conv = (LDKCResult_UpdateFeeDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_UpdateFeeDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelUpdateDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_UpdateFeeDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_UnsignedChannelUpdateDecodeErrorZ _res_conv = *(LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(_res_ptr);
+       LDKCResult_UpdateFeeDecodeErrorZ _res_conv = *(LDKCResult_UpdateFeeDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_UnsignedChannelUpdateDecodeErrorZ_free(_res_conv);
+       CResult_UpdateFeeDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_UnsignedChannelUpdateDecodeErrorZ_clone_ptr(LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_UnsignedChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ), "LDKCResult_UnsignedChannelUpdateDecodeErrorZ");
-       *ret_conv = CResult_UnsignedChannelUpdateDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_UpdateFeeDecodeErrorZ_clone_ptr(LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_UpdateFeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFeeDecodeErrorZ), "LDKCResult_UpdateFeeDecodeErrorZ");
+       *ret_conv = CResult_UpdateFeeDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelUpdateDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_UnsignedChannelUpdateDecodeErrorZ* arg_conv = (LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_UnsignedChannelUpdateDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_UpdateFeeDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_UpdateFeeDecodeErrorZ* arg_conv = (LDKCResult_UpdateFeeDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_UpdateFeeDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelUpdateDecodeErrorZ_ok(uint32_t o) {
-       LDKChannelUpdate o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = UpdateFulfillHTLC_clone(&o_conv);
+       LDKCResult_UpdateFulfillHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ), "LDKCResult_UpdateFulfillHTLCDecodeErrorZ");
+       *ret_conv = CResult_UpdateFulfillHTLCDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelUpdateDecodeErrorZ_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelUpdateDecodeErrorZ), "LDKCResult_ChannelUpdateDecodeErrorZ");
-       *ret_conv = CResult_ChannelUpdateDecodeErrorZ_err(e_conv);
+       LDKCResult_UpdateFulfillHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ), "LDKCResult_UpdateFulfillHTLCDecodeErrorZ");
+       *ret_conv = CResult_UpdateFulfillHTLCDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelUpdateDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ChannelUpdateDecodeErrorZ* o_conv = (LDKCResult_ChannelUpdateDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ChannelUpdateDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_UpdateFulfillHTLCDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_UpdateFulfillHTLCDecodeErrorZ* o_conv = (LDKCResult_UpdateFulfillHTLCDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_UpdateFulfillHTLCDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ChannelUpdateDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_UpdateFulfillHTLCDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_ChannelUpdateDecodeErrorZ _res_conv = *(LDKCResult_ChannelUpdateDecodeErrorZ*)(_res_ptr);
+       LDKCResult_UpdateFulfillHTLCDecodeErrorZ _res_conv = *(LDKCResult_UpdateFulfillHTLCDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_ChannelUpdateDecodeErrorZ_free(_res_conv);
+       CResult_UpdateFulfillHTLCDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_ChannelUpdateDecodeErrorZ_clone_ptr(LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelUpdateDecodeErrorZ), "LDKCResult_ChannelUpdateDecodeErrorZ");
-       *ret_conv = CResult_ChannelUpdateDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_UpdateFulfillHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_UpdateFulfillHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ), "LDKCResult_UpdateFulfillHTLCDecodeErrorZ");
+       *ret_conv = CResult_UpdateFulfillHTLCDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_ChannelUpdateDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ChannelUpdateDecodeErrorZ* arg_conv = (LDKCResult_ChannelUpdateDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ChannelUpdateDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_UpdateFulfillHTLCDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_UpdateFulfillHTLCDecodeErrorZ* arg_conv = (LDKCResult_UpdateFulfillHTLCDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_UpdateFulfillHTLCDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ErrorMessageDecodeErrorZ_ok(uint32_t o) {
-       LDKErrorMessage o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = UpdateAddHTLC_clone(&o_conv);
+       LDKCResult_UpdateAddHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ), "LDKCResult_UpdateAddHTLCDecodeErrorZ");
+       *ret_conv = CResult_UpdateAddHTLCDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ErrorMessageDecodeErrorZ_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ErrorMessageDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ErrorMessageDecodeErrorZ), "LDKCResult_ErrorMessageDecodeErrorZ");
-       *ret_conv = CResult_ErrorMessageDecodeErrorZ_err(e_conv);
+       LDKCResult_UpdateAddHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ), "LDKCResult_UpdateAddHTLCDecodeErrorZ");
+       *ret_conv = CResult_UpdateAddHTLCDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ErrorMessageDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ErrorMessageDecodeErrorZ* o_conv = (LDKCResult_ErrorMessageDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ErrorMessageDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_UpdateAddHTLCDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_UpdateAddHTLCDecodeErrorZ* o_conv = (LDKCResult_UpdateAddHTLCDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_UpdateAddHTLCDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ErrorMessageDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_UpdateAddHTLCDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_ErrorMessageDecodeErrorZ _res_conv = *(LDKCResult_ErrorMessageDecodeErrorZ*)(_res_ptr);
+       LDKCResult_UpdateAddHTLCDecodeErrorZ _res_conv = *(LDKCResult_UpdateAddHTLCDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_ErrorMessageDecodeErrorZ_free(_res_conv);
+       CResult_UpdateAddHTLCDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_ErrorMessageDecodeErrorZ_clone_ptr(LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ErrorMessageDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ErrorMessageDecodeErrorZ), "LDKCResult_ErrorMessageDecodeErrorZ");
-       *ret_conv = CResult_ErrorMessageDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_UpdateAddHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_UpdateAddHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ), "LDKCResult_UpdateAddHTLCDecodeErrorZ");
+       *ret_conv = CResult_UpdateAddHTLCDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_ErrorMessageDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ErrorMessageDecodeErrorZ* arg_conv = (LDKCResult_ErrorMessageDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ErrorMessageDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_UpdateAddHTLCDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_UpdateAddHTLCDecodeErrorZ* arg_conv = (LDKCResult_UpdateAddHTLCDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_UpdateAddHTLCDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(uint32_t o) {
-       LDKUnsignedNodeAnnouncement o_conv;
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       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 = Ping_clone(&o_conv);
+       LDKCResult_PingDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PingDecodeErrorZ), "LDKCResult_PingDecodeErrorZ");
+       *ret_conv = CResult_PingDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ), "LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ");
-       *ret_conv = CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(e_conv);
+       LDKCResult_PingDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PingDecodeErrorZ), "LDKCResult_PingDecodeErrorZ");
+       *ret_conv = CResult_PingDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* o_conv = (LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_UnsignedNodeAnnouncementDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_PingDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_PingDecodeErrorZ* o_conv = (LDKCResult_PingDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_PingDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_PingDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ _res_conv = *(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(_res_ptr);
+       LDKCResult_PingDecodeErrorZ _res_conv = *(LDKCResult_PingDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(_res_conv);
+       CResult_PingDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ), "LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ");
-       *ret_conv = CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_PingDecodeErrorZ_clone_ptr(LDKCResult_PingDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_PingDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PingDecodeErrorZ), "LDKCResult_PingDecodeErrorZ");
+       *ret_conv = CResult_PingDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* arg_conv = (LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_PingDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_PingDecodeErrorZ* arg_conv = (LDKCResult_PingDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_PingDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementDecodeErrorZ_ok(uint32_t o) {
-       LDKNodeAnnouncement o_conv;
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = Pong_clone(&o_conv);
+       LDKCResult_PongDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PongDecodeErrorZ), "LDKCResult_PongDecodeErrorZ");
+       *ret_conv = CResult_PongDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_NodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ), "LDKCResult_NodeAnnouncementDecodeErrorZ");
-       *ret_conv = CResult_NodeAnnouncementDecodeErrorZ_err(e_conv);
+       LDKCResult_PongDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PongDecodeErrorZ), "LDKCResult_PongDecodeErrorZ");
+       *ret_conv = CResult_PongDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_NodeAnnouncementDecodeErrorZ* o_conv = (LDKCResult_NodeAnnouncementDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_NodeAnnouncementDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_PongDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_PongDecodeErrorZ* o_conv = (LDKCResult_PongDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_PongDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_PongDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_NodeAnnouncementDecodeErrorZ _res_conv = *(LDKCResult_NodeAnnouncementDecodeErrorZ*)(_res_ptr);
+       LDKCResult_PongDecodeErrorZ _res_conv = *(LDKCResult_PongDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_NodeAnnouncementDecodeErrorZ_free(_res_conv);
+       CResult_PongDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_NodeAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_NodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ), "LDKCResult_NodeAnnouncementDecodeErrorZ");
-       *ret_conv = CResult_NodeAnnouncementDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_PongDecodeErrorZ_clone_ptr(LDKCResult_PongDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_PongDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PongDecodeErrorZ), "LDKCResult_PongDecodeErrorZ");
+       *ret_conv = CResult_PongDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_NodeAnnouncementDecodeErrorZ* arg_conv = (LDKCResult_NodeAnnouncementDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_NodeAnnouncementDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_PongDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_PongDecodeErrorZ* arg_conv = (LDKCResult_PongDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_PongDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_QueryShortChannelIdsDecodeErrorZ_ok(uint32_t o) {
-       LDKQueryShortChannelIds o_conv;
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = UnsignedChannelAnnouncement_clone(&o_conv);
+       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ), "LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ");
+       *ret_conv = CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_QueryShortChannelIdsDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ), "LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ");
+       *ret_conv = CResult_UnsignedChannelAnnouncementDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_QueryShortChannelIdsDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_QueryShortChannelIdsDecodeErrorZ* o_conv = (LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_QueryShortChannelIdsDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* o_conv = (LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_UnsignedChannelAnnouncementDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_QueryShortChannelIdsDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_QueryShortChannelIdsDecodeErrorZ _res_conv = *(LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(_res_ptr);
+       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ _res_conv = *(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_QueryShortChannelIdsDecodeErrorZ_free(_res_conv);
+       CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_QueryShortChannelIdsDecodeErrorZ_clone_ptr(LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_QueryShortChannelIdsDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ), "LDKCResult_QueryShortChannelIdsDecodeErrorZ");
-       *ret_conv = CResult_QueryShortChannelIdsDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ), "LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ");
+       *ret_conv = CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_QueryShortChannelIdsDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_QueryShortChannelIdsDecodeErrorZ* arg_conv = (LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_QueryShortChannelIdsDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* arg_conv = (LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(uint32_t o) {
-       LDKReplyShortChannelIdsEnd o_conv;
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = ChannelAnnouncement_clone(&o_conv);
+       LDKCResult_ChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ), "LDKCResult_ChannelAnnouncementDecodeErrorZ");
+       *ret_conv = CResult_ChannelAnnouncementDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ), "LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ");
-       *ret_conv = CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(e_conv);
+       LDKCResult_ChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ), "LDKCResult_ChannelAnnouncementDecodeErrorZ");
+       *ret_conv = CResult_ChannelAnnouncementDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* o_conv = (LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ReplyShortChannelIdsEndDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelAnnouncementDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ChannelAnnouncementDecodeErrorZ* o_conv = (LDKCResult_ChannelAnnouncementDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ChannelAnnouncementDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ChannelAnnouncementDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ _res_conv = *(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(_res_ptr);
+       LDKCResult_ChannelAnnouncementDecodeErrorZ _res_conv = *(LDKCResult_ChannelAnnouncementDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(_res_conv);
+       CResult_ChannelAnnouncementDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone_ptr(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ), "LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ");
-       *ret_conv = CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_ChannelAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_ChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ), "LDKCResult_ChannelAnnouncementDecodeErrorZ");
+       *ret_conv = CResult_ChannelAnnouncementDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* arg_conv = (LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_ChannelAnnouncementDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ChannelAnnouncementDecodeErrorZ* arg_conv = (LDKCResult_ChannelAnnouncementDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_ChannelAnnouncementDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_QueryChannelRangeDecodeErrorZ_ok(uint32_t o) {
-       LDKQueryChannelRange o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = UnsignedChannelUpdate_clone(&o_conv);
+       LDKCResult_UnsignedChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ), "LDKCResult_UnsignedChannelUpdateDecodeErrorZ");
+       *ret_conv = CResult_UnsignedChannelUpdateDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_QueryChannelRangeDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_QueryChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ), "LDKCResult_QueryChannelRangeDecodeErrorZ");
-       *ret_conv = CResult_QueryChannelRangeDecodeErrorZ_err(e_conv);
+       LDKCResult_UnsignedChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ), "LDKCResult_UnsignedChannelUpdateDecodeErrorZ");
+       *ret_conv = CResult_UnsignedChannelUpdateDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_QueryChannelRangeDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_QueryChannelRangeDecodeErrorZ* o_conv = (LDKCResult_QueryChannelRangeDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_QueryChannelRangeDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelUpdateDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_UnsignedChannelUpdateDecodeErrorZ* o_conv = (LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_UnsignedChannelUpdateDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_QueryChannelRangeDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelUpdateDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_QueryChannelRangeDecodeErrorZ _res_conv = *(LDKCResult_QueryChannelRangeDecodeErrorZ*)(_res_ptr);
+       LDKCResult_UnsignedChannelUpdateDecodeErrorZ _res_conv = *(LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_QueryChannelRangeDecodeErrorZ_free(_res_conv);
+       CResult_UnsignedChannelUpdateDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_QueryChannelRangeDecodeErrorZ_clone_ptr(LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_QueryChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ), "LDKCResult_QueryChannelRangeDecodeErrorZ");
-       *ret_conv = CResult_QueryChannelRangeDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_UnsignedChannelUpdateDecodeErrorZ_clone_ptr(LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_UnsignedChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ), "LDKCResult_UnsignedChannelUpdateDecodeErrorZ");
+       *ret_conv = CResult_UnsignedChannelUpdateDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_QueryChannelRangeDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_QueryChannelRangeDecodeErrorZ* arg_conv = (LDKCResult_QueryChannelRangeDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_QueryChannelRangeDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelUpdateDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_UnsignedChannelUpdateDecodeErrorZ* arg_conv = (LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_UnsignedChannelUpdateDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ReplyChannelRangeDecodeErrorZ_ok(uint32_t o) {
-       LDKReplyChannelRange 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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = ChannelUpdate_clone(&o_conv);
+       LDKCResult_ChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelUpdateDecodeErrorZ), "LDKCResult_ChannelUpdateDecodeErrorZ");
+       *ret_conv = CResult_ChannelUpdateDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ReplyChannelRangeDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ReplyChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ), "LDKCResult_ReplyChannelRangeDecodeErrorZ");
-       *ret_conv = CResult_ReplyChannelRangeDecodeErrorZ_err(e_conv);
+       LDKCResult_ChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelUpdateDecodeErrorZ), "LDKCResult_ChannelUpdateDecodeErrorZ");
+       *ret_conv = CResult_ChannelUpdateDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ReplyChannelRangeDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ReplyChannelRangeDecodeErrorZ* o_conv = (LDKCResult_ReplyChannelRangeDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ReplyChannelRangeDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelUpdateDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ChannelUpdateDecodeErrorZ* o_conv = (LDKCResult_ChannelUpdateDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ChannelUpdateDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ReplyChannelRangeDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ChannelUpdateDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_ReplyChannelRangeDecodeErrorZ _res_conv = *(LDKCResult_ReplyChannelRangeDecodeErrorZ*)(_res_ptr);
+       LDKCResult_ChannelUpdateDecodeErrorZ _res_conv = *(LDKCResult_ChannelUpdateDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_ReplyChannelRangeDecodeErrorZ_free(_res_conv);
+       CResult_ChannelUpdateDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_ReplyChannelRangeDecodeErrorZ_clone_ptr(LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ReplyChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ), "LDKCResult_ReplyChannelRangeDecodeErrorZ");
-       *ret_conv = CResult_ReplyChannelRangeDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_ChannelUpdateDecodeErrorZ_clone_ptr(LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_ChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelUpdateDecodeErrorZ), "LDKCResult_ChannelUpdateDecodeErrorZ");
+       *ret_conv = CResult_ChannelUpdateDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_ReplyChannelRangeDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ReplyChannelRangeDecodeErrorZ* arg_conv = (LDKCResult_ReplyChannelRangeDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ReplyChannelRangeDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-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);
+int64_t  __attribute__((visibility("default"))) TS_CResult_ChannelUpdateDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ChannelUpdateDecodeErrorZ* arg_conv = (LDKCResult_ChannelUpdateDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_ChannelUpdateDecodeErrorZ_clone_ptr(arg_conv);
+       return ret_val;
+}
+
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_GossipTimestampFilterDecodeErrorZ_ok(uint32_t o) {
-       LDKGossipTimestampFilter o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = ErrorMessage_clone(&o_conv);
+       LDKCResult_ErrorMessageDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ErrorMessageDecodeErrorZ), "LDKCResult_ErrorMessageDecodeErrorZ");
+       *ret_conv = CResult_ErrorMessageDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_GossipTimestampFilterDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_GossipTimestampFilterDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ), "LDKCResult_GossipTimestampFilterDecodeErrorZ");
-       *ret_conv = CResult_GossipTimestampFilterDecodeErrorZ_err(e_conv);
+       LDKCResult_ErrorMessageDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ErrorMessageDecodeErrorZ), "LDKCResult_ErrorMessageDecodeErrorZ");
+       *ret_conv = CResult_ErrorMessageDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_GossipTimestampFilterDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_GossipTimestampFilterDecodeErrorZ* o_conv = (LDKCResult_GossipTimestampFilterDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_GossipTimestampFilterDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ErrorMessageDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ErrorMessageDecodeErrorZ* o_conv = (LDKCResult_ErrorMessageDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ErrorMessageDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_GossipTimestampFilterDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ErrorMessageDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_GossipTimestampFilterDecodeErrorZ _res_conv = *(LDKCResult_GossipTimestampFilterDecodeErrorZ*)(_res_ptr);
+       LDKCResult_ErrorMessageDecodeErrorZ _res_conv = *(LDKCResult_ErrorMessageDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_GossipTimestampFilterDecodeErrorZ_free(_res_conv);
+       CResult_ErrorMessageDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_GossipTimestampFilterDecodeErrorZ_clone_ptr(LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_GossipTimestampFilterDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ), "LDKCResult_GossipTimestampFilterDecodeErrorZ");
-       *ret_conv = CResult_GossipTimestampFilterDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_ErrorMessageDecodeErrorZ_clone_ptr(LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_ErrorMessageDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ErrorMessageDecodeErrorZ), "LDKCResult_ErrorMessageDecodeErrorZ");
+       *ret_conv = CResult_ErrorMessageDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_GossipTimestampFilterDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_GossipTimestampFilterDecodeErrorZ* arg_conv = (LDKCResult_GossipTimestampFilterDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_GossipTimestampFilterDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_ErrorMessageDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ErrorMessageDecodeErrorZ* arg_conv = (LDKCResult_ErrorMessageDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_ErrorMessageDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceSignOrCreationErrorZ_ok(uint32_t o) {
-       LDKInvoice o_conv;
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = Invoice_clone(&o_conv);
-       LDKCResult_InvoiceSignOrCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceSignOrCreationErrorZ), "LDKCResult_InvoiceSignOrCreationErrorZ");
-       *ret_conv = CResult_InvoiceSignOrCreationErrorZ_ok(o_conv);
+       o_conv = UnsignedNodeAnnouncement_clone(&o_conv);
+       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ), "LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ");
+       *ret_conv = CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceSignOrCreationErrorZ_err(uint32_t e) {
-       void* e_ptr = (void*)(((uint64_t)e) & ~1);
-       CHECK_ACCESS(e_ptr);
-       LDKSignOrCreationError e_conv = *(LDKSignOrCreationError*)(e_ptr);
-       e_conv = SignOrCreationError_clone((LDKSignOrCreationError*)(((uint64_t)e) & ~1));
-       LDKCResult_InvoiceSignOrCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceSignOrCreationErrorZ), "LDKCResult_InvoiceSignOrCreationErrorZ");
-       *ret_conv = CResult_InvoiceSignOrCreationErrorZ_err(e_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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ), "LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ");
+       *ret_conv = CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_InvoiceSignOrCreationErrorZ_is_ok(uint32_t o) {
-       LDKCResult_InvoiceSignOrCreationErrorZ* o_conv = (LDKCResult_InvoiceSignOrCreationErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_InvoiceSignOrCreationErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* o_conv = (LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_UnsignedNodeAnnouncementDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_InvoiceSignOrCreationErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_InvoiceSignOrCreationErrorZ _res_conv = *(LDKCResult_InvoiceSignOrCreationErrorZ*)(_res_ptr);
+       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ _res_conv = *(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_InvoiceSignOrCreationErrorZ_free(_res_conv);
+       CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_InvoiceSignOrCreationErrorZ_clone_ptr(LDKCResult_InvoiceSignOrCreationErrorZ *NONNULL_PTR arg) {
-       LDKCResult_InvoiceSignOrCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceSignOrCreationErrorZ), "LDKCResult_InvoiceSignOrCreationErrorZ");
-       *ret_conv = CResult_InvoiceSignOrCreationErrorZ_clone(arg);
+static inline uint64_t CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ), "LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ");
+       *ret_conv = CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_InvoiceSignOrCreationErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_InvoiceSignOrCreationErrorZ* arg_conv = (LDKCResult_InvoiceSignOrCreationErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_InvoiceSignOrCreationErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* arg_conv = (LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceSignOrCreationErrorZ_clone(uint32_t orig) {
-       LDKCResult_InvoiceSignOrCreationErrorZ* orig_conv = (LDKCResult_InvoiceSignOrCreationErrorZ*)(orig & ~1);
-       LDKCResult_InvoiceSignOrCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceSignOrCreationErrorZ), "LDKCResult_InvoiceSignOrCreationErrorZ");
-       *ret_conv = CResult_InvoiceSignOrCreationErrorZ_clone(orig_conv);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_FilterZ_some(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKFilter o_conv = *(LDKFilter*)(o_ptr);
-       LDKCOption_FilterZ *ret_copy = MALLOC(sizeof(LDKCOption_FilterZ), "LDKCOption_FilterZ");
-       *ret_copy = COption_FilterZ_some(o_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_COption_FilterZ_none() {
-       LDKCOption_FilterZ *ret_copy = MALLOC(sizeof(LDKCOption_FilterZ), "LDKCOption_FilterZ");
-       *ret_copy = COption_FilterZ_none();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-void  __attribute__((visibility("default"))) TS_COption_FilterZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCOption_FilterZ _res_conv = *(LDKCOption_FilterZ*)(_res_ptr);
-       FREE((void*)_res);
-       COption_FilterZ_free(_res_conv);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_LockedChannelMonitorNoneZ_ok(uint32_t o) {
-       LDKLockedChannelMonitor 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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       // Warning: we need a move here but no clone is available for LDKLockedChannelMonitor
-       LDKCResult_LockedChannelMonitorNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_LockedChannelMonitorNoneZ), "LDKCResult_LockedChannelMonitorNoneZ");
-       *ret_conv = CResult_LockedChannelMonitorNoneZ_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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_LockedChannelMonitorNoneZ_err() {
-       LDKCResult_LockedChannelMonitorNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_LockedChannelMonitorNoneZ), "LDKCResult_LockedChannelMonitorNoneZ");
-       *ret_conv = CResult_LockedChannelMonitorNoneZ_err();
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_NodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ), "LDKCResult_NodeAnnouncementDecodeErrorZ");
+       *ret_conv = CResult_NodeAnnouncementDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_LockedChannelMonitorNoneZ_is_ok(uint32_t o) {
-       LDKCResult_LockedChannelMonitorNoneZ* o_conv = (LDKCResult_LockedChannelMonitorNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_LockedChannelMonitorNoneZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_NodeAnnouncementDecodeErrorZ* o_conv = (LDKCResult_NodeAnnouncementDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_NodeAnnouncementDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_LockedChannelMonitorNoneZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_LockedChannelMonitorNoneZ _res_conv = *(LDKCResult_LockedChannelMonitorNoneZ*)(_res_ptr);
+       LDKCResult_NodeAnnouncementDecodeErrorZ _res_conv = *(LDKCResult_NodeAnnouncementDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_LockedChannelMonitorNoneZ_free(_res_conv);
-}
-
-void  __attribute__((visibility("default"))) TS_CVec_OutPointZ_free(uint32_tArray _res) {
-       LDKCVec_OutPointZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKOutPoint), "LDKCVec_OutPointZ 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 _res_conv_10 = _res_vals[k];
-               LDKOutPoint _res_conv_10_conv;
-               _res_conv_10_conv.inner = (void*)(_res_conv_10 & (~1));
-               _res_conv_10_conv.is_owned = (_res_conv_10 & 1) || (_res_conv_10 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_10_conv);
-               _res_constr.data[k] = _res_conv_10_conv;
-       }
-       CVec_OutPointZ_free(_res_constr);
-}
-
-void  __attribute__((visibility("default"))) TS_PaymentPurpose_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKPaymentPurpose this_ptr_conv = *(LDKPaymentPurpose*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       PaymentPurpose_free(this_ptr_conv);
+       CResult_NodeAnnouncementDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t PaymentPurpose_clone_ptr(LDKPaymentPurpose *NONNULL_PTR arg) {
-       LDKPaymentPurpose *ret_copy = MALLOC(sizeof(LDKPaymentPurpose), "LDKPaymentPurpose");
-       *ret_copy = PaymentPurpose_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+static inline uint64_t CResult_NodeAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_NodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ), "LDKCResult_NodeAnnouncementDecodeErrorZ");
+       *ret_conv = CResult_NodeAnnouncementDecodeErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_PaymentPurpose_clone_ptr(uint32_t arg) {
-       LDKPaymentPurpose* arg_conv = (LDKPaymentPurpose*)arg;
-       int64_t ret_val = PaymentPurpose_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_NodeAnnouncementDecodeErrorZ* arg_conv = (LDKCResult_NodeAnnouncementDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_NodeAnnouncementDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PaymentPurpose_clone(uint32_t orig) {
-       LDKPaymentPurpose* orig_conv = (LDKPaymentPurpose*)orig;
-       LDKPaymentPurpose *ret_copy = MALLOC(sizeof(LDKPaymentPurpose), "LDKPaymentPurpose");
-       *ret_copy = PaymentPurpose_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_PaymentPurpose_invoice_payment(int8_tArray payment_preimage, int8_tArray payment_secret) {
-       LDKThirtyTwoBytes payment_preimage_ref;
-       CHECK(*((uint32_t*)payment_preimage) == 32);
-       memcpy(payment_preimage_ref.data, (uint8_t*)(payment_preimage + 4), 32);
-       LDKThirtyTwoBytes payment_secret_ref;
-       CHECK(*((uint32_t*)payment_secret) == 32);
-       memcpy(payment_secret_ref.data, (uint8_t*)(payment_secret + 4), 32);
-       LDKPaymentPurpose *ret_copy = MALLOC(sizeof(LDKPaymentPurpose), "LDKPaymentPurpose");
-       *ret_copy = PaymentPurpose_invoice_payment(payment_preimage_ref, payment_secret_ref);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_PaymentPurpose_spontaneous_payment(int8_tArray a) {
-       LDKThirtyTwoBytes a_ref;
-       CHECK(*((uint32_t*)a) == 32);
-       memcpy(a_ref.data, (uint8_t*)(a + 4), 32);
-       LDKPaymentPurpose *ret_copy = MALLOC(sizeof(LDKPaymentPurpose), "LDKPaymentPurpose");
-       *ret_copy = PaymentPurpose_spontaneous_payment(a_ref);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-void  __attribute__((visibility("default"))) TS_ClosureReason_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKClosureReason this_ptr_conv = *(LDKClosureReason*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       ClosureReason_free(this_ptr_conv);
+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 (uint64_t)ret_conv;
 }
 
-static inline uint64_t ClosureReason_clone_ptr(LDKClosureReason *NONNULL_PTR arg) {
-       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
-       *ret_copy = ClosureReason_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_ClosureReason_clone_ptr(uint32_t arg) {
-       LDKClosureReason* arg_conv = (LDKClosureReason*)arg;
-       int64_t ret_val = ClosureReason_clone_ptr(arg_conv);
-       return ret_val;
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_clone(uint32_t orig) {
-       LDKClosureReason* orig_conv = (LDKClosureReason*)orig;
-       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
-       *ret_copy = ClosureReason_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_counterparty_force_closed(jstring peer_msg) {
-       LDKStr peer_msg_conv = str_ref_to_owned_c(peer_msg);
-       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
-       *ret_copy = ClosureReason_counterparty_force_closed(peer_msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+jboolean  __attribute__((visibility("default"))) TS_CResult_QueryShortChannelIdsDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_QueryShortChannelIdsDecodeErrorZ* o_conv = (LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_QueryShortChannelIdsDecodeErrorZ_is_ok(o_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_holder_force_closed() {
-       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
-       *ret_copy = ClosureReason_holder_force_closed();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_CResult_QueryShortChannelIdsDecodeErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_QueryShortChannelIdsDecodeErrorZ _res_conv = *(LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_QueryShortChannelIdsDecodeErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_cooperative_closure() {
-       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
-       *ret_copy = ClosureReason_cooperative_closure();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+static inline uint64_t CResult_QueryShortChannelIdsDecodeErrorZ_clone_ptr(LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_QueryShortChannelIdsDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ), "LDKCResult_QueryShortChannelIdsDecodeErrorZ");
+       *ret_conv = CResult_QueryShortChannelIdsDecodeErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_QueryShortChannelIdsDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_QueryShortChannelIdsDecodeErrorZ* arg_conv = (LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_QueryShortChannelIdsDecodeErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_commitment_tx_confirmed() {
-       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
-       *ret_copy = ClosureReason_commitment_tx_confirmed();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_funding_timed_out() {
-       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
-       *ret_copy = ClosureReason_funding_timed_out();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_processing_error(jstring err) {
-       LDKStr err_conv = str_ref_to_owned_c(err);
-       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
-       *ret_copy = ClosureReason_processing_error(err_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ), "LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ");
+       *ret_conv = CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_disconnected_peer() {
-       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
-       *ret_copy = ClosureReason_disconnected_peer();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+jboolean  __attribute__((visibility("default"))) TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* o_conv = (LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ReplyShortChannelIdsEndDecodeErrorZ_is_ok(o_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_outdated_channel_manager() {
-       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
-       *ret_copy = ClosureReason_outdated_channel_manager();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ _res_conv = *(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(_res_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ClosureReason_write(uint32_t obj) {
-       LDKClosureReason* obj_conv = (LDKClosureReason*)obj;
-       LDKCVec_u8Z ret_var = ClosureReason_write(obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+static inline uint64_t CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone_ptr(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ), "LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ");
+       *ret_conv = CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* arg_conv = (LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_COption_ClosureReasonZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ), "LDKCResult_COption_ClosureReasonZDecodeErrorZ");
-       *ret_conv = ClosureReason_read(ser_ref);
+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 (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_Event_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKEvent this_ptr_conv = *(LDKEvent*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       Event_free(this_ptr_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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(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 (uint64_t)ret_conv;
 }
 
-static inline uint64_t Event_clone_ptr(LDKEvent *NONNULL_PTR arg) {
-       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
-       *ret_copy = Event_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_QueryChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ), "LDKCResult_QueryChannelRangeDecodeErrorZ");
+       *ret_conv = CResult_QueryChannelRangeDecodeErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_Event_clone_ptr(uint32_t arg) {
-       LDKEvent* arg_conv = (LDKEvent*)arg;
-       int64_t ret_val = Event_clone_ptr(arg_conv);
+
+jboolean  __attribute__((visibility("default"))) TS_CResult_QueryChannelRangeDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_QueryChannelRangeDecodeErrorZ* o_conv = (LDKCResult_QueryChannelRangeDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_QueryChannelRangeDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Event_clone(uint32_t orig) {
-       LDKEvent* orig_conv = (LDKEvent*)orig;
-       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
-       *ret_copy = Event_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_CResult_QueryChannelRangeDecodeErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_QueryChannelRangeDecodeErrorZ _res_conv = *(LDKCResult_QueryChannelRangeDecodeErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_QueryChannelRangeDecodeErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Event_funding_generation_ready(int8_tArray temporary_channel_id, int64_t channel_value_satoshis, int8_tArray output_script, int64_t user_channel_id) {
-       LDKThirtyTwoBytes temporary_channel_id_ref;
-       CHECK(*((uint32_t*)temporary_channel_id) == 32);
-       memcpy(temporary_channel_id_ref.data, (uint8_t*)(temporary_channel_id + 4), 32);
-       LDKCVec_u8Z output_script_ref;
-       output_script_ref.datalen = *((uint32_t*)output_script);
-       output_script_ref.data = MALLOC(output_script_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(output_script_ref.data, (uint8_t*)(output_script + 4), output_script_ref.datalen);
-       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
-       *ret_copy = Event_funding_generation_ready(temporary_channel_id_ref, channel_value_satoshis, output_script_ref, user_channel_id);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+static inline uint64_t CResult_QueryChannelRangeDecodeErrorZ_clone_ptr(LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_QueryChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ), "LDKCResult_QueryChannelRangeDecodeErrorZ");
+       *ret_conv = CResult_QueryChannelRangeDecodeErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_QueryChannelRangeDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_QueryChannelRangeDecodeErrorZ* arg_conv = (LDKCResult_QueryChannelRangeDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_QueryChannelRangeDecodeErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Event_payment_received(int8_tArray payment_hash, int64_t amt, uint32_t purpose) {
-       LDKThirtyTwoBytes payment_hash_ref;
-       CHECK(*((uint32_t*)payment_hash) == 32);
-       memcpy(payment_hash_ref.data, (uint8_t*)(payment_hash + 4), 32);
-       void* purpose_ptr = (void*)(((uint64_t)purpose) & ~1);
-       CHECK_ACCESS(purpose_ptr);
-       LDKPaymentPurpose purpose_conv = *(LDKPaymentPurpose*)(purpose_ptr);
-       purpose_conv = PaymentPurpose_clone((LDKPaymentPurpose*)(((uint64_t)purpose) & ~1));
-       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
-       *ret_copy = Event_payment_received(payment_hash_ref, amt, purpose_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Event_payment_sent(int8_tArray payment_id, int8_tArray payment_preimage, int8_tArray payment_hash, uint32_t fee_paid_msat) {
-       LDKThirtyTwoBytes payment_id_ref;
-       CHECK(*((uint32_t*)payment_id) == 32);
-       memcpy(payment_id_ref.data, (uint8_t*)(payment_id + 4), 32);
-       LDKThirtyTwoBytes payment_preimage_ref;
-       CHECK(*((uint32_t*)payment_preimage) == 32);
-       memcpy(payment_preimage_ref.data, (uint8_t*)(payment_preimage + 4), 32);
-       LDKThirtyTwoBytes payment_hash_ref;
-       CHECK(*((uint32_t*)payment_hash) == 32);
-       memcpy(payment_hash_ref.data, (uint8_t*)(payment_hash + 4), 32);
-       void* fee_paid_msat_ptr = (void*)(((uint64_t)fee_paid_msat) & ~1);
-       CHECK_ACCESS(fee_paid_msat_ptr);
-       LDKCOption_u64Z fee_paid_msat_conv = *(LDKCOption_u64Z*)(fee_paid_msat_ptr);
-       fee_paid_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)fee_paid_msat) & ~1));
-       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
-       *ret_copy = Event_payment_sent(payment_id_ref, payment_preimage_ref, payment_hash_ref, fee_paid_msat_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Event_payment_path_failed(int8_tArray payment_id, int8_tArray payment_hash, jboolean rejected_by_dest, uint32_t network_update, jboolean all_paths_failed, uint32_tArray path, uint32_t short_channel_id, uint32_t retry) {
-       LDKThirtyTwoBytes payment_id_ref;
-       CHECK(*((uint32_t*)payment_id) == 32);
-       memcpy(payment_id_ref.data, (uint8_t*)(payment_id + 4), 32);
-       LDKThirtyTwoBytes payment_hash_ref;
-       CHECK(*((uint32_t*)payment_hash) == 32);
-       memcpy(payment_hash_ref.data, (uint8_t*)(payment_hash + 4), 32);
-       void* network_update_ptr = (void*)(((uint64_t)network_update) & ~1);
-       CHECK_ACCESS(network_update_ptr);
-       LDKCOption_NetworkUpdateZ network_update_conv = *(LDKCOption_NetworkUpdateZ*)(network_update_ptr);
-       network_update_conv = COption_NetworkUpdateZ_clone((LDKCOption_NetworkUpdateZ*)(((uint64_t)network_update) & ~1));
-       LDKCVec_RouteHopZ path_constr;
-       path_constr.datalen = *((uint32_t*)path);
-       if (path_constr.datalen > 0)
-               path_constr.data = MALLOC(path_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements");
-       else
-               path_constr.data = NULL;
-       uint32_t* path_vals = (uint32_t*)(path + 4);
-       for (size_t k = 0; k < path_constr.datalen; k++) {
-               uint32_t path_conv_10 = path_vals[k];
-               LDKRouteHop path_conv_10_conv;
-               path_conv_10_conv.inner = (void*)(path_conv_10 & (~1));
-               path_conv_10_conv.is_owned = (path_conv_10 & 1) || (path_conv_10 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_conv);
-               path_conv_10_conv = RouteHop_clone(&path_conv_10_conv);
-               path_constr.data[k] = path_conv_10_conv;
-       }
-       void* short_channel_id_ptr = (void*)(((uint64_t)short_channel_id) & ~1);
-       CHECK_ACCESS(short_channel_id_ptr);
-       LDKCOption_u64Z short_channel_id_conv = *(LDKCOption_u64Z*)(short_channel_id_ptr);
-       short_channel_id_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)short_channel_id) & ~1));
-       LDKRouteParameters retry_conv;
-       retry_conv.inner = (void*)(retry & (~1));
-       retry_conv.is_owned = (retry & 1) || (retry == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(retry_conv);
-       retry_conv = RouteParameters_clone(&retry_conv);
-       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
-       *ret_copy = Event_payment_path_failed(payment_id_ref, payment_hash_ref, rejected_by_dest, network_update_conv, all_paths_failed, path_constr, short_channel_id_conv, retry_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_ReplyChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ), "LDKCResult_ReplyChannelRangeDecodeErrorZ");
+       *ret_conv = CResult_ReplyChannelRangeDecodeErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Event_payment_failed(int8_tArray payment_id, int8_tArray payment_hash) {
-       LDKThirtyTwoBytes payment_id_ref;
-       CHECK(*((uint32_t*)payment_id) == 32);
-       memcpy(payment_id_ref.data, (uint8_t*)(payment_id + 4), 32);
-       LDKThirtyTwoBytes payment_hash_ref;
-       CHECK(*((uint32_t*)payment_hash) == 32);
-       memcpy(payment_hash_ref.data, (uint8_t*)(payment_hash + 4), 32);
-       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
-       *ret_copy = Event_payment_failed(payment_id_ref, payment_hash_ref);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+jboolean  __attribute__((visibility("default"))) TS_CResult_ReplyChannelRangeDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ReplyChannelRangeDecodeErrorZ* o_conv = (LDKCResult_ReplyChannelRangeDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ReplyChannelRangeDecodeErrorZ_is_ok(o_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Event_pending_htlcs_forwardable(int64_t time_forwardable) {
-       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
-       *ret_copy = Event_pending_htlcs_forwardable(time_forwardable);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_CResult_ReplyChannelRangeDecodeErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_ReplyChannelRangeDecodeErrorZ _res_conv = *(LDKCResult_ReplyChannelRangeDecodeErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_ReplyChannelRangeDecodeErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Event_spendable_outputs(uint32_tArray outputs) {
-       LDKCVec_SpendableOutputDescriptorZ outputs_constr;
-       outputs_constr.datalen = *((uint32_t*)outputs);
-       if (outputs_constr.datalen > 0)
-               outputs_constr.data = MALLOC(outputs_constr.datalen * sizeof(LDKSpendableOutputDescriptor), "LDKCVec_SpendableOutputDescriptorZ Elements");
-       else
-               outputs_constr.data = NULL;
-       uint32_t* outputs_vals = (uint32_t*)(outputs + 4);
-       for (size_t b = 0; b < outputs_constr.datalen; b++) {
-               uint32_t outputs_conv_27 = outputs_vals[b];
-               void* outputs_conv_27_ptr = (void*)(((uint64_t)outputs_conv_27) & ~1);
-               CHECK_ACCESS(outputs_conv_27_ptr);
-               LDKSpendableOutputDescriptor outputs_conv_27_conv = *(LDKSpendableOutputDescriptor*)(outputs_conv_27_ptr);
-               outputs_conv_27_conv = SpendableOutputDescriptor_clone((LDKSpendableOutputDescriptor*)(((uint64_t)outputs_conv_27) & ~1));
-               outputs_constr.data[b] = outputs_conv_27_conv;
-       }
-       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
-       *ret_copy = Event_spendable_outputs(outputs_constr);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+static inline uint64_t CResult_ReplyChannelRangeDecodeErrorZ_clone_ptr(LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_ReplyChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ), "LDKCResult_ReplyChannelRangeDecodeErrorZ");
+       *ret_conv = CResult_ReplyChannelRangeDecodeErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_ReplyChannelRangeDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ReplyChannelRangeDecodeErrorZ* arg_conv = (LDKCResult_ReplyChannelRangeDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_ReplyChannelRangeDecodeErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Event_payment_forwarded(uint32_t fee_earned_msat, jboolean claim_from_onchain_tx) {
-       void* fee_earned_msat_ptr = (void*)(((uint64_t)fee_earned_msat) & ~1);
-       CHECK_ACCESS(fee_earned_msat_ptr);
-       LDKCOption_u64Z fee_earned_msat_conv = *(LDKCOption_u64Z*)(fee_earned_msat_ptr);
-       fee_earned_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)fee_earned_msat) & ~1));
-       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
-       *ret_copy = Event_payment_forwarded(fee_earned_msat_conv, claim_from_onchain_tx);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Event_channel_closed(int8_tArray channel_id, int64_t user_channel_id, uint32_t reason) {
-       LDKThirtyTwoBytes channel_id_ref;
-       CHECK(*((uint32_t*)channel_id) == 32);
-       memcpy(channel_id_ref.data, (uint8_t*)(channel_id + 4), 32);
-       void* reason_ptr = (void*)(((uint64_t)reason) & ~1);
-       CHECK_ACCESS(reason_ptr);
-       LDKClosureReason reason_conv = *(LDKClosureReason*)(reason_ptr);
-       reason_conv = ClosureReason_clone((LDKClosureReason*)(((uint64_t)reason) & ~1));
-       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
-       *ret_copy = Event_channel_closed(channel_id_ref, user_channel_id, reason_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Event_discard_funding(int8_tArray channel_id, int8_tArray transaction) {
-       LDKThirtyTwoBytes channel_id_ref;
-       CHECK(*((uint32_t*)channel_id) == 32);
-       memcpy(channel_id_ref.data, (uint8_t*)(channel_id + 4), 32);
-       LDKTransaction transaction_ref;
-       transaction_ref.datalen = *((uint32_t*)transaction);
-       transaction_ref.data = MALLOC(transaction_ref.datalen, "LDKTransaction Bytes");
-       memcpy(transaction_ref.data, (uint8_t*)(transaction + 4), transaction_ref.datalen);
-       transaction_ref.data_is_owned = true;
-       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
-       *ret_copy = Event_discard_funding(channel_id_ref, transaction_ref);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_GossipTimestampFilterDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ), "LDKCResult_GossipTimestampFilterDecodeErrorZ");
+       *ret_conv = CResult_GossipTimestampFilterDecodeErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Event_payment_path_successful(int8_tArray payment_id, int8_tArray payment_hash, uint32_tArray path) {
-       LDKThirtyTwoBytes payment_id_ref;
-       CHECK(*((uint32_t*)payment_id) == 32);
-       memcpy(payment_id_ref.data, (uint8_t*)(payment_id + 4), 32);
-       LDKThirtyTwoBytes payment_hash_ref;
-       CHECK(*((uint32_t*)payment_hash) == 32);
-       memcpy(payment_hash_ref.data, (uint8_t*)(payment_hash + 4), 32);
-       LDKCVec_RouteHopZ path_constr;
-       path_constr.datalen = *((uint32_t*)path);
-       if (path_constr.datalen > 0)
-               path_constr.data = MALLOC(path_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements");
-       else
-               path_constr.data = NULL;
-       uint32_t* path_vals = (uint32_t*)(path + 4);
-       for (size_t k = 0; k < path_constr.datalen; k++) {
-               uint32_t path_conv_10 = path_vals[k];
-               LDKRouteHop path_conv_10_conv;
-               path_conv_10_conv.inner = (void*)(path_conv_10 & (~1));
-               path_conv_10_conv.is_owned = (path_conv_10 & 1) || (path_conv_10 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_conv);
-               path_conv_10_conv = RouteHop_clone(&path_conv_10_conv);
-               path_constr.data[k] = path_conv_10_conv;
-       }
-       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
-       *ret_copy = Event_payment_path_successful(payment_id_ref, payment_hash_ref, path_constr);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+jboolean  __attribute__((visibility("default"))) TS_CResult_GossipTimestampFilterDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_GossipTimestampFilterDecodeErrorZ* o_conv = (LDKCResult_GossipTimestampFilterDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_GossipTimestampFilterDecodeErrorZ_is_ok(o_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_Event_write(uint32_t obj) {
-       LDKEvent* obj_conv = (LDKEvent*)obj;
-       LDKCVec_u8Z ret_var = Event_write(obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_CResult_GossipTimestampFilterDecodeErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_GossipTimestampFilterDecodeErrorZ _res_conv = *(LDKCResult_GossipTimestampFilterDecodeErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_GossipTimestampFilterDecodeErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Event_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_COption_EventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_EventZDecodeErrorZ), "LDKCResult_COption_EventZDecodeErrorZ");
-       *ret_conv = Event_read(ser_ref);
+static inline uint64_t CResult_GossipTimestampFilterDecodeErrorZ_clone_ptr(LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_GossipTimestampFilterDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ), "LDKCResult_GossipTimestampFilterDecodeErrorZ");
+       *ret_conv = CResult_GossipTimestampFilterDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-
-void  __attribute__((visibility("default"))) TS_MessageSendEvent_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKMessageSendEvent this_ptr_conv = *(LDKMessageSendEvent*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       MessageSendEvent_free(this_ptr_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_GossipTimestampFilterDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_GossipTimestampFilterDecodeErrorZ* arg_conv = (LDKCResult_GossipTimestampFilterDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_GossipTimestampFilterDecodeErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-static inline uint64_t MessageSendEvent_clone_ptr(LDKMessageSendEvent *NONNULL_PTR arg) {
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+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 (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_MessageSendEvent_clone_ptr(uint32_t arg) {
-       LDKMessageSendEvent* arg_conv = (LDKMessageSendEvent*)arg;
-       int64_t ret_val = MessageSendEvent_clone_ptr(arg_conv);
-       return ret_val;
+
+uint32_t  __attribute__((visibility("default"))) TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_ok(uint32_t o) {
+       LDKDelayedPaymentOutputDescriptor o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = (o & 1) || (o == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = DelayedPaymentOutputDescriptor_clone(&o_conv);
+       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ");
+       *ret_conv = CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_ok(o_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_clone(uint32_t orig) {
-       LDKMessageSendEvent* orig_conv = (LDKMessageSendEvent*)orig;
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_err(uint32_t e) {
+       LDKDecodeError e_conv;
+       e_conv.inner = (void*)(e & (~1));
+       e_conv.is_owned = (e & 1) || (e == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ");
+       *ret_conv = CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_accept_channel(int8_tArray node_id, uint32_t msg) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKAcceptChannel msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = AcceptChannel_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_send_accept_channel(node_id_ref, msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+jboolean  __attribute__((visibility("default"))) TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* o_conv = (LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_is_ok(o_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_open_channel(int8_tArray node_id, uint32_t msg) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKOpenChannel msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = OpenChannel_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_send_open_channel(node_id_ref, msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ _res_conv = *(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_funding_created(int8_tArray node_id, uint32_t msg) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKFundingCreated msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = FundingCreated_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_send_funding_created(node_id_ref, msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+static inline uint64_t CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone_ptr(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ");
+       *ret_conv = CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* arg_conv = (LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_funding_signed(int8_tArray node_id, uint32_t msg) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKFundingSigned msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = FundingSigned_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_send_funding_signed(node_id_ref, msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* orig_conv = (LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ*)(orig & ~1);
+       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ");
+       *ret_conv = CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_funding_locked(int8_tArray node_id, uint32_t msg) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKFundingLocked msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = FundingLocked_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_send_funding_locked(node_id_ref, msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_ok(uint32_t o) {
+       LDKStaticPaymentOutputDescriptor o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = (o & 1) || (o == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = StaticPaymentOutputDescriptor_clone(&o_conv);
+       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ");
+       *ret_conv = CResult_StaticPaymentOutputDescriptorDecodeErrorZ_ok(o_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_announcement_signatures(int8_tArray node_id, uint32_t msg) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKAnnouncementSignatures msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = AnnouncementSignatures_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_send_announcement_signatures(node_id_ref, msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_err(uint32_t e) {
+       LDKDecodeError e_conv;
+       e_conv.inner = (void*)(e & (~1));
+       e_conv.is_owned = (e & 1) || (e == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ");
+       *ret_conv = CResult_StaticPaymentOutputDescriptorDecodeErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_update_htlcs(int8_tArray node_id, uint32_t updates) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKCommitmentUpdate updates_conv;
-       updates_conv.inner = (void*)(updates & (~1));
-       updates_conv.is_owned = (updates & 1) || (updates == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(updates_conv);
-       updates_conv = CommitmentUpdate_clone(&updates_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_update_htlcs(node_id_ref, updates_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+jboolean  __attribute__((visibility("default"))) TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* o_conv = (LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_StaticPaymentOutputDescriptorDecodeErrorZ_is_ok(o_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_revoke_and_ack(int8_tArray node_id, uint32_t msg) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKRevokeAndACK msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = RevokeAndACK_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_send_revoke_and_ack(node_id_ref, msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ _res_conv = *(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_closing_signed(int8_tArray node_id, uint32_t msg) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKClosingSigned msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = ClosingSigned_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_send_closing_signed(node_id_ref, msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+static inline uint64_t CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone_ptr(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ");
+       *ret_conv = CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* arg_conv = (LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_shutdown(int8_tArray node_id, uint32_t msg) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKShutdown msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = Shutdown_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_send_shutdown(node_id_ref, msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* orig_conv = (LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ*)(orig & ~1);
+       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ");
+       *ret_conv = CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_channel_reestablish(int8_tArray node_id, uint32_t msg) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKChannelReestablish msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = ChannelReestablish_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_send_channel_reestablish(node_id_ref, msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescriptorDecodeErrorZ_ok(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKSpendableOutputDescriptor o_conv = *(LDKSpendableOutputDescriptor*)(o_ptr);
+       o_conv = SpendableOutputDescriptor_clone((LDKSpendableOutputDescriptor*)(((uint64_t)o) & ~1));
+       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ), "LDKCResult_SpendableOutputDescriptorDecodeErrorZ");
+       *ret_conv = CResult_SpendableOutputDescriptorDecodeErrorZ_ok(o_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_broadcast_channel_announcement(uint32_t msg, uint32_t update_msg) {
-       LDKChannelAnnouncement msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = ChannelAnnouncement_clone(&msg_conv);
-       LDKChannelUpdate update_msg_conv;
-       update_msg_conv.inner = (void*)(update_msg & (~1));
-       update_msg_conv.is_owned = (update_msg & 1) || (update_msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_msg_conv);
-       update_msg_conv = ChannelUpdate_clone(&update_msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_broadcast_channel_announcement(msg_conv, update_msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescriptorDecodeErrorZ_err(uint32_t e) {
+       LDKDecodeError e_conv;
+       e_conv.inner = (void*)(e & (~1));
+       e_conv.is_owned = (e & 1) || (e == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ), "LDKCResult_SpendableOutputDescriptorDecodeErrorZ");
+       *ret_conv = CResult_SpendableOutputDescriptorDecodeErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_broadcast_node_announcement(uint32_t msg) {
-       LDKNodeAnnouncement msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = NodeAnnouncement_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_broadcast_node_announcement(msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+jboolean  __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescriptorDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* o_conv = (LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_SpendableOutputDescriptorDecodeErrorZ_is_ok(o_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_broadcast_channel_update(uint32_t msg) {
-       LDKChannelUpdate msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = ChannelUpdate_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_broadcast_channel_update(msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescriptorDecodeErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_SpendableOutputDescriptorDecodeErrorZ _res_conv = *(LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_SpendableOutputDescriptorDecodeErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_channel_update(int8_tArray node_id, uint32_t msg) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKChannelUpdate msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = ChannelUpdate_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_send_channel_update(node_id_ref, msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+static inline uint64_t CResult_SpendableOutputDescriptorDecodeErrorZ_clone_ptr(LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ), "LDKCResult_SpendableOutputDescriptorDecodeErrorZ");
+       *ret_conv = CResult_SpendableOutputDescriptorDecodeErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescriptorDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* arg_conv = (LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_SpendableOutputDescriptorDecodeErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_handle_error(int8_tArray node_id, uint32_t action) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       void* action_ptr = (void*)(((uint64_t)action) & ~1);
-       CHECK_ACCESS(action_ptr);
-       LDKErrorAction action_conv = *(LDKErrorAction*)(action_ptr);
-       action_conv = ErrorAction_clone((LDKErrorAction*)(((uint64_t)action) & ~1));
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_handle_error(node_id_ref, action_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescriptorDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* orig_conv = (LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(orig & ~1);
+       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ), "LDKCResult_SpendableOutputDescriptorDecodeErrorZ");
+       *ret_conv = CResult_SpendableOutputDescriptorDecodeErrorZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_channel_range_query(int8_tArray node_id, uint32_t msg) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKQueryChannelRange msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = QueryChannelRange_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_send_channel_range_query(node_id_ref, msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+static inline uint64_t C2Tuple_SignatureCVec_SignatureZZ_clone_ptr(LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR arg) {
+       LDKC2Tuple_SignatureCVec_SignatureZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ), "LDKC2Tuple_SignatureCVec_SignatureZZ");
+       *ret_conv = C2Tuple_SignatureCVec_SignatureZZ_clone(arg);
+       return ((uint64_t)ret_conv);
+}
+int64_t  __attribute__((visibility("default"))) TS_C2Tuple_SignatureCVec_SignatureZZ_clone_ptr(uint32_t arg) {
+       LDKC2Tuple_SignatureCVec_SignatureZZ* arg_conv = (LDKC2Tuple_SignatureCVec_SignatureZZ*)(arg & ~1);
+       int64_t ret_val = C2Tuple_SignatureCVec_SignatureZZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_short_ids_query(int8_tArray node_id, uint32_t msg) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKQueryShortChannelIds msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = QueryShortChannelIds_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_send_short_ids_query(node_id_ref, msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+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_conv = MALLOC(sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ), "LDKC2Tuple_SignatureCVec_SignatureZZ");
+       *ret_conv = C2Tuple_SignatureCVec_SignatureZZ_clone(orig_conv);
+       return ((uint64_t)ret_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_reply_channel_range(int8_tArray node_id, uint32_t msg) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKReplyChannelRange msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = ReplyChannelRange_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_send_reply_channel_range(node_id_ref, msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_SignatureCVec_SignatureZZ_new(int8_tArray a, ptrArray b) {
+       LDKSignature a_ref;
+       CHECK(a->arr_len == 64);
+       memcpy(a_ref.compact_form, a->elems, 64);
+       LDKCVec_SignatureZ b_constr;
+       b_constr.datalen = b->arr_len;
+       if (b_constr.datalen > 0)
+               b_constr.data = MALLOC(b_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ Elements");
+       else
+               b_constr.data = NULL;
+       int8_tArray* b_vals = (void*) b->elems;
+       for (size_t m = 0; m < b_constr.datalen; m++) {
+               int8_tArray b_conv_12 = b_vals[m];
+               LDKSignature b_conv_12_ref;
+               CHECK(b_conv_12->arr_len == 64);
+               memcpy(b_conv_12_ref.compact_form, b_conv_12->elems, 64);
+               b_constr.data[m] = b_conv_12_ref;
+       }
+       LDKC2Tuple_SignatureCVec_SignatureZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ), "LDKC2Tuple_SignatureCVec_SignatureZZ");
+       *ret_conv = C2Tuple_SignatureCVec_SignatureZZ_new(a_ref, b_constr);
+       return ((uint64_t)ret_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_MessageSendEventsProvider_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKMessageSendEventsProvider this_ptr_conv = *(LDKMessageSendEventsProvider*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       MessageSendEventsProvider_free(this_ptr_conv);
+void  __attribute__((visibility("default"))) TS_C2Tuple_SignatureCVec_SignatureZZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKC2Tuple_SignatureCVec_SignatureZZ _res_conv = *(LDKC2Tuple_SignatureCVec_SignatureZZ*)(_res_ptr);
+       FREE((void*)_res);
+       C2Tuple_SignatureCVec_SignatureZZ_free(_res_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_EventsProvider_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKEventsProvider this_ptr_conv = *(LDKEventsProvider*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       EventsProvider_free(this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKC2Tuple_SignatureCVec_SignatureZZ o_conv = *(LDKC2Tuple_SignatureCVec_SignatureZZ*)(o_ptr);
+       o_conv = C2Tuple_SignatureCVec_SignatureZZ_clone((LDKC2Tuple_SignatureCVec_SignatureZZ*)(((uint64_t)o) & ~1));
+       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ), "LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ");
+       *ret_conv = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(o_conv);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_EventHandler_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKEventHandler this_ptr_conv = *(LDKEventHandler*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       EventHandler_free(this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err() {
+       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ), "LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ");
+       *ret_conv = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err();
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_APIError_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKAPIError this_ptr_conv = *(LDKAPIError*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       APIError_free(this_ptr_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_is_ok(uint32_t o) {
+       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* o_conv = (LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(o & ~1);
+       jboolean ret_val = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_is_ok(o_conv);
+       return ret_val;
 }
 
-static inline uint64_t APIError_clone_ptr(LDKAPIError *NONNULL_PTR arg) {
-       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
-       *ret_copy = APIError_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ _res_conv = *(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(_res_conv);
 }
-int64_t  __attribute__((visibility("default"))) TS_APIError_clone_ptr(uint32_t arg) {
-       LDKAPIError* arg_conv = (LDKAPIError*)arg;
-       int64_t ret_val = APIError_clone_ptr(arg_conv);
+
+static inline uint64_t CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone_ptr(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR arg) {
+       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ), "LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ");
+       *ret_conv = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone_ptr(uint32_t arg) {
+       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* arg_conv = (LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(arg & ~1);
+       int64_t ret_val = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_APIError_clone(uint32_t orig) {
-       LDKAPIError* orig_conv = (LDKAPIError*)orig;
-       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
-       *ret_copy = APIError_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(uint32_t orig) {
+       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* orig_conv = (LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(orig & ~1);
+       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ), "LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ");
+       *ret_conv = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_APIError_apimisuse_error(jstring err) {
-       LDKStr err_conv = str_ref_to_owned_c(err);
-       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
-       *ret_copy = APIError_apimisuse_error(err_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_SignatureNoneZ_ok(int8_tArray o) {
+       LDKSignature o_ref;
+       CHECK(o->arr_len == 64);
+       memcpy(o_ref.compact_form, o->elems, 64);
+       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
+       *ret_conv = CResult_SignatureNoneZ_ok(o_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_APIError_fee_rate_too_high(jstring err, int32_t feerate) {
-       LDKStr err_conv = str_ref_to_owned_c(err);
-       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
-       *ret_copy = APIError_fee_rate_too_high(err_conv, feerate);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_SignatureNoneZ_err() {
+       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
+       *ret_conv = CResult_SignatureNoneZ_err();
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_APIError_route_error(jstring err) {
-       LDKStr err_conv = str_ref_to_owned_c(err);
-       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
-       *ret_copy = APIError_route_error(err_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+jboolean  __attribute__((visibility("default"))) TS_CResult_SignatureNoneZ_is_ok(uint32_t o) {
+       LDKCResult_SignatureNoneZ* o_conv = (LDKCResult_SignatureNoneZ*)(o & ~1);
+       jboolean ret_val = CResult_SignatureNoneZ_is_ok(o_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_APIError_channel_unavailable(jstring err) {
-       LDKStr err_conv = str_ref_to_owned_c(err);
-       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
-       *ret_copy = APIError_channel_unavailable(err_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_CResult_SignatureNoneZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_SignatureNoneZ _res_conv = *(LDKCResult_SignatureNoneZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_SignatureNoneZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_APIError_monitor_update_failed() {
-       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
-       *ret_copy = APIError_monitor_update_failed();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+static inline uint64_t CResult_SignatureNoneZ_clone_ptr(LDKCResult_SignatureNoneZ *NONNULL_PTR arg) {
+       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
+       *ret_conv = CResult_SignatureNoneZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_SignatureNoneZ_clone_ptr(uint32_t arg) {
+       LDKCResult_SignatureNoneZ* arg_conv = (LDKCResult_SignatureNoneZ*)(arg & ~1);
+       int64_t ret_val = CResult_SignatureNoneZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_APIError_incompatible_shutdown_script(uint32_t script) {
-       LDKShutdownScript script_conv;
-       script_conv.inner = (void*)(script & (~1));
-       script_conv.is_owned = (script & 1) || (script == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(script_conv);
-       script_conv = ShutdownScript_clone(&script_conv);
-       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
-       *ret_copy = APIError_incompatible_shutdown_script(script_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_SignatureNoneZ_clone(uint32_t orig) {
+       LDKCResult_SignatureNoneZ* orig_conv = (LDKCResult_SignatureNoneZ*)(orig & ~1);
+       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
+       *ret_conv = CResult_SignatureNoneZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_sign(int8_tArray msg, int8_tArray sk) {
-       LDKu8slice msg_ref;
-       msg_ref.datalen = *((uint32_t*)msg);
-       msg_ref.data = (int8_t*)(msg + 4);
-       unsigned char sk_arr[32];
-       CHECK(*((uint32_t*)sk) == 32);
-       memcpy(sk_arr, (uint8_t*)(sk + 4), 32);
-       unsigned char (*sk_ref)[32] = &sk_arr;
-       LDKCResult_StringErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StringErrorZ), "LDKCResult_StringErrorZ");
-       *ret_conv = sign(msg_ref, sk_ref);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_SignDecodeErrorZ_ok(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKSign o_conv = *(LDKSign*)(o_ptr);
+       LDKCResult_SignDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SignDecodeErrorZ), "LDKCResult_SignDecodeErrorZ");
+       *ret_conv = CResult_SignDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_recover_pk(int8_tArray msg, jstring sig) {
-       LDKu8slice msg_ref;
-       msg_ref.datalen = *((uint32_t*)msg);
-       msg_ref.data = (int8_t*)(msg + 4);
-       LDKStr sig_conv = str_ref_to_owned_c(sig);
-       LDKCResult_PublicKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeyErrorZ), "LDKCResult_PublicKeyErrorZ");
-       *ret_conv = recover_pk(msg_ref, sig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_SignDecodeErrorZ_err(uint32_t e) {
+       LDKDecodeError e_conv;
+       e_conv.inner = (void*)(e & (~1));
+       e_conv.is_owned = (e & 1) || (e == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_SignDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SignDecodeErrorZ), "LDKCResult_SignDecodeErrorZ");
+       *ret_conv = CResult_SignDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_verify(int8_tArray msg, jstring sig, int8_tArray pk) {
-       LDKu8slice msg_ref;
-       msg_ref.datalen = *((uint32_t*)msg);
-       msg_ref.data = (int8_t*)(msg + 4);
-       LDKStr sig_conv = str_ref_to_owned_c(sig);
-       LDKPublicKey pk_ref;
-       CHECK(*((uint32_t*)pk) == 33);
-       memcpy(pk_ref.compressed_form, (uint8_t*)(pk + 4), 33);
-       jboolean ret_val = verify(msg_ref, sig_conv, pk_ref);
+jboolean  __attribute__((visibility("default"))) TS_CResult_SignDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_SignDecodeErrorZ* o_conv = (LDKCResult_SignDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_SignDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Level_clone(uint32_t orig) {
-       LDKLevel* orig_conv = (LDKLevel*)(orig & ~1);
-       uint32_t ret_conv = LDKLevel_to_js(Level_clone(orig_conv));
-       return ret_conv;
+void  __attribute__((visibility("default"))) TS_CResult_SignDecodeErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_SignDecodeErrorZ _res_conv = *(LDKCResult_SignDecodeErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_SignDecodeErrorZ_free(_res_conv);
+}
+
+static inline uint64_t CResult_SignDecodeErrorZ_clone_ptr(LDKCResult_SignDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_SignDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SignDecodeErrorZ), "LDKCResult_SignDecodeErrorZ");
+       *ret_conv = CResult_SignDecodeErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_SignDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_SignDecodeErrorZ* arg_conv = (LDKCResult_SignDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_SignDecodeErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Level_gossip() {
-       uint32_t ret_conv = LDKLevel_to_js(Level_gossip());
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_SignDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_SignDecodeErrorZ* orig_conv = (LDKCResult_SignDecodeErrorZ*)(orig & ~1);
+       LDKCResult_SignDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SignDecodeErrorZ), "LDKCResult_SignDecodeErrorZ");
+       *ret_conv = CResult_SignDecodeErrorZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Level_trace() {
-       uint32_t ret_conv = LDKLevel_to_js(Level_trace());
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RecoverableSignatureNoneZ_ok(int8_tArray arg) {
+       LDKRecoverableSignature arg_ref;
+       CHECK(arg->arr_len == 68);
+       memcpy(arg_ref.serialized_form, arg->elems, 68);
+       LDKCResult_RecoverableSignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_RecoverableSignatureNoneZ), "LDKCResult_RecoverableSignatureNoneZ");
+       *ret_conv = CResult_RecoverableSignatureNoneZ_ok(arg_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Level_debug() {
-       uint32_t ret_conv = LDKLevel_to_js(Level_debug());
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RecoverableSignatureNoneZ_err() {
+       LDKCResult_RecoverableSignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_RecoverableSignatureNoneZ), "LDKCResult_RecoverableSignatureNoneZ");
+       *ret_conv = CResult_RecoverableSignatureNoneZ_err();
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Level_info() {
-       uint32_t ret_conv = LDKLevel_to_js(Level_info());
-       return ret_conv;
+jboolean  __attribute__((visibility("default"))) TS_CResult_RecoverableSignatureNoneZ_is_ok(uint32_t o) {
+       LDKCResult_RecoverableSignatureNoneZ* o_conv = (LDKCResult_RecoverableSignatureNoneZ*)(o & ~1);
+       jboolean ret_val = CResult_RecoverableSignatureNoneZ_is_ok(o_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Level_warn() {
-       uint32_t ret_conv = LDKLevel_to_js(Level_warn());
-       return ret_conv;
+void  __attribute__((visibility("default"))) TS_CResult_RecoverableSignatureNoneZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_RecoverableSignatureNoneZ _res_conv = *(LDKCResult_RecoverableSignatureNoneZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_RecoverableSignatureNoneZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Level_error() {
-       uint32_t ret_conv = LDKLevel_to_js(Level_error());
-       return ret_conv;
+static inline uint64_t CResult_RecoverableSignatureNoneZ_clone_ptr(LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR arg) {
+       LDKCResult_RecoverableSignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_RecoverableSignatureNoneZ), "LDKCResult_RecoverableSignatureNoneZ");
+       *ret_conv = CResult_RecoverableSignatureNoneZ_clone(arg);
+       return (uint64_t)ret_conv;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_Level_eq(uint32_t a, uint32_t b) {
-       LDKLevel* a_conv = (LDKLevel*)(a & ~1);
-       LDKLevel* b_conv = (LDKLevel*)(b & ~1);
-       jboolean ret_val = Level_eq(a_conv, b_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_RecoverableSignatureNoneZ_clone_ptr(uint32_t arg) {
+       LDKCResult_RecoverableSignatureNoneZ* arg_conv = (LDKCResult_RecoverableSignatureNoneZ*)(arg & ~1);
+       int64_t ret_val = CResult_RecoverableSignatureNoneZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_Level_hash(uint32_t o) {
-       LDKLevel* o_conv = (LDKLevel*)(o & ~1);
-       int64_t ret_val = Level_hash(o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RecoverableSignatureNoneZ_clone(uint32_t orig) {
+       LDKCResult_RecoverableSignatureNoneZ* orig_conv = (LDKCResult_RecoverableSignatureNoneZ*)(orig & ~1);
+       LDKCResult_RecoverableSignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_RecoverableSignatureNoneZ), "LDKCResult_RecoverableSignatureNoneZ");
+       *ret_conv = CResult_RecoverableSignatureNoneZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Level_max() {
-       uint32_t ret_conv = LDKLevel_to_js(Level_max());
-       return ret_conv;
+void  __attribute__((visibility("default"))) TS_CVec_CVec_u8ZZ_free(ptrArray _res) {
+       LDKCVec_CVec_u8ZZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKCVec_u8Z), "LDKCVec_CVec_u8ZZ Elements");
+       else
+               _res_constr.data = NULL;
+       int8_tArray* _res_vals = (void*) _res->elems;
+       for (size_t m = 0; m < _res_constr.datalen; m++) {
+               int8_tArray _res_conv_12 = _res_vals[m];
+               LDKCVec_u8Z _res_conv_12_ref;
+               _res_conv_12_ref.datalen = _res_conv_12->arr_len;
+               _res_conv_12_ref.data = MALLOC(_res_conv_12_ref.datalen, "LDKCVec_u8Z Bytes");
+               memcpy(_res_conv_12_ref.data, _res_conv_12->elems, _res_conv_12_ref.datalen);
+               _res_constr.data[m] = _res_conv_12_ref;
+       }
+       CVec_CVec_u8ZZ_free(_res_constr);
 }
 
-void  __attribute__((visibility("default"))) TS_Record_free(uint32_t this_obj) {
-       LDKRecord this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       Record_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_CVec_CVec_u8ZZNoneZ_ok(ptrArray o) {
+       LDKCVec_CVec_u8ZZ o_constr;
+       o_constr.datalen = o->arr_len;
+       if (o_constr.datalen > 0)
+               o_constr.data = MALLOC(o_constr.datalen * sizeof(LDKCVec_u8Z), "LDKCVec_CVec_u8ZZ Elements");
+       else
+               o_constr.data = NULL;
+       int8_tArray* o_vals = (void*) o->elems;
+       for (size_t m = 0; m < o_constr.datalen; m++) {
+               int8_tArray o_conv_12 = o_vals[m];
+               LDKCVec_u8Z o_conv_12_ref;
+               o_conv_12_ref.datalen = o_conv_12->arr_len;
+               o_conv_12_ref.data = MALLOC(o_conv_12_ref.datalen, "LDKCVec_u8Z Bytes");
+               memcpy(o_conv_12_ref.data, o_conv_12->elems, o_conv_12_ref.datalen);
+               o_constr.data[m] = o_conv_12_ref;
+       }
+       LDKCResult_CVec_CVec_u8ZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ), "LDKCResult_CVec_CVec_u8ZZNoneZ");
+       *ret_conv = CResult_CVec_CVec_u8ZZNoneZ_ok(o_constr);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Record_get_level(uint32_t this_ptr) {
-       LDKRecord this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       uint32_t ret_conv = LDKLevel_to_js(Record_get_level(&this_ptr_conv));
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_CVec_CVec_u8ZZNoneZ_err() {
+       LDKCResult_CVec_CVec_u8ZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ), "LDKCResult_CVec_CVec_u8ZZNoneZ");
+       *ret_conv = CResult_CVec_CVec_u8ZZNoneZ_err();
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_Record_set_level(uint32_t this_ptr, uint32_t val) {
-       LDKRecord this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKLevel val_conv = LDKLevel_from_js(val);
-       Record_set_level(&this_ptr_conv, val_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_CVec_CVec_u8ZZNoneZ_is_ok(uint32_t o) {
+       LDKCResult_CVec_CVec_u8ZZNoneZ* o_conv = (LDKCResult_CVec_CVec_u8ZZNoneZ*)(o & ~1);
+       jboolean ret_val = CResult_CVec_CVec_u8ZZNoneZ_is_ok(o_conv);
+       return ret_val;
 }
 
-jstring  __attribute__((visibility("default"))) TS_Record_get_args(uint32_t this_ptr) {
-       LDKRecord this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKStr ret_str = Record_get_args(&this_ptr_conv);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
+void  __attribute__((visibility("default"))) TS_CResult_CVec_CVec_u8ZZNoneZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_CVec_CVec_u8ZZNoneZ _res_conv = *(LDKCResult_CVec_CVec_u8ZZNoneZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_CVec_CVec_u8ZZNoneZ_free(_res_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_Record_set_args(uint32_t this_ptr, jstring val) {
-       LDKRecord this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKStr val_conv = str_ref_to_owned_c(val);
-       Record_set_args(&this_ptr_conv, val_conv);
+static inline uint64_t CResult_CVec_CVec_u8ZZNoneZ_clone_ptr(LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR arg) {
+       LDKCResult_CVec_CVec_u8ZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ), "LDKCResult_CVec_CVec_u8ZZNoneZ");
+       *ret_conv = CResult_CVec_CVec_u8ZZNoneZ_clone(arg);
+       return (uint64_t)ret_conv;
 }
-
-jstring  __attribute__((visibility("default"))) TS_Record_get_module_path(uint32_t this_ptr) {
-       LDKRecord this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKStr ret_str = Record_get_module_path(&this_ptr_conv);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
+int64_t  __attribute__((visibility("default"))) TS_CResult_CVec_CVec_u8ZZNoneZ_clone_ptr(uint32_t arg) {
+       LDKCResult_CVec_CVec_u8ZZNoneZ* arg_conv = (LDKCResult_CVec_CVec_u8ZZNoneZ*)(arg & ~1);
+       int64_t ret_val = CResult_CVec_CVec_u8ZZNoneZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_Record_set_module_path(uint32_t this_ptr, jstring val) {
-       LDKRecord this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKStr val_conv = str_ref_to_owned_c(val);
-       Record_set_module_path(&this_ptr_conv, val_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_CVec_CVec_u8ZZNoneZ_clone(uint32_t orig) {
+       LDKCResult_CVec_CVec_u8ZZNoneZ* orig_conv = (LDKCResult_CVec_CVec_u8ZZNoneZ*)(orig & ~1);
+       LDKCResult_CVec_CVec_u8ZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ), "LDKCResult_CVec_CVec_u8ZZNoneZ");
+       *ret_conv = CResult_CVec_CVec_u8ZZNoneZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-jstring  __attribute__((visibility("default"))) TS_Record_get_file(uint32_t this_ptr) {
-       LDKRecord this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKStr ret_str = Record_get_file(&this_ptr_conv);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_InMemorySignerDecodeErrorZ_ok(uint32_t o) {
+       LDKInMemorySigner o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = (o & 1) || (o == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = InMemorySigner_clone(&o_conv);
+       LDKCResult_InMemorySignerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InMemorySignerDecodeErrorZ), "LDKCResult_InMemorySignerDecodeErrorZ");
+       *ret_conv = CResult_InMemorySignerDecodeErrorZ_ok(o_conv);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_Record_set_file(uint32_t this_ptr, jstring val) {
-       LDKRecord this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKStr val_conv = str_ref_to_owned_c(val);
-       Record_set_file(&this_ptr_conv, val_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_InMemorySignerDecodeErrorZ_err(uint32_t e) {
+       LDKDecodeError e_conv;
+       e_conv.inner = (void*)(e & (~1));
+       e_conv.is_owned = (e & 1) || (e == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_InMemorySignerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InMemorySignerDecodeErrorZ), "LDKCResult_InMemorySignerDecodeErrorZ");
+       *ret_conv = CResult_InMemorySignerDecodeErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
 
-int32_t  __attribute__((visibility("default"))) TS_Record_get_line(uint32_t this_ptr) {
-       LDKRecord this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = Record_get_line(&this_ptr_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_InMemorySignerDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_InMemorySignerDecodeErrorZ* o_conv = (LDKCResult_InMemorySignerDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_InMemorySignerDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_Record_set_line(uint32_t this_ptr, int32_t val) {
-       LDKRecord this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       Record_set_line(&this_ptr_conv, val);
+void  __attribute__((visibility("default"))) TS_CResult_InMemorySignerDecodeErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_InMemorySignerDecodeErrorZ _res_conv = *(LDKCResult_InMemorySignerDecodeErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_InMemorySignerDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t Record_clone_ptr(LDKRecord *NONNULL_PTR arg) {
-       LDKRecord ret_var = Record_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
+static inline uint64_t CResult_InMemorySignerDecodeErrorZ_clone_ptr(LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_InMemorySignerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InMemorySignerDecodeErrorZ), "LDKCResult_InMemorySignerDecodeErrorZ");
+       *ret_conv = CResult_InMemorySignerDecodeErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_Record_clone_ptr(uint32_t arg) {
-       LDKRecord arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = Record_clone_ptr(&arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_InMemorySignerDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_InMemorySignerDecodeErrorZ* arg_conv = (LDKCResult_InMemorySignerDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_InMemorySignerDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Record_clone(uint32_t orig) {
-       LDKRecord orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKRecord ret_var = Record_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_InMemorySignerDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_InMemorySignerDecodeErrorZ* orig_conv = (LDKCResult_InMemorySignerDecodeErrorZ*)(orig & ~1);
+       LDKCResult_InMemorySignerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InMemorySignerDecodeErrorZ), "LDKCResult_InMemorySignerDecodeErrorZ");
+       *ret_conv = CResult_InMemorySignerDecodeErrorZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_CVec_TxOutZ_free(uint32_tArray _res) {
+       LDKCVec_TxOutZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKTxOut), "LDKCVec_TxOutZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t h = 0; h < _res_constr.datalen; h++) {
+               uint32_t _res_conv_7 = _res_vals[h];
+               void* _res_conv_7_ptr = (void*)(((uint64_t)_res_conv_7) & ~1);
+               CHECK_ACCESS(_res_conv_7_ptr);
+               LDKTxOut _res_conv_7_conv = *(LDKTxOut*)(_res_conv_7_ptr);
+               FREE((void*)_res_conv_7);
+               _res_constr.data[h] = _res_conv_7_conv;
        }
-       return ret_ref;
+       CVec_TxOutZ_free(_res_constr);
 }
 
-void  __attribute__((visibility("default"))) TS_Logger_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKLogger this_ptr_conv = *(LDKLogger*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       Logger_free(this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_TransactionNoneZ_ok(int8_tArray o) {
+       LDKTransaction o_ref;
+       o_ref.datalen = o->arr_len;
+       o_ref.data = MALLOC(o_ref.datalen, "LDKTransaction Bytes");
+       memcpy(o_ref.data, o->elems, o_ref.datalen);
+       o_ref.data_is_owned = true;
+       LDKCResult_TransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TransactionNoneZ), "LDKCResult_TransactionNoneZ");
+       *ret_conv = CResult_TransactionNoneZ_ok(o_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_free(uint32_t this_obj) {
-       LDKChannelHandshakeConfig this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelHandshakeConfig_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_TransactionNoneZ_err() {
+       LDKCResult_TransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TransactionNoneZ), "LDKCResult_TransactionNoneZ");
+       *ret_conv = CResult_TransactionNoneZ_err();
+       return (uint64_t)ret_conv;
 }
 
-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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = ChannelHandshakeConfig_get_minimum_depth(&this_ptr_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_TransactionNoneZ_is_ok(uint32_t o) {
+       LDKCResult_TransactionNoneZ* o_conv = (LDKCResult_TransactionNoneZ*)(o & ~1);
+       jboolean ret_val = CResult_TransactionNoneZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_set_minimum_depth(uint32_t this_ptr, int32_t val) {
-       LDKChannelHandshakeConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelHandshakeConfig_set_minimum_depth(&this_ptr_conv, val);
+void  __attribute__((visibility("default"))) TS_CResult_TransactionNoneZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_TransactionNoneZ _res_conv = *(LDKCResult_TransactionNoneZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_TransactionNoneZ_free(_res_conv);
 }
 
-int16_t  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_get_our_to_self_delay(uint32_t this_ptr) {
-       LDKChannelHandshakeConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = ChannelHandshakeConfig_get_our_to_self_delay(&this_ptr_conv);
+static inline uint64_t CResult_TransactionNoneZ_clone_ptr(LDKCResult_TransactionNoneZ *NONNULL_PTR arg) {
+       LDKCResult_TransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TransactionNoneZ), "LDKCResult_TransactionNoneZ");
+       *ret_conv = CResult_TransactionNoneZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_TransactionNoneZ_clone_ptr(uint32_t arg) {
+       LDKCResult_TransactionNoneZ* arg_conv = (LDKCResult_TransactionNoneZ*)(arg & ~1);
+       int64_t ret_val = CResult_TransactionNoneZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_set_our_to_self_delay(uint32_t this_ptr, int16_t val) {
-       LDKChannelHandshakeConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelHandshakeConfig_set_our_to_self_delay(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_TransactionNoneZ_clone(uint32_t orig) {
+       LDKCResult_TransactionNoneZ* orig_conv = (LDKCResult_TransactionNoneZ*)(orig & ~1);
+       LDKCResult_TransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TransactionNoneZ), "LDKCResult_TransactionNoneZ");
+       *ret_conv = CResult_TransactionNoneZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_get_our_htlc_minimum_msat(uint32_t this_ptr) {
-       LDKChannelHandshakeConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelHandshakeConfig_get_our_htlc_minimum_msat(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_COption_FilterZ_some(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKFilter o_conv = *(LDKFilter*)(o_ptr);
+       LDKCOption_FilterZ *ret_copy = MALLOC(sizeof(LDKCOption_FilterZ), "LDKCOption_FilterZ");
+       *ret_copy = COption_FilterZ_some(o_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_set_our_htlc_minimum_msat(uint32_t this_ptr, int64_t val) {
-       LDKChannelHandshakeConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelHandshakeConfig_set_our_htlc_minimum_msat(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_COption_FilterZ_none() {
+       LDKCOption_FilterZ *ret_copy = MALLOC(sizeof(LDKCOption_FilterZ), "LDKCOption_FilterZ");
+       *ret_copy = COption_FilterZ_none();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_new(int32_t minimum_depth_arg, int16_t our_to_self_delay_arg, int64_t our_htlc_minimum_msat_arg) {
-       LDKChannelHandshakeConfig ret_var = ChannelHandshakeConfig_new(minimum_depth_arg, our_to_self_delay_arg, our_htlc_minimum_msat_arg);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_COption_FilterZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCOption_FilterZ _res_conv = *(LDKCOption_FilterZ*)(_res_ptr);
+       FREE((void*)_res);
+       COption_FilterZ_free(_res_conv);
 }
 
-static inline uint64_t ChannelHandshakeConfig_clone_ptr(LDKChannelHandshakeConfig *NONNULL_PTR arg) {
-       LDKChannelHandshakeConfig ret_var = ChannelHandshakeConfig_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_LockedChannelMonitorNoneZ_ok(uint32_t o) {
+       LDKLockedChannelMonitor o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = (o & 1) || (o == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       // Warning: we need a move here but no clone is available for LDKLockedChannelMonitor
+       LDKCResult_LockedChannelMonitorNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_LockedChannelMonitorNoneZ), "LDKCResult_LockedChannelMonitorNoneZ");
+       *ret_conv = CResult_LockedChannelMonitorNoneZ_ok(o_conv);
+       return (uint64_t)ret_conv;
 }
-       return ret_ref;
+
+uint32_t  __attribute__((visibility("default"))) TS_CResult_LockedChannelMonitorNoneZ_err() {
+       LDKCResult_LockedChannelMonitorNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_LockedChannelMonitorNoneZ), "LDKCResult_LockedChannelMonitorNoneZ");
+       *ret_conv = CResult_LockedChannelMonitorNoneZ_err();
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_clone_ptr(uint32_t arg) {
-       LDKChannelHandshakeConfig arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelHandshakeConfig_clone_ptr(&arg_conv);
+
+jboolean  __attribute__((visibility("default"))) TS_CResult_LockedChannelMonitorNoneZ_is_ok(uint32_t o) {
+       LDKCResult_LockedChannelMonitorNoneZ* o_conv = (LDKCResult_LockedChannelMonitorNoneZ*)(o & ~1);
+       jboolean ret_val = CResult_LockedChannelMonitorNoneZ_is_ok(o_conv);
        return ret_val;
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelHandshakeConfig ret_var = ChannelHandshakeConfig_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_CResult_LockedChannelMonitorNoneZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_LockedChannelMonitorNoneZ _res_conv = *(LDKCResult_LockedChannelMonitorNoneZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_LockedChannelMonitorNoneZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_default() {
-       LDKChannelHandshakeConfig ret_var = ChannelHandshakeConfig_default();
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
+void  __attribute__((visibility("default"))) TS_CVec_OutPointZ_free(uint32_tArray _res) {
+       LDKCVec_OutPointZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKOutPoint), "LDKCVec_OutPointZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t k = 0; k < _res_constr.datalen; k++) {
+               uint32_t _res_conv_10 = _res_vals[k];
+               LDKOutPoint _res_conv_10_conv;
+               _res_conv_10_conv.inner = (void*)(_res_conv_10 & (~1));
+               _res_conv_10_conv.is_owned = (_res_conv_10 & 1) || (_res_conv_10 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_10_conv);
+               _res_constr.data[k] = _res_conv_10_conv;
        }
-       return ret_ref;
+       CVec_OutPointZ_free(_res_constr);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_free(uint32_t this_obj) {
-       LDKChannelHandshakeLimits this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelHandshakeLimits_free(this_obj_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 (uint64_t)ret_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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelHandshakeLimits_get_min_funding_satoshis(&this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneAPIErrorZ_err(uint32_t e) {
+       void* e_ptr = (void*)(((uint64_t)e) & ~1);
+       CHECK_ACCESS(e_ptr);
+       LDKAPIError e_conv = *(LDKAPIError*)(e_ptr);
+       e_conv = APIError_clone((LDKAPIError*)(((uint64_t)e) & ~1));
+       LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
+       *ret_conv = CResult_NoneAPIErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
+}
+
+jboolean  __attribute__((visibility("default"))) TS_CResult_NoneAPIErrorZ_is_ok(uint32_t o) {
+       LDKCResult_NoneAPIErrorZ* o_conv = (LDKCResult_NoneAPIErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_NoneAPIErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_min_funding_satoshis(uint32_t this_ptr, int64_t val) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelHandshakeLimits_set_min_funding_satoshis(&this_ptr_conv, val);
+void  __attribute__((visibility("default"))) TS_CResult_NoneAPIErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_NoneAPIErrorZ _res_conv = *(LDKCResult_NoneAPIErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_NoneAPIErrorZ_free(_res_conv);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_get_max_htlc_minimum_msat(uint32_t this_ptr) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelHandshakeLimits_get_max_htlc_minimum_msat(&this_ptr_conv);
+static inline uint64_t CResult_NoneAPIErrorZ_clone_ptr(LDKCResult_NoneAPIErrorZ *NONNULL_PTR arg) {
+       LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
+       *ret_conv = CResult_NoneAPIErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_NoneAPIErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_NoneAPIErrorZ* arg_conv = (LDKCResult_NoneAPIErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_NoneAPIErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_max_htlc_minimum_msat(uint32_t this_ptr, int64_t val) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelHandshakeLimits_set_max_htlc_minimum_msat(&this_ptr_conv, val);
+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 (uint64_t)ret_conv;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_get_min_max_htlc_value_in_flight_msat(uint32_t this_ptr) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelHandshakeLimits_get_min_max_htlc_value_in_flight_msat(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_COption_u16Z_some(int16_t o) {
+       LDKCOption_u16Z *ret_copy = MALLOC(sizeof(LDKCOption_u16Z), "LDKCOption_u16Z");
+       *ret_copy = COption_u16Z_some(o);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_min_max_htlc_value_in_flight_msat(uint32_t this_ptr, int64_t val) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelHandshakeLimits_set_min_max_htlc_value_in_flight_msat(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_COption_u16Z_none() {
+       LDKCOption_u16Z *ret_copy = MALLOC(sizeof(LDKCOption_u16Z), "LDKCOption_u16Z");
+       *ret_copy = COption_u16Z_none();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_get_max_channel_reserve_satoshis(uint32_t this_ptr) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelHandshakeLimits_get_max_channel_reserve_satoshis(&this_ptr_conv);
+void  __attribute__((visibility("default"))) TS_COption_u16Z_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCOption_u16Z _res_conv = *(LDKCOption_u16Z*)(_res_ptr);
+       FREE((void*)_res);
+       COption_u16Z_free(_res_conv);
+}
+
+static inline uint64_t COption_u16Z_clone_ptr(LDKCOption_u16Z *NONNULL_PTR arg) {
+       LDKCOption_u16Z *ret_copy = MALLOC(sizeof(LDKCOption_u16Z), "LDKCOption_u16Z");
+       *ret_copy = COption_u16Z_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_COption_u16Z_clone_ptr(uint32_t arg) {
+       LDKCOption_u16Z* arg_conv = (LDKCOption_u16Z*)arg;
+       int64_t ret_val = COption_u16Z_clone_ptr(arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_max_channel_reserve_satoshis(uint32_t this_ptr, int64_t val) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelHandshakeLimits_set_max_channel_reserve_satoshis(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_COption_u16Z_clone(uint32_t orig) {
+       LDKCOption_u16Z* orig_conv = (LDKCOption_u16Z*)orig;
+       LDKCOption_u16Z *ret_copy = MALLOC(sizeof(LDKCOption_u16Z), "LDKCOption_u16Z");
+       *ret_copy = COption_u16Z_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-int16_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_get_min_max_accepted_htlcs(uint32_t this_ptr) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = ChannelHandshakeLimits_get_min_max_accepted_htlcs(&this_ptr_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_CVec_CResult_NoneAPIErrorZZ_free(uint32_tArray _res) {
+       LDKCVec_CResult_NoneAPIErrorZZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKCResult_NoneAPIErrorZ), "LDKCVec_CResult_NoneAPIErrorZZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t w = 0; w < _res_constr.datalen; w++) {
+               uint32_t _res_conv_22 = _res_vals[w];
+               void* _res_conv_22_ptr = (void*)(((uint64_t)_res_conv_22) & ~1);
+               CHECK_ACCESS(_res_conv_22_ptr);
+               LDKCResult_NoneAPIErrorZ _res_conv_22_conv = *(LDKCResult_NoneAPIErrorZ*)(_res_conv_22_ptr);
+               FREE((void*)_res_conv_22);
+               _res_constr.data[w] = _res_conv_22_conv;
+       }
+       CVec_CResult_NoneAPIErrorZZ_free(_res_constr);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_min_max_accepted_htlcs(uint32_t this_ptr, int16_t val) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelHandshakeLimits_set_min_max_accepted_htlcs(&this_ptr_conv, val);
+void  __attribute__((visibility("default"))) TS_CVec_APIErrorZ_free(uint32_tArray _res) {
+       LDKCVec_APIErrorZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKAPIError), "LDKCVec_APIErrorZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t k = 0; k < _res_constr.datalen; k++) {
+               uint32_t _res_conv_10 = _res_vals[k];
+               void* _res_conv_10_ptr = (void*)(((uint64_t)_res_conv_10) & ~1);
+               CHECK_ACCESS(_res_conv_10_ptr);
+               LDKAPIError _res_conv_10_conv = *(LDKAPIError*)(_res_conv_10_ptr);
+               FREE((void*)_res_conv_10);
+               _res_constr.data[k] = _res_conv_10_conv;
+       }
+       CVec_APIErrorZ_free(_res_constr);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_get_max_minimum_depth(uint32_t this_ptr) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = ChannelHandshakeLimits_get_max_minimum_depth(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult__u832APIErrorZ_ok(int8_tArray o) {
+       LDKThirtyTwoBytes o_ref;
+       CHECK(o->arr_len == 32);
+       memcpy(o_ref.data, o->elems, 32);
+       LDKCResult__u832APIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult__u832APIErrorZ), "LDKCResult__u832APIErrorZ");
+       *ret_conv = CResult__u832APIErrorZ_ok(o_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_max_minimum_depth(uint32_t this_ptr, int32_t val) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelHandshakeLimits_set_max_minimum_depth(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_CResult__u832APIErrorZ_err(uint32_t e) {
+       void* e_ptr = (void*)(((uint64_t)e) & ~1);
+       CHECK_ACCESS(e_ptr);
+       LDKAPIError e_conv = *(LDKAPIError*)(e_ptr);
+       e_conv = APIError_clone((LDKAPIError*)(((uint64_t)e) & ~1));
+       LDKCResult__u832APIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult__u832APIErrorZ), "LDKCResult__u832APIErrorZ");
+       *ret_conv = CResult__u832APIErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_get_force_announced_channel_preference(uint32_t this_ptr) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = ChannelHandshakeLimits_get_force_announced_channel_preference(&this_ptr_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult__u832APIErrorZ_is_ok(uint32_t o) {
+       LDKCResult__u832APIErrorZ* o_conv = (LDKCResult__u832APIErrorZ*)(o & ~1);
+       jboolean ret_val = CResult__u832APIErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_force_announced_channel_preference(uint32_t this_ptr, jboolean val) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelHandshakeLimits_set_force_announced_channel_preference(&this_ptr_conv, val);
+void  __attribute__((visibility("default"))) TS_CResult__u832APIErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult__u832APIErrorZ _res_conv = *(LDKCResult__u832APIErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult__u832APIErrorZ_free(_res_conv);
 }
 
-int16_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_get_their_to_self_delay(uint32_t this_ptr) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = ChannelHandshakeLimits_get_their_to_self_delay(&this_ptr_conv);
+static inline uint64_t CResult__u832APIErrorZ_clone_ptr(LDKCResult__u832APIErrorZ *NONNULL_PTR arg) {
+       LDKCResult__u832APIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult__u832APIErrorZ), "LDKCResult__u832APIErrorZ");
+       *ret_conv = CResult__u832APIErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult__u832APIErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult__u832APIErrorZ* arg_conv = (LDKCResult__u832APIErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult__u832APIErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_their_to_self_delay(uint32_t this_ptr, int16_t val) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelHandshakeLimits_set_their_to_self_delay(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_CResult__u832APIErrorZ_clone(uint32_t orig) {
+       LDKCResult__u832APIErrorZ* orig_conv = (LDKCResult__u832APIErrorZ*)(orig & ~1);
+       LDKCResult__u832APIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult__u832APIErrorZ), "LDKCResult__u832APIErrorZ");
+       *ret_conv = CResult__u832APIErrorZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_new(int64_t min_funding_satoshis_arg, int64_t max_htlc_minimum_msat_arg, int64_t min_max_htlc_value_in_flight_msat_arg, int64_t max_channel_reserve_satoshis_arg, int16_t min_max_accepted_htlcs_arg, int32_t max_minimum_depth_arg, jboolean force_announced_channel_preference_arg, int16_t their_to_self_delay_arg) {
-       LDKChannelHandshakeLimits ret_var = 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, max_minimum_depth_arg, force_announced_channel_preference_arg, their_to_self_delay_arg);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentSendFailureZ_ok(int8_tArray o) {
+       LDKThirtyTwoBytes o_ref;
+       CHECK(o->arr_len == 32);
+       memcpy(o_ref.data, o->elems, 32);
+       LDKCResult_PaymentIdPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentSendFailureZ), "LDKCResult_PaymentIdPaymentSendFailureZ");
+       *ret_conv = CResult_PaymentIdPaymentSendFailureZ_ok(o_ref);
+       return (uint64_t)ret_conv;
 }
 
-static inline uint64_t ChannelHandshakeLimits_clone_ptr(LDKChannelHandshakeLimits *NONNULL_PTR arg) {
-       LDKChannelHandshakeLimits ret_var = ChannelHandshakeLimits_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentSendFailureZ_err(uint32_t e) {
+       void* e_ptr = (void*)(((uint64_t)e) & ~1);
+       CHECK_ACCESS(e_ptr);
+       LDKPaymentSendFailure e_conv = *(LDKPaymentSendFailure*)(e_ptr);
+       e_conv = PaymentSendFailure_clone((LDKPaymentSendFailure*)(((uint64_t)e) & ~1));
+       LDKCResult_PaymentIdPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentSendFailureZ), "LDKCResult_PaymentIdPaymentSendFailureZ");
+       *ret_conv = CResult_PaymentIdPaymentSendFailureZ_err(e_conv);
+       return (uint64_t)ret_conv;
+}
+
+jboolean  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentSendFailureZ_is_ok(uint32_t o) {
+       LDKCResult_PaymentIdPaymentSendFailureZ* o_conv = (LDKCResult_PaymentIdPaymentSendFailureZ*)(o & ~1);
+       jboolean ret_val = CResult_PaymentIdPaymentSendFailureZ_is_ok(o_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentSendFailureZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_PaymentIdPaymentSendFailureZ _res_conv = *(LDKCResult_PaymentIdPaymentSendFailureZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_PaymentIdPaymentSendFailureZ_free(_res_conv);
 }
-       return ret_ref;
+
+static inline uint64_t CResult_PaymentIdPaymentSendFailureZ_clone_ptr(LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR arg) {
+       LDKCResult_PaymentIdPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentSendFailureZ), "LDKCResult_PaymentIdPaymentSendFailureZ");
+       *ret_conv = CResult_PaymentIdPaymentSendFailureZ_clone(arg);
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_clone_ptr(uint32_t arg) {
-       LDKChannelHandshakeLimits arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelHandshakeLimits_clone_ptr(&arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentSendFailureZ_clone_ptr(uint32_t arg) {
+       LDKCResult_PaymentIdPaymentSendFailureZ* arg_conv = (LDKCResult_PaymentIdPaymentSendFailureZ*)(arg & ~1);
+       int64_t ret_val = CResult_PaymentIdPaymentSendFailureZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelHandshakeLimits ret_var = ChannelHandshakeLimits_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentSendFailureZ_clone(uint32_t orig) {
+       LDKCResult_PaymentIdPaymentSendFailureZ* orig_conv = (LDKCResult_PaymentIdPaymentSendFailureZ*)(orig & ~1);
+       LDKCResult_PaymentIdPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentSendFailureZ), "LDKCResult_PaymentIdPaymentSendFailureZ");
+       *ret_conv = CResult_PaymentIdPaymentSendFailureZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_default() {
-       LDKChannelHandshakeLimits ret_var = ChannelHandshakeLimits_default();
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+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 (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelConfig_free(uint32_t this_obj) {
-       LDKChannelConfig this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelConfig_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NonePaymentSendFailureZ_err(uint32_t e) {
+       void* e_ptr = (void*)(((uint64_t)e) & ~1);
+       CHECK_ACCESS(e_ptr);
+       LDKPaymentSendFailure e_conv = *(LDKPaymentSendFailure*)(e_ptr);
+       e_conv = PaymentSendFailure_clone((LDKPaymentSendFailure*)(((uint64_t)e) & ~1));
+       LDKCResult_NonePaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePaymentSendFailureZ), "LDKCResult_NonePaymentSendFailureZ");
+       *ret_conv = CResult_NonePaymentSendFailureZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
 
-int32_t  __attribute__((visibility("default"))) TS_ChannelConfig_get_forwarding_fee_proportional_millionths(uint32_t this_ptr) {
-       LDKChannelConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = ChannelConfig_get_forwarding_fee_proportional_millionths(&this_ptr_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_NonePaymentSendFailureZ_is_ok(uint32_t o) {
+       LDKCResult_NonePaymentSendFailureZ* o_conv = (LDKCResult_NonePaymentSendFailureZ*)(o & ~1);
+       jboolean ret_val = CResult_NonePaymentSendFailureZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelConfig_set_forwarding_fee_proportional_millionths(uint32_t this_ptr, int32_t val) {
-       LDKChannelConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelConfig_set_forwarding_fee_proportional_millionths(&this_ptr_conv, val);
+void  __attribute__((visibility("default"))) TS_CResult_NonePaymentSendFailureZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_NonePaymentSendFailureZ _res_conv = *(LDKCResult_NonePaymentSendFailureZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_NonePaymentSendFailureZ_free(_res_conv);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_ChannelConfig_get_forwarding_fee_base_msat(uint32_t this_ptr) {
-       LDKChannelConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = ChannelConfig_get_forwarding_fee_base_msat(&this_ptr_conv);
+static inline uint64_t CResult_NonePaymentSendFailureZ_clone_ptr(LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR arg) {
+       LDKCResult_NonePaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePaymentSendFailureZ), "LDKCResult_NonePaymentSendFailureZ");
+       *ret_conv = CResult_NonePaymentSendFailureZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_NonePaymentSendFailureZ_clone_ptr(uint32_t arg) {
+       LDKCResult_NonePaymentSendFailureZ* arg_conv = (LDKCResult_NonePaymentSendFailureZ*)(arg & ~1);
+       int64_t ret_val = CResult_NonePaymentSendFailureZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelConfig_set_forwarding_fee_base_msat(uint32_t this_ptr, int32_t val) {
-       LDKChannelConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelConfig_set_forwarding_fee_base_msat(&this_ptr_conv, val);
+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 (uint64_t)ret_conv;
 }
 
-int16_t  __attribute__((visibility("default"))) TS_ChannelConfig_get_cltv_expiry_delta(uint32_t this_ptr) {
-       LDKChannelConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = ChannelConfig_get_cltv_expiry_delta(&this_ptr_conv);
+static inline uint64_t C2Tuple_PaymentHashPaymentIdZ_clone_ptr(LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR arg) {
+       LDKC2Tuple_PaymentHashPaymentIdZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentIdZ), "LDKC2Tuple_PaymentHashPaymentIdZ");
+       *ret_conv = C2Tuple_PaymentHashPaymentIdZ_clone(arg);
+       return ((uint64_t)ret_conv);
+}
+int64_t  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentIdZ_clone_ptr(uint32_t arg) {
+       LDKC2Tuple_PaymentHashPaymentIdZ* arg_conv = (LDKC2Tuple_PaymentHashPaymentIdZ*)(arg & ~1);
+       int64_t ret_val = C2Tuple_PaymentHashPaymentIdZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelConfig_set_cltv_expiry_delta(uint32_t this_ptr, int16_t val) {
-       LDKChannelConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelConfig_set_cltv_expiry_delta(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentIdZ_clone(uint32_t orig) {
+       LDKC2Tuple_PaymentHashPaymentIdZ* orig_conv = (LDKC2Tuple_PaymentHashPaymentIdZ*)(orig & ~1);
+       LDKC2Tuple_PaymentHashPaymentIdZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentIdZ), "LDKC2Tuple_PaymentHashPaymentIdZ");
+       *ret_conv = C2Tuple_PaymentHashPaymentIdZ_clone(orig_conv);
+       return ((uint64_t)ret_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelConfig_get_announced_channel(uint32_t this_ptr) {
-       LDKChannelConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = ChannelConfig_get_announced_channel(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentIdZ_new(int8_tArray a, int8_tArray b) {
+       LDKThirtyTwoBytes a_ref;
+       CHECK(a->arr_len == 32);
+       memcpy(a_ref.data, a->elems, 32);
+       LDKThirtyTwoBytes b_ref;
+       CHECK(b->arr_len == 32);
+       memcpy(b_ref.data, b->elems, 32);
+       LDKC2Tuple_PaymentHashPaymentIdZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentIdZ), "LDKC2Tuple_PaymentHashPaymentIdZ");
+       *ret_conv = C2Tuple_PaymentHashPaymentIdZ_new(a_ref, b_ref);
+       return ((uint64_t)ret_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelConfig_set_announced_channel(uint32_t this_ptr, jboolean val) {
-       LDKChannelConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelConfig_set_announced_channel(&this_ptr_conv, val);
+void  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentIdZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKC2Tuple_PaymentHashPaymentIdZ _res_conv = *(LDKC2Tuple_PaymentHashPaymentIdZ*)(_res_ptr);
+       FREE((void*)_res);
+       C2Tuple_PaymentHashPaymentIdZ_free(_res_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelConfig_get_commit_upfront_shutdown_pubkey(uint32_t this_ptr) {
-       LDKChannelConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = ChannelConfig_get_commit_upfront_shutdown_pubkey(&this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_ok(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKC2Tuple_PaymentHashPaymentIdZ o_conv = *(LDKC2Tuple_PaymentHashPaymentIdZ*)(o_ptr);
+       o_conv = C2Tuple_PaymentHashPaymentIdZ_clone((LDKC2Tuple_PaymentHashPaymentIdZ*)(((uint64_t)o) & ~1));
+       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ), "LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_ok(o_conv);
+       return (uint64_t)ret_conv;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_err(uint32_t e) {
+       void* e_ptr = (void*)(((uint64_t)e) & ~1);
+       CHECK_ACCESS(e_ptr);
+       LDKPaymentSendFailure e_conv = *(LDKPaymentSendFailure*)(e_ptr);
+       e_conv = PaymentSendFailure_clone((LDKPaymentSendFailure*)(((uint64_t)e) & ~1));
+       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ), "LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_err(e_conv);
+       return (uint64_t)ret_conv;
+}
+
+jboolean  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_is_ok(uint32_t o) {
+       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* o_conv = (LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ*)(o & ~1);
+       jboolean ret_val = CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelConfig_set_commit_upfront_shutdown_pubkey(uint32_t this_ptr, jboolean val) {
-       LDKChannelConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelConfig_set_commit_upfront_shutdown_pubkey(&this_ptr_conv, val);
+void  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ _res_conv = *(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(_res_conv);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ChannelConfig_get_max_dust_htlc_exposure_msat(uint32_t this_ptr) {
-       LDKChannelConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelConfig_get_max_dust_htlc_exposure_msat(&this_ptr_conv);
+static inline uint64_t CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone_ptr(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR arg) {
+       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ), "LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone_ptr(uint32_t arg) {
+       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* arg_conv = (LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ*)(arg & ~1);
+       int64_t ret_val = CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelConfig_set_max_dust_htlc_exposure_msat(uint32_t this_ptr, int64_t val) {
-       LDKChannelConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelConfig_set_max_dust_htlc_exposure_msat(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone(uint32_t orig) {
+       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* orig_conv = (LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ*)(orig & ~1);
+       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ), "LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ChannelConfig_get_force_close_avoidance_max_fee_satoshis(uint32_t this_ptr) {
-       LDKChannelConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelConfig_get_force_close_avoidance_max_fee_satoshis(&this_ptr_conv);
+static inline uint64_t C2Tuple_PaymentHashPaymentSecretZ_clone_ptr(LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR arg) {
+       LDKC2Tuple_PaymentHashPaymentSecretZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ), "LDKC2Tuple_PaymentHashPaymentSecretZ");
+       *ret_conv = C2Tuple_PaymentHashPaymentSecretZ_clone(arg);
+       return ((uint64_t)ret_conv);
+}
+int64_t  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentSecretZ_clone_ptr(uint32_t arg) {
+       LDKC2Tuple_PaymentHashPaymentSecretZ* arg_conv = (LDKC2Tuple_PaymentHashPaymentSecretZ*)(arg & ~1);
+       int64_t ret_val = C2Tuple_PaymentHashPaymentSecretZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelConfig_set_force_close_avoidance_max_fee_satoshis(uint32_t this_ptr, int64_t val) {
-       LDKChannelConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelConfig_set_force_close_avoidance_max_fee_satoshis(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentSecretZ_clone(uint32_t orig) {
+       LDKC2Tuple_PaymentHashPaymentSecretZ* orig_conv = (LDKC2Tuple_PaymentHashPaymentSecretZ*)(orig & ~1);
+       LDKC2Tuple_PaymentHashPaymentSecretZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ), "LDKC2Tuple_PaymentHashPaymentSecretZ");
+       *ret_conv = C2Tuple_PaymentHashPaymentSecretZ_clone(orig_conv);
+       return ((uint64_t)ret_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentSecretZ_new(int8_tArray a, int8_tArray b) {
+       LDKThirtyTwoBytes a_ref;
+       CHECK(a->arr_len == 32);
+       memcpy(a_ref.data, a->elems, 32);
+       LDKThirtyTwoBytes b_ref;
+       CHECK(b->arr_len == 32);
+       memcpy(b_ref.data, b->elems, 32);
+       LDKC2Tuple_PaymentHashPaymentSecretZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ), "LDKC2Tuple_PaymentHashPaymentSecretZ");
+       *ret_conv = C2Tuple_PaymentHashPaymentSecretZ_new(a_ref, b_ref);
+       return ((uint64_t)ret_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelConfig_new(int32_t forwarding_fee_proportional_millionths_arg, int32_t forwarding_fee_base_msat_arg, int16_t cltv_expiry_delta_arg, jboolean announced_channel_arg, jboolean commit_upfront_shutdown_pubkey_arg, int64_t max_dust_htlc_exposure_msat_arg, int64_t force_close_avoidance_max_fee_satoshis_arg) {
-       LDKChannelConfig ret_var = ChannelConfig_new(forwarding_fee_proportional_millionths_arg, forwarding_fee_base_msat_arg, cltv_expiry_delta_arg, announced_channel_arg, commit_upfront_shutdown_pubkey_arg, max_dust_htlc_exposure_msat_arg, force_close_avoidance_max_fee_satoshis_arg);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentSecretZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKC2Tuple_PaymentHashPaymentSecretZ _res_conv = *(LDKC2Tuple_PaymentHashPaymentSecretZ*)(_res_ptr);
+       FREE((void*)_res);
+       C2Tuple_PaymentHashPaymentSecretZ_free(_res_conv);
 }
 
-static inline uint64_t ChannelConfig_clone_ptr(LDKChannelConfig *NONNULL_PTR arg) {
-       LDKChannelConfig ret_var = ChannelConfig_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_ok(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKC2Tuple_PaymentHashPaymentSecretZ o_conv = *(LDKC2Tuple_PaymentHashPaymentSecretZ*)(o_ptr);
+       o_conv = C2Tuple_PaymentHashPaymentSecretZ_clone((LDKC2Tuple_PaymentHashPaymentSecretZ*)(((uint64_t)o) & ~1));
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_ok(o_conv);
+       return (uint64_t)ret_conv;
 }
-       return ret_ref;
+
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_err() {
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_err();
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_ChannelConfig_clone_ptr(uint32_t arg) {
-       LDKChannelConfig arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelConfig_clone_ptr(&arg_conv);
+
+jboolean  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_is_ok(uint32_t o) {
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* o_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ*)(o & ~1);
+       jboolean ret_val = CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_is_ok(o_conv);
        return ret_val;
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelConfig ret_var = ChannelConfig_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ _res_conv = *(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelConfig_default() {
-       LDKChannelConfig ret_var = ChannelConfig_default();
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+static inline uint64_t CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone_ptr(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *NONNULL_PTR arg) {
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone_ptr(uint32_t arg) {
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* arg_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ*)(arg & ~1);
+       int64_t ret_val = CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelConfig_write(uint32_t obj) {
-       LDKChannelConfig obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ChannelConfig_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone(uint32_t orig) {
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* orig_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ*)(orig & ~1);
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelConfig_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ChannelConfigDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelConfigDecodeErrorZ), "LDKCResult_ChannelConfigDecodeErrorZ");
-       *ret_conv = ChannelConfig_read(ser_ref);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_ok(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKC2Tuple_PaymentHashPaymentSecretZ o_conv = *(LDKC2Tuple_PaymentHashPaymentSecretZ*)(o_ptr);
+       o_conv = C2Tuple_PaymentHashPaymentSecretZ_clone((LDKC2Tuple_PaymentHashPaymentSecretZ*)(((uint64_t)o) & ~1));
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_UserConfig_free(uint32_t this_obj) {
-       LDKUserConfig this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       UserConfig_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_err(uint32_t e) {
+       void* e_ptr = (void*)(((uint64_t)e) & ~1);
+       CHECK_ACCESS(e_ptr);
+       LDKAPIError e_conv = *(LDKAPIError*)(e_ptr);
+       e_conv = APIError_clone((LDKAPIError*)(((uint64_t)e) & ~1));
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
 
-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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelHandshakeConfig ret_var = UserConfig_get_own_channel_config(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+jboolean  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_is_ok(uint32_t o) {
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* o_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_is_ok(o_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_UserConfig_set_own_channel_config(uint32_t this_ptr, uint32_t val) {
-       LDKUserConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelHandshakeConfig val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = ChannelHandshakeConfig_clone(&val_conv);
-       UserConfig_set_own_channel_config(&this_ptr_conv, val_conv);
+void  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ _res_conv = *(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UserConfig_get_peer_channel_config_limits(uint32_t this_ptr) {
-       LDKUserConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelHandshakeLimits ret_var = UserConfig_get_peer_channel_config_limits(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+static inline uint64_t CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone_ptr(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *NONNULL_PTR arg) {
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* arg_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_UserConfig_set_peer_channel_config_limits(uint32_t this_ptr, uint32_t val) {
-       LDKUserConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelHandshakeLimits val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = ChannelHandshakeLimits_clone(&val_conv);
-       UserConfig_set_peer_channel_config_limits(&this_ptr_conv, val_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone(uint32_t orig) {
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* orig_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ*)(orig & ~1);
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UserConfig_get_channel_options(uint32_t this_ptr) {
-       LDKUserConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelConfig ret_var = UserConfig_get_channel_options(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretNoneZ_ok(int8_tArray o) {
+       LDKThirtyTwoBytes o_ref;
+       CHECK(o->arr_len == 32);
+       memcpy(o_ref.data, o->elems, 32);
+       LDKCResult_PaymentSecretNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretNoneZ), "LDKCResult_PaymentSecretNoneZ");
+       *ret_conv = CResult_PaymentSecretNoneZ_ok(o_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_UserConfig_set_channel_options(uint32_t this_ptr, uint32_t val) {
-       LDKUserConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelConfig val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = ChannelConfig_clone(&val_conv);
-       UserConfig_set_channel_options(&this_ptr_conv, val_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretNoneZ_err() {
+       LDKCResult_PaymentSecretNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretNoneZ), "LDKCResult_PaymentSecretNoneZ");
+       *ret_conv = CResult_PaymentSecretNoneZ_err();
+       return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_UserConfig_get_accept_forwards_to_priv_channels(uint32_t this_ptr) {
-       LDKUserConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = UserConfig_get_accept_forwards_to_priv_channels(&this_ptr_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_PaymentSecretNoneZ_is_ok(uint32_t o) {
+       LDKCResult_PaymentSecretNoneZ* o_conv = (LDKCResult_PaymentSecretNoneZ*)(o & ~1);
+       jboolean ret_val = CResult_PaymentSecretNoneZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_UserConfig_set_accept_forwards_to_priv_channels(uint32_t this_ptr, jboolean val) {
-       LDKUserConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UserConfig_set_accept_forwards_to_priv_channels(&this_ptr_conv, val);
+void  __attribute__((visibility("default"))) TS_CResult_PaymentSecretNoneZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_PaymentSecretNoneZ _res_conv = *(LDKCResult_PaymentSecretNoneZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_PaymentSecretNoneZ_free(_res_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_UserConfig_get_accept_inbound_channels(uint32_t this_ptr) {
-       LDKUserConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = UserConfig_get_accept_inbound_channels(&this_ptr_conv);
+static inline uint64_t CResult_PaymentSecretNoneZ_clone_ptr(LDKCResult_PaymentSecretNoneZ *NONNULL_PTR arg) {
+       LDKCResult_PaymentSecretNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretNoneZ), "LDKCResult_PaymentSecretNoneZ");
+       *ret_conv = CResult_PaymentSecretNoneZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretNoneZ_clone_ptr(uint32_t arg) {
+       LDKCResult_PaymentSecretNoneZ* arg_conv = (LDKCResult_PaymentSecretNoneZ*)(arg & ~1);
+       int64_t ret_val = CResult_PaymentSecretNoneZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_UserConfig_set_accept_inbound_channels(uint32_t this_ptr, jboolean val) {
-       LDKUserConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UserConfig_set_accept_inbound_channels(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretNoneZ_clone(uint32_t orig) {
+       LDKCResult_PaymentSecretNoneZ* orig_conv = (LDKCResult_PaymentSecretNoneZ*)(orig & ~1);
+       LDKCResult_PaymentSecretNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretNoneZ), "LDKCResult_PaymentSecretNoneZ");
+       *ret_conv = CResult_PaymentSecretNoneZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UserConfig_new(uint32_t own_channel_config_arg, uint32_t peer_channel_config_limits_arg, uint32_t channel_options_arg, jboolean accept_forwards_to_priv_channels_arg, jboolean accept_inbound_channels_arg) {
-       LDKChannelHandshakeConfig own_channel_config_arg_conv;
-       own_channel_config_arg_conv.inner = (void*)(own_channel_config_arg & (~1));
-       own_channel_config_arg_conv.is_owned = (own_channel_config_arg & 1) || (own_channel_config_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(own_channel_config_arg_conv);
-       own_channel_config_arg_conv = ChannelHandshakeConfig_clone(&own_channel_config_arg_conv);
-       LDKChannelHandshakeLimits peer_channel_config_limits_arg_conv;
-       peer_channel_config_limits_arg_conv.inner = (void*)(peer_channel_config_limits_arg & (~1));
-       peer_channel_config_limits_arg_conv.is_owned = (peer_channel_config_limits_arg & 1) || (peer_channel_config_limits_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(peer_channel_config_limits_arg_conv);
-       peer_channel_config_limits_arg_conv = ChannelHandshakeLimits_clone(&peer_channel_config_limits_arg_conv);
-       LDKChannelConfig channel_options_arg_conv;
-       channel_options_arg_conv.inner = (void*)(channel_options_arg & (~1));
-       channel_options_arg_conv.is_owned = (channel_options_arg & 1) || (channel_options_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_options_arg_conv);
-       channel_options_arg_conv = ChannelConfig_clone(&channel_options_arg_conv);
-       LDKUserConfig ret_var = UserConfig_new(own_channel_config_arg_conv, peer_channel_config_limits_arg_conv, channel_options_arg_conv, accept_forwards_to_priv_channels_arg, accept_inbound_channels_arg);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretAPIErrorZ_ok(int8_tArray o) {
+       LDKThirtyTwoBytes o_ref;
+       CHECK(o->arr_len == 32);
+       memcpy(o_ref.data, o->elems, 32);
+       LDKCResult_PaymentSecretAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretAPIErrorZ), "LDKCResult_PaymentSecretAPIErrorZ");
+       *ret_conv = CResult_PaymentSecretAPIErrorZ_ok(o_ref);
+       return (uint64_t)ret_conv;
 }
 
-static inline uint64_t UserConfig_clone_ptr(LDKUserConfig *NONNULL_PTR arg) {
-       LDKUserConfig ret_var = UserConfig_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretAPIErrorZ_err(uint32_t e) {
+       void* e_ptr = (void*)(((uint64_t)e) & ~1);
+       CHECK_ACCESS(e_ptr);
+       LDKAPIError e_conv = *(LDKAPIError*)(e_ptr);
+       e_conv = APIError_clone((LDKAPIError*)(((uint64_t)e) & ~1));
+       LDKCResult_PaymentSecretAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretAPIErrorZ), "LDKCResult_PaymentSecretAPIErrorZ");
+       *ret_conv = CResult_PaymentSecretAPIErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_UserConfig_clone_ptr(uint32_t arg) {
-       LDKUserConfig arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = UserConfig_clone_ptr(&arg_conv);
+
+jboolean  __attribute__((visibility("default"))) TS_CResult_PaymentSecretAPIErrorZ_is_ok(uint32_t o) {
+       LDKCResult_PaymentSecretAPIErrorZ* o_conv = (LDKCResult_PaymentSecretAPIErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_PaymentSecretAPIErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKUserConfig ret_var = UserConfig_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_CResult_PaymentSecretAPIErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_PaymentSecretAPIErrorZ _res_conv = *(LDKCResult_PaymentSecretAPIErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_PaymentSecretAPIErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UserConfig_default() {
-       LDKUserConfig ret_var = UserConfig_default();
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+static inline uint64_t CResult_PaymentSecretAPIErrorZ_clone_ptr(LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR arg) {
+       LDKCResult_PaymentSecretAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretAPIErrorZ), "LDKCResult_PaymentSecretAPIErrorZ");
+       *ret_conv = CResult_PaymentSecretAPIErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretAPIErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_PaymentSecretAPIErrorZ* arg_conv = (LDKCResult_PaymentSecretAPIErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_PaymentSecretAPIErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_BestBlock_free(uint32_t this_obj) {
-       LDKBestBlock this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       BestBlock_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretAPIErrorZ_clone(uint32_t orig) {
+       LDKCResult_PaymentSecretAPIErrorZ* orig_conv = (LDKCResult_PaymentSecretAPIErrorZ*)(orig & ~1);
+       LDKCResult_PaymentSecretAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretAPIErrorZ), "LDKCResult_PaymentSecretAPIErrorZ");
+       *ret_conv = CResult_PaymentSecretAPIErrorZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-static inline uint64_t BestBlock_clone_ptr(LDKBestBlock *NONNULL_PTR arg) {
-       LDKBestBlock ret_var = BestBlock_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentPreimageAPIErrorZ_ok(int8_tArray o) {
+       LDKThirtyTwoBytes o_ref;
+       CHECK(o->arr_len == 32);
+       memcpy(o_ref.data, o->elems, 32);
+       LDKCResult_PaymentPreimageAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentPreimageAPIErrorZ), "LDKCResult_PaymentPreimageAPIErrorZ");
+       *ret_conv = CResult_PaymentPreimageAPIErrorZ_ok(o_ref);
+       return (uint64_t)ret_conv;
 }
-       return ret_ref;
+
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentPreimageAPIErrorZ_err(uint32_t e) {
+       void* e_ptr = (void*)(((uint64_t)e) & ~1);
+       CHECK_ACCESS(e_ptr);
+       LDKAPIError e_conv = *(LDKAPIError*)(e_ptr);
+       e_conv = APIError_clone((LDKAPIError*)(((uint64_t)e) & ~1));
+       LDKCResult_PaymentPreimageAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentPreimageAPIErrorZ), "LDKCResult_PaymentPreimageAPIErrorZ");
+       *ret_conv = CResult_PaymentPreimageAPIErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_BestBlock_clone_ptr(uint32_t arg) {
-       LDKBestBlock arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = BestBlock_clone_ptr(&arg_conv);
+
+jboolean  __attribute__((visibility("default"))) TS_CResult_PaymentPreimageAPIErrorZ_is_ok(uint32_t o) {
+       LDKCResult_PaymentPreimageAPIErrorZ* o_conv = (LDKCResult_PaymentPreimageAPIErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_PaymentPreimageAPIErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_BestBlock_clone(uint32_t orig) {
-       LDKBestBlock orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKBestBlock ret_var = BestBlock_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_CResult_PaymentPreimageAPIErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_PaymentPreimageAPIErrorZ _res_conv = *(LDKCResult_PaymentPreimageAPIErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_PaymentPreimageAPIErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_BestBlock_from_genesis(uint32_t network) {
-       LDKNetwork network_conv = LDKNetwork_from_js(network);
-       LDKBestBlock ret_var = BestBlock_from_genesis(network_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+static inline uint64_t CResult_PaymentPreimageAPIErrorZ_clone_ptr(LDKCResult_PaymentPreimageAPIErrorZ *NONNULL_PTR arg) {
+       LDKCResult_PaymentPreimageAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentPreimageAPIErrorZ), "LDKCResult_PaymentPreimageAPIErrorZ");
+       *ret_conv = CResult_PaymentPreimageAPIErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_PaymentPreimageAPIErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_PaymentPreimageAPIErrorZ* arg_conv = (LDKCResult_PaymentPreimageAPIErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_PaymentPreimageAPIErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_BestBlock_new(int8_tArray block_hash, int32_t height) {
-       LDKThirtyTwoBytes block_hash_ref;
-       CHECK(*((uint32_t*)block_hash) == 32);
-       memcpy(block_hash_ref.data, (uint8_t*)(block_hash + 4), 32);
-       LDKBestBlock ret_var = BestBlock_new(block_hash_ref, height);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentPreimageAPIErrorZ_clone(uint32_t orig) {
+       LDKCResult_PaymentPreimageAPIErrorZ* orig_conv = (LDKCResult_PaymentPreimageAPIErrorZ*)(orig & ~1);
+       LDKCResult_PaymentPreimageAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentPreimageAPIErrorZ), "LDKCResult_PaymentPreimageAPIErrorZ");
+       *ret_conv = CResult_PaymentPreimageAPIErrorZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_CVec_ChannelMonitorZ_free(uint32_tArray _res) {
+       LDKCVec_ChannelMonitorZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       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 = _res->elems;
+       for (size_t q = 0; q < _res_constr.datalen; q++) {
+               uint32_t _res_conv_16 = _res_vals[q];
+               LDKChannelMonitor _res_conv_16_conv;
+               _res_conv_16_conv.inner = (void*)(_res_conv_16 & (~1));
+               _res_conv_16_conv.is_owned = (_res_conv_16 & 1) || (_res_conv_16 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_16_conv);
+               _res_constr.data[q] = _res_conv_16_conv;
        }
-       return ret_ref;
+       CVec_ChannelMonitorZ_free(_res_constr);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_BestBlock_block_hash(uint32_t this_arg) {
-       LDKBestBlock this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), BestBlock_block_hash(&this_arg_conv).data, 32);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelManagerZ_new(int8_tArray a, uint32_t b) {
+       LDKThirtyTwoBytes a_ref;
+       CHECK(a->arr_len == 32);
+       memcpy(a_ref.data, a->elems, 32);
+       LDKChannelManager b_conv;
+       b_conv.inner = (void*)(b & (~1));
+       b_conv.is_owned = (b & 1) || (b == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
+       // Warning: we need a move here but no clone is available for LDKChannelManager
+       LDKC2Tuple_BlockHashChannelManagerZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelManagerZ), "LDKC2Tuple_BlockHashChannelManagerZ");
+       *ret_conv = C2Tuple_BlockHashChannelManagerZ_new(a_ref, b_conv);
+       return ((uint64_t)ret_conv);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_BestBlock_height(uint32_t this_arg) {
-       LDKBestBlock this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int32_t ret_val = BestBlock_height(&this_arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelManagerZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKC2Tuple_BlockHashChannelManagerZ _res_conv = *(LDKC2Tuple_BlockHashChannelManagerZ*)(_res_ptr);
+       FREE((void*)_res);
+       C2Tuple_BlockHashChannelManagerZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_AccessError_clone(uint32_t orig) {
-       LDKAccessError* orig_conv = (LDKAccessError*)(orig & ~1);
-       uint32_t ret_conv = LDKAccessError_to_js(AccessError_clone(orig_conv));
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKC2Tuple_BlockHashChannelManagerZ o_conv = *(LDKC2Tuple_BlockHashChannelManagerZ*)(o_ptr);
+       // Warning: we may need a move here but no clone is available for LDKC2Tuple_BlockHashChannelManagerZ
+       LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ");
+       *ret_conv = CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(o_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_AccessError_unknown_chain() {
-       uint32_t ret_conv = LDKAccessError_to_js(AccessError_unknown_chain());
-       return ret_conv;
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       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);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_AccessError_unknown_tx() {
-       uint32_t ret_conv = LDKAccessError_to_js(AccessError_unknown_tx());
-       return ret_conv;
+jboolean  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* o_conv = (LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_is_ok(o_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_Access_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKAccess this_ptr_conv = *(LDKAccess*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       Access_free(this_ptr_conv);
+void  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ _res_conv = *(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(_res_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_Listen_free(uint32_t this_ptr) {
+void  __attribute__((visibility("default"))) TS_PaymentPurpose_free(uint32_t this_ptr) {
        if ((this_ptr & 1) != 0) return;
        void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
        CHECK_ACCESS(this_ptr_ptr);
-       LDKListen this_ptr_conv = *(LDKListen*)(this_ptr_ptr);
+       LDKPaymentPurpose this_ptr_conv = *(LDKPaymentPurpose*)(this_ptr_ptr);
        FREE((void*)this_ptr);
-       Listen_free(this_ptr_conv);
+       PaymentPurpose_free(this_ptr_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_Confirm_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKConfirm this_ptr_conv = *(LDKConfirm*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       Confirm_free(this_ptr_conv);
+static inline uint64_t PaymentPurpose_clone_ptr(LDKPaymentPurpose *NONNULL_PTR arg) {
+       LDKPaymentPurpose *ret_copy = MALLOC(sizeof(LDKPaymentPurpose), "LDKPaymentPurpose");
+       *ret_copy = PaymentPurpose_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitorUpdateErr_clone(uint32_t orig) {
-       LDKChannelMonitorUpdateErr* orig_conv = (LDKChannelMonitorUpdateErr*)(orig & ~1);
-       uint32_t ret_conv = LDKChannelMonitorUpdateErr_to_js(ChannelMonitorUpdateErr_clone(orig_conv));
-       return ret_conv;
+int64_t  __attribute__((visibility("default"))) TS_PaymentPurpose_clone_ptr(uint32_t arg) {
+       LDKPaymentPurpose* arg_conv = (LDKPaymentPurpose*)arg;
+       int64_t ret_val = PaymentPurpose_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitorUpdateErr_temporary_failure() {
-       uint32_t ret_conv = LDKChannelMonitorUpdateErr_to_js(ChannelMonitorUpdateErr_temporary_failure());
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_PaymentPurpose_clone(uint32_t orig) {
+       LDKPaymentPurpose* orig_conv = (LDKPaymentPurpose*)orig;
+       LDKPaymentPurpose *ret_copy = MALLOC(sizeof(LDKPaymentPurpose), "LDKPaymentPurpose");
+       *ret_copy = PaymentPurpose_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitorUpdateErr_permanent_failure() {
-       uint32_t ret_conv = LDKChannelMonitorUpdateErr_to_js(ChannelMonitorUpdateErr_permanent_failure());
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_PaymentPurpose_invoice_payment(int8_tArray payment_preimage, int8_tArray payment_secret) {
+       LDKThirtyTwoBytes payment_preimage_ref;
+       CHECK(payment_preimage->arr_len == 32);
+       memcpy(payment_preimage_ref.data, payment_preimage->elems, 32);
+       LDKThirtyTwoBytes payment_secret_ref;
+       CHECK(payment_secret->arr_len == 32);
+       memcpy(payment_secret_ref.data, payment_secret->elems, 32);
+       LDKPaymentPurpose *ret_copy = MALLOC(sizeof(LDKPaymentPurpose), "LDKPaymentPurpose");
+       *ret_copy = PaymentPurpose_invoice_payment(payment_preimage_ref, payment_secret_ref);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_Watch_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKWatch this_ptr_conv = *(LDKWatch*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       Watch_free(this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_PaymentPurpose_spontaneous_payment(int8_tArray a) {
+       LDKThirtyTwoBytes a_ref;
+       CHECK(a->arr_len == 32);
+       memcpy(a_ref.data, a->elems, 32);
+       LDKPaymentPurpose *ret_copy = MALLOC(sizeof(LDKPaymentPurpose), "LDKPaymentPurpose");
+       *ret_copy = PaymentPurpose_spontaneous_payment(a_ref);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_Filter_free(uint32_t this_ptr) {
+void  __attribute__((visibility("default"))) TS_ClosureReason_free(uint32_t this_ptr) {
        if ((this_ptr & 1) != 0) return;
        void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
        CHECK_ACCESS(this_ptr_ptr);
-       LDKFilter this_ptr_conv = *(LDKFilter*)(this_ptr_ptr);
+       LDKClosureReason this_ptr_conv = *(LDKClosureReason*)(this_ptr_ptr);
        FREE((void*)this_ptr);
-       Filter_free(this_ptr_conv);
-}
-
-void  __attribute__((visibility("default"))) TS_WatchedOutput_free(uint32_t this_obj) {
-       LDKWatchedOutput this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       WatchedOutput_free(this_obj_conv);
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_WatchedOutput_get_block_hash(uint32_t this_ptr) {
-       LDKWatchedOutput this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), WatchedOutput_get_block_hash(&this_ptr_conv).data, 32);
-       return ret_arr;
-}
-
-void  __attribute__((visibility("default"))) TS_WatchedOutput_set_block_hash(uint32_t this_ptr, int8_tArray val) {
-       LDKWatchedOutput this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       WatchedOutput_set_block_hash(&this_ptr_conv, val_ref);
+       ClosureReason_free(this_ptr_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_WatchedOutput_get_outpoint(uint32_t this_ptr) {
-       LDKWatchedOutput this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKOutPoint ret_var = WatchedOutput_get_outpoint(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
+static inline uint64_t ClosureReason_clone_ptr(LDKClosureReason *NONNULL_PTR arg) {
+       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
+       *ret_copy = ClosureReason_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
-
-void  __attribute__((visibility("default"))) TS_WatchedOutput_set_outpoint(uint32_t this_ptr, uint32_t val) {
-       LDKWatchedOutput this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKOutPoint val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = OutPoint_clone(&val_conv);
-       WatchedOutput_set_outpoint(&this_ptr_conv, val_conv);
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_WatchedOutput_get_script_pubkey(uint32_t this_ptr) {
-       LDKWatchedOutput this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKu8slice ret_var = WatchedOutput_get_script_pubkey(&this_ptr_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       return ret_arr;
+int64_t  __attribute__((visibility("default"))) TS_ClosureReason_clone_ptr(uint32_t arg) {
+       LDKClosureReason* arg_conv = (LDKClosureReason*)arg;
+       int64_t ret_val = ClosureReason_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_WatchedOutput_set_script_pubkey(uint32_t this_ptr, int8_tArray val) {
-       LDKWatchedOutput this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_u8Z val_ref;
-       val_ref.datalen = *((uint32_t*)val);
-       val_ref.data = MALLOC(val_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(val_ref.data, (uint8_t*)(val + 4), val_ref.datalen);
-       WatchedOutput_set_script_pubkey(&this_ptr_conv, val_ref);
+uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_clone(uint32_t orig) {
+       LDKClosureReason* orig_conv = (LDKClosureReason*)orig;
+       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
+       *ret_copy = ClosureReason_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_WatchedOutput_new(int8_tArray block_hash_arg, uint32_t outpoint_arg, int8_tArray script_pubkey_arg) {
-       LDKThirtyTwoBytes block_hash_arg_ref;
-       CHECK(*((uint32_t*)block_hash_arg) == 32);
-       memcpy(block_hash_arg_ref.data, (uint8_t*)(block_hash_arg + 4), 32);
-       LDKOutPoint outpoint_arg_conv;
-       outpoint_arg_conv.inner = (void*)(outpoint_arg & (~1));
-       outpoint_arg_conv.is_owned = (outpoint_arg & 1) || (outpoint_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(outpoint_arg_conv);
-       outpoint_arg_conv = OutPoint_clone(&outpoint_arg_conv);
-       LDKCVec_u8Z script_pubkey_arg_ref;
-       script_pubkey_arg_ref.datalen = *((uint32_t*)script_pubkey_arg);
-       script_pubkey_arg_ref.data = MALLOC(script_pubkey_arg_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(script_pubkey_arg_ref.data, (uint8_t*)(script_pubkey_arg + 4), script_pubkey_arg_ref.datalen);
-       LDKWatchedOutput ret_var = WatchedOutput_new(block_hash_arg_ref, outpoint_arg_conv, script_pubkey_arg_ref);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
+uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_counterparty_force_closed(jstring peer_msg) {
+       LDKStr peer_msg_conv = str_ref_to_owned_c(peer_msg);
+       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
+       *ret_copy = ClosureReason_counterparty_force_closed(peer_msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-static inline uint64_t WatchedOutput_clone_ptr(LDKWatchedOutput *NONNULL_PTR arg) {
-       LDKWatchedOutput ret_var = WatchedOutput_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
+uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_holder_force_closed() {
+       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
+       *ret_copy = ClosureReason_holder_force_closed();
+       uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_WatchedOutput_clone_ptr(uint32_t arg) {
-       LDKWatchedOutput arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = WatchedOutput_clone_ptr(&arg_conv);
-       return ret_val;
-}
 
-uint32_t  __attribute__((visibility("default"))) TS_WatchedOutput_clone(uint32_t orig) {
-       LDKWatchedOutput orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKWatchedOutput ret_var = WatchedOutput_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
+uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_cooperative_closure() {
+       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
+       *ret_copy = ClosureReason_cooperative_closure();
+       uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_WatchedOutput_hash(uint32_t o) {
-       LDKWatchedOutput o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = WatchedOutput_hash(&o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_commitment_tx_confirmed() {
+       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
+       *ret_copy = ClosureReason_commitment_tx_confirmed();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_BroadcasterInterface_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKBroadcasterInterface this_ptr_conv = *(LDKBroadcasterInterface*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       BroadcasterInterface_free(this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_funding_timed_out() {
+       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
+       *ret_copy = ClosureReason_funding_timed_out();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ConfirmationTarget_clone(uint32_t orig) {
-       LDKConfirmationTarget* orig_conv = (LDKConfirmationTarget*)(orig & ~1);
-       uint32_t ret_conv = LDKConfirmationTarget_to_js(ConfirmationTarget_clone(orig_conv));
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_processing_error(jstring err) {
+       LDKStr err_conv = str_ref_to_owned_c(err);
+       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
+       *ret_copy = ClosureReason_processing_error(err_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ConfirmationTarget_background() {
-       uint32_t ret_conv = LDKConfirmationTarget_to_js(ConfirmationTarget_background());
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_disconnected_peer() {
+       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
+       *ret_copy = ClosureReason_disconnected_peer();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ConfirmationTarget_normal() {
-       uint32_t ret_conv = LDKConfirmationTarget_to_js(ConfirmationTarget_normal());
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_outdated_channel_manager() {
+       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
+       *ret_copy = ClosureReason_outdated_channel_manager();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ConfirmationTarget_high_priority() {
-       uint32_t ret_conv = LDKConfirmationTarget_to_js(ConfirmationTarget_high_priority());
-       return ret_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_ClosureReason_write(uint32_t obj) {
+       LDKClosureReason* obj_conv = (LDKClosureReason*)obj;
+       LDKCVec_u8Z ret_var = ClosureReason_write(obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ConfirmationTarget_eq(uint32_t a, uint32_t b) {
-       LDKConfirmationTarget* a_conv = (LDKConfirmationTarget*)(a & ~1);
-       LDKConfirmationTarget* b_conv = (LDKConfirmationTarget*)(b & ~1);
-       jboolean ret_val = ConfirmationTarget_eq(a_conv, b_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_COption_ClosureReasonZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ), "LDKCResult_COption_ClosureReasonZDecodeErrorZ");
+       *ret_conv = ClosureReason_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_FeeEstimator_free(uint32_t this_ptr) {
+void  __attribute__((visibility("default"))) TS_Event_free(uint32_t this_ptr) {
        if ((this_ptr & 1) != 0) return;
        void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
        CHECK_ACCESS(this_ptr_ptr);
-       LDKFeeEstimator this_ptr_conv = *(LDKFeeEstimator*)(this_ptr_ptr);
+       LDKEvent this_ptr_conv = *(LDKEvent*)(this_ptr_ptr);
        FREE((void*)this_ptr);
-       FeeEstimator_free(this_ptr_conv);
-}
-
-void  __attribute__((visibility("default"))) TS_MonitorUpdateId_free(uint32_t this_obj) {
-       LDKMonitorUpdateId this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       MonitorUpdateId_free(this_obj_conv);
+       Event_free(this_ptr_conv);
 }
 
-static inline uint64_t MonitorUpdateId_clone_ptr(LDKMonitorUpdateId *NONNULL_PTR arg) {
-       LDKMonitorUpdateId ret_var = MonitorUpdateId_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
+static inline uint64_t Event_clone_ptr(LDKEvent *NONNULL_PTR arg) {
+       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+       *ret_copy = Event_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_MonitorUpdateId_clone_ptr(uint32_t arg) {
-       LDKMonitorUpdateId arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = MonitorUpdateId_clone_ptr(&arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_Event_clone_ptr(uint32_t arg) {
+       LDKEvent* arg_conv = (LDKEvent*)arg;
+       int64_t ret_val = Event_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MonitorUpdateId_clone(uint32_t orig) {
-       LDKMonitorUpdateId orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKMonitorUpdateId ret_var = MonitorUpdateId_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
+uint32_t  __attribute__((visibility("default"))) TS_Event_clone(uint32_t orig) {
+       LDKEvent* orig_conv = (LDKEvent*)orig;
+       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+       *ret_copy = Event_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_MonitorUpdateId_hash(uint32_t o) {
-       LDKMonitorUpdateId o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = MonitorUpdateId_hash(&o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_Event_funding_generation_ready(int8_tArray temporary_channel_id, int64_t channel_value_satoshis, int8_tArray output_script, int64_t user_channel_id) {
+       LDKThirtyTwoBytes temporary_channel_id_ref;
+       CHECK(temporary_channel_id->arr_len == 32);
+       memcpy(temporary_channel_id_ref.data, temporary_channel_id->elems, 32);
+       LDKCVec_u8Z output_script_ref;
+       output_script_ref.datalen = output_script->arr_len;
+       output_script_ref.data = MALLOC(output_script_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(output_script_ref.data, output_script->elems, output_script_ref.datalen);
+       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+       *ret_copy = Event_funding_generation_ready(temporary_channel_id_ref, channel_value_satoshis, output_script_ref, user_channel_id);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_MonitorUpdateId_eq(uint32_t a, uint32_t b) {
-       LDKMonitorUpdateId a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKMonitorUpdateId b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = MonitorUpdateId_eq(&a_conv, &b_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_Event_payment_received(int8_tArray payment_hash, int64_t amt, uint32_t purpose) {
+       LDKThirtyTwoBytes payment_hash_ref;
+       CHECK(payment_hash->arr_len == 32);
+       memcpy(payment_hash_ref.data, payment_hash->elems, 32);
+       void* purpose_ptr = (void*)(((uint64_t)purpose) & ~1);
+       CHECK_ACCESS(purpose_ptr);
+       LDKPaymentPurpose purpose_conv = *(LDKPaymentPurpose*)(purpose_ptr);
+       purpose_conv = PaymentPurpose_clone((LDKPaymentPurpose*)(((uint64_t)purpose) & ~1));
+       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+       *ret_copy = Event_payment_received(payment_hash_ref, amt, purpose_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_Persist_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKPersist this_ptr_conv = *(LDKPersist*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       Persist_free(this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_Event_payment_sent(int8_tArray payment_id, int8_tArray payment_preimage, int8_tArray payment_hash, uint32_t fee_paid_msat) {
+       LDKThirtyTwoBytes payment_id_ref;
+       CHECK(payment_id->arr_len == 32);
+       memcpy(payment_id_ref.data, payment_id->elems, 32);
+       LDKThirtyTwoBytes payment_preimage_ref;
+       CHECK(payment_preimage->arr_len == 32);
+       memcpy(payment_preimage_ref.data, payment_preimage->elems, 32);
+       LDKThirtyTwoBytes payment_hash_ref;
+       CHECK(payment_hash->arr_len == 32);
+       memcpy(payment_hash_ref.data, payment_hash->elems, 32);
+       void* fee_paid_msat_ptr = (void*)(((uint64_t)fee_paid_msat) & ~1);
+       CHECK_ACCESS(fee_paid_msat_ptr);
+       LDKCOption_u64Z fee_paid_msat_conv = *(LDKCOption_u64Z*)(fee_paid_msat_ptr);
+       fee_paid_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)fee_paid_msat) & ~1));
+       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+       *ret_copy = Event_payment_sent(payment_id_ref, payment_preimage_ref, payment_hash_ref, fee_paid_msat_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_Event_payment_path_failed(int8_tArray payment_id, int8_tArray payment_hash, jboolean rejected_by_dest, uint32_t network_update, jboolean all_paths_failed, uint32_tArray path, uint32_t short_channel_id, uint32_t retry) {
+       LDKThirtyTwoBytes payment_id_ref;
+       CHECK(payment_id->arr_len == 32);
+       memcpy(payment_id_ref.data, payment_id->elems, 32);
+       LDKThirtyTwoBytes payment_hash_ref;
+       CHECK(payment_hash->arr_len == 32);
+       memcpy(payment_hash_ref.data, payment_hash->elems, 32);
+       void* network_update_ptr = (void*)(((uint64_t)network_update) & ~1);
+       CHECK_ACCESS(network_update_ptr);
+       LDKCOption_NetworkUpdateZ network_update_conv = *(LDKCOption_NetworkUpdateZ*)(network_update_ptr);
+       network_update_conv = COption_NetworkUpdateZ_clone((LDKCOption_NetworkUpdateZ*)(((uint64_t)network_update) & ~1));
+       LDKCVec_RouteHopZ path_constr;
+       path_constr.datalen = path->arr_len;
+       if (path_constr.datalen > 0)
+               path_constr.data = MALLOC(path_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements");
+       else
+               path_constr.data = NULL;
+       uint32_t* path_vals = path->elems;
+       for (size_t k = 0; k < path_constr.datalen; k++) {
+               uint32_t path_conv_10 = path_vals[k];
+               LDKRouteHop path_conv_10_conv;
+               path_conv_10_conv.inner = (void*)(path_conv_10 & (~1));
+               path_conv_10_conv.is_owned = (path_conv_10 & 1) || (path_conv_10 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_conv);
+               path_conv_10_conv = RouteHop_clone(&path_conv_10_conv);
+               path_constr.data[k] = path_conv_10_conv;
+       }
+       void* short_channel_id_ptr = (void*)(((uint64_t)short_channel_id) & ~1);
+       CHECK_ACCESS(short_channel_id_ptr);
+       LDKCOption_u64Z short_channel_id_conv = *(LDKCOption_u64Z*)(short_channel_id_ptr);
+       short_channel_id_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)short_channel_id) & ~1));
+       LDKRouteParameters retry_conv;
+       retry_conv.inner = (void*)(retry & (~1));
+       retry_conv.is_owned = (retry & 1) || (retry == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(retry_conv);
+       retry_conv = RouteParameters_clone(&retry_conv);
+       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+       *ret_copy = Event_payment_path_failed(payment_id_ref, payment_hash_ref, rejected_by_dest, network_update_conv, all_paths_failed, path_constr, short_channel_id_conv, retry_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_LockedChannelMonitor_free(uint32_t this_obj) {
-       LDKLockedChannelMonitor this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       LockedChannelMonitor_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_Event_payment_failed(int8_tArray payment_id, int8_tArray payment_hash) {
+       LDKThirtyTwoBytes payment_id_ref;
+       CHECK(payment_id->arr_len == 32);
+       memcpy(payment_id_ref.data, payment_id->elems, 32);
+       LDKThirtyTwoBytes payment_hash_ref;
+       CHECK(payment_hash->arr_len == 32);
+       memcpy(payment_hash_ref.data, payment_hash->elems, 32);
+       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+       *ret_copy = Event_payment_failed(payment_id_ref, payment_hash_ref);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChainMonitor_free(uint32_t this_obj) {
-       LDKChainMonitor this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChainMonitor_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_Event_pending_htlcs_forwardable(int64_t time_forwardable) {
+       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+       *ret_copy = Event_pending_htlcs_forwardable(time_forwardable);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChainMonitor_new(uint32_t chain_source, uint32_t broadcaster, uint32_t logger, uint32_t feeest, uint32_t persister) {
-       void* chain_source_ptr = (void*)(((uint64_t)chain_source) & ~1);
-       CHECK_ACCESS(chain_source_ptr);
-       LDKCOption_FilterZ chain_source_conv = *(LDKCOption_FilterZ*)(chain_source_ptr);
-       // Warning: we may need a move here but no clone is available for LDKCOption_FilterZ
-       if (chain_source_conv.tag == LDKCOption_FilterZ_Some) {
-               // Manually implement clone for Java trait instances
-       }
-       void* broadcaster_ptr = (void*)(((uint64_t)broadcaster) & ~1);
-       CHECK_ACCESS(broadcaster_ptr);
-       LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(broadcaster_ptr);
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       CHECK_ACCESS(logger_ptr);
-       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
-       void* feeest_ptr = (void*)(((uint64_t)feeest) & ~1);
-       CHECK_ACCESS(feeest_ptr);
-       LDKFeeEstimator feeest_conv = *(LDKFeeEstimator*)(feeest_ptr);
-       void* persister_ptr = (void*)(((uint64_t)persister) & ~1);
-       CHECK_ACCESS(persister_ptr);
-       LDKPersist persister_conv = *(LDKPersist*)(persister_ptr);
-       LDKChainMonitor ret_var = ChainMonitor_new(chain_source_conv, broadcaster_conv, logger_conv, feeest_conv, persister_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_Event_spendable_outputs(uint32_tArray outputs) {
+       LDKCVec_SpendableOutputDescriptorZ outputs_constr;
+       outputs_constr.datalen = outputs->arr_len;
+       if (outputs_constr.datalen > 0)
+               outputs_constr.data = MALLOC(outputs_constr.datalen * sizeof(LDKSpendableOutputDescriptor), "LDKCVec_SpendableOutputDescriptorZ Elements");
+       else
+               outputs_constr.data = NULL;
+       uint32_t* outputs_vals = outputs->elems;
+       for (size_t b = 0; b < outputs_constr.datalen; b++) {
+               uint32_t outputs_conv_27 = outputs_vals[b];
+               void* outputs_conv_27_ptr = (void*)(((uint64_t)outputs_conv_27) & ~1);
+               CHECK_ACCESS(outputs_conv_27_ptr);
+               LDKSpendableOutputDescriptor outputs_conv_27_conv = *(LDKSpendableOutputDescriptor*)(outputs_conv_27_ptr);
+               outputs_conv_27_conv = SpendableOutputDescriptor_clone((LDKSpendableOutputDescriptor*)(((uint64_t)outputs_conv_27) & ~1));
+               outputs_constr.data[b] = outputs_conv_27_conv;
        }
+       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+       *ret_copy = Event_spendable_outputs(outputs_constr);
+       uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_ChainMonitor_get_claimable_balances(uint32_t this_arg, uint32_tArray ignored_channels) {
-       LDKChainMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCVec_ChannelDetailsZ ignored_channels_constr;
-       ignored_channels_constr.datalen = *((uint32_t*)ignored_channels);
-       if (ignored_channels_constr.datalen > 0)
-               ignored_channels_constr.data = MALLOC(ignored_channels_constr.datalen * sizeof(LDKChannelDetails), "LDKCVec_ChannelDetailsZ Elements");
-       else
-               ignored_channels_constr.data = NULL;
-       uint32_t* ignored_channels_vals = (uint32_t*)(ignored_channels + 4);
-       for (size_t q = 0; q < ignored_channels_constr.datalen; q++) {
-               uint32_t ignored_channels_conv_16 = ignored_channels_vals[q];
-               LDKChannelDetails ignored_channels_conv_16_conv;
-               ignored_channels_conv_16_conv.inner = (void*)(ignored_channels_conv_16 & (~1));
-               ignored_channels_conv_16_conv.is_owned = (ignored_channels_conv_16 & 1) || (ignored_channels_conv_16 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ignored_channels_conv_16_conv);
-               ignored_channels_conv_16_conv = ChannelDetails_clone(&ignored_channels_conv_16_conv);
-               ignored_channels_constr.data[q] = ignored_channels_conv_16_conv;
-       }
-       LDKCVec_BalanceZ ret_var = ChainMonitor_get_claimable_balances(&this_arg_conv, ignored_channels_constr);
-       uint32_tArray ret_arr = NULL;
-       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 j = 0; j < ret_var.datalen; j++) {
-               LDKBalance *ret_conv_9_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
-               *ret_conv_9_copy = ret_var.data[j];
-               uint64_t ret_conv_9_ref = (uint64_t)ret_conv_9_copy;
-               ret_arr_ptr[j] = ret_conv_9_ref;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_Event_payment_forwarded(uint32_t fee_earned_msat, jboolean claim_from_onchain_tx) {
+       void* fee_earned_msat_ptr = (void*)(((uint64_t)fee_earned_msat) & ~1);
+       CHECK_ACCESS(fee_earned_msat_ptr);
+       LDKCOption_u64Z fee_earned_msat_conv = *(LDKCOption_u64Z*)(fee_earned_msat_ptr);
+       fee_earned_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)fee_earned_msat) & ~1));
+       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+       *ret_copy = Event_payment_forwarded(fee_earned_msat_conv, claim_from_onchain_tx);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChainMonitor_get_monitor(uint32_t this_arg, uint32_t funding_txo) {
-       LDKChainMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKOutPoint funding_txo_conv;
-       funding_txo_conv.inner = (void*)(funding_txo & (~1));
-       funding_txo_conv.is_owned = (funding_txo & 1) || (funding_txo == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_conv);
-       funding_txo_conv = OutPoint_clone(&funding_txo_conv);
-       LDKCResult_LockedChannelMonitorNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_LockedChannelMonitorNoneZ), "LDKCResult_LockedChannelMonitorNoneZ");
-       *ret_conv = ChainMonitor_get_monitor(&this_arg_conv, funding_txo_conv);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_Event_channel_closed(int8_tArray channel_id, int64_t user_channel_id, uint32_t reason) {
+       LDKThirtyTwoBytes channel_id_ref;
+       CHECK(channel_id->arr_len == 32);
+       memcpy(channel_id_ref.data, channel_id->elems, 32);
+       void* reason_ptr = (void*)(((uint64_t)reason) & ~1);
+       CHECK_ACCESS(reason_ptr);
+       LDKClosureReason reason_conv = *(LDKClosureReason*)(reason_ptr);
+       reason_conv = ClosureReason_clone((LDKClosureReason*)(((uint64_t)reason) & ~1));
+       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+       *ret_copy = Event_channel_closed(channel_id_ref, user_channel_id, reason_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_ChainMonitor_list_monitors(uint32_t this_arg) {
-       LDKChainMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCVec_OutPointZ ret_var = ChainMonitor_list_monitors(&this_arg_conv);
-       uint32_tArray ret_arr = NULL;
-       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 k = 0; k < ret_var.datalen; k++) {
-               LDKOutPoint ret_conv_10_var = ret_var.data[k];
-               uint64_t ret_conv_10_ref = 0;
-               CHECK((((uint64_t)ret_conv_10_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_conv_10_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_10_var);
-               ret_conv_10_ref = (uint64_t)ret_conv_10_var.inner;
-               if (ret_conv_10_var.is_owned) {
-                       ret_conv_10_ref |= 1;
-               }
-               ret_arr_ptr[k] = ret_conv_10_ref;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_Event_discard_funding(int8_tArray channel_id, int8_tArray transaction) {
+       LDKThirtyTwoBytes channel_id_ref;
+       CHECK(channel_id->arr_len == 32);
+       memcpy(channel_id_ref.data, channel_id->elems, 32);
+       LDKTransaction transaction_ref;
+       transaction_ref.datalen = transaction->arr_len;
+       transaction_ref.data = MALLOC(transaction_ref.datalen, "LDKTransaction Bytes");
+       memcpy(transaction_ref.data, transaction->elems, transaction_ref.datalen);
+       transaction_ref.data_is_owned = true;
+       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+       *ret_copy = Event_discard_funding(channel_id_ref, transaction_ref);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChainMonitor_channel_monitor_updated(uint32_t this_arg, uint32_t funding_txo, uint32_t completed_update_id) {
-       LDKChainMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKOutPoint funding_txo_conv;
-       funding_txo_conv.inner = (void*)(funding_txo & (~1));
-       funding_txo_conv.is_owned = (funding_txo & 1) || (funding_txo == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_conv);
-       funding_txo_conv = OutPoint_clone(&funding_txo_conv);
-       LDKMonitorUpdateId completed_update_id_conv;
-       completed_update_id_conv.inner = (void*)(completed_update_id & (~1));
-       completed_update_id_conv.is_owned = (completed_update_id & 1) || (completed_update_id == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(completed_update_id_conv);
-       completed_update_id_conv = MonitorUpdateId_clone(&completed_update_id_conv);
-       LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
-       *ret_conv = ChainMonitor_channel_monitor_updated(&this_arg_conv, funding_txo_conv, completed_update_id_conv);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_Event_payment_path_successful(int8_tArray payment_id, int8_tArray payment_hash, uint32_tArray path) {
+       LDKThirtyTwoBytes payment_id_ref;
+       CHECK(payment_id->arr_len == 32);
+       memcpy(payment_id_ref.data, payment_id->elems, 32);
+       LDKThirtyTwoBytes payment_hash_ref;
+       CHECK(payment_hash->arr_len == 32);
+       memcpy(payment_hash_ref.data, payment_hash->elems, 32);
+       LDKCVec_RouteHopZ path_constr;
+       path_constr.datalen = path->arr_len;
+       if (path_constr.datalen > 0)
+               path_constr.data = MALLOC(path_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements");
+       else
+               path_constr.data = NULL;
+       uint32_t* path_vals = path->elems;
+       for (size_t k = 0; k < path_constr.datalen; k++) {
+               uint32_t path_conv_10 = path_vals[k];
+               LDKRouteHop path_conv_10_conv;
+               path_conv_10_conv.inner = (void*)(path_conv_10 & (~1));
+               path_conv_10_conv.is_owned = (path_conv_10 & 1) || (path_conv_10 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_conv);
+               path_conv_10_conv = RouteHop_clone(&path_conv_10_conv);
+               path_constr.data[k] = path_conv_10_conv;
+       }
+       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+       *ret_copy = Event_payment_path_successful(payment_id_ref, payment_hash_ref, path_constr);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChainMonitor_as_Listen(uint32_t this_arg) {
-       LDKChainMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKListen* ret_ret = MALLOC(sizeof(LDKListen), "LDKListen");
-       *ret_ret = ChainMonitor_as_Listen(&this_arg_conv);
-       return (uint64_t)ret_ret;
+int8_tArray  __attribute__((visibility("default"))) TS_Event_write(uint32_t obj) {
+       LDKEvent* obj_conv = (LDKEvent*)obj;
+       LDKCVec_u8Z ret_var = Event_write(obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChainMonitor_as_Confirm(uint32_t this_arg) {
-       LDKChainMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKConfirm* ret_ret = MALLOC(sizeof(LDKConfirm), "LDKConfirm");
-       *ret_ret = ChainMonitor_as_Confirm(&this_arg_conv);
-       return (uint64_t)ret_ret;
+uint32_t  __attribute__((visibility("default"))) TS_Event_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_COption_EventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_EventZDecodeErrorZ), "LDKCResult_COption_EventZDecodeErrorZ");
+       *ret_conv = Event_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChainMonitor_as_Watch(uint32_t this_arg) {
-       LDKChainMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKWatch* ret_ret = MALLOC(sizeof(LDKWatch), "LDKWatch");
-       *ret_ret = ChainMonitor_as_Watch(&this_arg_conv);
-       return (uint64_t)ret_ret;
+void  __attribute__((visibility("default"))) TS_MessageSendEvent_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKMessageSendEvent this_ptr_conv = *(LDKMessageSendEvent*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       MessageSendEvent_free(this_ptr_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChainMonitor_as_EventsProvider(uint32_t this_arg) {
-       LDKChainMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKEventsProvider* ret_ret = MALLOC(sizeof(LDKEventsProvider), "LDKEventsProvider");
-       *ret_ret = ChainMonitor_as_EventsProvider(&this_arg_conv);
-       return (uint64_t)ret_ret;
+static inline uint64_t MessageSendEvent_clone_ptr(LDKMessageSendEvent *NONNULL_PTR arg) {
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_MessageSendEvent_clone_ptr(uint32_t arg) {
+       LDKMessageSendEvent* arg_conv = (LDKMessageSendEvent*)arg;
+       int64_t ret_val = MessageSendEvent_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMonitorUpdate_free(uint32_t this_obj) {
-       LDKChannelMonitorUpdate this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelMonitorUpdate_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_clone(uint32_t orig) {
+       LDKMessageSendEvent* orig_conv = (LDKMessageSendEvent*)orig;
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelMonitorUpdate_get_update_id(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_accept_channel(int8_tArray node_id, uint32_t msg) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKAcceptChannel msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = AcceptChannel_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_send_accept_channel(node_id_ref, msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMonitorUpdate_set_update_id(uint32_t this_ptr, int64_t val) {
-       LDKChannelMonitorUpdate this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelMonitorUpdate_set_update_id(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_open_channel(int8_tArray node_id, uint32_t msg) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKOpenChannel msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = OpenChannel_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_send_open_channel(node_id_ref, msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-static inline uint64_t ChannelMonitorUpdate_clone_ptr(LDKChannelMonitorUpdate *NONNULL_PTR arg) {
-       LDKChannelMonitorUpdate ret_var = ChannelMonitorUpdate_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_funding_created(int8_tArray node_id, uint32_t msg) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKFundingCreated msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = FundingCreated_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_send_funding_created(node_id_ref, msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
+
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_funding_signed(int8_tArray node_id, uint32_t msg) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKFundingSigned msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = FundingSigned_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_send_funding_signed(node_id_ref, msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_ChannelMonitorUpdate_clone_ptr(uint32_t arg) {
-       LDKChannelMonitorUpdate arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelMonitorUpdate_clone_ptr(&arg_conv);
-       return ret_val;
+
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_funding_locked(int8_tArray node_id, uint32_t msg) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKFundingLocked msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = FundingLocked_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_send_funding_locked(node_id_ref, msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelMonitorUpdate ret_var = ChannelMonitorUpdate_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_announcement_signatures(int8_tArray node_id, uint32_t msg) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKAnnouncementSignatures msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = AnnouncementSignatures_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_send_announcement_signatures(node_id_ref, msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelMonitorUpdate_write(uint32_t obj) {
-       LDKChannelMonitorUpdate obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ChannelMonitorUpdate_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_update_htlcs(int8_tArray node_id, uint32_t updates) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKCommitmentUpdate updates_conv;
+       updates_conv.inner = (void*)(updates & (~1));
+       updates_conv.is_owned = (updates & 1) || (updates == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(updates_conv);
+       updates_conv = CommitmentUpdate_clone(&updates_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_update_htlcs(node_id_ref, updates_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitorUpdate_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ChannelMonitorUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ), "LDKCResult_ChannelMonitorUpdateDecodeErrorZ");
-       *ret_conv = ChannelMonitorUpdate_read(ser_ref);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_revoke_and_ack(int8_tArray node_id, uint32_t msg) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKRevokeAndACK msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = RevokeAndACK_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_send_revoke_and_ack(node_id_ref, msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_MonitorEvent_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKMonitorEvent this_ptr_conv = *(LDKMonitorEvent*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       MonitorEvent_free(this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_closing_signed(int8_tArray node_id, uint32_t msg) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKClosingSigned msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = ClosingSigned_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_send_closing_signed(node_id_ref, msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-static inline uint64_t MonitorEvent_clone_ptr(LDKMonitorEvent *NONNULL_PTR arg) {
-       LDKMonitorEvent *ret_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
-       *ret_copy = MonitorEvent_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_shutdown(int8_tArray node_id, uint32_t msg) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKShutdown msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = Shutdown_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_send_shutdown(node_id_ref, msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_MonitorEvent_clone_ptr(uint32_t arg) {
-       LDKMonitorEvent* arg_conv = (LDKMonitorEvent*)arg;
-       int64_t ret_val = MonitorEvent_clone_ptr(arg_conv);
-       return ret_val;
+
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_channel_reestablish(int8_tArray node_id, uint32_t msg) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKChannelReestablish msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = ChannelReestablish_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_send_channel_reestablish(node_id_ref, msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MonitorEvent_clone(uint32_t orig) {
-       LDKMonitorEvent* orig_conv = (LDKMonitorEvent*)orig;
-       LDKMonitorEvent *ret_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
-       *ret_copy = MonitorEvent_clone(orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_broadcast_channel_announcement(uint32_t msg, uint32_t update_msg) {
+       LDKChannelAnnouncement msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = ChannelAnnouncement_clone(&msg_conv);
+       LDKChannelUpdate update_msg_conv;
+       update_msg_conv.inner = (void*)(update_msg & (~1));
+       update_msg_conv.is_owned = (update_msg & 1) || (update_msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_msg_conv);
+       update_msg_conv = ChannelUpdate_clone(&update_msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_broadcast_channel_announcement(msg_conv, update_msg_conv);
        uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MonitorEvent_htlcevent(uint32_t a) {
-       LDKHTLCUpdate a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = (a & 1) || (a == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       a_conv = HTLCUpdate_clone(&a_conv);
-       LDKMonitorEvent *ret_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
-       *ret_copy = MonitorEvent_htlcevent(a_conv);
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_broadcast_node_announcement(uint32_t msg) {
+       LDKNodeAnnouncement msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = NodeAnnouncement_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_broadcast_node_announcement(msg_conv);
        uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MonitorEvent_commitment_tx_confirmed(uint32_t a) {
-       LDKOutPoint a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = (a & 1) || (a == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       a_conv = OutPoint_clone(&a_conv);
-       LDKMonitorEvent *ret_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
-       *ret_copy = MonitorEvent_commitment_tx_confirmed(a_conv);
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_broadcast_channel_update(uint32_t msg) {
+       LDKChannelUpdate msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = ChannelUpdate_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_broadcast_channel_update(msg_conv);
        uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MonitorEvent_update_completed(uint32_t funding_txo, int64_t monitor_update_id) {
-       LDKOutPoint funding_txo_conv;
-       funding_txo_conv.inner = (void*)(funding_txo & (~1));
-       funding_txo_conv.is_owned = (funding_txo & 1) || (funding_txo == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_conv);
-       funding_txo_conv = OutPoint_clone(&funding_txo_conv);
-       LDKMonitorEvent *ret_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
-       *ret_copy = MonitorEvent_update_completed(funding_txo_conv, monitor_update_id);
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_channel_update(int8_tArray node_id, uint32_t msg) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKChannelUpdate msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = ChannelUpdate_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_send_channel_update(node_id_ref, msg_conv);
        uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MonitorEvent_update_failed(uint32_t a) {
-       LDKOutPoint a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = (a & 1) || (a == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       a_conv = OutPoint_clone(&a_conv);
-       LDKMonitorEvent *ret_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
-       *ret_copy = MonitorEvent_update_failed(a_conv);
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_handle_error(int8_tArray node_id, uint32_t action) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       void* action_ptr = (void*)(((uint64_t)action) & ~1);
+       CHECK_ACCESS(action_ptr);
+       LDKErrorAction action_conv = *(LDKErrorAction*)(action_ptr);
+       action_conv = ErrorAction_clone((LDKErrorAction*)(((uint64_t)action) & ~1));
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_handle_error(node_id_ref, action_conv);
        uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_MonitorEvent_write(uint32_t obj) {
-       LDKMonitorEvent* obj_conv = (LDKMonitorEvent*)obj;
-       LDKCVec_u8Z ret_var = MonitorEvent_write(obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_MonitorEvent_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_COption_MonitorEventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ), "LDKCResult_COption_MonitorEventZDecodeErrorZ");
-       *ret_conv = MonitorEvent_read(ser_ref);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_channel_range_query(int8_tArray node_id, uint32_t msg) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKQueryChannelRange msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = QueryChannelRange_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_send_channel_range_query(node_id_ref, msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_HTLCUpdate_free(uint32_t this_obj) {
-       LDKHTLCUpdate this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       HTLCUpdate_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_short_ids_query(int8_tArray node_id, uint32_t msg) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKQueryShortChannelIds msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = QueryShortChannelIds_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_send_short_ids_query(node_id_ref, msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-static inline uint64_t HTLCUpdate_clone_ptr(LDKHTLCUpdate *NONNULL_PTR arg) {
-       LDKHTLCUpdate ret_var = HTLCUpdate_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_reply_channel_range(int8_tArray node_id, uint32_t msg) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKReplyChannelRange msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = ReplyChannelRange_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_send_reply_channel_range(node_id_ref, msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_HTLCUpdate_clone_ptr(uint32_t arg) {
-       LDKHTLCUpdate arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = HTLCUpdate_clone_ptr(&arg_conv);
-       return ret_val;
-}
 
-uint32_t  __attribute__((visibility("default"))) TS_HTLCUpdate_clone(uint32_t orig) {
-       LDKHTLCUpdate orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKHTLCUpdate ret_var = HTLCUpdate_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_MessageSendEventsProvider_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKMessageSendEventsProvider this_ptr_conv = *(LDKMessageSendEventsProvider*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       MessageSendEventsProvider_free(this_ptr_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_HTLCUpdate_write(uint32_t obj) {
-       LDKHTLCUpdate obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = HTLCUpdate_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_EventsProvider_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKEventsProvider this_ptr_conv = *(LDKEventsProvider*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       EventsProvider_free(this_ptr_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_HTLCUpdate_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_HTLCUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCUpdateDecodeErrorZ), "LDKCResult_HTLCUpdateDecodeErrorZ");
-       *ret_conv = HTLCUpdate_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_EventHandler_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKEventHandler this_ptr_conv = *(LDKEventHandler*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       EventHandler_free(this_ptr_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_Balance_free(uint32_t this_ptr) {
+void  __attribute__((visibility("default"))) TS_APIError_free(uint32_t this_ptr) {
        if ((this_ptr & 1) != 0) return;
        void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
        CHECK_ACCESS(this_ptr_ptr);
-       LDKBalance this_ptr_conv = *(LDKBalance*)(this_ptr_ptr);
+       LDKAPIError this_ptr_conv = *(LDKAPIError*)(this_ptr_ptr);
        FREE((void*)this_ptr);
-       Balance_free(this_ptr_conv);
+       APIError_free(this_ptr_conv);
 }
 
-static inline uint64_t Balance_clone_ptr(LDKBalance *NONNULL_PTR arg) {
-       LDKBalance *ret_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
-       *ret_copy = Balance_clone(arg);
+static inline uint64_t APIError_clone_ptr(LDKAPIError *NONNULL_PTR arg) {
+       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
+       *ret_copy = APIError_clone(arg);
 uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_Balance_clone_ptr(uint32_t arg) {
-       LDKBalance* arg_conv = (LDKBalance*)arg;
-       int64_t ret_val = Balance_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_APIError_clone_ptr(uint32_t arg) {
+       LDKAPIError* arg_conv = (LDKAPIError*)arg;
+       int64_t ret_val = APIError_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Balance_clone(uint32_t orig) {
-       LDKBalance* orig_conv = (LDKBalance*)orig;
-       LDKBalance *ret_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
-       *ret_copy = Balance_clone(orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_APIError_clone(uint32_t orig) {
+       LDKAPIError* orig_conv = (LDKAPIError*)orig;
+       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
+       *ret_copy = APIError_clone(orig_conv);
        uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Balance_claimable_on_channel_close(int64_t claimable_amount_satoshis) {
-       LDKBalance *ret_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
-       *ret_copy = Balance_claimable_on_channel_close(claimable_amount_satoshis);
+uint32_t  __attribute__((visibility("default"))) TS_APIError_apimisuse_error(jstring err) {
+       LDKStr err_conv = str_ref_to_owned_c(err);
+       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
+       *ret_copy = APIError_apimisuse_error(err_conv);
        uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Balance_claimable_awaiting_confirmations(int64_t claimable_amount_satoshis, int32_t confirmation_height) {
-       LDKBalance *ret_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
-       *ret_copy = Balance_claimable_awaiting_confirmations(claimable_amount_satoshis, confirmation_height);
+uint32_t  __attribute__((visibility("default"))) TS_APIError_fee_rate_too_high(jstring err, int32_t feerate) {
+       LDKStr err_conv = str_ref_to_owned_c(err);
+       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
+       *ret_copy = APIError_fee_rate_too_high(err_conv, feerate);
        uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Balance_contentious_claimable(int64_t claimable_amount_satoshis, int32_t timeout_height) {
-       LDKBalance *ret_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
-       *ret_copy = Balance_contentious_claimable(claimable_amount_satoshis, timeout_height);
+uint32_t  __attribute__((visibility("default"))) TS_APIError_route_error(jstring err) {
+       LDKStr err_conv = str_ref_to_owned_c(err);
+       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
+       *ret_copy = APIError_route_error(err_conv);
        uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Balance_maybe_claimable_htlcawaiting_timeout(int64_t claimable_amount_satoshis, int32_t claimable_height) {
-       LDKBalance *ret_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
-       *ret_copy = Balance_maybe_claimable_htlcawaiting_timeout(claimable_amount_satoshis, claimable_height);
+uint32_t  __attribute__((visibility("default"))) TS_APIError_channel_unavailable(jstring err) {
+       LDKStr err_conv = str_ref_to_owned_c(err);
+       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
+       *ret_copy = APIError_channel_unavailable(err_conv);
        uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_Balance_eq(uint32_t a, uint32_t b) {
-       LDKBalance* a_conv = (LDKBalance*)a;
-       LDKBalance* b_conv = (LDKBalance*)b;
-       jboolean ret_val = Balance_eq(a_conv, b_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_APIError_monitor_update_failed() {
+       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
+       *ret_copy = APIError_monitor_update_failed();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMonitor_free(uint32_t this_obj) {
-       LDKChannelMonitor this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelMonitor_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_APIError_incompatible_shutdown_script(uint32_t script) {
+       LDKShutdownScript script_conv;
+       script_conv.inner = (void*)(script & (~1));
+       script_conv.is_owned = (script & 1) || (script == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(script_conv);
+       script_conv = ShutdownScript_clone(&script_conv);
+       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
+       *ret_copy = APIError_incompatible_shutdown_script(script_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_sign(int8_tArray msg, int8_tArray sk) {
+       LDKu8slice msg_ref;
+       msg_ref.datalen = msg->arr_len;
+       msg_ref.data = msg->elems;
+       unsigned char sk_arr[32];
+       CHECK(sk->arr_len == 32);
+       memcpy(sk_arr, sk->elems, 32);
+       unsigned char (*sk_ref)[32] = &sk_arr;
+       LDKCResult_StringErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StringErrorZ), "LDKCResult_StringErrorZ");
+       *ret_conv = sign(msg_ref, sk_ref);
+       return (uint64_t)ret_conv;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_recover_pk(int8_tArray msg, jstring sig) {
+       LDKu8slice msg_ref;
+       msg_ref.datalen = msg->arr_len;
+       msg_ref.data = msg->elems;
+       LDKStr sig_conv = str_ref_to_owned_c(sig);
+       LDKCResult_PublicKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeyErrorZ), "LDKCResult_PublicKeyErrorZ");
+       *ret_conv = recover_pk(msg_ref, sig_conv);
+       return (uint64_t)ret_conv;
+}
+
+jboolean  __attribute__((visibility("default"))) TS_verify(int8_tArray msg, jstring sig, int8_tArray pk) {
+       LDKu8slice msg_ref;
+       msg_ref.datalen = msg->arr_len;
+       msg_ref.data = msg->elems;
+       LDKStr sig_conv = str_ref_to_owned_c(sig);
+       LDKPublicKey pk_ref;
+       CHECK(pk->arr_len == 33);
+       memcpy(pk_ref.compressed_form, pk->elems, 33);
+       jboolean ret_val = verify(msg_ref, sig_conv, pk_ref);
+       return ret_val;
 }
 
-static inline uint64_t ChannelMonitor_clone_ptr(LDKChannelMonitor *NONNULL_PTR arg) {
-       LDKChannelMonitor ret_var = ChannelMonitor_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_Level_clone(uint32_t orig) {
+       LDKLevel* orig_conv = (LDKLevel*)(orig & ~1);
+       uint32_t ret_conv = LDKLevel_to_js(Level_clone(orig_conv));
+       return ret_conv;
 }
-       return ret_ref;
+
+uint32_t  __attribute__((visibility("default"))) TS_Level_gossip() {
+       uint32_t ret_conv = LDKLevel_to_js(Level_gossip());
+       return ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_ChannelMonitor_clone_ptr(uint32_t arg) {
-       LDKChannelMonitor arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelMonitor_clone_ptr(&arg_conv);
-       return ret_val;
+
+uint32_t  __attribute__((visibility("default"))) TS_Level_trace() {
+       uint32_t ret_conv = LDKLevel_to_js(Level_trace());
+       return ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitor_clone(uint32_t orig) {
-       LDKChannelMonitor orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelMonitor ret_var = ChannelMonitor_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_Level_debug() {
+       uint32_t ret_conv = LDKLevel_to_js(Level_debug());
+       return ret_conv;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_write(uint32_t obj) {
-       LDKChannelMonitor obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ChannelMonitor_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_Level_info() {
+       uint32_t ret_conv = LDKLevel_to_js(Level_info());
+       return ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitor_update_monitor(uint32_t this_arg, uint32_t updates, uint32_t broadcaster, uint32_t fee_estimator, uint32_t logger) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKChannelMonitorUpdate updates_conv;
-       updates_conv.inner = (void*)(updates & (~1));
-       updates_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(updates_conv);
-       void* broadcaster_ptr = (void*)(((uint64_t)broadcaster) & ~1);
-       if (!(broadcaster & 1)) { CHECK_ACCESS(broadcaster_ptr); }
-       LDKBroadcasterInterface* broadcaster_conv = (LDKBroadcasterInterface*)broadcaster_ptr;
-       void* fee_estimator_ptr = (void*)(((uint64_t)fee_estimator) & ~1);
-       if (!(fee_estimator & 1)) { CHECK_ACCESS(fee_estimator_ptr); }
-       LDKFeeEstimator* fee_estimator_conv = (LDKFeeEstimator*)fee_estimator_ptr;
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       if (!(logger & 1)) { CHECK_ACCESS(logger_ptr); }
-       LDKLogger* logger_conv = (LDKLogger*)logger_ptr;
-       LDKCResult_NoneNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneNoneZ), "LDKCResult_NoneNoneZ");
-       *ret_conv = ChannelMonitor_update_monitor(&this_arg_conv, &updates_conv, broadcaster_conv, fee_estimator_conv, logger_conv);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_Level_warn() {
+       uint32_t ret_conv = LDKLevel_to_js(Level_warn());
+       return ret_conv;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ChannelMonitor_get_latest_update_id(uint32_t this_arg) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = ChannelMonitor_get_latest_update_id(&this_arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_Level_error() {
+       uint32_t ret_conv = LDKLevel_to_js(Level_error());
+       return ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitor_get_funding_txo(uint32_t this_arg) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKC2Tuple_OutPointScriptZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_OutPointScriptZ), "LDKC2Tuple_OutPointScriptZ");
-       *ret_conv = ChannelMonitor_get_funding_txo(&this_arg_conv);
-       return ((uint64_t)ret_conv);
+jboolean  __attribute__((visibility("default"))) TS_Level_eq(uint32_t a, uint32_t b) {
+       LDKLevel* a_conv = (LDKLevel*)(a & ~1);
+       LDKLevel* b_conv = (LDKLevel*)(b & ~1);
+       jboolean ret_val = Level_eq(a_conv, b_conv);
+       return ret_val;
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_get_outputs_to_watch(uint32_t this_arg) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ ret_var = ChannelMonitor_get_outputs_to_watch(&this_arg_conv);
-       uint32_tArray ret_arr = NULL;
-       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 o = 0; o < ret_var.datalen; o++) {
-               LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* ret_conv_40_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ");
-               *ret_conv_40_conv = ret_var.data[o];
-               ret_arr_ptr[o] = ((uint64_t)ret_conv_40_conv);
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+int64_t  __attribute__((visibility("default"))) TS_Level_hash(uint32_t o) {
+       LDKLevel* o_conv = (LDKLevel*)(o & ~1);
+       int64_t ret_val = Level_hash(o_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMonitor_load_outputs_to_watch(uint32_t this_arg, uint32_t filter) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       void* filter_ptr = (void*)(((uint64_t)filter) & ~1);
-       if (!(filter & 1)) { CHECK_ACCESS(filter_ptr); }
-       LDKFilter* filter_conv = (LDKFilter*)filter_ptr;
-       ChannelMonitor_load_outputs_to_watch(&this_arg_conv, filter_conv);
+uint32_t  __attribute__((visibility("default"))) TS_Level_max() {
+       uint32_t ret_conv = LDKLevel_to_js(Level_max());
+       return ret_conv;
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_get_and_clear_pending_monitor_events(uint32_t this_arg) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCVec_MonitorEventZ ret_var = ChannelMonitor_get_and_clear_pending_monitor_events(&this_arg_conv);
-       uint32_tArray ret_arr = NULL;
-       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 o = 0; o < ret_var.datalen; o++) {
-               LDKMonitorEvent *ret_conv_14_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
-               *ret_conv_14_copy = ret_var.data[o];
-               uint64_t ret_conv_14_ref = (uint64_t)ret_conv_14_copy;
-               ret_arr_ptr[o] = ret_conv_14_ref;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_Record_free(uint32_t this_obj) {
+       LDKRecord this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       Record_free(this_obj_conv);
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_get_and_clear_pending_events(uint32_t this_arg) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCVec_EventZ ret_var = ChannelMonitor_get_and_clear_pending_events(&this_arg_conv);
-       uint32_tArray ret_arr = NULL;
-       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 *ret_conv_7_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
-               *ret_conv_7_copy = ret_var.data[h];
-               uint64_t ret_conv_7_ref = (uint64_t)ret_conv_7_copy;
-               ret_arr_ptr[h] = ret_conv_7_ref;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_Record_get_level(uint32_t this_ptr) {
+       LDKRecord this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       uint32_t ret_conv = LDKLevel_to_js(Record_get_level(&this_ptr_conv));
+       return ret_conv;
 }
 
-ptrArray  __attribute__((visibility("default"))) TS_ChannelMonitor_get_latest_holder_commitment_txn(uint32_t this_arg, uint32_t logger) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       if (!(logger & 1)) { CHECK_ACCESS(logger_ptr); }
-       LDKLogger* logger_conv = (LDKLogger*)logger_ptr;
-       LDKCVec_TransactionZ ret_var = ChannelMonitor_get_latest_holder_commitment_txn(&this_arg_conv, logger_conv);
-       ptrArray ret_arr = NULL;
-       ret_arr = init_arr(ret_var.datalen, sizeof(uint32_t), "Native ptrArray Bytes");
-       int8_tArray *ret_arr_ptr = (int8_tArray*)(ret_arr + 4);
-       for (size_t m = 0; m < ret_var.datalen; m++) {
-               LDKTransaction ret_conv_12_var = ret_var.data[m];
-               int8_tArray ret_conv_12_arr = init_arr(ret_conv_12_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-               memcpy((uint8_t*)(ret_conv_12_arr + 4), ret_conv_12_var.data, ret_conv_12_var.datalen);
-               Transaction_free(ret_conv_12_var);
-               ret_arr_ptr[m] = ret_conv_12_arr;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_Record_set_level(uint32_t this_ptr, uint32_t val) {
+       LDKRecord this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKLevel val_conv = LDKLevel_from_js(val);
+       Record_set_level(&this_ptr_conv, val_conv);
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_block_connected(uint32_t this_arg, int8_tArray header, uint32_tArray txdata, int32_t height, uint32_t broadcaster, uint32_t fee_estimator, uint32_t logger) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       unsigned char header_arr[80];
-       CHECK(*((uint32_t*)header) == 80);
-       memcpy(header_arr, (uint8_t*)(header + 4), 80);
-       unsigned char (*header_ref)[80] = &header_arr;
-       LDKCVec_C2Tuple_usizeTransactionZZ txdata_constr;
-       txdata_constr.datalen = *((uint32_t*)txdata);
-       if (txdata_constr.datalen > 0)
-               txdata_constr.data = MALLOC(txdata_constr.datalen * sizeof(LDKC2Tuple_usizeTransactionZ), "LDKCVec_C2Tuple_usizeTransactionZZ Elements");
-       else
-               txdata_constr.data = NULL;
-       uint32_t* txdata_vals = (uint32_t*)(txdata + 4);
-       for (size_t c = 0; c < txdata_constr.datalen; c++) {
-               uint32_t txdata_conv_28 = txdata_vals[c];
-               void* txdata_conv_28_ptr = (void*)(((uint64_t)txdata_conv_28) & ~1);
-               CHECK_ACCESS(txdata_conv_28_ptr);
-               LDKC2Tuple_usizeTransactionZ txdata_conv_28_conv = *(LDKC2Tuple_usizeTransactionZ*)(txdata_conv_28_ptr);
-               txdata_conv_28_conv = C2Tuple_usizeTransactionZ_clone((LDKC2Tuple_usizeTransactionZ*)(((uint64_t)txdata_conv_28) & ~1));
-               txdata_constr.data[c] = txdata_conv_28_conv;
-       }
-       void* broadcaster_ptr = (void*)(((uint64_t)broadcaster) & ~1);
-       CHECK_ACCESS(broadcaster_ptr);
-       LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(broadcaster_ptr);
-       void* fee_estimator_ptr = (void*)(((uint64_t)fee_estimator) & ~1);
-       CHECK_ACCESS(fee_estimator_ptr);
-       LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(fee_estimator_ptr);
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       CHECK_ACCESS(logger_ptr);
-       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
-       LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ret_var = ChannelMonitor_block_connected(&this_arg_conv, header_ref, txdata_constr, height, broadcaster_conv, fee_estimator_conv, logger_conv);
-       uint32_tArray ret_arr = NULL;
-       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 n = 0; n < ret_var.datalen; n++) {
-               LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* ret_conv_39_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ");
-               *ret_conv_39_conv = ret_var.data[n];
-               ret_arr_ptr[n] = ((uint64_t)ret_conv_39_conv);
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+jstring  __attribute__((visibility("default"))) TS_Record_get_args(uint32_t this_ptr) {
+       LDKRecord this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKStr ret_str = Record_get_args(&this_ptr_conv);
+       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
+       Str_free(ret_str);
+       return ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMonitor_block_disconnected(uint32_t this_arg, int8_tArray header, int32_t height, uint32_t broadcaster, uint32_t fee_estimator, uint32_t logger) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       unsigned char header_arr[80];
-       CHECK(*((uint32_t*)header) == 80);
-       memcpy(header_arr, (uint8_t*)(header + 4), 80);
-       unsigned char (*header_ref)[80] = &header_arr;
-       void* broadcaster_ptr = (void*)(((uint64_t)broadcaster) & ~1);
-       CHECK_ACCESS(broadcaster_ptr);
-       LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(broadcaster_ptr);
-       void* fee_estimator_ptr = (void*)(((uint64_t)fee_estimator) & ~1);
-       CHECK_ACCESS(fee_estimator_ptr);
-       LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(fee_estimator_ptr);
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       CHECK_ACCESS(logger_ptr);
-       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
-       ChannelMonitor_block_disconnected(&this_arg_conv, header_ref, height, broadcaster_conv, fee_estimator_conv, logger_conv);
+void  __attribute__((visibility("default"))) TS_Record_set_args(uint32_t this_ptr, jstring val) {
+       LDKRecord this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKStr val_conv = str_ref_to_owned_c(val);
+       Record_set_args(&this_ptr_conv, val_conv);
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_transactions_confirmed(uint32_t this_arg, int8_tArray header, uint32_tArray txdata, int32_t height, uint32_t broadcaster, uint32_t fee_estimator, uint32_t logger) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       unsigned char header_arr[80];
-       CHECK(*((uint32_t*)header) == 80);
-       memcpy(header_arr, (uint8_t*)(header + 4), 80);
-       unsigned char (*header_ref)[80] = &header_arr;
-       LDKCVec_C2Tuple_usizeTransactionZZ txdata_constr;
-       txdata_constr.datalen = *((uint32_t*)txdata);
-       if (txdata_constr.datalen > 0)
-               txdata_constr.data = MALLOC(txdata_constr.datalen * sizeof(LDKC2Tuple_usizeTransactionZ), "LDKCVec_C2Tuple_usizeTransactionZZ Elements");
-       else
-               txdata_constr.data = NULL;
-       uint32_t* txdata_vals = (uint32_t*)(txdata + 4);
-       for (size_t c = 0; c < txdata_constr.datalen; c++) {
-               uint32_t txdata_conv_28 = txdata_vals[c];
-               void* txdata_conv_28_ptr = (void*)(((uint64_t)txdata_conv_28) & ~1);
-               CHECK_ACCESS(txdata_conv_28_ptr);
-               LDKC2Tuple_usizeTransactionZ txdata_conv_28_conv = *(LDKC2Tuple_usizeTransactionZ*)(txdata_conv_28_ptr);
-               txdata_conv_28_conv = C2Tuple_usizeTransactionZ_clone((LDKC2Tuple_usizeTransactionZ*)(((uint64_t)txdata_conv_28) & ~1));
-               txdata_constr.data[c] = txdata_conv_28_conv;
-       }
-       void* broadcaster_ptr = (void*)(((uint64_t)broadcaster) & ~1);
-       CHECK_ACCESS(broadcaster_ptr);
-       LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(broadcaster_ptr);
-       void* fee_estimator_ptr = (void*)(((uint64_t)fee_estimator) & ~1);
-       CHECK_ACCESS(fee_estimator_ptr);
-       LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(fee_estimator_ptr);
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       CHECK_ACCESS(logger_ptr);
-       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
-       LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ret_var = ChannelMonitor_transactions_confirmed(&this_arg_conv, header_ref, txdata_constr, height, broadcaster_conv, fee_estimator_conv, logger_conv);
-       uint32_tArray ret_arr = NULL;
-       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 n = 0; n < ret_var.datalen; n++) {
-               LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* ret_conv_39_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ");
-               *ret_conv_39_conv = ret_var.data[n];
-               ret_arr_ptr[n] = ((uint64_t)ret_conv_39_conv);
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+jstring  __attribute__((visibility("default"))) TS_Record_get_module_path(uint32_t this_ptr) {
+       LDKRecord this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKStr ret_str = Record_get_module_path(&this_ptr_conv);
+       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
+       Str_free(ret_str);
+       return ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMonitor_transaction_unconfirmed(uint32_t this_arg, int8_tArray txid, uint32_t broadcaster, uint32_t fee_estimator, uint32_t logger) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       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;
-       void* broadcaster_ptr = (void*)(((uint64_t)broadcaster) & ~1);
-       CHECK_ACCESS(broadcaster_ptr);
-       LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(broadcaster_ptr);
-       void* fee_estimator_ptr = (void*)(((uint64_t)fee_estimator) & ~1);
-       CHECK_ACCESS(fee_estimator_ptr);
-       LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(fee_estimator_ptr);
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       CHECK_ACCESS(logger_ptr);
-       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
-       ChannelMonitor_transaction_unconfirmed(&this_arg_conv, txid_ref, broadcaster_conv, fee_estimator_conv, logger_conv);
+void  __attribute__((visibility("default"))) TS_Record_set_module_path(uint32_t this_ptr, jstring val) {
+       LDKRecord this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKStr val_conv = str_ref_to_owned_c(val);
+       Record_set_module_path(&this_ptr_conv, val_conv);
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_best_block_updated(uint32_t this_arg, int8_tArray header, int32_t height, uint32_t broadcaster, uint32_t fee_estimator, uint32_t logger) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       unsigned char header_arr[80];
-       CHECK(*((uint32_t*)header) == 80);
-       memcpy(header_arr, (uint8_t*)(header + 4), 80);
-       unsigned char (*header_ref)[80] = &header_arr;
-       void* broadcaster_ptr = (void*)(((uint64_t)broadcaster) & ~1);
-       CHECK_ACCESS(broadcaster_ptr);
-       LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(broadcaster_ptr);
-       void* fee_estimator_ptr = (void*)(((uint64_t)fee_estimator) & ~1);
-       CHECK_ACCESS(fee_estimator_ptr);
-       LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(fee_estimator_ptr);
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       CHECK_ACCESS(logger_ptr);
-       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
-       LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ret_var = ChannelMonitor_best_block_updated(&this_arg_conv, header_ref, height, broadcaster_conv, fee_estimator_conv, logger_conv);
-       uint32_tArray ret_arr = NULL;
-       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 n = 0; n < ret_var.datalen; n++) {
-               LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* ret_conv_39_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ");
-               *ret_conv_39_conv = ret_var.data[n];
-               ret_arr_ptr[n] = ((uint64_t)ret_conv_39_conv);
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+jstring  __attribute__((visibility("default"))) TS_Record_get_file(uint32_t this_ptr) {
+       LDKRecord this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKStr ret_str = Record_get_file(&this_ptr_conv);
+       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
+       Str_free(ret_str);
+       return ret_conv;
 }
 
-ptrArray  __attribute__((visibility("default"))) TS_ChannelMonitor_get_relevant_txids(uint32_t this_arg) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCVec_TxidZ ret_var = ChannelMonitor_get_relevant_txids(&this_arg_conv);
-       ptrArray ret_arr = NULL;
-       ret_arr = init_arr(ret_var.datalen, sizeof(uint32_t), "Native ptrArray Bytes");
-       int8_tArray *ret_arr_ptr = (int8_tArray*)(ret_arr + 4);
-       for (size_t m = 0; m < ret_var.datalen; m++) {
-               int8_tArray ret_conv_12_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-               memcpy((uint8_t*)(ret_conv_12_arr + 4), ret_var.data[m].data, 32);
-               ret_arr_ptr[m] = ret_conv_12_arr;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_Record_set_file(uint32_t this_ptr, jstring val) {
+       LDKRecord this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKStr val_conv = str_ref_to_owned_c(val);
+       Record_set_file(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitor_current_best_block(uint32_t this_arg) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKBestBlock ret_var = ChannelMonitor_current_best_block(&this_arg_conv);
+int32_t  __attribute__((visibility("default"))) TS_Record_get_line(uint32_t this_ptr) {
+       LDKRecord this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = Record_get_line(&this_ptr_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_Record_set_line(uint32_t this_ptr, int32_t val) {
+       LDKRecord this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       Record_set_line(&this_ptr_conv, val);
+}
+
+static inline uint64_t Record_clone_ptr(LDKRecord *NONNULL_PTR arg) {
+       LDKRecord ret_var = Record_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_Record_clone_ptr(uint32_t arg) {
+       LDKRecord arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = Record_clone_ptr(&arg_conv);
+       return ret_val;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_Record_clone(uint32_t orig) {
+       LDKRecord orig_conv;
+       orig_conv.inner = (void*)(orig & (~1));
+       orig_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKRecord ret_var = Record_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -19624,89 +17078,76 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitor_current_best_
        return ret_ref;
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_get_claimable_balances(uint32_t this_arg) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCVec_BalanceZ ret_var = ChannelMonitor_get_claimable_balances(&this_arg_conv);
-       uint32_tArray ret_arr = NULL;
-       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 j = 0; j < ret_var.datalen; j++) {
-               LDKBalance *ret_conv_9_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
-               *ret_conv_9_copy = ret_var.data[j];
-               uint64_t ret_conv_9_ref = (uint64_t)ret_conv_9_copy;
-               ret_arr_ptr[j] = ret_conv_9_ref;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_read(int8_tArray ser, uint32_t arg) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       void* arg_ptr = (void*)(((uint64_t)arg) & ~1);
-       if (!(arg & 1)) { CHECK_ACCESS(arg_ptr); }
-       LDKKeysInterface* arg_conv = (LDKKeysInterface*)arg_ptr;
-       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ");
-       *ret_conv = C2Tuple_BlockHashChannelMonitorZ_read(ser_ref, arg_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_Logger_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKLogger this_ptr_conv = *(LDKLogger*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       Logger_free(this_ptr_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_OutPoint_free(uint32_t this_obj) {
-       LDKOutPoint this_obj_conv;
+void  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_free(uint32_t this_obj) {
+       LDKChannelHandshakeConfig this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       OutPoint_free(this_obj_conv);
+       ChannelHandshakeConfig_free(this_obj_conv);
+}
+
+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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = ChannelHandshakeConfig_get_minimum_depth(&this_ptr_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_OutPoint_get_txid(uint32_t this_ptr) {
-       LDKOutPoint this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_set_minimum_depth(uint32_t this_ptr, int32_t val) {
+       LDKChannelHandshakeConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *OutPoint_get_txid(&this_ptr_conv), 32);
-       return ret_arr;
+       ChannelHandshakeConfig_set_minimum_depth(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_OutPoint_set_txid(uint32_t this_ptr, int8_tArray val) {
-       LDKOutPoint this_ptr_conv;
+int16_t  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_get_our_to_self_delay(uint32_t this_ptr) {
+       LDKChannelHandshakeConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       OutPoint_set_txid(&this_ptr_conv, val_ref);
+       int16_t ret_val = ChannelHandshakeConfig_get_our_to_self_delay(&this_ptr_conv);
+       return ret_val;
 }
 
-int16_t  __attribute__((visibility("default"))) TS_OutPoint_get_index(uint32_t this_ptr) {
-       LDKOutPoint this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_set_our_to_self_delay(uint32_t this_ptr, int16_t val) {
+       LDKChannelHandshakeConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = OutPoint_get_index(&this_ptr_conv);
+       ChannelHandshakeConfig_set_our_to_self_delay(&this_ptr_conv, val);
+}
+
+int64_t  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_get_our_htlc_minimum_msat(uint32_t this_ptr) {
+       LDKChannelHandshakeConfig this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = ChannelHandshakeConfig_get_our_htlc_minimum_msat(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_OutPoint_set_index(uint32_t this_ptr, int16_t val) {
-       LDKOutPoint this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_set_our_htlc_minimum_msat(uint32_t this_ptr, int64_t val) {
+       LDKChannelHandshakeConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       OutPoint_set_index(&this_ptr_conv, val);
+       ChannelHandshakeConfig_set_our_htlc_minimum_msat(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_OutPoint_new(int8_tArray txid_arg, int16_t index_arg) {
-       LDKThirtyTwoBytes txid_arg_ref;
-       CHECK(*((uint32_t*)txid_arg) == 32);
-       memcpy(txid_arg_ref.data, (uint8_t*)(txid_arg + 4), 32);
-       LDKOutPoint ret_var = OutPoint_new(txid_arg_ref, index_arg);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_new(int32_t minimum_depth_arg, int16_t our_to_self_delay_arg, int64_t our_htlc_minimum_msat_arg) {
+       LDKChannelHandshakeConfig ret_var = ChannelHandshakeConfig_new(minimum_depth_arg, our_to_self_delay_arg, our_htlc_minimum_msat_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -19718,8 +17159,8 @@ uint32_t  __attribute__((visibility("default"))) TS_OutPoint_new(int8_tArray txi
        return ret_ref;
 }
 
-static inline uint64_t OutPoint_clone_ptr(LDKOutPoint *NONNULL_PTR arg) {
-       LDKOutPoint ret_var = OutPoint_clone(arg);
+static inline uint64_t ChannelHandshakeConfig_clone_ptr(LDKChannelHandshakeConfig *NONNULL_PTR arg) {
+       LDKChannelHandshakeConfig ret_var = ChannelHandshakeConfig_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -19730,21 +17171,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_OutPoint_clone_ptr(uint32_t arg) {
-       LDKOutPoint arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_clone_ptr(uint32_t arg) {
+       LDKChannelHandshakeConfig arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = OutPoint_clone_ptr(&arg_conv);
+       int64_t ret_val = ChannelHandshakeConfig_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_OutPoint_clone(uint32_t orig) {
-       LDKOutPoint orig_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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKOutPoint ret_var = OutPoint_clone(&orig_conv);
+       LDKChannelHandshakeConfig ret_var = ChannelHandshakeConfig_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -19756,73 +17197,216 @@ uint32_t  __attribute__((visibility("default"))) TS_OutPoint_clone(uint32_t orig
        return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_OutPoint_eq(uint32_t a, uint32_t b) {
-       LDKOutPoint a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKOutPoint b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = OutPoint_eq(&a_conv, &b_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_default() {
+       LDKChannelHandshakeConfig ret_var = ChannelHandshakeConfig_default();
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_free(uint32_t this_obj) {
+       LDKChannelHandshakeLimits this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       ChannelHandshakeLimits_free(this_obj_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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = ChannelHandshakeLimits_get_min_funding_satoshis(&this_ptr_conv);
        return ret_val;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_OutPoint_hash(uint32_t o) {
-       LDKOutPoint o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = OutPoint_hash(&o_conv);
+void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_min_funding_satoshis(uint32_t this_ptr, int64_t val) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ChannelHandshakeLimits_set_min_funding_satoshis(&this_ptr_conv, val);
+}
+
+int64_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_get_max_htlc_minimum_msat(uint32_t this_ptr) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = ChannelHandshakeLimits_get_max_htlc_minimum_msat(&this_ptr_conv);
        return ret_val;
 }
 
-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));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), OutPoint_to_channel_id(&this_arg_conv).data, 32);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_max_htlc_minimum_msat(uint32_t this_ptr, int64_t val) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ChannelHandshakeLimits_set_max_htlc_minimum_msat(&this_ptr_conv, val);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_OutPoint_write(uint32_t obj) {
-       LDKOutPoint obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = OutPoint_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+int64_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_get_min_max_htlc_value_in_flight_msat(uint32_t this_ptr) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = ChannelHandshakeLimits_get_min_max_htlc_value_in_flight_msat(&this_ptr_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_min_max_htlc_value_in_flight_msat(uint32_t this_ptr, int64_t val) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ChannelHandshakeLimits_set_min_max_htlc_value_in_flight_msat(&this_ptr_conv, val);
+}
+
+int64_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_get_max_channel_reserve_satoshis(uint32_t this_ptr) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = ChannelHandshakeLimits_get_max_channel_reserve_satoshis(&this_ptr_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_max_channel_reserve_satoshis(uint32_t this_ptr, int64_t val) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ChannelHandshakeLimits_set_max_channel_reserve_satoshis(&this_ptr_conv, val);
+}
+
+int16_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_get_min_max_accepted_htlcs(uint32_t this_ptr) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int16_t ret_val = ChannelHandshakeLimits_get_min_max_accepted_htlcs(&this_ptr_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_min_max_accepted_htlcs(uint32_t this_ptr, int16_t val) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ChannelHandshakeLimits_set_min_max_accepted_htlcs(&this_ptr_conv, val);
+}
+
+int32_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_get_max_minimum_depth(uint32_t this_ptr) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = ChannelHandshakeLimits_get_max_minimum_depth(&this_ptr_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_max_minimum_depth(uint32_t this_ptr, int32_t val) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ChannelHandshakeLimits_set_max_minimum_depth(&this_ptr_conv, val);
+}
+
+jboolean  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_get_force_announced_channel_preference(uint32_t this_ptr) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       jboolean ret_val = ChannelHandshakeLimits_get_force_announced_channel_preference(&this_ptr_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_force_announced_channel_preference(uint32_t this_ptr, jboolean val) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ChannelHandshakeLimits_set_force_announced_channel_preference(&this_ptr_conv, val);
+}
+
+int16_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_get_their_to_self_delay(uint32_t this_ptr) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int16_t ret_val = ChannelHandshakeLimits_get_their_to_self_delay(&this_ptr_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_their_to_self_delay(uint32_t this_ptr, int16_t val) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ChannelHandshakeLimits_set_their_to_self_delay(&this_ptr_conv, val);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_new(int64_t min_funding_satoshis_arg, int64_t max_htlc_minimum_msat_arg, int64_t min_max_htlc_value_in_flight_msat_arg, int64_t max_channel_reserve_satoshis_arg, int16_t min_max_accepted_htlcs_arg, int32_t max_minimum_depth_arg, jboolean force_announced_channel_preference_arg, int16_t their_to_self_delay_arg) {
+       LDKChannelHandshakeLimits ret_var = 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, max_minimum_depth_arg, force_announced_channel_preference_arg, their_to_self_delay_arg);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+static inline uint64_t ChannelHandshakeLimits_clone_ptr(LDKChannelHandshakeLimits *NONNULL_PTR arg) {
+       LDKChannelHandshakeLimits ret_var = ChannelHandshakeLimits_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_OutPoint_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_OutPointDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OutPointDecodeErrorZ), "LDKCResult_OutPointDecodeErrorZ");
-       *ret_conv = OutPoint_read(ser_ref);
-       return (uint64_t)ret_conv;
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_clone_ptr(uint32_t arg) {
+       LDKChannelHandshakeLimits arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ChannelHandshakeLimits_clone_ptr(&arg_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_free(uint32_t this_obj) {
-       LDKDelayedPaymentOutputDescriptor this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       DelayedPaymentOutputDescriptor_free(this_obj_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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKChannelHandshakeLimits ret_var = ChannelHandshakeLimits_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_get_outpoint(uint32_t this_ptr) {
-       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKOutPoint ret_var = DelayedPaymentOutputDescriptor_get_outpoint(&this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_default() {
+       LDKChannelHandshakeLimits ret_var = ChannelHandshakeLimits_default();
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -19834,148 +17418,135 @@ uint32_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescript
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_set_outpoint(uint32_t this_ptr, uint32_t val) {
-       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelConfig_free(uint32_t this_obj) {
+       LDKChannelConfig this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       ChannelConfig_free(this_obj_conv);
+}
+
+int32_t  __attribute__((visibility("default"))) TS_ChannelConfig_get_forwarding_fee_proportional_millionths(uint32_t this_ptr) {
+       LDKChannelConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKOutPoint val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = OutPoint_clone(&val_conv);
-       DelayedPaymentOutputDescriptor_set_outpoint(&this_ptr_conv, val_conv);
+       int32_t ret_val = ChannelConfig_get_forwarding_fee_proportional_millionths(&this_ptr_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_get_per_commitment_point(uint32_t this_ptr) {
-       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelConfig_set_forwarding_fee_proportional_millionths(uint32_t this_ptr, int32_t val) {
+       LDKChannelConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), DelayedPaymentOutputDescriptor_get_per_commitment_point(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       ChannelConfig_set_forwarding_fee_proportional_millionths(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_set_per_commitment_point(uint32_t this_ptr, int8_tArray val) {
-       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
+int32_t  __attribute__((visibility("default"))) TS_ChannelConfig_get_forwarding_fee_base_msat(uint32_t this_ptr) {
+       LDKChannelConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       DelayedPaymentOutputDescriptor_set_per_commitment_point(&this_ptr_conv, val_ref);
+       int32_t ret_val = ChannelConfig_get_forwarding_fee_base_msat(&this_ptr_conv);
+       return ret_val;
 }
 
-int16_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_get_to_self_delay(uint32_t this_ptr) {
-       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelConfig_set_forwarding_fee_base_msat(uint32_t this_ptr, int32_t val) {
+       LDKChannelConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = DelayedPaymentOutputDescriptor_get_to_self_delay(&this_ptr_conv);
+       ChannelConfig_set_forwarding_fee_base_msat(&this_ptr_conv, val);
+}
+
+int16_t  __attribute__((visibility("default"))) TS_ChannelConfig_get_cltv_expiry_delta(uint32_t this_ptr) {
+       LDKChannelConfig this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int16_t ret_val = ChannelConfig_get_cltv_expiry_delta(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_set_to_self_delay(uint32_t this_ptr, int16_t val) {
-       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelConfig_set_cltv_expiry_delta(uint32_t this_ptr, int16_t val) {
+       LDKChannelConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       DelayedPaymentOutputDescriptor_set_to_self_delay(&this_ptr_conv, val);
+       ChannelConfig_set_cltv_expiry_delta(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_set_output(uint32_t this_ptr, uint32_t val) {
-       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
+jboolean  __attribute__((visibility("default"))) TS_ChannelConfig_get_announced_channel(uint32_t this_ptr) {
+       LDKChannelConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKTxOut val_conv = *(LDKTxOut*)(val_ptr);
-       val_conv = TxOut_clone((LDKTxOut*)(((uint64_t)val) & ~1));
-       DelayedPaymentOutputDescriptor_set_output(&this_ptr_conv, val_conv);
+       jboolean ret_val = ChannelConfig_get_announced_channel(&this_ptr_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_get_revocation_pubkey(uint32_t this_ptr) {
-       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelConfig_set_announced_channel(uint32_t this_ptr, jboolean val) {
+       LDKChannelConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), DelayedPaymentOutputDescriptor_get_revocation_pubkey(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       ChannelConfig_set_announced_channel(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_set_revocation_pubkey(uint32_t this_ptr, int8_tArray val) {
-       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
+jboolean  __attribute__((visibility("default"))) TS_ChannelConfig_get_commit_upfront_shutdown_pubkey(uint32_t this_ptr) {
+       LDKChannelConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       DelayedPaymentOutputDescriptor_set_revocation_pubkey(&this_ptr_conv, val_ref);
+       jboolean ret_val = ChannelConfig_get_commit_upfront_shutdown_pubkey(&this_ptr_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_get_channel_keys_id(uint32_t this_ptr) {
-       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelConfig_set_commit_upfront_shutdown_pubkey(uint32_t this_ptr, jboolean val) {
+       LDKChannelConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *DelayedPaymentOutputDescriptor_get_channel_keys_id(&this_ptr_conv), 32);
-       return ret_arr;
+       ChannelConfig_set_commit_upfront_shutdown_pubkey(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_set_channel_keys_id(uint32_t this_ptr, int8_tArray val) {
-       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelConfig_get_max_dust_htlc_exposure_msat(uint32_t this_ptr) {
+       LDKChannelConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       DelayedPaymentOutputDescriptor_set_channel_keys_id(&this_ptr_conv, val_ref);
+       int64_t ret_val = ChannelConfig_get_max_dust_htlc_exposure_msat(&this_ptr_conv);
+       return ret_val;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_get_channel_value_satoshis(uint32_t this_ptr) {
-       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelConfig_set_max_dust_htlc_exposure_msat(uint32_t this_ptr, int64_t val) {
+       LDKChannelConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = DelayedPaymentOutputDescriptor_get_channel_value_satoshis(&this_ptr_conv);
+       ChannelConfig_set_max_dust_htlc_exposure_msat(&this_ptr_conv, val);
+}
+
+int64_t  __attribute__((visibility("default"))) TS_ChannelConfig_get_force_close_avoidance_max_fee_satoshis(uint32_t this_ptr) {
+       LDKChannelConfig this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = ChannelConfig_get_force_close_avoidance_max_fee_satoshis(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_set_channel_value_satoshis(uint32_t this_ptr, int64_t val) {
-       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelConfig_set_force_close_avoidance_max_fee_satoshis(uint32_t this_ptr, int64_t val) {
+       LDKChannelConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       DelayedPaymentOutputDescriptor_set_channel_value_satoshis(&this_ptr_conv, val);
+       ChannelConfig_set_force_close_avoidance_max_fee_satoshis(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_new(uint32_t outpoint_arg, int8_tArray per_commitment_point_arg, int16_t to_self_delay_arg, uint32_t output_arg, int8_tArray revocation_pubkey_arg, int8_tArray channel_keys_id_arg, int64_t channel_value_satoshis_arg) {
-       LDKOutPoint outpoint_arg_conv;
-       outpoint_arg_conv.inner = (void*)(outpoint_arg & (~1));
-       outpoint_arg_conv.is_owned = (outpoint_arg & 1) || (outpoint_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(outpoint_arg_conv);
-       outpoint_arg_conv = OutPoint_clone(&outpoint_arg_conv);
-       LDKPublicKey per_commitment_point_arg_ref;
-       CHECK(*((uint32_t*)per_commitment_point_arg) == 33);
-       memcpy(per_commitment_point_arg_ref.compressed_form, (uint8_t*)(per_commitment_point_arg + 4), 33);
-       void* output_arg_ptr = (void*)(((uint64_t)output_arg) & ~1);
-       CHECK_ACCESS(output_arg_ptr);
-       LDKTxOut output_arg_conv = *(LDKTxOut*)(output_arg_ptr);
-       output_arg_conv = TxOut_clone((LDKTxOut*)(((uint64_t)output_arg) & ~1));
-       LDKPublicKey revocation_pubkey_arg_ref;
-       CHECK(*((uint32_t*)revocation_pubkey_arg) == 33);
-       memcpy(revocation_pubkey_arg_ref.compressed_form, (uint8_t*)(revocation_pubkey_arg + 4), 33);
-       LDKThirtyTwoBytes channel_keys_id_arg_ref;
-       CHECK(*((uint32_t*)channel_keys_id_arg) == 32);
-       memcpy(channel_keys_id_arg_ref.data, (uint8_t*)(channel_keys_id_arg + 4), 32);
-       LDKDelayedPaymentOutputDescriptor ret_var = DelayedPaymentOutputDescriptor_new(outpoint_arg_conv, per_commitment_point_arg_ref, to_self_delay_arg, output_arg_conv, revocation_pubkey_arg_ref, channel_keys_id_arg_ref, channel_value_satoshis_arg);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelConfig_new(int32_t forwarding_fee_proportional_millionths_arg, int32_t forwarding_fee_base_msat_arg, int16_t cltv_expiry_delta_arg, jboolean announced_channel_arg, jboolean commit_upfront_shutdown_pubkey_arg, int64_t max_dust_htlc_exposure_msat_arg, int64_t force_close_avoidance_max_fee_satoshis_arg) {
+       LDKChannelConfig ret_var = ChannelConfig_new(forwarding_fee_proportional_millionths_arg, forwarding_fee_base_msat_arg, cltv_expiry_delta_arg, announced_channel_arg, commit_upfront_shutdown_pubkey_arg, max_dust_htlc_exposure_msat_arg, force_close_avoidance_max_fee_satoshis_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -19987,8 +17558,8 @@ uint32_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescript
        return ret_ref;
 }
 
-static inline uint64_t DelayedPaymentOutputDescriptor_clone_ptr(LDKDelayedPaymentOutputDescriptor *NONNULL_PTR arg) {
-       LDKDelayedPaymentOutputDescriptor ret_var = DelayedPaymentOutputDescriptor_clone(arg);
+static inline uint64_t ChannelConfig_clone_ptr(LDKChannelConfig *NONNULL_PTR arg) {
+       LDKChannelConfig ret_var = ChannelConfig_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -19999,21 +17570,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_clone_ptr(uint32_t arg) {
-       LDKDelayedPaymentOutputDescriptor arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelConfig_clone_ptr(uint32_t arg) {
+       LDKChannelConfig arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = DelayedPaymentOutputDescriptor_clone_ptr(&arg_conv);
+       int64_t ret_val = ChannelConfig_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_clone(uint32_t orig) {
-       LDKDelayedPaymentOutputDescriptor orig_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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKDelayedPaymentOutputDescriptor ret_var = DelayedPaymentOutputDescriptor_clone(&orig_conv);
+       LDKChannelConfig ret_var = ChannelConfig_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -20025,41 +17596,84 @@ uint32_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescript
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_write(uint32_t obj) {
-       LDKDelayedPaymentOutputDescriptor obj_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelConfig_default() {
+       LDKChannelConfig ret_var = ChannelConfig_default();
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelConfig_write(uint32_t obj) {
+       LDKChannelConfig obj_conv;
        obj_conv.inner = (void*)(obj & (~1));
        obj_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = DelayedPaymentOutputDescriptor_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       LDKCVec_u8Z ret_var = ChannelConfig_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_read(int8_tArray ser) {
+uint32_t  __attribute__((visibility("default"))) TS_ChannelConfig_read(int8_tArray ser) {
        LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ");
-       *ret_conv = DelayedPaymentOutputDescriptor_read(ser_ref);
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ChannelConfigDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelConfigDecodeErrorZ), "LDKCResult_ChannelConfigDecodeErrorZ");
+       *ret_conv = ChannelConfig_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_free(uint32_t this_obj) {
-       LDKStaticPaymentOutputDescriptor this_obj_conv;
+void  __attribute__((visibility("default"))) TS_UserConfig_free(uint32_t this_obj) {
+       LDKUserConfig this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       StaticPaymentOutputDescriptor_free(this_obj_conv);
+       UserConfig_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_get_outpoint(uint32_t this_ptr) {
-       LDKStaticPaymentOutputDescriptor this_ptr_conv;
+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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKChannelHandshakeConfig ret_var = UserConfig_get_own_channel_config(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+void  __attribute__((visibility("default"))) TS_UserConfig_set_own_channel_config(uint32_t this_ptr, uint32_t val) {
+       LDKUserConfig this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKChannelHandshakeConfig val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = ChannelHandshakeConfig_clone(&val_conv);
+       UserConfig_set_own_channel_config(&this_ptr_conv, val_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_UserConfig_get_peer_channel_config_limits(uint32_t this_ptr) {
+       LDKUserConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKOutPoint ret_var = StaticPaymentOutputDescriptor_get_outpoint(&this_ptr_conv);
+       LDKChannelHandshakeLimits ret_var = UserConfig_get_peer_channel_config_limits(&this_ptr_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -20071,83 +17685,100 @@ uint32_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescripto
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_set_outpoint(uint32_t this_ptr, uint32_t val) {
-       LDKStaticPaymentOutputDescriptor this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UserConfig_set_peer_channel_config_limits(uint32_t this_ptr, uint32_t val) {
+       LDKUserConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKOutPoint val_conv;
+       LDKChannelHandshakeLimits val_conv;
        val_conv.inner = (void*)(val & (~1));
        val_conv.is_owned = (val & 1) || (val == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = OutPoint_clone(&val_conv);
-       StaticPaymentOutputDescriptor_set_outpoint(&this_ptr_conv, val_conv);
+       val_conv = ChannelHandshakeLimits_clone(&val_conv);
+       UserConfig_set_peer_channel_config_limits(&this_ptr_conv, val_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_set_output(uint32_t this_ptr, uint32_t val) {
-       LDKStaticPaymentOutputDescriptor this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_UserConfig_get_channel_options(uint32_t this_ptr) {
+       LDKUserConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKTxOut val_conv = *(LDKTxOut*)(val_ptr);
-       val_conv = TxOut_clone((LDKTxOut*)(((uint64_t)val) & ~1));
-       StaticPaymentOutputDescriptor_set_output(&this_ptr_conv, val_conv);
+       LDKChannelConfig ret_var = UserConfig_get_channel_options(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_get_channel_keys_id(uint32_t this_ptr) {
-       LDKStaticPaymentOutputDescriptor this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UserConfig_set_channel_options(uint32_t this_ptr, uint32_t val) {
+       LDKUserConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *StaticPaymentOutputDescriptor_get_channel_keys_id(&this_ptr_conv), 32);
-       return ret_arr;
+       LDKChannelConfig val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = ChannelConfig_clone(&val_conv);
+       UserConfig_set_channel_options(&this_ptr_conv, val_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_set_channel_keys_id(uint32_t this_ptr, int8_tArray val) {
-       LDKStaticPaymentOutputDescriptor this_ptr_conv;
+jboolean  __attribute__((visibility("default"))) TS_UserConfig_get_accept_forwards_to_priv_channels(uint32_t this_ptr) {
+       LDKUserConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       StaticPaymentOutputDescriptor_set_channel_keys_id(&this_ptr_conv, val_ref);
+       jboolean ret_val = UserConfig_get_accept_forwards_to_priv_channels(&this_ptr_conv);
+       return ret_val;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_get_channel_value_satoshis(uint32_t this_ptr) {
-       LDKStaticPaymentOutputDescriptor this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UserConfig_set_accept_forwards_to_priv_channels(uint32_t this_ptr, jboolean val) {
+       LDKUserConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = StaticPaymentOutputDescriptor_get_channel_value_satoshis(&this_ptr_conv);
+       UserConfig_set_accept_forwards_to_priv_channels(&this_ptr_conv, val);
+}
+
+jboolean  __attribute__((visibility("default"))) TS_UserConfig_get_accept_inbound_channels(uint32_t this_ptr) {
+       LDKUserConfig this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       jboolean ret_val = UserConfig_get_accept_inbound_channels(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_set_channel_value_satoshis(uint32_t this_ptr, int64_t val) {
-       LDKStaticPaymentOutputDescriptor this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UserConfig_set_accept_inbound_channels(uint32_t this_ptr, jboolean val) {
+       LDKUserConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       StaticPaymentOutputDescriptor_set_channel_value_satoshis(&this_ptr_conv, val);
+       UserConfig_set_accept_inbound_channels(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_new(uint32_t outpoint_arg, uint32_t output_arg, int8_tArray channel_keys_id_arg, int64_t channel_value_satoshis_arg) {
-       LDKOutPoint outpoint_arg_conv;
-       outpoint_arg_conv.inner = (void*)(outpoint_arg & (~1));
-       outpoint_arg_conv.is_owned = (outpoint_arg & 1) || (outpoint_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(outpoint_arg_conv);
-       outpoint_arg_conv = OutPoint_clone(&outpoint_arg_conv);
-       void* output_arg_ptr = (void*)(((uint64_t)output_arg) & ~1);
-       CHECK_ACCESS(output_arg_ptr);
-       LDKTxOut output_arg_conv = *(LDKTxOut*)(output_arg_ptr);
-       output_arg_conv = TxOut_clone((LDKTxOut*)(((uint64_t)output_arg) & ~1));
-       LDKThirtyTwoBytes channel_keys_id_arg_ref;
-       CHECK(*((uint32_t*)channel_keys_id_arg) == 32);
-       memcpy(channel_keys_id_arg_ref.data, (uint8_t*)(channel_keys_id_arg + 4), 32);
-       LDKStaticPaymentOutputDescriptor ret_var = StaticPaymentOutputDescriptor_new(outpoint_arg_conv, output_arg_conv, channel_keys_id_arg_ref, channel_value_satoshis_arg);
+uint32_t  __attribute__((visibility("default"))) TS_UserConfig_new(uint32_t own_channel_config_arg, uint32_t peer_channel_config_limits_arg, uint32_t channel_options_arg, jboolean accept_forwards_to_priv_channels_arg, jboolean accept_inbound_channels_arg) {
+       LDKChannelHandshakeConfig own_channel_config_arg_conv;
+       own_channel_config_arg_conv.inner = (void*)(own_channel_config_arg & (~1));
+       own_channel_config_arg_conv.is_owned = (own_channel_config_arg & 1) || (own_channel_config_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(own_channel_config_arg_conv);
+       own_channel_config_arg_conv = ChannelHandshakeConfig_clone(&own_channel_config_arg_conv);
+       LDKChannelHandshakeLimits peer_channel_config_limits_arg_conv;
+       peer_channel_config_limits_arg_conv.inner = (void*)(peer_channel_config_limits_arg & (~1));
+       peer_channel_config_limits_arg_conv.is_owned = (peer_channel_config_limits_arg & 1) || (peer_channel_config_limits_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(peer_channel_config_limits_arg_conv);
+       peer_channel_config_limits_arg_conv = ChannelHandshakeLimits_clone(&peer_channel_config_limits_arg_conv);
+       LDKChannelConfig channel_options_arg_conv;
+       channel_options_arg_conv.inner = (void*)(channel_options_arg & (~1));
+       channel_options_arg_conv.is_owned = (channel_options_arg & 1) || (channel_options_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_options_arg_conv);
+       channel_options_arg_conv = ChannelConfig_clone(&channel_options_arg_conv);
+       LDKUserConfig ret_var = UserConfig_new(own_channel_config_arg_conv, peer_channel_config_limits_arg_conv, channel_options_arg_conv, accept_forwards_to_priv_channels_arg, accept_inbound_channels_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -20159,8 +17790,8 @@ uint32_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescripto
        return ret_ref;
 }
 
-static inline uint64_t StaticPaymentOutputDescriptor_clone_ptr(LDKStaticPaymentOutputDescriptor *NONNULL_PTR arg) {
-       LDKStaticPaymentOutputDescriptor ret_var = StaticPaymentOutputDescriptor_clone(arg);
+static inline uint64_t UserConfig_clone_ptr(LDKUserConfig *NONNULL_PTR arg) {
+       LDKUserConfig ret_var = UserConfig_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -20171,21 +17802,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_clone_ptr(uint32_t arg) {
-       LDKStaticPaymentOutputDescriptor arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_UserConfig_clone_ptr(uint32_t arg) {
+       LDKUserConfig arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = StaticPaymentOutputDescriptor_clone_ptr(&arg_conv);
+       int64_t ret_val = UserConfig_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_clone(uint32_t orig) {
-       LDKStaticPaymentOutputDescriptor orig_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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKStaticPaymentOutputDescriptor ret_var = StaticPaymentOutputDescriptor_clone(&orig_conv);
+       LDKUserConfig ret_var = UserConfig_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -20197,299 +17828,401 @@ uint32_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescripto
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_write(uint32_t obj) {
-       LDKStaticPaymentOutputDescriptor obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = StaticPaymentOutputDescriptor_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_UserConfig_default() {
+       LDKUserConfig ret_var = UserConfig_default();
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ");
-       *ret_conv = StaticPaymentOutputDescriptor_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_BestBlock_free(uint32_t this_obj) {
+       LDKBestBlock this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       BestBlock_free(this_obj_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKSpendableOutputDescriptor this_ptr_conv = *(LDKSpendableOutputDescriptor*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       SpendableOutputDescriptor_free(this_ptr_conv);
+static inline uint64_t BestBlock_clone_ptr(LDKBestBlock *NONNULL_PTR arg) {
+       LDKBestBlock ret_var = BestBlock_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-static inline uint64_t SpendableOutputDescriptor_clone_ptr(LDKSpendableOutputDescriptor *NONNULL_PTR arg) {
-       LDKSpendableOutputDescriptor *ret_copy = MALLOC(sizeof(LDKSpendableOutputDescriptor), "LDKSpendableOutputDescriptor");
-       *ret_copy = SpendableOutputDescriptor_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_clone_ptr(uint32_t arg) {
-       LDKSpendableOutputDescriptor* arg_conv = (LDKSpendableOutputDescriptor*)arg;
-       int64_t ret_val = SpendableOutputDescriptor_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_BestBlock_clone_ptr(uint32_t arg) {
+       LDKBestBlock arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = BestBlock_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_clone(uint32_t orig) {
-       LDKSpendableOutputDescriptor* orig_conv = (LDKSpendableOutputDescriptor*)orig;
-       LDKSpendableOutputDescriptor *ret_copy = MALLOC(sizeof(LDKSpendableOutputDescriptor), "LDKSpendableOutputDescriptor");
-       *ret_copy = SpendableOutputDescriptor_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
+uint32_t  __attribute__((visibility("default"))) TS_BestBlock_clone(uint32_t orig) {
+       LDKBestBlock orig_conv;
+       orig_conv.inner = (void*)(orig & (~1));
+       orig_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKBestBlock ret_var = BestBlock_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_static_output(uint32_t outpoint, uint32_t output) {
-       LDKOutPoint outpoint_conv;
-       outpoint_conv.inner = (void*)(outpoint & (~1));
-       outpoint_conv.is_owned = (outpoint & 1) || (outpoint == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(outpoint_conv);
-       outpoint_conv = OutPoint_clone(&outpoint_conv);
-       void* output_ptr = (void*)(((uint64_t)output) & ~1);
-       CHECK_ACCESS(output_ptr);
-       LDKTxOut output_conv = *(LDKTxOut*)(output_ptr);
-       output_conv = TxOut_clone((LDKTxOut*)(((uint64_t)output) & ~1));
-       LDKSpendableOutputDescriptor *ret_copy = MALLOC(sizeof(LDKSpendableOutputDescriptor), "LDKSpendableOutputDescriptor");
-       *ret_copy = SpendableOutputDescriptor_static_output(outpoint_conv, output_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
+uint32_t  __attribute__((visibility("default"))) TS_BestBlock_from_genesis(uint32_t network) {
+       LDKNetwork network_conv = LDKNetwork_from_js(network);
+       LDKBestBlock ret_var = BestBlock_from_genesis(network_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_delayed_payment_output(uint32_t a) {
-       LDKDelayedPaymentOutputDescriptor a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = (a & 1) || (a == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       a_conv = DelayedPaymentOutputDescriptor_clone(&a_conv);
-       LDKSpendableOutputDescriptor *ret_copy = MALLOC(sizeof(LDKSpendableOutputDescriptor), "LDKSpendableOutputDescriptor");
-       *ret_copy = SpendableOutputDescriptor_delayed_payment_output(a_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
+uint32_t  __attribute__((visibility("default"))) TS_BestBlock_new(int8_tArray block_hash, int32_t height) {
+       LDKThirtyTwoBytes block_hash_ref;
+       CHECK(block_hash->arr_len == 32);
+       memcpy(block_hash_ref.data, block_hash->elems, 32);
+       LDKBestBlock ret_var = BestBlock_new(block_hash_ref, height);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_static_payment_output(uint32_t a) {
-       LDKStaticPaymentOutputDescriptor a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = (a & 1) || (a == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       a_conv = StaticPaymentOutputDescriptor_clone(&a_conv);
-       LDKSpendableOutputDescriptor *ret_copy = MALLOC(sizeof(LDKSpendableOutputDescriptor), "LDKSpendableOutputDescriptor");
-       *ret_copy = SpendableOutputDescriptor_static_payment_output(a_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_BestBlock_block_hash(uint32_t this_arg) {
+       LDKBestBlock this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, BestBlock_block_hash(&this_arg_conv).data, 32);
+       return ret_arr;
+}
+
+int32_t  __attribute__((visibility("default"))) TS_BestBlock_height(uint32_t this_arg) {
+       LDKBestBlock this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int32_t ret_val = BestBlock_height(&this_arg_conv);
+       return ret_val;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_AccessError_clone(uint32_t orig) {
+       LDKAccessError* orig_conv = (LDKAccessError*)(orig & ~1);
+       uint32_t ret_conv = LDKAccessError_to_js(AccessError_clone(orig_conv));
+       return ret_conv;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_write(uint32_t obj) {
-       LDKSpendableOutputDescriptor* obj_conv = (LDKSpendableOutputDescriptor*)obj;
-       LDKCVec_u8Z ret_var = SpendableOutputDescriptor_write(obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_AccessError_unknown_chain() {
+       uint32_t ret_conv = LDKAccessError_to_js(AccessError_unknown_chain());
+       return ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ), "LDKCResult_SpendableOutputDescriptorDecodeErrorZ");
-       *ret_conv = SpendableOutputDescriptor_read(ser_ref);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_AccessError_unknown_tx() {
+       uint32_t ret_conv = LDKAccessError_to_js(AccessError_unknown_tx());
+       return ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_BaseSign_free(uint32_t this_ptr) {
+void  __attribute__((visibility("default"))) TS_Access_free(uint32_t this_ptr) {
        if ((this_ptr & 1) != 0) return;
        void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
        CHECK_ACCESS(this_ptr_ptr);
-       LDKBaseSign this_ptr_conv = *(LDKBaseSign*)(this_ptr_ptr);
+       LDKAccess this_ptr_conv = *(LDKAccess*)(this_ptr_ptr);
        FREE((void*)this_ptr);
-       BaseSign_free(this_ptr_conv);
+       Access_free(this_ptr_conv);
 }
 
-static inline uint64_t Sign_clone_ptr(LDKSign *NONNULL_PTR arg) {
-       LDKSign* ret_ret = MALLOC(sizeof(LDKSign), "LDKSign");
-       *ret_ret = Sign_clone(arg);
-       return (uint64_t)ret_ret;
+void  __attribute__((visibility("default"))) TS_Listen_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKListen this_ptr_conv = *(LDKListen*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       Listen_free(this_ptr_conv);
 }
-int64_t  __attribute__((visibility("default"))) TS_Sign_clone_ptr(uint32_t arg) {
-       void* arg_ptr = (void*)(((uint64_t)arg) & ~1);
-       if (!(arg & 1)) { CHECK_ACCESS(arg_ptr); }
-       LDKSign* arg_conv = (LDKSign*)arg_ptr;
-       int64_t ret_val = Sign_clone_ptr(arg_conv);
-       return ret_val;
+
+void  __attribute__((visibility("default"))) TS_Confirm_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKConfirm this_ptr_conv = *(LDKConfirm*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       Confirm_free(this_ptr_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Sign_clone(uint32_t orig) {
-       void* orig_ptr = (void*)(((uint64_t)orig) & ~1);
-       if (!(orig & 1)) { CHECK_ACCESS(orig_ptr); }
-       LDKSign* orig_conv = (LDKSign*)orig_ptr;
-       LDKSign* ret_ret = MALLOC(sizeof(LDKSign), "LDKSign");
-       *ret_ret = Sign_clone(orig_conv);
-       return (uint64_t)ret_ret;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitorUpdateErr_clone(uint32_t orig) {
+       LDKChannelMonitorUpdateErr* orig_conv = (LDKChannelMonitorUpdateErr*)(orig & ~1);
+       uint32_t ret_conv = LDKChannelMonitorUpdateErr_to_js(ChannelMonitorUpdateErr_clone(orig_conv));
+       return ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_Sign_free(uint32_t this_ptr) {
+uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitorUpdateErr_temporary_failure() {
+       uint32_t ret_conv = LDKChannelMonitorUpdateErr_to_js(ChannelMonitorUpdateErr_temporary_failure());
+       return ret_conv;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitorUpdateErr_permanent_failure() {
+       uint32_t ret_conv = LDKChannelMonitorUpdateErr_to_js(ChannelMonitorUpdateErr_permanent_failure());
+       return ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_Watch_free(uint32_t this_ptr) {
        if ((this_ptr & 1) != 0) return;
        void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
        CHECK_ACCESS(this_ptr_ptr);
-       LDKSign this_ptr_conv = *(LDKSign*)(this_ptr_ptr);
+       LDKWatch this_ptr_conv = *(LDKWatch*)(this_ptr_ptr);
        FREE((void*)this_ptr);
-       Sign_free(this_ptr_conv);
+       Watch_free(this_ptr_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_KeysInterface_free(uint32_t this_ptr) {
+void  __attribute__((visibility("default"))) TS_Filter_free(uint32_t this_ptr) {
        if ((this_ptr & 1) != 0) return;
        void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
        CHECK_ACCESS(this_ptr_ptr);
-       LDKKeysInterface this_ptr_conv = *(LDKKeysInterface*)(this_ptr_ptr);
+       LDKFilter this_ptr_conv = *(LDKFilter*)(this_ptr_ptr);
        FREE((void*)this_ptr);
-       KeysInterface_free(this_ptr_conv);
+       Filter_free(this_ptr_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_InMemorySigner_free(uint32_t this_obj) {
-       LDKInMemorySigner this_obj_conv;
+void  __attribute__((visibility("default"))) TS_WatchedOutput_free(uint32_t this_obj) {
+       LDKWatchedOutput this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       InMemorySigner_free(this_obj_conv);
+       WatchedOutput_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_InMemorySigner_get_funding_key(uint32_t this_ptr) {
-       LDKInMemorySigner this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_WatchedOutput_get_block_hash(uint32_t this_ptr) {
+       LDKWatchedOutput this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *InMemorySigner_get_funding_key(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, WatchedOutput_get_block_hash(&this_ptr_conv).data, 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_InMemorySigner_set_funding_key(uint32_t this_ptr, int8_tArray val) {
-       LDKInMemorySigner this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_WatchedOutput_set_block_hash(uint32_t this_ptr, int8_tArray val) {
+       LDKWatchedOutput this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSecretKey val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.bytes, (uint8_t*)(val + 4), 32);
-       InMemorySigner_set_funding_key(&this_ptr_conv, val_ref);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       WatchedOutput_set_block_hash(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_InMemorySigner_get_revocation_base_key(uint32_t this_ptr) {
-       LDKInMemorySigner this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_WatchedOutput_get_outpoint(uint32_t this_ptr) {
+       LDKWatchedOutput this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *InMemorySigner_get_revocation_base_key(&this_ptr_conv), 32);
-       return ret_arr;
+       LDKOutPoint ret_var = WatchedOutput_get_outpoint(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_InMemorySigner_set_revocation_base_key(uint32_t this_ptr, int8_tArray val) {
-       LDKInMemorySigner this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_WatchedOutput_set_outpoint(uint32_t this_ptr, uint32_t val) {
+       LDKWatchedOutput this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSecretKey val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.bytes, (uint8_t*)(val + 4), 32);
-       InMemorySigner_set_revocation_base_key(&this_ptr_conv, val_ref);
+       LDKOutPoint val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = OutPoint_clone(&val_conv);
+       WatchedOutput_set_outpoint(&this_ptr_conv, val_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_InMemorySigner_get_payment_key(uint32_t this_ptr) {
-       LDKInMemorySigner this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_WatchedOutput_get_script_pubkey(uint32_t this_ptr) {
+       LDKWatchedOutput this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *InMemorySigner_get_payment_key(&this_ptr_conv), 32);
+       LDKu8slice ret_var = WatchedOutput_get_script_pubkey(&this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_InMemorySigner_set_payment_key(uint32_t this_ptr, int8_tArray val) {
-       LDKInMemorySigner this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_WatchedOutput_set_script_pubkey(uint32_t this_ptr, int8_tArray val) {
+       LDKWatchedOutput this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSecretKey val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.bytes, (uint8_t*)(val + 4), 32);
-       InMemorySigner_set_payment_key(&this_ptr_conv, val_ref);
+       LDKCVec_u8Z val_ref;
+       val_ref.datalen = val->arr_len;
+       val_ref.data = MALLOC(val_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(val_ref.data, val->elems, val_ref.datalen);
+       WatchedOutput_set_script_pubkey(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_InMemorySigner_get_delayed_payment_base_key(uint32_t this_ptr) {
-       LDKInMemorySigner this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *InMemorySigner_get_delayed_payment_base_key(&this_ptr_conv), 32);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_WatchedOutput_new(int8_tArray block_hash_arg, uint32_t outpoint_arg, int8_tArray script_pubkey_arg) {
+       LDKThirtyTwoBytes block_hash_arg_ref;
+       CHECK(block_hash_arg->arr_len == 32);
+       memcpy(block_hash_arg_ref.data, block_hash_arg->elems, 32);
+       LDKOutPoint outpoint_arg_conv;
+       outpoint_arg_conv.inner = (void*)(outpoint_arg & (~1));
+       outpoint_arg_conv.is_owned = (outpoint_arg & 1) || (outpoint_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(outpoint_arg_conv);
+       outpoint_arg_conv = OutPoint_clone(&outpoint_arg_conv);
+       LDKCVec_u8Z script_pubkey_arg_ref;
+       script_pubkey_arg_ref.datalen = script_pubkey_arg->arr_len;
+       script_pubkey_arg_ref.data = MALLOC(script_pubkey_arg_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(script_pubkey_arg_ref.data, script_pubkey_arg->elems, script_pubkey_arg_ref.datalen);
+       LDKWatchedOutput ret_var = WatchedOutput_new(block_hash_arg_ref, outpoint_arg_conv, script_pubkey_arg_ref);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_InMemorySigner_set_delayed_payment_base_key(uint32_t this_ptr, int8_tArray val) {
-       LDKInMemorySigner this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSecretKey val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.bytes, (uint8_t*)(val + 4), 32);
-       InMemorySigner_set_delayed_payment_base_key(&this_ptr_conv, val_ref);
+static inline uint64_t WatchedOutput_clone_ptr(LDKWatchedOutput *NONNULL_PTR arg) {
+       LDKWatchedOutput ret_var = WatchedOutput_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_WatchedOutput_clone_ptr(uint32_t arg) {
+       LDKWatchedOutput arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = WatchedOutput_clone_ptr(&arg_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_InMemorySigner_get_htlc_base_key(uint32_t this_ptr) {
-       LDKInMemorySigner this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *InMemorySigner_get_htlc_base_key(&this_ptr_conv), 32);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_WatchedOutput_clone(uint32_t orig) {
+       LDKWatchedOutput orig_conv;
+       orig_conv.inner = (void*)(orig & (~1));
+       orig_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKWatchedOutput ret_var = WatchedOutput_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+int64_t  __attribute__((visibility("default"))) TS_WatchedOutput_hash(uint32_t o) {
+       LDKWatchedOutput o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       int64_t ret_val = WatchedOutput_hash(&o_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_BroadcasterInterface_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKBroadcasterInterface this_ptr_conv = *(LDKBroadcasterInterface*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       BroadcasterInterface_free(this_ptr_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ConfirmationTarget_clone(uint32_t orig) {
+       LDKConfirmationTarget* orig_conv = (LDKConfirmationTarget*)(orig & ~1);
+       uint32_t ret_conv = LDKConfirmationTarget_to_js(ConfirmationTarget_clone(orig_conv));
+       return ret_conv;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ConfirmationTarget_background() {
+       uint32_t ret_conv = LDKConfirmationTarget_to_js(ConfirmationTarget_background());
+       return ret_conv;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ConfirmationTarget_normal() {
+       uint32_t ret_conv = LDKConfirmationTarget_to_js(ConfirmationTarget_normal());
+       return ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_InMemorySigner_set_htlc_base_key(uint32_t this_ptr, int8_tArray val) {
-       LDKInMemorySigner this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSecretKey val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.bytes, (uint8_t*)(val + 4), 32);
-       InMemorySigner_set_htlc_base_key(&this_ptr_conv, val_ref);
+uint32_t  __attribute__((visibility("default"))) TS_ConfirmationTarget_high_priority() {
+       uint32_t ret_conv = LDKConfirmationTarget_to_js(ConfirmationTarget_high_priority());
+       return ret_conv;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_InMemorySigner_get_commitment_seed(uint32_t this_ptr) {
-       LDKInMemorySigner this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *InMemorySigner_get_commitment_seed(&this_ptr_conv), 32);
-       return ret_arr;
+jboolean  __attribute__((visibility("default"))) TS_ConfirmationTarget_eq(uint32_t a, uint32_t b) {
+       LDKConfirmationTarget* a_conv = (LDKConfirmationTarget*)(a & ~1);
+       LDKConfirmationTarget* b_conv = (LDKConfirmationTarget*)(b & ~1);
+       jboolean ret_val = ConfirmationTarget_eq(a_conv, b_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_InMemorySigner_set_commitment_seed(uint32_t this_ptr, int8_tArray val) {
-       LDKInMemorySigner this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       InMemorySigner_set_commitment_seed(&this_ptr_conv, val_ref);
+void  __attribute__((visibility("default"))) TS_FeeEstimator_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKFeeEstimator this_ptr_conv = *(LDKFeeEstimator*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       FeeEstimator_free(this_ptr_conv);
 }
 
-static inline uint64_t InMemorySigner_clone_ptr(LDKInMemorySigner *NONNULL_PTR arg) {
-       LDKInMemorySigner ret_var = InMemorySigner_clone(arg);
+void  __attribute__((visibility("default"))) TS_MonitorUpdateId_free(uint32_t this_obj) {
+       LDKMonitorUpdateId this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       MonitorUpdateId_free(this_obj_conv);
+}
+
+static inline uint64_t MonitorUpdateId_clone_ptr(LDKMonitorUpdateId *NONNULL_PTR arg) {
+       LDKMonitorUpdateId ret_var = MonitorUpdateId_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -20500,21 +18233,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_InMemorySigner_clone_ptr(uint32_t arg) {
-       LDKInMemorySigner arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_MonitorUpdateId_clone_ptr(uint32_t arg) {
+       LDKMonitorUpdateId arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = InMemorySigner_clone_ptr(&arg_conv);
+       int64_t ret_val = MonitorUpdateId_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_clone(uint32_t orig) {
-       LDKInMemorySigner orig_conv;
+uint32_t  __attribute__((visibility("default"))) TS_MonitorUpdateId_clone(uint32_t orig) {
+       LDKMonitorUpdateId orig_conv;
        orig_conv.inner = (void*)(orig & (~1));
        orig_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKInMemorySigner ret_var = InMemorySigner_clone(&orig_conv);
+       LDKMonitorUpdateId ret_var = MonitorUpdateId_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -20526,46 +18259,74 @@ uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_clone(uint32_
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_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, int8_tArray channel_keys_id) {
-       LDKSecretKey funding_key_ref;
-       CHECK(*((uint32_t*)funding_key) == 32);
-       memcpy(funding_key_ref.bytes, (uint8_t*)(funding_key + 4), 32);
-       LDKSecretKey revocation_base_key_ref;
-       CHECK(*((uint32_t*)revocation_base_key) == 32);
-       memcpy(revocation_base_key_ref.bytes, (uint8_t*)(revocation_base_key + 4), 32);
-       LDKSecretKey payment_key_ref;
-       CHECK(*((uint32_t*)payment_key) == 32);
-       memcpy(payment_key_ref.bytes, (uint8_t*)(payment_key + 4), 32);
-       LDKSecretKey delayed_payment_base_key_ref;
-       CHECK(*((uint32_t*)delayed_payment_base_key) == 32);
-       memcpy(delayed_payment_base_key_ref.bytes, (uint8_t*)(delayed_payment_base_key + 4), 32);
-       LDKSecretKey htlc_base_key_ref;
-       CHECK(*((uint32_t*)htlc_base_key) == 32);
-       memcpy(htlc_base_key_ref.bytes, (uint8_t*)(htlc_base_key + 4), 32);
-       LDKThirtyTwoBytes commitment_seed_ref;
-       CHECK(*((uint32_t*)commitment_seed) == 32);
-       memcpy(commitment_seed_ref.data, (uint8_t*)(commitment_seed + 4), 32);
-       LDKThirtyTwoBytes channel_keys_id_ref;
-       CHECK(*((uint32_t*)channel_keys_id) == 32);
-       memcpy(channel_keys_id_ref.data, (uint8_t*)(channel_keys_id + 4), 32);
-       LDKInMemorySigner ret_var = InMemorySigner_new(funding_key_ref, revocation_base_key_ref, payment_key_ref, delayed_payment_base_key_ref, htlc_base_key_ref, commitment_seed_ref, channel_value_satoshis, channel_keys_id_ref);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int64_t  __attribute__((visibility("default"))) TS_MonitorUpdateId_hash(uint32_t o) {
+       LDKMonitorUpdateId o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       int64_t ret_val = MonitorUpdateId_hash(&o_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_counterparty_pubkeys(uint32_t this_arg) {
-       LDKInMemorySigner this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKChannelPublicKeys ret_var = InMemorySigner_counterparty_pubkeys(&this_arg_conv);
+jboolean  __attribute__((visibility("default"))) TS_MonitorUpdateId_eq(uint32_t a, uint32_t b) {
+       LDKMonitorUpdateId a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       LDKMonitorUpdateId b_conv;
+       b_conv.inner = (void*)(b & (~1));
+       b_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
+       jboolean ret_val = MonitorUpdateId_eq(&a_conv, &b_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_Persist_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKPersist this_ptr_conv = *(LDKPersist*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       Persist_free(this_ptr_conv);
+}
+
+void  __attribute__((visibility("default"))) TS_LockedChannelMonitor_free(uint32_t this_obj) {
+       LDKLockedChannelMonitor this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       LockedChannelMonitor_free(this_obj_conv);
+}
+
+void  __attribute__((visibility("default"))) TS_ChainMonitor_free(uint32_t this_obj) {
+       LDKChainMonitor this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       ChainMonitor_free(this_obj_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ChainMonitor_new(uint32_t chain_source, uint32_t broadcaster, uint32_t logger, uint32_t feeest, uint32_t persister) {
+       void* chain_source_ptr = (void*)(((uint64_t)chain_source) & ~1);
+       CHECK_ACCESS(chain_source_ptr);
+       LDKCOption_FilterZ chain_source_conv = *(LDKCOption_FilterZ*)(chain_source_ptr);
+       // Warning: we may need a move here but no clone is available for LDKCOption_FilterZ
+       if (chain_source_conv.tag == LDKCOption_FilterZ_Some) {
+               // Manually implement clone for Java trait instances
+       }
+       void* broadcaster_ptr = (void*)(((uint64_t)broadcaster) & ~1);
+       CHECK_ACCESS(broadcaster_ptr);
+       LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(broadcaster_ptr);
+       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
+       CHECK_ACCESS(logger_ptr);
+       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
+       void* feeest_ptr = (void*)(((uint64_t)feeest) & ~1);
+       CHECK_ACCESS(feeest_ptr);
+       LDKFeeEstimator feeest_conv = *(LDKFeeEstimator*)(feeest_ptr);
+       void* persister_ptr = (void*)(((uint64_t)persister) & ~1);
+       CHECK_ACCESS(persister_ptr);
+       LDKPersist persister_conv = *(LDKPersist*)(persister_ptr);
+       LDKChainMonitor ret_var = ChainMonitor_new(chain_source_conv, broadcaster_conv, logger_conv, feeest_conv, persister_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -20577,190 +18338,195 @@ uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_counterparty_
        return ret_ref;
 }
 
-int16_t  __attribute__((visibility("default"))) TS_InMemorySigner_counterparty_selected_contest_delay(uint32_t this_arg) {
-       LDKInMemorySigner this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int16_t ret_val = InMemorySigner_counterparty_selected_contest_delay(&this_arg_conv);
-       return ret_val;
-}
-
-int16_t  __attribute__((visibility("default"))) TS_InMemorySigner_holder_selected_contest_delay(uint32_t this_arg) {
-       LDKInMemorySigner this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int16_t ret_val = InMemorySigner_holder_selected_contest_delay(&this_arg_conv);
-       return ret_val;
-}
-
-jboolean  __attribute__((visibility("default"))) TS_InMemorySigner_is_outbound(uint32_t this_arg) {
-       LDKInMemorySigner this_arg_conv;
+uint32_tArray  __attribute__((visibility("default"))) TS_ChainMonitor_get_claimable_balances(uint32_t this_arg, uint32_tArray ignored_channels) {
+       LDKChainMonitor this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       jboolean ret_val = InMemorySigner_is_outbound(&this_arg_conv);
-       return ret_val;
+       LDKCVec_ChannelDetailsZ ignored_channels_constr;
+       ignored_channels_constr.datalen = ignored_channels->arr_len;
+       if (ignored_channels_constr.datalen > 0)
+               ignored_channels_constr.data = MALLOC(ignored_channels_constr.datalen * sizeof(LDKChannelDetails), "LDKCVec_ChannelDetailsZ Elements");
+       else
+               ignored_channels_constr.data = NULL;
+       uint32_t* ignored_channels_vals = ignored_channels->elems;
+       for (size_t q = 0; q < ignored_channels_constr.datalen; q++) {
+               uint32_t ignored_channels_conv_16 = ignored_channels_vals[q];
+               LDKChannelDetails ignored_channels_conv_16_conv;
+               ignored_channels_conv_16_conv.inner = (void*)(ignored_channels_conv_16 & (~1));
+               ignored_channels_conv_16_conv.is_owned = (ignored_channels_conv_16 & 1) || (ignored_channels_conv_16 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(ignored_channels_conv_16_conv);
+               ignored_channels_conv_16_conv = ChannelDetails_clone(&ignored_channels_conv_16_conv);
+               ignored_channels_constr.data[q] = ignored_channels_conv_16_conv;
+       }
+       LDKCVec_BalanceZ ret_var = ChainMonitor_get_claimable_balances(&this_arg_conv, ignored_channels_constr);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t j = 0; j < ret_var.datalen; j++) {
+               LDKBalance *ret_conv_9_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
+               *ret_conv_9_copy = ret_var.data[j];
+               uint64_t ret_conv_9_ref = (uint64_t)ret_conv_9_copy;
+               ret_arr_ptr[j] = ret_conv_9_ref;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_funding_outpoint(uint32_t this_arg) {
-       LDKInMemorySigner this_arg_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChainMonitor_get_monitor(uint32_t this_arg, uint32_t funding_txo) {
+       LDKChainMonitor this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKOutPoint ret_var = InMemorySigner_funding_outpoint(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       LDKOutPoint funding_txo_conv;
+       funding_txo_conv.inner = (void*)(funding_txo & (~1));
+       funding_txo_conv.is_owned = (funding_txo & 1) || (funding_txo == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_conv);
+       funding_txo_conv = OutPoint_clone(&funding_txo_conv);
+       LDKCResult_LockedChannelMonitorNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_LockedChannelMonitorNoneZ), "LDKCResult_LockedChannelMonitorNoneZ");
+       *ret_conv = ChainMonitor_get_monitor(&this_arg_conv, funding_txo_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_get_channel_parameters(uint32_t this_arg) {
-       LDKInMemorySigner this_arg_conv;
+uint32_tArray  __attribute__((visibility("default"))) TS_ChainMonitor_list_monitors(uint32_t this_arg) {
+       LDKChainMonitor this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKChannelTransactionParameters ret_var = InMemorySigner_get_channel_parameters(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
+       LDKCVec_OutPointZ ret_var = ChainMonitor_list_monitors(&this_arg_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t k = 0; k < ret_var.datalen; k++) {
+               LDKOutPoint ret_conv_10_var = ret_var.data[k];
+               uint64_t ret_conv_10_ref = 0;
+               CHECK((((uint64_t)ret_conv_10_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_conv_10_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_10_var);
+               ret_conv_10_ref = (uint64_t)ret_conv_10_var.inner;
+               if (ret_conv_10_var.is_owned) {
+                       ret_conv_10_ref |= 1;
+               }
+               ret_arr_ptr[k] = ret_conv_10_ref;
        }
-       return ret_ref;
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_InMemorySigner_opt_anchors(uint32_t this_arg) {
-       LDKInMemorySigner this_arg_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChainMonitor_channel_monitor_updated(uint32_t this_arg, uint32_t funding_txo, uint32_t completed_update_id) {
+       LDKChainMonitor this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       jboolean ret_val = InMemorySigner_opt_anchors(&this_arg_conv);
-       return ret_val;
+       LDKOutPoint funding_txo_conv;
+       funding_txo_conv.inner = (void*)(funding_txo & (~1));
+       funding_txo_conv.is_owned = (funding_txo & 1) || (funding_txo == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_conv);
+       funding_txo_conv = OutPoint_clone(&funding_txo_conv);
+       LDKMonitorUpdateId completed_update_id_conv;
+       completed_update_id_conv.inner = (void*)(completed_update_id & (~1));
+       completed_update_id_conv.is_owned = (completed_update_id & 1) || (completed_update_id == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(completed_update_id_conv);
+       completed_update_id_conv = MonitorUpdateId_clone(&completed_update_id_conv);
+       LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
+       *ret_conv = ChainMonitor_channel_monitor_updated(&this_arg_conv, funding_txo_conv, completed_update_id_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_sign_counterparty_payment_input(uint32_t this_arg, int8_tArray spend_tx, int64_t input_idx, uint32_t descriptor) {
-       LDKInMemorySigner this_arg_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChainMonitor_as_Listen(uint32_t this_arg) {
+       LDKChainMonitor this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKTransaction spend_tx_ref;
-       spend_tx_ref.datalen = *((uint32_t*)spend_tx);
-       spend_tx_ref.data = MALLOC(spend_tx_ref.datalen, "LDKTransaction Bytes");
-       memcpy(spend_tx_ref.data, (uint8_t*)(spend_tx + 4), spend_tx_ref.datalen);
-       spend_tx_ref.data_is_owned = true;
-       LDKStaticPaymentOutputDescriptor descriptor_conv;
-       descriptor_conv.inner = (void*)(descriptor & (~1));
-       descriptor_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(descriptor_conv);
-       LDKCResult_CVec_CVec_u8ZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ), "LDKCResult_CVec_CVec_u8ZZNoneZ");
-       *ret_conv = InMemorySigner_sign_counterparty_payment_input(&this_arg_conv, spend_tx_ref, input_idx, &descriptor_conv);
-       return (uint64_t)ret_conv;
+       LDKListen* ret_ret = MALLOC(sizeof(LDKListen), "LDKListen");
+       *ret_ret = ChainMonitor_as_Listen(&this_arg_conv);
+       return (uint64_t)ret_ret;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_sign_dynamic_p2wsh_input(uint32_t this_arg, int8_tArray spend_tx, int64_t input_idx, uint32_t descriptor) {
-       LDKInMemorySigner this_arg_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChainMonitor_as_Confirm(uint32_t this_arg) {
+       LDKChainMonitor this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKTransaction spend_tx_ref;
-       spend_tx_ref.datalen = *((uint32_t*)spend_tx);
-       spend_tx_ref.data = MALLOC(spend_tx_ref.datalen, "LDKTransaction Bytes");
-       memcpy(spend_tx_ref.data, (uint8_t*)(spend_tx + 4), spend_tx_ref.datalen);
-       spend_tx_ref.data_is_owned = true;
-       LDKDelayedPaymentOutputDescriptor descriptor_conv;
-       descriptor_conv.inner = (void*)(descriptor & (~1));
-       descriptor_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(descriptor_conv);
-       LDKCResult_CVec_CVec_u8ZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ), "LDKCResult_CVec_CVec_u8ZZNoneZ");
-       *ret_conv = InMemorySigner_sign_dynamic_p2wsh_input(&this_arg_conv, spend_tx_ref, input_idx, &descriptor_conv);
-       return (uint64_t)ret_conv;
+       LDKConfirm* ret_ret = MALLOC(sizeof(LDKConfirm), "LDKConfirm");
+       *ret_ret = ChainMonitor_as_Confirm(&this_arg_conv);
+       return (uint64_t)ret_ret;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_as_BaseSign(uint32_t this_arg) {
-       LDKInMemorySigner this_arg_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChainMonitor_as_Watch(uint32_t this_arg) {
+       LDKChainMonitor this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKBaseSign* ret_ret = MALLOC(sizeof(LDKBaseSign), "LDKBaseSign");
-       *ret_ret = InMemorySigner_as_BaseSign(&this_arg_conv);
+       LDKWatch* ret_ret = MALLOC(sizeof(LDKWatch), "LDKWatch");
+       *ret_ret = ChainMonitor_as_Watch(&this_arg_conv);
        return (uint64_t)ret_ret;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_as_Sign(uint32_t this_arg) {
-       LDKInMemorySigner this_arg_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChainMonitor_as_EventsProvider(uint32_t this_arg) {
+       LDKChainMonitor this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKSign* ret_ret = MALLOC(sizeof(LDKSign), "LDKSign");
-       *ret_ret = InMemorySigner_as_Sign(&this_arg_conv);
+       LDKEventsProvider* ret_ret = MALLOC(sizeof(LDKEventsProvider), "LDKEventsProvider");
+       *ret_ret = ChainMonitor_as_EventsProvider(&this_arg_conv);
        return (uint64_t)ret_ret;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_InMemorySigner_write(uint32_t obj) {
-       LDKInMemorySigner obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = InMemorySigner_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_ChannelMonitorUpdate_free(uint32_t this_obj) {
+       LDKChannelMonitorUpdate this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       ChannelMonitorUpdate_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_InMemorySignerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InMemorySignerDecodeErrorZ), "LDKCResult_InMemorySignerDecodeErrorZ");
-       *ret_conv = InMemorySigner_read(ser_ref);
-       return (uint64_t)ret_conv;
+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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = ChannelMonitorUpdate_get_update_id(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_KeysManager_free(uint32_t this_obj) {
-       LDKKeysManager this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       KeysManager_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_ChannelMonitorUpdate_set_update_id(uint32_t this_ptr, int64_t val) {
+       LDKChannelMonitorUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ChannelMonitorUpdate_set_update_id(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_KeysManager_new(int8_tArray seed, int64_t starting_time_secs, int32_t starting_time_nanos) {
-       unsigned char seed_arr[32];
-       CHECK(*((uint32_t*)seed) == 32);
-       memcpy(seed_arr, (uint8_t*)(seed + 4), 32);
-       unsigned char (*seed_ref)[32] = &seed_arr;
-       LDKKeysManager ret_var = KeysManager_new(seed_ref, starting_time_secs, starting_time_nanos);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
+static inline uint64_t ChannelMonitorUpdate_clone_ptr(LDKChannelMonitorUpdate *NONNULL_PTR arg) {
+       LDKChannelMonitorUpdate ret_var = ChannelMonitorUpdate_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
        return ret_ref;
 }
+int64_t  __attribute__((visibility("default"))) TS_ChannelMonitorUpdate_clone_ptr(uint32_t arg) {
+       LDKChannelMonitorUpdate arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ChannelMonitorUpdate_clone_ptr(&arg_conv);
+       return ret_val;
+}
 
-uint32_t  __attribute__((visibility("default"))) TS_KeysManager_derive_channel_keys(uint32_t this_arg, int64_t channel_value_satoshis, int8_tArray params) {
-       LDKKeysManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       unsigned char params_arr[32];
-       CHECK(*((uint32_t*)params) == 32);
-       memcpy(params_arr, (uint8_t*)(params + 4), 32);
-       unsigned char (*params_ref)[32] = &params_arr;
-       LDKInMemorySigner ret_var = KeysManager_derive_channel_keys(&this_arg_conv, channel_value_satoshis, params_ref);
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKChannelMonitorUpdate ret_var = ChannelMonitorUpdate_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -20772,145 +18538,132 @@ uint32_t  __attribute__((visibility("default"))) TS_KeysManager_derive_channel_k
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_KeysManager_spend_spendable_outputs(uint32_t this_arg, uint32_tArray descriptors, uint32_tArray outputs, int8_tArray change_destination_script, int32_t feerate_sat_per_1000_weight) {
-       LDKKeysManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCVec_SpendableOutputDescriptorZ descriptors_constr;
-       descriptors_constr.datalen = *((uint32_t*)descriptors);
-       if (descriptors_constr.datalen > 0)
-               descriptors_constr.data = MALLOC(descriptors_constr.datalen * sizeof(LDKSpendableOutputDescriptor), "LDKCVec_SpendableOutputDescriptorZ Elements");
-       else
-               descriptors_constr.data = NULL;
-       uint32_t* descriptors_vals = (uint32_t*)(descriptors + 4);
-       for (size_t b = 0; b < descriptors_constr.datalen; b++) {
-               uint32_t descriptors_conv_27 = descriptors_vals[b];
-               void* descriptors_conv_27_ptr = (void*)(((uint64_t)descriptors_conv_27) & ~1);
-               CHECK_ACCESS(descriptors_conv_27_ptr);
-               LDKSpendableOutputDescriptor descriptors_conv_27_conv = *(LDKSpendableOutputDescriptor*)(descriptors_conv_27_ptr);
-               descriptors_conv_27_conv = SpendableOutputDescriptor_clone((LDKSpendableOutputDescriptor*)(((uint64_t)descriptors_conv_27) & ~1));
-               descriptors_constr.data[b] = descriptors_conv_27_conv;
-       }
-       LDKCVec_TxOutZ outputs_constr;
-       outputs_constr.datalen = *((uint32_t*)outputs);
-       if (outputs_constr.datalen > 0)
-               outputs_constr.data = MALLOC(outputs_constr.datalen * sizeof(LDKTxOut), "LDKCVec_TxOutZ Elements");
-       else
-               outputs_constr.data = NULL;
-       uint32_t* outputs_vals = (uint32_t*)(outputs + 4);
-       for (size_t h = 0; h < outputs_constr.datalen; h++) {
-               uint32_t outputs_conv_7 = outputs_vals[h];
-               void* outputs_conv_7_ptr = (void*)(((uint64_t)outputs_conv_7) & ~1);
-               CHECK_ACCESS(outputs_conv_7_ptr);
-               LDKTxOut outputs_conv_7_conv = *(LDKTxOut*)(outputs_conv_7_ptr);
-               outputs_conv_7_conv = TxOut_clone((LDKTxOut*)(((uint64_t)outputs_conv_7) & ~1));
-               outputs_constr.data[h] = outputs_conv_7_conv;
-       }
-       LDKCVec_u8Z change_destination_script_ref;
-       change_destination_script_ref.datalen = *((uint32_t*)change_destination_script);
-       change_destination_script_ref.data = MALLOC(change_destination_script_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(change_destination_script_ref.data, (uint8_t*)(change_destination_script + 4), change_destination_script_ref.datalen);
-       LDKCResult_TransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TransactionNoneZ), "LDKCResult_TransactionNoneZ");
-       *ret_conv = KeysManager_spend_spendable_outputs(&this_arg_conv, descriptors_constr, outputs_constr, change_destination_script_ref, feerate_sat_per_1000_weight);
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelMonitorUpdate_write(uint32_t obj) {
+       LDKChannelMonitorUpdate obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ChannelMonitorUpdate_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitorUpdate_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ChannelMonitorUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ), "LDKCResult_ChannelMonitorUpdateDecodeErrorZ");
+       *ret_conv = ChannelMonitorUpdate_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_KeysManager_as_KeysInterface(uint32_t this_arg) {
-       LDKKeysManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKKeysInterface* ret_ret = MALLOC(sizeof(LDKKeysInterface), "LDKKeysInterface");
-       *ret_ret = KeysManager_as_KeysInterface(&this_arg_conv);
-       return (uint64_t)ret_ret;
+void  __attribute__((visibility("default"))) TS_MonitorEvent_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKMonitorEvent this_ptr_conv = *(LDKMonitorEvent*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       MonitorEvent_free(this_ptr_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelManager_free(uint32_t this_obj) {
-       LDKChannelManager this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelManager_free(this_obj_conv);
+static inline uint64_t MonitorEvent_clone_ptr(LDKMonitorEvent *NONNULL_PTR arg) {
+       LDKMonitorEvent *ret_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
+       *ret_copy = MonitorEvent_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_MonitorEvent_clone_ptr(uint32_t arg) {
+       LDKMonitorEvent* arg_conv = (LDKMonitorEvent*)arg;
+       int64_t ret_val = MonitorEvent_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChainParameters_free(uint32_t this_obj) {
-       LDKChainParameters this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChainParameters_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_MonitorEvent_clone(uint32_t orig) {
+       LDKMonitorEvent* orig_conv = (LDKMonitorEvent*)orig;
+       LDKMonitorEvent *ret_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
+       *ret_copy = MonitorEvent_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_MonitorEvent_htlcevent(uint32_t a) {
+       LDKHTLCUpdate a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = (a & 1) || (a == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       a_conv = HTLCUpdate_clone(&a_conv);
+       LDKMonitorEvent *ret_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
+       *ret_copy = MonitorEvent_htlcevent(a_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_MonitorEvent_commitment_tx_confirmed(uint32_t a) {
+       LDKOutPoint a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = (a & 1) || (a == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       a_conv = OutPoint_clone(&a_conv);
+       LDKMonitorEvent *ret_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
+       *ret_copy = MonitorEvent_commitment_tx_confirmed(a_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChainParameters_get_network(uint32_t this_ptr) {
-       LDKChainParameters this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       uint32_t ret_conv = LDKNetwork_to_js(ChainParameters_get_network(&this_ptr_conv));
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_MonitorEvent_update_completed(uint32_t funding_txo, int64_t monitor_update_id) {
+       LDKOutPoint funding_txo_conv;
+       funding_txo_conv.inner = (void*)(funding_txo & (~1));
+       funding_txo_conv.is_owned = (funding_txo & 1) || (funding_txo == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_conv);
+       funding_txo_conv = OutPoint_clone(&funding_txo_conv);
+       LDKMonitorEvent *ret_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
+       *ret_copy = MonitorEvent_update_completed(funding_txo_conv, monitor_update_id);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChainParameters_set_network(uint32_t this_ptr, uint32_t val) {
-       LDKChainParameters this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNetwork val_conv = LDKNetwork_from_js(val);
-       ChainParameters_set_network(&this_ptr_conv, val_conv);
+uint32_t  __attribute__((visibility("default"))) TS_MonitorEvent_update_failed(uint32_t a) {
+       LDKOutPoint a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = (a & 1) || (a == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       a_conv = OutPoint_clone(&a_conv);
+       LDKMonitorEvent *ret_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
+       *ret_copy = MonitorEvent_update_failed(a_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChainParameters_get_best_block(uint32_t this_ptr) {
-       LDKChainParameters this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKBestBlock ret_var = ChainParameters_get_best_block(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_MonitorEvent_write(uint32_t obj) {
+       LDKMonitorEvent* obj_conv = (LDKMonitorEvent*)obj;
+       LDKCVec_u8Z ret_var = MonitorEvent_write(obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChainParameters_set_best_block(uint32_t this_ptr, uint32_t val) {
-       LDKChainParameters this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKBestBlock val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = BestBlock_clone(&val_conv);
-       ChainParameters_set_best_block(&this_ptr_conv, val_conv);
+uint32_t  __attribute__((visibility("default"))) TS_MonitorEvent_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_COption_MonitorEventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ), "LDKCResult_COption_MonitorEventZDecodeErrorZ");
+       *ret_conv = MonitorEvent_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChainParameters_new(uint32_t network_arg, uint32_t best_block_arg) {
-       LDKNetwork network_arg_conv = LDKNetwork_from_js(network_arg);
-       LDKBestBlock best_block_arg_conv;
-       best_block_arg_conv.inner = (void*)(best_block_arg & (~1));
-       best_block_arg_conv.is_owned = (best_block_arg & 1) || (best_block_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(best_block_arg_conv);
-       best_block_arg_conv = BestBlock_clone(&best_block_arg_conv);
-       LDKChainParameters ret_var = ChainParameters_new(network_arg_conv, best_block_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_HTLCUpdate_free(uint32_t this_obj) {
+       LDKHTLCUpdate this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       HTLCUpdate_free(this_obj_conv);
 }
 
-static inline uint64_t ChainParameters_clone_ptr(LDKChainParameters *NONNULL_PTR arg) {
-       LDKChainParameters ret_var = ChainParameters_clone(arg);
+static inline uint64_t HTLCUpdate_clone_ptr(LDKHTLCUpdate *NONNULL_PTR arg) {
+       LDKHTLCUpdate ret_var = HTLCUpdate_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -20921,21 +18674,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_ChainParameters_clone_ptr(uint32_t arg) {
-       LDKChainParameters arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_HTLCUpdate_clone_ptr(uint32_t arg) {
+       LDKHTLCUpdate arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChainParameters_clone_ptr(&arg_conv);
+       int64_t ret_val = HTLCUpdate_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChainParameters_clone(uint32_t orig) {
-       LDKChainParameters orig_conv;
+uint32_t  __attribute__((visibility("default"))) TS_HTLCUpdate_clone(uint32_t orig) {
+       LDKHTLCUpdate orig_conv;
        orig_conv.inner = (void*)(orig & (~1));
        orig_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChainParameters ret_var = ChainParameters_clone(&orig_conv);
+       LDKHTLCUpdate ret_var = HTLCUpdate_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -20947,80 +18700,101 @@ uint32_t  __attribute__((visibility("default"))) TS_ChainParameters_clone(uint32
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_free(uint32_t this_obj) {
-       LDKCounterpartyForwardingInfo this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       CounterpartyForwardingInfo_free(this_obj_conv);
+int8_tArray  __attribute__((visibility("default"))) TS_HTLCUpdate_write(uint32_t obj) {
+       LDKHTLCUpdate obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = HTLCUpdate_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-int32_t  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_get_fee_base_msat(uint32_t this_ptr) {
-       LDKCounterpartyForwardingInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = CounterpartyForwardingInfo_get_fee_base_msat(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_HTLCUpdate_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_HTLCUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCUpdateDecodeErrorZ), "LDKCResult_HTLCUpdateDecodeErrorZ");
+       *ret_conv = HTLCUpdate_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_set_fee_base_msat(uint32_t this_ptr, int32_t val) {
-       LDKCounterpartyForwardingInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       CounterpartyForwardingInfo_set_fee_base_msat(&this_ptr_conv, val);
+void  __attribute__((visibility("default"))) TS_Balance_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKBalance this_ptr_conv = *(LDKBalance*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       Balance_free(this_ptr_conv);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_get_fee_proportional_millionths(uint32_t this_ptr) {
-       LDKCounterpartyForwardingInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = CounterpartyForwardingInfo_get_fee_proportional_millionths(&this_ptr_conv);
+static inline uint64_t Balance_clone_ptr(LDKBalance *NONNULL_PTR arg) {
+       LDKBalance *ret_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
+       *ret_copy = Balance_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_Balance_clone_ptr(uint32_t arg) {
+       LDKBalance* arg_conv = (LDKBalance*)arg;
+       int64_t ret_val = Balance_clone_ptr(arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_set_fee_proportional_millionths(uint32_t this_ptr, int32_t val) {
-       LDKCounterpartyForwardingInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       CounterpartyForwardingInfo_set_fee_proportional_millionths(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_Balance_clone(uint32_t orig) {
+       LDKBalance* orig_conv = (LDKBalance*)orig;
+       LDKBalance *ret_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
+       *ret_copy = Balance_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-int16_t  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_get_cltv_expiry_delta(uint32_t this_ptr) {
-       LDKCounterpartyForwardingInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = CounterpartyForwardingInfo_get_cltv_expiry_delta(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_Balance_claimable_on_channel_close(int64_t claimable_amount_satoshis) {
+       LDKBalance *ret_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
+       *ret_copy = Balance_claimable_on_channel_close(claimable_amount_satoshis);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_set_cltv_expiry_delta(uint32_t this_ptr, int16_t val) {
-       LDKCounterpartyForwardingInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       CounterpartyForwardingInfo_set_cltv_expiry_delta(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_Balance_claimable_awaiting_confirmations(int64_t claimable_amount_satoshis, int32_t confirmation_height) {
+       LDKBalance *ret_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
+       *ret_copy = Balance_claimable_awaiting_confirmations(claimable_amount_satoshis, confirmation_height);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_new(int32_t fee_base_msat_arg, int32_t fee_proportional_millionths_arg, int16_t cltv_expiry_delta_arg) {
-       LDKCounterpartyForwardingInfo ret_var = CounterpartyForwardingInfo_new(fee_base_msat_arg, fee_proportional_millionths_arg, cltv_expiry_delta_arg);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
+uint32_t  __attribute__((visibility("default"))) TS_Balance_contentious_claimable(int64_t claimable_amount_satoshis, int32_t timeout_height) {
+       LDKBalance *ret_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
+       *ret_copy = Balance_contentious_claimable(claimable_amount_satoshis, timeout_height);
+       uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-static inline uint64_t CounterpartyForwardingInfo_clone_ptr(LDKCounterpartyForwardingInfo *NONNULL_PTR arg) {
-       LDKCounterpartyForwardingInfo ret_var = CounterpartyForwardingInfo_clone(arg);
+uint32_t  __attribute__((visibility("default"))) TS_Balance_maybe_claimable_htlcawaiting_timeout(int64_t claimable_amount_satoshis, int32_t claimable_height) {
+       LDKBalance *ret_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
+       *ret_copy = Balance_maybe_claimable_htlcawaiting_timeout(claimable_amount_satoshis, claimable_height);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+jboolean  __attribute__((visibility("default"))) TS_Balance_eq(uint32_t a, uint32_t b) {
+       LDKBalance* a_conv = (LDKBalance*)a;
+       LDKBalance* b_conv = (LDKBalance*)b;
+       jboolean ret_val = Balance_eq(a_conv, b_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_ChannelMonitor_free(uint32_t this_obj) {
+       LDKChannelMonitor this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       ChannelMonitor_free(this_obj_conv);
+}
+
+static inline uint64_t ChannelMonitor_clone_ptr(LDKChannelMonitor *NONNULL_PTR arg) {
+       LDKChannelMonitor ret_var = ChannelMonitor_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -21031,21 +18805,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_clone_ptr(uint32_t arg) {
-       LDKCounterpartyForwardingInfo arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelMonitor_clone_ptr(uint32_t arg) {
+       LDKChannelMonitor arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = CounterpartyForwardingInfo_clone_ptr(&arg_conv);
+       int64_t ret_val = ChannelMonitor_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_clone(uint32_t orig) {
-       LDKCounterpartyForwardingInfo orig_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitor_clone(uint32_t orig) {
+       LDKChannelMonitor orig_conv;
        orig_conv.inner = (void*)(orig & (~1));
        orig_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKCounterpartyForwardingInfo ret_var = CounterpartyForwardingInfo_clone(&orig_conv);
+       LDKChannelMonitor ret_var = ChannelMonitor_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -21057,213 +18831,347 @@ uint32_t  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_c
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelCounterparty_free(uint32_t this_obj) {
-       LDKChannelCounterparty this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelCounterparty_free(this_obj_conv);
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_write(uint32_t obj) {
+       LDKChannelMonitor obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ChannelMonitor_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelCounterparty_get_node_id(uint32_t this_ptr) {
-       LDKChannelCounterparty this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ChannelCounterparty_get_node_id(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitor_update_monitor(uint32_t this_arg, uint32_t updates, uint32_t broadcaster, uint32_t fee_estimator, uint32_t logger) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKChannelMonitorUpdate updates_conv;
+       updates_conv.inner = (void*)(updates & (~1));
+       updates_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(updates_conv);
+       void* broadcaster_ptr = (void*)(((uint64_t)broadcaster) & ~1);
+       if (!(broadcaster & 1)) { CHECK_ACCESS(broadcaster_ptr); }
+       LDKBroadcasterInterface* broadcaster_conv = (LDKBroadcasterInterface*)broadcaster_ptr;
+       void* fee_estimator_ptr = (void*)(((uint64_t)fee_estimator) & ~1);
+       if (!(fee_estimator & 1)) { CHECK_ACCESS(fee_estimator_ptr); }
+       LDKFeeEstimator* fee_estimator_conv = (LDKFeeEstimator*)fee_estimator_ptr;
+       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
+       if (!(logger & 1)) { CHECK_ACCESS(logger_ptr); }
+       LDKLogger* logger_conv = (LDKLogger*)logger_ptr;
+       LDKCResult_NoneNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneNoneZ), "LDKCResult_NoneNoneZ");
+       *ret_conv = ChannelMonitor_update_monitor(&this_arg_conv, &updates_conv, broadcaster_conv, fee_estimator_conv, logger_conv);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelCounterparty_set_node_id(uint32_t this_ptr, int8_tArray val) {
-       LDKChannelCounterparty this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       ChannelCounterparty_set_node_id(&this_ptr_conv, val_ref);
+int64_t  __attribute__((visibility("default"))) TS_ChannelMonitor_get_latest_update_id(uint32_t this_arg) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int64_t ret_val = ChannelMonitor_get_latest_update_id(&this_arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelCounterparty_get_features(uint32_t this_ptr) {
-       LDKChannelCounterparty this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKInitFeatures ret_var = ChannelCounterparty_get_features(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitor_get_funding_txo(uint32_t this_arg) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKC2Tuple_OutPointScriptZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_OutPointScriptZ), "LDKC2Tuple_OutPointScriptZ");
+       *ret_conv = ChannelMonitor_get_funding_txo(&this_arg_conv);
+       return ((uint64_t)ret_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelCounterparty_set_features(uint32_t this_ptr, uint32_t val) {
-       LDKChannelCounterparty this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKInitFeatures val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = InitFeatures_clone(&val_conv);
-       ChannelCounterparty_set_features(&this_ptr_conv, val_conv);
+uint32_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_get_outputs_to_watch(uint32_t this_arg) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ ret_var = ChannelMonitor_get_outputs_to_watch(&this_arg_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t o = 0; o < ret_var.datalen; o++) {
+               LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* ret_conv_40_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ");
+               *ret_conv_40_conv = ret_var.data[o];
+               ret_arr_ptr[o] = ((uint64_t)ret_conv_40_conv);
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ChannelCounterparty_get_unspendable_punishment_reserve(uint32_t this_ptr) {
-       LDKChannelCounterparty this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelCounterparty_get_unspendable_punishment_reserve(&this_ptr_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_ChannelMonitor_load_outputs_to_watch(uint32_t this_arg, uint32_t filter) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       void* filter_ptr = (void*)(((uint64_t)filter) & ~1);
+       if (!(filter & 1)) { CHECK_ACCESS(filter_ptr); }
+       LDKFilter* filter_conv = (LDKFilter*)filter_ptr;
+       ChannelMonitor_load_outputs_to_watch(&this_arg_conv, filter_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelCounterparty_set_unspendable_punishment_reserve(uint32_t this_ptr, int64_t val) {
-       LDKChannelCounterparty this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelCounterparty_set_unspendable_punishment_reserve(&this_ptr_conv, val);
+uint32_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_get_and_clear_pending_monitor_events(uint32_t this_arg) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKCVec_MonitorEventZ ret_var = ChannelMonitor_get_and_clear_pending_monitor_events(&this_arg_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t o = 0; o < ret_var.datalen; o++) {
+               LDKMonitorEvent *ret_conv_14_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
+               *ret_conv_14_copy = ret_var.data[o];
+               uint64_t ret_conv_14_ref = (uint64_t)ret_conv_14_copy;
+               ret_arr_ptr[o] = ret_conv_14_ref;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelCounterparty_get_forwarding_info(uint32_t this_ptr) {
-       LDKChannelCounterparty this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCounterpartyForwardingInfo ret_var = ChannelCounterparty_get_forwarding_info(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
+uint32_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_get_and_clear_pending_events(uint32_t this_arg) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKCVec_EventZ ret_var = ChannelMonitor_get_and_clear_pending_events(&this_arg_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t h = 0; h < ret_var.datalen; h++) {
+               LDKEvent *ret_conv_7_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+               *ret_conv_7_copy = ret_var.data[h];
+               uint64_t ret_conv_7_ref = (uint64_t)ret_conv_7_copy;
+               ret_arr_ptr[h] = ret_conv_7_ref;
        }
-       return ret_ref;
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelCounterparty_set_forwarding_info(uint32_t this_ptr, uint32_t val) {
-       LDKChannelCounterparty this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCounterpartyForwardingInfo val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = CounterpartyForwardingInfo_clone(&val_conv);
-       ChannelCounterparty_set_forwarding_info(&this_ptr_conv, val_conv);
+ptrArray  __attribute__((visibility("default"))) TS_ChannelMonitor_get_latest_holder_commitment_txn(uint32_t this_arg, uint32_t logger) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
+       if (!(logger & 1)) { CHECK_ACCESS(logger_ptr); }
+       LDKLogger* logger_conv = (LDKLogger*)logger_ptr;
+       LDKCVec_TransactionZ ret_var = ChannelMonitor_get_latest_holder_commitment_txn(&this_arg_conv, logger_conv);
+       ptrArray ret_arr = NULL;
+       ret_arr = init_ptrArray(ret_var.datalen);
+       int8_tArray *ret_arr_ptr = (int8_tArray*)(ret_arr + 4);
+       for (size_t m = 0; m < ret_var.datalen; m++) {
+               LDKTransaction ret_conv_12_var = ret_var.data[m];
+               int8_tArray ret_conv_12_arr = init_int8_tArray(ret_conv_12_var.datalen);
+               memcpy(ret_conv_12_arr->elems, ret_conv_12_var.data, ret_conv_12_var.datalen);
+               Transaction_free(ret_conv_12_var);
+               ret_arr_ptr[m] = ret_conv_12_arr;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelCounterparty_new(int8_tArray node_id_arg, uint32_t features_arg, int64_t unspendable_punishment_reserve_arg, uint32_t forwarding_info_arg) {
-       LDKPublicKey node_id_arg_ref;
-       CHECK(*((uint32_t*)node_id_arg) == 33);
-       memcpy(node_id_arg_ref.compressed_form, (uint8_t*)(node_id_arg + 4), 33);
-       LDKInitFeatures features_arg_conv;
-       features_arg_conv.inner = (void*)(features_arg & (~1));
-       features_arg_conv.is_owned = (features_arg & 1) || (features_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(features_arg_conv);
-       features_arg_conv = InitFeatures_clone(&features_arg_conv);
-       LDKCounterpartyForwardingInfo forwarding_info_arg_conv;
-       forwarding_info_arg_conv.inner = (void*)(forwarding_info_arg & (~1));
-       forwarding_info_arg_conv.is_owned = (forwarding_info_arg & 1) || (forwarding_info_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(forwarding_info_arg_conv);
-       forwarding_info_arg_conv = CounterpartyForwardingInfo_clone(&forwarding_info_arg_conv);
-       LDKChannelCounterparty ret_var = ChannelCounterparty_new(node_id_arg_ref, features_arg_conv, unspendable_punishment_reserve_arg, forwarding_info_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
+uint32_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_block_connected(uint32_t this_arg, int8_tArray header, uint32_tArray txdata, int32_t height, uint32_t broadcaster, uint32_t fee_estimator, uint32_t logger) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       unsigned char header_arr[80];
+       CHECK(header->arr_len == 80);
+       memcpy(header_arr, header->elems, 80);
+       unsigned char (*header_ref)[80] = &header_arr;
+       LDKCVec_C2Tuple_usizeTransactionZZ txdata_constr;
+       txdata_constr.datalen = txdata->arr_len;
+       if (txdata_constr.datalen > 0)
+               txdata_constr.data = MALLOC(txdata_constr.datalen * sizeof(LDKC2Tuple_usizeTransactionZ), "LDKCVec_C2Tuple_usizeTransactionZZ Elements");
+       else
+               txdata_constr.data = NULL;
+       uint32_t* txdata_vals = txdata->elems;
+       for (size_t c = 0; c < txdata_constr.datalen; c++) {
+               uint32_t txdata_conv_28 = txdata_vals[c];
+               void* txdata_conv_28_ptr = (void*)(((uint64_t)txdata_conv_28) & ~1);
+               CHECK_ACCESS(txdata_conv_28_ptr);
+               LDKC2Tuple_usizeTransactionZ txdata_conv_28_conv = *(LDKC2Tuple_usizeTransactionZ*)(txdata_conv_28_ptr);
+               txdata_conv_28_conv = C2Tuple_usizeTransactionZ_clone((LDKC2Tuple_usizeTransactionZ*)(((uint64_t)txdata_conv_28) & ~1));
+               txdata_constr.data[c] = txdata_conv_28_conv;
+       }
+       void* broadcaster_ptr = (void*)(((uint64_t)broadcaster) & ~1);
+       CHECK_ACCESS(broadcaster_ptr);
+       LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(broadcaster_ptr);
+       void* fee_estimator_ptr = (void*)(((uint64_t)fee_estimator) & ~1);
+       CHECK_ACCESS(fee_estimator_ptr);
+       LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(fee_estimator_ptr);
+       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
+       CHECK_ACCESS(logger_ptr);
+       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
+       LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ret_var = ChannelMonitor_block_connected(&this_arg_conv, header_ref, txdata_constr, height, broadcaster_conv, fee_estimator_conv, logger_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t n = 0; n < ret_var.datalen; n++) {
+               LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* ret_conv_39_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ");
+               *ret_conv_39_conv = ret_var.data[n];
+               ret_arr_ptr[n] = ((uint64_t)ret_conv_39_conv);
        }
-       return ret_ref;
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-static inline uint64_t ChannelCounterparty_clone_ptr(LDKChannelCounterparty *NONNULL_PTR arg) {
-       LDKChannelCounterparty ret_var = ChannelCounterparty_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_ChannelCounterparty_clone_ptr(uint32_t arg) {
-       LDKChannelCounterparty arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelCounterparty_clone_ptr(&arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_ChannelMonitor_block_disconnected(uint32_t this_arg, int8_tArray header, int32_t height, uint32_t broadcaster, uint32_t fee_estimator, uint32_t logger) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       unsigned char header_arr[80];
+       CHECK(header->arr_len == 80);
+       memcpy(header_arr, header->elems, 80);
+       unsigned char (*header_ref)[80] = &header_arr;
+       void* broadcaster_ptr = (void*)(((uint64_t)broadcaster) & ~1);
+       CHECK_ACCESS(broadcaster_ptr);
+       LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(broadcaster_ptr);
+       void* fee_estimator_ptr = (void*)(((uint64_t)fee_estimator) & ~1);
+       CHECK_ACCESS(fee_estimator_ptr);
+       LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(fee_estimator_ptr);
+       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
+       CHECK_ACCESS(logger_ptr);
+       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
+       ChannelMonitor_block_disconnected(&this_arg_conv, header_ref, height, broadcaster_conv, fee_estimator_conv, logger_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelCounterparty_clone(uint32_t orig) {
-       LDKChannelCounterparty orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelCounterparty ret_var = ChannelCounterparty_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
+uint32_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_transactions_confirmed(uint32_t this_arg, int8_tArray header, uint32_tArray txdata, int32_t height, uint32_t broadcaster, uint32_t fee_estimator, uint32_t logger) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       unsigned char header_arr[80];
+       CHECK(header->arr_len == 80);
+       memcpy(header_arr, header->elems, 80);
+       unsigned char (*header_ref)[80] = &header_arr;
+       LDKCVec_C2Tuple_usizeTransactionZZ txdata_constr;
+       txdata_constr.datalen = txdata->arr_len;
+       if (txdata_constr.datalen > 0)
+               txdata_constr.data = MALLOC(txdata_constr.datalen * sizeof(LDKC2Tuple_usizeTransactionZ), "LDKCVec_C2Tuple_usizeTransactionZZ Elements");
+       else
+               txdata_constr.data = NULL;
+       uint32_t* txdata_vals = txdata->elems;
+       for (size_t c = 0; c < txdata_constr.datalen; c++) {
+               uint32_t txdata_conv_28 = txdata_vals[c];
+               void* txdata_conv_28_ptr = (void*)(((uint64_t)txdata_conv_28) & ~1);
+               CHECK_ACCESS(txdata_conv_28_ptr);
+               LDKC2Tuple_usizeTransactionZ txdata_conv_28_conv = *(LDKC2Tuple_usizeTransactionZ*)(txdata_conv_28_ptr);
+               txdata_conv_28_conv = C2Tuple_usizeTransactionZ_clone((LDKC2Tuple_usizeTransactionZ*)(((uint64_t)txdata_conv_28) & ~1));
+               txdata_constr.data[c] = txdata_conv_28_conv;
        }
-       return ret_ref;
+       void* broadcaster_ptr = (void*)(((uint64_t)broadcaster) & ~1);
+       CHECK_ACCESS(broadcaster_ptr);
+       LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(broadcaster_ptr);
+       void* fee_estimator_ptr = (void*)(((uint64_t)fee_estimator) & ~1);
+       CHECK_ACCESS(fee_estimator_ptr);
+       LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(fee_estimator_ptr);
+       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
+       CHECK_ACCESS(logger_ptr);
+       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
+       LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ret_var = ChannelMonitor_transactions_confirmed(&this_arg_conv, header_ref, txdata_constr, height, broadcaster_conv, fee_estimator_conv, logger_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t n = 0; n < ret_var.datalen; n++) {
+               LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* ret_conv_39_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ");
+               *ret_conv_39_conv = ret_var.data[n];
+               ret_arr_ptr[n] = ((uint64_t)ret_conv_39_conv);
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_free(uint32_t this_obj) {
-       LDKChannelDetails this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelDetails_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_ChannelMonitor_transaction_unconfirmed(uint32_t this_arg, int8_tArray txid, uint32_t broadcaster, uint32_t fee_estimator, uint32_t logger) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       unsigned char txid_arr[32];
+       CHECK(txid->arr_len == 32);
+       memcpy(txid_arr, txid->elems, 32);
+       unsigned char (*txid_ref)[32] = &txid_arr;
+       void* broadcaster_ptr = (void*)(((uint64_t)broadcaster) & ~1);
+       CHECK_ACCESS(broadcaster_ptr);
+       LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(broadcaster_ptr);
+       void* fee_estimator_ptr = (void*)(((uint64_t)fee_estimator) & ~1);
+       CHECK_ACCESS(fee_estimator_ptr);
+       LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(fee_estimator_ptr);
+       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
+       CHECK_ACCESS(logger_ptr);
+       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
+       ChannelMonitor_transaction_unconfirmed(&this_arg_conv, txid_ref, broadcaster_conv, fee_estimator_conv, logger_conv);
 }
 
-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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *ChannelDetails_get_channel_id(&this_ptr_conv), 32);
+uint32_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_best_block_updated(uint32_t this_arg, int8_tArray header, int32_t height, uint32_t broadcaster, uint32_t fee_estimator, uint32_t logger) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       unsigned char header_arr[80];
+       CHECK(header->arr_len == 80);
+       memcpy(header_arr, header->elems, 80);
+       unsigned char (*header_ref)[80] = &header_arr;
+       void* broadcaster_ptr = (void*)(((uint64_t)broadcaster) & ~1);
+       CHECK_ACCESS(broadcaster_ptr);
+       LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(broadcaster_ptr);
+       void* fee_estimator_ptr = (void*)(((uint64_t)fee_estimator) & ~1);
+       CHECK_ACCESS(fee_estimator_ptr);
+       LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(fee_estimator_ptr);
+       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
+       CHECK_ACCESS(logger_ptr);
+       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
+       LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ret_var = ChannelMonitor_best_block_updated(&this_arg_conv, header_ref, height, broadcaster_conv, fee_estimator_conv, logger_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t n = 0; n < ret_var.datalen; n++) {
+               LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* ret_conv_39_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ");
+               *ret_conv_39_conv = ret_var.data[n];
+               ret_arr_ptr[n] = ((uint64_t)ret_conv_39_conv);
+       }
+       
+       FREE(ret_var.data);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKChannelDetails this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       ChannelDetails_set_channel_id(&this_ptr_conv, val_ref);
+ptrArray  __attribute__((visibility("default"))) TS_ChannelMonitor_get_relevant_txids(uint32_t this_arg) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKCVec_TxidZ ret_var = ChannelMonitor_get_relevant_txids(&this_arg_conv);
+       ptrArray ret_arr = NULL;
+       ret_arr = init_ptrArray(ret_var.datalen);
+       int8_tArray *ret_arr_ptr = (int8_tArray*)(ret_arr + 4);
+       for (size_t m = 0; m < ret_var.datalen; m++) {
+               int8_tArray ret_conv_12_arr = init_int8_tArray(32);
+               memcpy(ret_conv_12_arr->elems, ret_var.data[m].data, 32);
+               ret_arr_ptr[m] = ret_conv_12_arr;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_counterparty(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelCounterparty ret_var = ChannelDetails_get_counterparty(&this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitor_current_best_block(uint32_t this_arg) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKBestBlock ret_var = ChannelMonitor_current_best_block(&this_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -21275,326 +19183,358 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_counterpa
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_counterparty(uint32_t this_ptr, uint32_t val) {
-       LDKChannelDetails this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelCounterparty val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = ChannelCounterparty_clone(&val_conv);
-       ChannelDetails_set_counterparty(&this_ptr_conv, val_conv);
+uint32_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_get_claimable_balances(uint32_t this_arg) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKCVec_BalanceZ ret_var = ChannelMonitor_get_claimable_balances(&this_arg_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t j = 0; j < ret_var.datalen; j++) {
+               LDKBalance *ret_conv_9_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
+               *ret_conv_9_copy = ret_var.data[j];
+               uint64_t ret_conv_9_ref = (uint64_t)ret_conv_9_copy;
+               ret_arr_ptr[j] = ret_conv_9_ref;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_funding_txo(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKOutPoint ret_var = ChannelDetails_get_funding_txo(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_read(int8_tArray ser, uint32_t arg) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       void* arg_ptr = (void*)(((uint64_t)arg) & ~1);
+       if (!(arg & 1)) { CHECK_ACCESS(arg_ptr); }
+       LDKKeysInterface* arg_conv = (LDKKeysInterface*)arg_ptr;
+       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ");
+       *ret_conv = C2Tuple_BlockHashChannelMonitorZ_read(ser_ref, arg_conv);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_funding_txo(uint32_t this_ptr, uint32_t val) {
-       LDKChannelDetails this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKOutPoint val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = OutPoint_clone(&val_conv);
-       ChannelDetails_set_funding_txo(&this_ptr_conv, val_conv);
+void  __attribute__((visibility("default"))) TS_OutPoint_free(uint32_t this_obj) {
+       LDKOutPoint this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       OutPoint_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_short_channel_id(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
+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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
-       *ret_copy = ChannelDetails_get_short_channel_id(&this_ptr_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *OutPoint_get_txid(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_short_channel_id(uint32_t this_ptr, uint32_t val) {
-       LDKChannelDetails this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OutPoint_set_txid(uint32_t this_ptr, int8_tArray val) {
+       LDKOutPoint this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKCOption_u64Z val_conv = *(LDKCOption_u64Z*)(val_ptr);
-       val_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)val) & ~1));
-       ChannelDetails_set_short_channel_id(&this_ptr_conv, val_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       OutPoint_set_txid(&this_ptr_conv, val_ref);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_channel_value_satoshis(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
+int16_t  __attribute__((visibility("default"))) TS_OutPoint_get_index(uint32_t this_ptr) {
+       LDKOutPoint this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelDetails_get_channel_value_satoshis(&this_ptr_conv);
+       int16_t ret_val = OutPoint_get_index(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_channel_value_satoshis(uint32_t this_ptr, int64_t val) {
-       LDKChannelDetails this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OutPoint_set_index(uint32_t this_ptr, int16_t val) {
+       LDKOutPoint this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelDetails_set_channel_value_satoshis(&this_ptr_conv, val);
+       OutPoint_set_index(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_unspendable_punishment_reserve(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
-       *ret_copy = ChannelDetails_get_unspendable_punishment_reserve(&this_ptr_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
+uint32_t  __attribute__((visibility("default"))) TS_OutPoint_new(int8_tArray txid_arg, int16_t index_arg) {
+       LDKThirtyTwoBytes txid_arg_ref;
+       CHECK(txid_arg->arr_len == 32);
+       memcpy(txid_arg_ref.data, txid_arg->elems, 32);
+       LDKOutPoint ret_var = OutPoint_new(txid_arg_ref, index_arg);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_unspendable_punishment_reserve(uint32_t this_ptr, uint32_t val) {
-       LDKChannelDetails this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKCOption_u64Z val_conv = *(LDKCOption_u64Z*)(val_ptr);
-       val_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)val) & ~1));
-       ChannelDetails_set_unspendable_punishment_reserve(&this_ptr_conv, val_conv);
+static inline uint64_t OutPoint_clone_ptr(LDKOutPoint *NONNULL_PTR arg) {
+       LDKOutPoint ret_var = OutPoint_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-int64_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_user_channel_id(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelDetails_get_user_channel_id(&this_ptr_conv);
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_OutPoint_clone_ptr(uint32_t arg) {
+       LDKOutPoint arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = OutPoint_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_user_channel_id(uint32_t this_ptr, int64_t val) {
-       LDKChannelDetails this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelDetails_set_user_channel_id(&this_ptr_conv, val);
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKOutPoint ret_var = OutPoint_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_balance_msat(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelDetails_get_balance_msat(&this_ptr_conv);
+jboolean  __attribute__((visibility("default"))) TS_OutPoint_eq(uint32_t a, uint32_t b) {
+       LDKOutPoint a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       LDKOutPoint b_conv;
+       b_conv.inner = (void*)(b & (~1));
+       b_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
+       jboolean ret_val = OutPoint_eq(&a_conv, &b_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_balance_msat(uint32_t this_ptr, int64_t val) {
-       LDKChannelDetails this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelDetails_set_balance_msat(&this_ptr_conv, val);
+int64_t  __attribute__((visibility("default"))) TS_OutPoint_hash(uint32_t o) {
+       LDKOutPoint o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       int64_t ret_val = OutPoint_hash(&o_conv);
+       return ret_val;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_outbound_capacity_msat(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelDetails_get_outbound_capacity_msat(&this_ptr_conv);
-       return ret_val;
+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));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, OutPoint_to_channel_id(&this_arg_conv).data, 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_outbound_capacity_msat(uint32_t this_ptr, int64_t val) {
-       LDKChannelDetails this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelDetails_set_outbound_capacity_msat(&this_ptr_conv, val);
+int8_tArray  __attribute__((visibility("default"))) TS_OutPoint_write(uint32_t obj) {
+       LDKOutPoint obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = OutPoint_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_inbound_capacity_msat(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelDetails_get_inbound_capacity_msat(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_OutPoint_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_OutPointDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OutPointDecodeErrorZ), "LDKCResult_OutPointDecodeErrorZ");
+       *ret_conv = OutPoint_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_inbound_capacity_msat(uint32_t this_ptr, int64_t val) {
-       LDKChannelDetails this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_free(uint32_t this_obj) {
+       LDKDelayedPaymentOutputDescriptor this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       DelayedPaymentOutputDescriptor_free(this_obj_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_get_outpoint(uint32_t this_ptr) {
+       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelDetails_set_inbound_capacity_msat(&this_ptr_conv, val);
+       LDKOutPoint ret_var = DelayedPaymentOutputDescriptor_get_outpoint(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_confirmations_required(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_set_outpoint(uint32_t this_ptr, uint32_t val) {
+       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCOption_u32Z *ret_copy = MALLOC(sizeof(LDKCOption_u32Z), "LDKCOption_u32Z");
-       *ret_copy = ChannelDetails_get_confirmations_required(&this_ptr_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+       LDKOutPoint val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = OutPoint_clone(&val_conv);
+       DelayedPaymentOutputDescriptor_set_outpoint(&this_ptr_conv, val_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_confirmations_required(uint32_t this_ptr, uint32_t val) {
-       LDKChannelDetails this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_get_per_commitment_point(uint32_t this_ptr) {
+       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKCOption_u32Z val_conv = *(LDKCOption_u32Z*)(val_ptr);
-       val_conv = COption_u32Z_clone((LDKCOption_u32Z*)(((uint64_t)val) & ~1));
-       ChannelDetails_set_confirmations_required(&this_ptr_conv, val_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, DelayedPaymentOutputDescriptor_get_per_commitment_point(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_force_close_spend_delay(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_set_per_commitment_point(uint32_t this_ptr, int8_tArray val) {
+       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCOption_u16Z *ret_copy = MALLOC(sizeof(LDKCOption_u16Z), "LDKCOption_u16Z");
-       *ret_copy = ChannelDetails_get_force_close_spend_delay(&this_ptr_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       DelayedPaymentOutputDescriptor_set_per_commitment_point(&this_ptr_conv, val_ref);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_force_close_spend_delay(uint32_t this_ptr, uint32_t val) {
-       LDKChannelDetails this_ptr_conv;
+int16_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_get_to_self_delay(uint32_t this_ptr) {
+       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKCOption_u16Z val_conv = *(LDKCOption_u16Z*)(val_ptr);
-       val_conv = COption_u16Z_clone((LDKCOption_u16Z*)(((uint64_t)val) & ~1));
-       ChannelDetails_set_force_close_spend_delay(&this_ptr_conv, val_conv);
+       int16_t ret_val = DelayedPaymentOutputDescriptor_get_to_self_delay(&this_ptr_conv);
+       return ret_val;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelDetails_get_is_outbound(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_set_to_self_delay(uint32_t this_ptr, int16_t val) {
+       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = ChannelDetails_get_is_outbound(&this_ptr_conv);
-       return ret_val;
+       DelayedPaymentOutputDescriptor_set_to_self_delay(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_is_outbound(uint32_t this_ptr, jboolean val) {
-       LDKChannelDetails this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_set_output(uint32_t this_ptr, uint32_t val) {
+       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelDetails_set_is_outbound(&this_ptr_conv, val);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKTxOut val_conv = *(LDKTxOut*)(val_ptr);
+       val_conv = TxOut_clone((LDKTxOut*)(((uint64_t)val) & ~1));
+       DelayedPaymentOutputDescriptor_set_output(&this_ptr_conv, val_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelDetails_get_is_funding_locked(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_get_revocation_pubkey(uint32_t this_ptr) {
+       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = ChannelDetails_get_is_funding_locked(&this_ptr_conv);
-       return ret_val;
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, DelayedPaymentOutputDescriptor_get_revocation_pubkey(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_is_funding_locked(uint32_t this_ptr, jboolean val) {
-       LDKChannelDetails this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_set_revocation_pubkey(uint32_t this_ptr, int8_tArray val) {
+       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelDetails_set_is_funding_locked(&this_ptr_conv, val);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       DelayedPaymentOutputDescriptor_set_revocation_pubkey(&this_ptr_conv, val_ref);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelDetails_get_is_usable(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_get_channel_keys_id(uint32_t this_ptr) {
+       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = ChannelDetails_get_is_usable(&this_ptr_conv);
-       return ret_val;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *DelayedPaymentOutputDescriptor_get_channel_keys_id(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_is_usable(uint32_t this_ptr, jboolean val) {
-       LDKChannelDetails this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_set_channel_keys_id(uint32_t this_ptr, int8_tArray val) {
+       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelDetails_set_is_usable(&this_ptr_conv, val);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       DelayedPaymentOutputDescriptor_set_channel_keys_id(&this_ptr_conv, val_ref);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelDetails_get_is_public(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_get_channel_value_satoshis(uint32_t this_ptr) {
+       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = ChannelDetails_get_is_public(&this_ptr_conv);
+       int64_t ret_val = DelayedPaymentOutputDescriptor_get_channel_value_satoshis(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_is_public(uint32_t this_ptr, jboolean val) {
-       LDKChannelDetails this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_set_channel_value_satoshis(uint32_t this_ptr, int64_t val) {
+       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelDetails_set_is_public(&this_ptr_conv, val);
+       DelayedPaymentOutputDescriptor_set_channel_value_satoshis(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_new(int8_tArray channel_id_arg, uint32_t counterparty_arg, uint32_t funding_txo_arg, uint32_t short_channel_id_arg, int64_t channel_value_satoshis_arg, uint32_t unspendable_punishment_reserve_arg, int64_t user_channel_id_arg, int64_t balance_msat_arg, int64_t outbound_capacity_msat_arg, int64_t inbound_capacity_msat_arg, uint32_t confirmations_required_arg, uint32_t force_close_spend_delay_arg, jboolean is_outbound_arg, jboolean is_funding_locked_arg, jboolean is_usable_arg, jboolean is_public_arg) {
-       LDKThirtyTwoBytes channel_id_arg_ref;
-       CHECK(*((uint32_t*)channel_id_arg) == 32);
-       memcpy(channel_id_arg_ref.data, (uint8_t*)(channel_id_arg + 4), 32);
-       LDKChannelCounterparty counterparty_arg_conv;
-       counterparty_arg_conv.inner = (void*)(counterparty_arg & (~1));
-       counterparty_arg_conv.is_owned = (counterparty_arg & 1) || (counterparty_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(counterparty_arg_conv);
-       counterparty_arg_conv = ChannelCounterparty_clone(&counterparty_arg_conv);
-       LDKOutPoint funding_txo_arg_conv;
-       funding_txo_arg_conv.inner = (void*)(funding_txo_arg & (~1));
-       funding_txo_arg_conv.is_owned = (funding_txo_arg & 1) || (funding_txo_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_arg_conv);
-       funding_txo_arg_conv = OutPoint_clone(&funding_txo_arg_conv);
-       void* short_channel_id_arg_ptr = (void*)(((uint64_t)short_channel_id_arg) & ~1);
-       CHECK_ACCESS(short_channel_id_arg_ptr);
-       LDKCOption_u64Z short_channel_id_arg_conv = *(LDKCOption_u64Z*)(short_channel_id_arg_ptr);
-       short_channel_id_arg_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)short_channel_id_arg) & ~1));
-       void* unspendable_punishment_reserve_arg_ptr = (void*)(((uint64_t)unspendable_punishment_reserve_arg) & ~1);
-       CHECK_ACCESS(unspendable_punishment_reserve_arg_ptr);
-       LDKCOption_u64Z unspendable_punishment_reserve_arg_conv = *(LDKCOption_u64Z*)(unspendable_punishment_reserve_arg_ptr);
-       void* confirmations_required_arg_ptr = (void*)(((uint64_t)confirmations_required_arg) & ~1);
-       CHECK_ACCESS(confirmations_required_arg_ptr);
-       LDKCOption_u32Z confirmations_required_arg_conv = *(LDKCOption_u32Z*)(confirmations_required_arg_ptr);
-       confirmations_required_arg_conv = COption_u32Z_clone((LDKCOption_u32Z*)(((uint64_t)confirmations_required_arg) & ~1));
-       void* force_close_spend_delay_arg_ptr = (void*)(((uint64_t)force_close_spend_delay_arg) & ~1);
-       CHECK_ACCESS(force_close_spend_delay_arg_ptr);
-       LDKCOption_u16Z force_close_spend_delay_arg_conv = *(LDKCOption_u16Z*)(force_close_spend_delay_arg_ptr);
-       force_close_spend_delay_arg_conv = COption_u16Z_clone((LDKCOption_u16Z*)(((uint64_t)force_close_spend_delay_arg) & ~1));
-       LDKChannelDetails ret_var = ChannelDetails_new(channel_id_arg_ref, counterparty_arg_conv, funding_txo_arg_conv, short_channel_id_arg_conv, channel_value_satoshis_arg, unspendable_punishment_reserve_arg_conv, user_channel_id_arg, balance_msat_arg, outbound_capacity_msat_arg, inbound_capacity_msat_arg, confirmations_required_arg_conv, force_close_spend_delay_arg_conv, is_outbound_arg, is_funding_locked_arg, is_usable_arg, is_public_arg);
+uint32_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_new(uint32_t outpoint_arg, int8_tArray per_commitment_point_arg, int16_t to_self_delay_arg, uint32_t output_arg, int8_tArray revocation_pubkey_arg, int8_tArray channel_keys_id_arg, int64_t channel_value_satoshis_arg) {
+       LDKOutPoint outpoint_arg_conv;
+       outpoint_arg_conv.inner = (void*)(outpoint_arg & (~1));
+       outpoint_arg_conv.is_owned = (outpoint_arg & 1) || (outpoint_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(outpoint_arg_conv);
+       outpoint_arg_conv = OutPoint_clone(&outpoint_arg_conv);
+       LDKPublicKey per_commitment_point_arg_ref;
+       CHECK(per_commitment_point_arg->arr_len == 33);
+       memcpy(per_commitment_point_arg_ref.compressed_form, per_commitment_point_arg->elems, 33);
+       void* output_arg_ptr = (void*)(((uint64_t)output_arg) & ~1);
+       CHECK_ACCESS(output_arg_ptr);
+       LDKTxOut output_arg_conv = *(LDKTxOut*)(output_arg_ptr);
+       output_arg_conv = TxOut_clone((LDKTxOut*)(((uint64_t)output_arg) & ~1));
+       LDKPublicKey revocation_pubkey_arg_ref;
+       CHECK(revocation_pubkey_arg->arr_len == 33);
+       memcpy(revocation_pubkey_arg_ref.compressed_form, revocation_pubkey_arg->elems, 33);
+       LDKThirtyTwoBytes channel_keys_id_arg_ref;
+       CHECK(channel_keys_id_arg->arr_len == 32);
+       memcpy(channel_keys_id_arg_ref.data, channel_keys_id_arg->elems, 32);
+       LDKDelayedPaymentOutputDescriptor ret_var = DelayedPaymentOutputDescriptor_new(outpoint_arg_conv, per_commitment_point_arg_ref, to_self_delay_arg, output_arg_conv, revocation_pubkey_arg_ref, channel_keys_id_arg_ref, channel_value_satoshis_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -21606,8 +19546,8 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_new(int8_tArr
        return ret_ref;
 }
 
-static inline uint64_t ChannelDetails_clone_ptr(LDKChannelDetails *NONNULL_PTR arg) {
-       LDKChannelDetails ret_var = ChannelDetails_clone(arg);
+static inline uint64_t DelayedPaymentOutputDescriptor_clone_ptr(LDKDelayedPaymentOutputDescriptor *NONNULL_PTR arg) {
+       LDKDelayedPaymentOutputDescriptor ret_var = DelayedPaymentOutputDescriptor_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -21618,21 +19558,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_ChannelDetails_clone_ptr(uint32_t arg) {
-       LDKChannelDetails arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_clone_ptr(uint32_t arg) {
+       LDKDelayedPaymentOutputDescriptor arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelDetails_clone_ptr(&arg_conv);
+       int64_t ret_val = DelayedPaymentOutputDescriptor_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_clone(uint32_t orig) {
-       LDKChannelDetails orig_conv;
+uint32_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_clone(uint32_t orig) {
+       LDKDelayedPaymentOutputDescriptor orig_conv;
        orig_conv.inner = (void*)(orig & (~1));
        orig_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelDetails ret_var = ChannelDetails_clone(&orig_conv);
+       LDKDelayedPaymentOutputDescriptor ret_var = DelayedPaymentOutputDescriptor_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -21644,163 +19584,41 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_clone(uint32_
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_PaymentSendFailure_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKPaymentSendFailure this_ptr_conv = *(LDKPaymentSendFailure*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       PaymentSendFailure_free(this_ptr_conv);
-}
-
-static inline uint64_t PaymentSendFailure_clone_ptr(LDKPaymentSendFailure *NONNULL_PTR arg) {
-       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
-       *ret_copy = PaymentSendFailure_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_PaymentSendFailure_clone_ptr(uint32_t arg) {
-       LDKPaymentSendFailure* arg_conv = (LDKPaymentSendFailure*)arg;
-       int64_t ret_val = PaymentSendFailure_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_PaymentSendFailure_clone(uint32_t orig) {
-       LDKPaymentSendFailure* orig_conv = (LDKPaymentSendFailure*)orig;
-       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
-       *ret_copy = PaymentSendFailure_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_PaymentSendFailure_parameter_error(uint32_t a) {
-       void* a_ptr = (void*)(((uint64_t)a) & ~1);
-       CHECK_ACCESS(a_ptr);
-       LDKAPIError a_conv = *(LDKAPIError*)(a_ptr);
-       a_conv = APIError_clone((LDKAPIError*)(((uint64_t)a) & ~1));
-       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
-       *ret_copy = PaymentSendFailure_parameter_error(a_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_PaymentSendFailure_path_parameter_error(uint32_tArray a) {
-       LDKCVec_CResult_NoneAPIErrorZZ a_constr;
-       a_constr.datalen = *((uint32_t*)a);
-       if (a_constr.datalen > 0)
-               a_constr.data = MALLOC(a_constr.datalen * sizeof(LDKCResult_NoneAPIErrorZ), "LDKCVec_CResult_NoneAPIErrorZZ Elements");
-       else
-               a_constr.data = NULL;
-       uint32_t* a_vals = (uint32_t*)(a + 4);
-       for (size_t w = 0; w < a_constr.datalen; w++) {
-               uint32_t a_conv_22 = a_vals[w];
-               void* a_conv_22_ptr = (void*)(((uint64_t)a_conv_22) & ~1);
-               CHECK_ACCESS(a_conv_22_ptr);
-               LDKCResult_NoneAPIErrorZ a_conv_22_conv = *(LDKCResult_NoneAPIErrorZ*)(a_conv_22_ptr);
-               a_conv_22_conv = CResult_NoneAPIErrorZ_clone((LDKCResult_NoneAPIErrorZ*)(((uint64_t)a_conv_22) & ~1));
-               a_constr.data[w] = a_conv_22_conv;
-       }
-       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
-       *ret_copy = PaymentSendFailure_path_parameter_error(a_constr);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_PaymentSendFailure_all_failed_retry_safe(uint32_tArray a) {
-       LDKCVec_APIErrorZ a_constr;
-       a_constr.datalen = *((uint32_t*)a);
-       if (a_constr.datalen > 0)
-               a_constr.data = MALLOC(a_constr.datalen * sizeof(LDKAPIError), "LDKCVec_APIErrorZ Elements");
-       else
-               a_constr.data = NULL;
-       uint32_t* a_vals = (uint32_t*)(a + 4);
-       for (size_t k = 0; k < a_constr.datalen; k++) {
-               uint32_t a_conv_10 = a_vals[k];
-               void* a_conv_10_ptr = (void*)(((uint64_t)a_conv_10) & ~1);
-               CHECK_ACCESS(a_conv_10_ptr);
-               LDKAPIError a_conv_10_conv = *(LDKAPIError*)(a_conv_10_ptr);
-               a_conv_10_conv = APIError_clone((LDKAPIError*)(((uint64_t)a_conv_10) & ~1));
-               a_constr.data[k] = a_conv_10_conv;
-       }
-       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
-       *ret_copy = PaymentSendFailure_all_failed_retry_safe(a_constr);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_write(uint32_t obj) {
+       LDKDelayedPaymentOutputDescriptor obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = DelayedPaymentOutputDescriptor_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PaymentSendFailure_partial_failure(uint32_tArray results, uint32_t failed_paths_retry, int8_tArray payment_id) {
-       LDKCVec_CResult_NoneAPIErrorZZ results_constr;
-       results_constr.datalen = *((uint32_t*)results);
-       if (results_constr.datalen > 0)
-               results_constr.data = MALLOC(results_constr.datalen * sizeof(LDKCResult_NoneAPIErrorZ), "LDKCVec_CResult_NoneAPIErrorZZ Elements");
-       else
-               results_constr.data = NULL;
-       uint32_t* results_vals = (uint32_t*)(results + 4);
-       for (size_t w = 0; w < results_constr.datalen; w++) {
-               uint32_t results_conv_22 = results_vals[w];
-               void* results_conv_22_ptr = (void*)(((uint64_t)results_conv_22) & ~1);
-               CHECK_ACCESS(results_conv_22_ptr);
-               LDKCResult_NoneAPIErrorZ results_conv_22_conv = *(LDKCResult_NoneAPIErrorZ*)(results_conv_22_ptr);
-               results_constr.data[w] = results_conv_22_conv;
-       }
-       LDKRouteParameters failed_paths_retry_conv;
-       failed_paths_retry_conv.inner = (void*)(failed_paths_retry & (~1));
-       failed_paths_retry_conv.is_owned = (failed_paths_retry & 1) || (failed_paths_retry == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(failed_paths_retry_conv);
-       failed_paths_retry_conv = RouteParameters_clone(&failed_paths_retry_conv);
-       LDKThirtyTwoBytes payment_id_ref;
-       CHECK(*((uint32_t*)payment_id) == 32);
-       memcpy(payment_id_ref.data, (uint8_t*)(payment_id + 4), 32);
-       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
-       *ret_copy = PaymentSendFailure_partial_failure(results_constr, failed_paths_retry_conv, payment_id_ref);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ");
+       *ret_conv = DelayedPaymentOutputDescriptor_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_new(uint32_t fee_est, uint32_t chain_monitor, uint32_t tx_broadcaster, uint32_t logger, uint32_t keys_manager, uint32_t config, uint32_t params) {
-       void* fee_est_ptr = (void*)(((uint64_t)fee_est) & ~1);
-       CHECK_ACCESS(fee_est_ptr);
-       LDKFeeEstimator fee_est_conv = *(LDKFeeEstimator*)(fee_est_ptr);
-       void* chain_monitor_ptr = (void*)(((uint64_t)chain_monitor) & ~1);
-       CHECK_ACCESS(chain_monitor_ptr);
-       LDKWatch chain_monitor_conv = *(LDKWatch*)(chain_monitor_ptr);
-       void* tx_broadcaster_ptr = (void*)(((uint64_t)tx_broadcaster) & ~1);
-       CHECK_ACCESS(tx_broadcaster_ptr);
-       LDKBroadcasterInterface tx_broadcaster_conv = *(LDKBroadcasterInterface*)(tx_broadcaster_ptr);
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       CHECK_ACCESS(logger_ptr);
-       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
-       void* keys_manager_ptr = (void*)(((uint64_t)keys_manager) & ~1);
-       CHECK_ACCESS(keys_manager_ptr);
-       LDKKeysInterface keys_manager_conv = *(LDKKeysInterface*)(keys_manager_ptr);
-       LDKUserConfig config_conv;
-       config_conv.inner = (void*)(config & (~1));
-       config_conv.is_owned = (config & 1) || (config == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(config_conv);
-       config_conv = UserConfig_clone(&config_conv);
-       LDKChainParameters params_conv;
-       params_conv.inner = (void*)(params & (~1));
-       params_conv.is_owned = (params & 1) || (params == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(params_conv);
-       params_conv = ChainParameters_clone(&params_conv);
-       LDKChannelManager ret_var = ChannelManager_new(fee_est_conv, chain_monitor_conv, tx_broadcaster_conv, logger_conv, keys_manager_conv, config_conv, params_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_free(uint32_t this_obj) {
+       LDKStaticPaymentOutputDescriptor this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       StaticPaymentOutputDescriptor_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_get_current_default_configuration(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKUserConfig ret_var = ChannelManager_get_current_default_configuration(&this_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_get_outpoint(uint32_t this_ptr) {
+       LDKStaticPaymentOutputDescriptor this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKOutPoint ret_var = StaticPaymentOutputDescriptor_get_outpoint(&this_ptr_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -21812,678 +19630,425 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_get_current_d
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_create_channel(uint32_t this_arg, int8_tArray their_network_key, int64_t channel_value_satoshis, int64_t push_msat, int64_t user_channel_id, uint32_t override_config) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKPublicKey their_network_key_ref;
-       CHECK(*((uint32_t*)their_network_key) == 33);
-       memcpy(their_network_key_ref.compressed_form, (uint8_t*)(their_network_key + 4), 33);
-       LDKUserConfig override_config_conv;
-       override_config_conv.inner = (void*)(override_config & (~1));
-       override_config_conv.is_owned = (override_config & 1) || (override_config == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(override_config_conv);
-       override_config_conv = UserConfig_clone(&override_config_conv);
-       LDKCResult__u832APIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult__u832APIErrorZ), "LDKCResult__u832APIErrorZ");
-       *ret_conv = ChannelManager_create_channel(&this_arg_conv, their_network_key_ref, channel_value_satoshis, push_msat, user_channel_id, override_config_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_set_outpoint(uint32_t this_ptr, uint32_t val) {
+       LDKStaticPaymentOutputDescriptor this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKOutPoint val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = OutPoint_clone(&val_conv);
+       StaticPaymentOutputDescriptor_set_outpoint(&this_ptr_conv, val_conv);
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_ChannelManager_list_channels(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCVec_ChannelDetailsZ ret_var = ChannelManager_list_channels(&this_arg_conv);
-       uint32_tArray ret_arr = NULL;
-       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 q = 0; q < ret_var.datalen; q++) {
-               LDKChannelDetails ret_conv_16_var = ret_var.data[q];
-               uint64_t ret_conv_16_ref = 0;
-               CHECK((((uint64_t)ret_conv_16_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_conv_16_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_16_var);
-               ret_conv_16_ref = (uint64_t)ret_conv_16_var.inner;
-               if (ret_conv_16_var.is_owned) {
-                       ret_conv_16_ref |= 1;
-               }
-               ret_arr_ptr[q] = ret_conv_16_ref;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_set_output(uint32_t this_ptr, uint32_t val) {
+       LDKStaticPaymentOutputDescriptor this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKTxOut val_conv = *(LDKTxOut*)(val_ptr);
+       val_conv = TxOut_clone((LDKTxOut*)(((uint64_t)val) & ~1));
+       StaticPaymentOutputDescriptor_set_output(&this_ptr_conv, val_conv);
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_ChannelManager_list_usable_channels(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCVec_ChannelDetailsZ ret_var = ChannelManager_list_usable_channels(&this_arg_conv);
-       uint32_tArray ret_arr = NULL;
-       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 q = 0; q < ret_var.datalen; q++) {
-               LDKChannelDetails ret_conv_16_var = ret_var.data[q];
-               uint64_t ret_conv_16_ref = 0;
-               CHECK((((uint64_t)ret_conv_16_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_conv_16_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_16_var);
-               ret_conv_16_ref = (uint64_t)ret_conv_16_var.inner;
-               if (ret_conv_16_var.is_owned) {
-                       ret_conv_16_ref |= 1;
-               }
-               ret_arr_ptr[q] = ret_conv_16_ref;
-       }
-       
-       FREE(ret_var.data);
+int8_tArray  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_get_channel_keys_id(uint32_t this_ptr) {
+       LDKStaticPaymentOutputDescriptor this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *StaticPaymentOutputDescriptor_get_channel_keys_id(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_close_channel(uint32_t this_arg, int8_tArray channel_id) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       unsigned char channel_id_arr[32];
-       CHECK(*((uint32_t*)channel_id) == 32);
-       memcpy(channel_id_arr, (uint8_t*)(channel_id + 4), 32);
-       unsigned char (*channel_id_ref)[32] = &channel_id_arr;
-       LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
-       *ret_conv = ChannelManager_close_channel(&this_arg_conv, channel_id_ref);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_close_channel_with_target_feerate(uint32_t this_arg, int8_tArray channel_id, int32_t target_feerate_sats_per_1000_weight) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       unsigned char channel_id_arr[32];
-       CHECK(*((uint32_t*)channel_id) == 32);
-       memcpy(channel_id_arr, (uint8_t*)(channel_id + 4), 32);
-       unsigned char (*channel_id_ref)[32] = &channel_id_arr;
-       LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
-       *ret_conv = ChannelManager_close_channel_with_target_feerate(&this_arg_conv, channel_id_ref, target_feerate_sats_per_1000_weight);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_force_close_channel(uint32_t this_arg, int8_tArray channel_id) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       unsigned char channel_id_arr[32];
-       CHECK(*((uint32_t*)channel_id) == 32);
-       memcpy(channel_id_arr, (uint8_t*)(channel_id + 4), 32);
-       unsigned char (*channel_id_ref)[32] = &channel_id_arr;
-       LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
-       *ret_conv = ChannelManager_force_close_channel(&this_arg_conv, channel_id_ref);
-       return (uint64_t)ret_conv;
-}
-
-void  __attribute__((visibility("default"))) TS_ChannelManager_force_close_all_channels(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       ChannelManager_force_close_all_channels(&this_arg_conv);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_send_payment(uint32_t this_arg, uint32_t route, int8_tArray payment_hash, int8_tArray payment_secret) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKRoute route_conv;
-       route_conv.inner = (void*)(route & (~1));
-       route_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(route_conv);
-       LDKThirtyTwoBytes payment_hash_ref;
-       CHECK(*((uint32_t*)payment_hash) == 32);
-       memcpy(payment_hash_ref.data, (uint8_t*)(payment_hash + 4), 32);
-       LDKThirtyTwoBytes payment_secret_ref;
-       CHECK(*((uint32_t*)payment_secret) == 32);
-       memcpy(payment_secret_ref.data, (uint8_t*)(payment_secret + 4), 32);
-       LDKCResult_PaymentIdPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentSendFailureZ), "LDKCResult_PaymentIdPaymentSendFailureZ");
-       *ret_conv = ChannelManager_send_payment(&this_arg_conv, &route_conv, payment_hash_ref, payment_secret_ref);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_retry_payment(uint32_t this_arg, uint32_t route, int8_tArray payment_id) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKRoute route_conv;
-       route_conv.inner = (void*)(route & (~1));
-       route_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(route_conv);
-       LDKThirtyTwoBytes payment_id_ref;
-       CHECK(*((uint32_t*)payment_id) == 32);
-       memcpy(payment_id_ref.data, (uint8_t*)(payment_id + 4), 32);
-       LDKCResult_NonePaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePaymentSendFailureZ), "LDKCResult_NonePaymentSendFailureZ");
-       *ret_conv = ChannelManager_retry_payment(&this_arg_conv, &route_conv, payment_id_ref);
-       return (uint64_t)ret_conv;
-}
-
-void  __attribute__((visibility("default"))) TS_ChannelManager_abandon_payment(uint32_t this_arg, int8_tArray payment_id) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKThirtyTwoBytes payment_id_ref;
-       CHECK(*((uint32_t*)payment_id) == 32);
-       memcpy(payment_id_ref.data, (uint8_t*)(payment_id + 4), 32);
-       ChannelManager_abandon_payment(&this_arg_conv, payment_id_ref);
+void  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_set_channel_keys_id(uint32_t this_ptr, int8_tArray val) {
+       LDKStaticPaymentOutputDescriptor this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       StaticPaymentOutputDescriptor_set_channel_keys_id(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_send_spontaneous_payment(uint32_t this_arg, uint32_t route, int8_tArray payment_preimage) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKRoute route_conv;
-       route_conv.inner = (void*)(route & (~1));
-       route_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(route_conv);
-       LDKThirtyTwoBytes payment_preimage_ref;
-       CHECK(*((uint32_t*)payment_preimage) == 32);
-       memcpy(payment_preimage_ref.data, (uint8_t*)(payment_preimage + 4), 32);
-       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ), "LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ");
-       *ret_conv = ChannelManager_send_spontaneous_payment(&this_arg_conv, &route_conv, payment_preimage_ref);
-       return (uint64_t)ret_conv;
+int64_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_get_channel_value_satoshis(uint32_t this_ptr) {
+       LDKStaticPaymentOutputDescriptor this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = StaticPaymentOutputDescriptor_get_channel_value_satoshis(&this_ptr_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_funding_transaction_generated(uint32_t this_arg, int8_tArray temporary_channel_id, int8_tArray funding_transaction) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       unsigned char temporary_channel_id_arr[32];
-       CHECK(*((uint32_t*)temporary_channel_id) == 32);
-       memcpy(temporary_channel_id_arr, (uint8_t*)(temporary_channel_id + 4), 32);
-       unsigned char (*temporary_channel_id_ref)[32] = &temporary_channel_id_arr;
-       LDKTransaction funding_transaction_ref;
-       funding_transaction_ref.datalen = *((uint32_t*)funding_transaction);
-       funding_transaction_ref.data = MALLOC(funding_transaction_ref.datalen, "LDKTransaction Bytes");
-       memcpy(funding_transaction_ref.data, (uint8_t*)(funding_transaction + 4), funding_transaction_ref.datalen);
-       funding_transaction_ref.data_is_owned = true;
-       LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
-       *ret_conv = ChannelManager_funding_transaction_generated(&this_arg_conv, temporary_channel_id_ref, funding_transaction_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_set_channel_value_satoshis(uint32_t this_ptr, int64_t val) {
+       LDKStaticPaymentOutputDescriptor this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       StaticPaymentOutputDescriptor_set_channel_value_satoshis(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelManager_broadcast_node_announcement(uint32_t this_arg, int8_tArray rgb, int8_tArray alias, uint32_tArray addresses) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKThreeBytes rgb_ref;
-       CHECK(*((uint32_t*)rgb) == 3);
-       memcpy(rgb_ref.data, (uint8_t*)(rgb + 4), 3);
-       LDKThirtyTwoBytes alias_ref;
-       CHECK(*((uint32_t*)alias) == 32);
-       memcpy(alias_ref.data, (uint8_t*)(alias + 4), 32);
-       LDKCVec_NetAddressZ addresses_constr;
-       addresses_constr.datalen = *((uint32_t*)addresses);
-       if (addresses_constr.datalen > 0)
-               addresses_constr.data = MALLOC(addresses_constr.datalen * sizeof(LDKNetAddress), "LDKCVec_NetAddressZ Elements");
-       else
-               addresses_constr.data = NULL;
-       uint32_t* addresses_vals = (uint32_t*)(addresses + 4);
-       for (size_t m = 0; m < addresses_constr.datalen; m++) {
-               uint32_t addresses_conv_12 = addresses_vals[m];
-               void* addresses_conv_12_ptr = (void*)(((uint64_t)addresses_conv_12) & ~1);
-               CHECK_ACCESS(addresses_conv_12_ptr);
-               LDKNetAddress addresses_conv_12_conv = *(LDKNetAddress*)(addresses_conv_12_ptr);
-               addresses_constr.data[m] = addresses_conv_12_conv;
+uint32_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_new(uint32_t outpoint_arg, uint32_t output_arg, int8_tArray channel_keys_id_arg, int64_t channel_value_satoshis_arg) {
+       LDKOutPoint outpoint_arg_conv;
+       outpoint_arg_conv.inner = (void*)(outpoint_arg & (~1));
+       outpoint_arg_conv.is_owned = (outpoint_arg & 1) || (outpoint_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(outpoint_arg_conv);
+       outpoint_arg_conv = OutPoint_clone(&outpoint_arg_conv);
+       void* output_arg_ptr = (void*)(((uint64_t)output_arg) & ~1);
+       CHECK_ACCESS(output_arg_ptr);
+       LDKTxOut output_arg_conv = *(LDKTxOut*)(output_arg_ptr);
+       output_arg_conv = TxOut_clone((LDKTxOut*)(((uint64_t)output_arg) & ~1));
+       LDKThirtyTwoBytes channel_keys_id_arg_ref;
+       CHECK(channel_keys_id_arg->arr_len == 32);
+       memcpy(channel_keys_id_arg_ref.data, channel_keys_id_arg->elems, 32);
+       LDKStaticPaymentOutputDescriptor ret_var = StaticPaymentOutputDescriptor_new(outpoint_arg_conv, output_arg_conv, channel_keys_id_arg_ref, channel_value_satoshis_arg);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       ChannelManager_broadcast_node_announcement(&this_arg_conv, rgb_ref, alias_ref, addresses_constr);
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelManager_process_pending_htlc_forwards(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       ChannelManager_process_pending_htlc_forwards(&this_arg_conv);
+static inline uint64_t StaticPaymentOutputDescriptor_clone_ptr(LDKStaticPaymentOutputDescriptor *NONNULL_PTR arg) {
+       LDKStaticPaymentOutputDescriptor ret_var = StaticPaymentOutputDescriptor_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-void  __attribute__((visibility("default"))) TS_ChannelManager_timer_tick_occurred(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       ChannelManager_timer_tick_occurred(&this_arg_conv);
+       return ret_ref;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_ChannelManager_fail_htlc_backwards(uint32_t this_arg, int8_tArray payment_hash) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       unsigned char payment_hash_arr[32];
-       CHECK(*((uint32_t*)payment_hash) == 32);
-       memcpy(payment_hash_arr, (uint8_t*)(payment_hash + 4), 32);
-       unsigned char (*payment_hash_ref)[32] = &payment_hash_arr;
-       jboolean ret_val = ChannelManager_fail_htlc_backwards(&this_arg_conv, payment_hash_ref);
+int64_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_clone_ptr(uint32_t arg) {
+       LDKStaticPaymentOutputDescriptor arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = StaticPaymentOutputDescriptor_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelManager_claim_funds(uint32_t this_arg, int8_tArray payment_preimage) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKThirtyTwoBytes payment_preimage_ref;
-       CHECK(*((uint32_t*)payment_preimage) == 32);
-       memcpy(payment_preimage_ref.data, (uint8_t*)(payment_preimage + 4), 32);
-       jboolean ret_val = ChannelManager_claim_funds(&this_arg_conv, payment_preimage_ref);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_clone(uint32_t orig) {
+       LDKStaticPaymentOutputDescriptor orig_conv;
+       orig_conv.inner = (void*)(orig & (~1));
+       orig_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKStaticPaymentOutputDescriptor ret_var = StaticPaymentOutputDescriptor_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelManager_get_our_node_id(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ChannelManager_get_our_node_id(&this_arg_conv).compressed_form, 33);
+int8_tArray  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_write(uint32_t obj) {
+       LDKStaticPaymentOutputDescriptor obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = StaticPaymentOutputDescriptor_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_create_inbound_payment(uint32_t this_arg, uint32_t min_value_msat, int32_t invoice_expiry_delta_secs) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       void* min_value_msat_ptr = (void*)(((uint64_t)min_value_msat) & ~1);
-       CHECK_ACCESS(min_value_msat_ptr);
-       LDKCOption_u64Z min_value_msat_conv = *(LDKCOption_u64Z*)(min_value_msat_ptr);
-       min_value_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)min_value_msat) & ~1));
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ");
-       *ret_conv = ChannelManager_create_inbound_payment(&this_arg_conv, min_value_msat_conv, invoice_expiry_delta_secs);
+uint32_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ");
+       *ret_conv = StaticPaymentOutputDescriptor_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_create_inbound_payment_legacy(uint32_t this_arg, uint32_t min_value_msat, int32_t invoice_expiry_delta_secs) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       void* min_value_msat_ptr = (void*)(((uint64_t)min_value_msat) & ~1);
-       CHECK_ACCESS(min_value_msat_ptr);
-       LDKCOption_u64Z min_value_msat_conv = *(LDKCOption_u64Z*)(min_value_msat_ptr);
-       min_value_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)min_value_msat) & ~1));
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ");
-       *ret_conv = ChannelManager_create_inbound_payment_legacy(&this_arg_conv, min_value_msat_conv, invoice_expiry_delta_secs);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKSpendableOutputDescriptor this_ptr_conv = *(LDKSpendableOutputDescriptor*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       SpendableOutputDescriptor_free(this_ptr_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_create_inbound_payment_for_hash(uint32_t this_arg, int8_tArray payment_hash, uint32_t min_value_msat, int32_t invoice_expiry_delta_secs) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKThirtyTwoBytes payment_hash_ref;
-       CHECK(*((uint32_t*)payment_hash) == 32);
-       memcpy(payment_hash_ref.data, (uint8_t*)(payment_hash + 4), 32);
-       void* min_value_msat_ptr = (void*)(((uint64_t)min_value_msat) & ~1);
-       CHECK_ACCESS(min_value_msat_ptr);
-       LDKCOption_u64Z min_value_msat_conv = *(LDKCOption_u64Z*)(min_value_msat_ptr);
-       min_value_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)min_value_msat) & ~1));
-       LDKCResult_PaymentSecretNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretNoneZ), "LDKCResult_PaymentSecretNoneZ");
-       *ret_conv = ChannelManager_create_inbound_payment_for_hash(&this_arg_conv, payment_hash_ref, min_value_msat_conv, invoice_expiry_delta_secs);
-       return (uint64_t)ret_conv;
+static inline uint64_t SpendableOutputDescriptor_clone_ptr(LDKSpendableOutputDescriptor *NONNULL_PTR arg) {
+       LDKSpendableOutputDescriptor *ret_copy = MALLOC(sizeof(LDKSpendableOutputDescriptor), "LDKSpendableOutputDescriptor");
+       *ret_copy = SpendableOutputDescriptor_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_clone_ptr(uint32_t arg) {
+       LDKSpendableOutputDescriptor* arg_conv = (LDKSpendableOutputDescriptor*)arg;
+       int64_t ret_val = SpendableOutputDescriptor_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_create_inbound_payment_for_hash_legacy(uint32_t this_arg, int8_tArray payment_hash, uint32_t min_value_msat, int32_t invoice_expiry_delta_secs) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKThirtyTwoBytes payment_hash_ref;
-       CHECK(*((uint32_t*)payment_hash) == 32);
-       memcpy(payment_hash_ref.data, (uint8_t*)(payment_hash + 4), 32);
-       void* min_value_msat_ptr = (void*)(((uint64_t)min_value_msat) & ~1);
-       CHECK_ACCESS(min_value_msat_ptr);
-       LDKCOption_u64Z min_value_msat_conv = *(LDKCOption_u64Z*)(min_value_msat_ptr);
-       min_value_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)min_value_msat) & ~1));
-       LDKCResult_PaymentSecretAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretAPIErrorZ), "LDKCResult_PaymentSecretAPIErrorZ");
-       *ret_conv = ChannelManager_create_inbound_payment_for_hash_legacy(&this_arg_conv, payment_hash_ref, min_value_msat_conv, invoice_expiry_delta_secs);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_clone(uint32_t orig) {
+       LDKSpendableOutputDescriptor* orig_conv = (LDKSpendableOutputDescriptor*)orig;
+       LDKSpendableOutputDescriptor *ret_copy = MALLOC(sizeof(LDKSpendableOutputDescriptor), "LDKSpendableOutputDescriptor");
+       *ret_copy = SpendableOutputDescriptor_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_get_payment_preimage(uint32_t this_arg, int8_tArray payment_hash, int8_tArray payment_secret) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKThirtyTwoBytes payment_hash_ref;
-       CHECK(*((uint32_t*)payment_hash) == 32);
-       memcpy(payment_hash_ref.data, (uint8_t*)(payment_hash + 4), 32);
-       LDKThirtyTwoBytes payment_secret_ref;
-       CHECK(*((uint32_t*)payment_secret) == 32);
-       memcpy(payment_secret_ref.data, (uint8_t*)(payment_secret + 4), 32);
-       LDKCResult_PaymentPreimageAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentPreimageAPIErrorZ), "LDKCResult_PaymentPreimageAPIErrorZ");
-       *ret_conv = ChannelManager_get_payment_preimage(&this_arg_conv, payment_hash_ref, payment_secret_ref);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_static_output(uint32_t outpoint, uint32_t output) {
+       LDKOutPoint outpoint_conv;
+       outpoint_conv.inner = (void*)(outpoint & (~1));
+       outpoint_conv.is_owned = (outpoint & 1) || (outpoint == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(outpoint_conv);
+       outpoint_conv = OutPoint_clone(&outpoint_conv);
+       void* output_ptr = (void*)(((uint64_t)output) & ~1);
+       CHECK_ACCESS(output_ptr);
+       LDKTxOut output_conv = *(LDKTxOut*)(output_ptr);
+       output_conv = TxOut_clone((LDKTxOut*)(((uint64_t)output) & ~1));
+       LDKSpendableOutputDescriptor *ret_copy = MALLOC(sizeof(LDKSpendableOutputDescriptor), "LDKSpendableOutputDescriptor");
+       *ret_copy = SpendableOutputDescriptor_static_output(outpoint_conv, output_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_as_MessageSendEventsProvider(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKMessageSendEventsProvider* ret_ret = MALLOC(sizeof(LDKMessageSendEventsProvider), "LDKMessageSendEventsProvider");
-       *ret_ret = ChannelManager_as_MessageSendEventsProvider(&this_arg_conv);
-       return (uint64_t)ret_ret;
+uint32_t  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_delayed_payment_output(uint32_t a) {
+       LDKDelayedPaymentOutputDescriptor a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = (a & 1) || (a == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       a_conv = DelayedPaymentOutputDescriptor_clone(&a_conv);
+       LDKSpendableOutputDescriptor *ret_copy = MALLOC(sizeof(LDKSpendableOutputDescriptor), "LDKSpendableOutputDescriptor");
+       *ret_copy = SpendableOutputDescriptor_delayed_payment_output(a_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_as_EventsProvider(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKEventsProvider* ret_ret = MALLOC(sizeof(LDKEventsProvider), "LDKEventsProvider");
-       *ret_ret = ChannelManager_as_EventsProvider(&this_arg_conv);
-       return (uint64_t)ret_ret;
+uint32_t  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_static_payment_output(uint32_t a) {
+       LDKStaticPaymentOutputDescriptor a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = (a & 1) || (a == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       a_conv = StaticPaymentOutputDescriptor_clone(&a_conv);
+       LDKSpendableOutputDescriptor *ret_copy = MALLOC(sizeof(LDKSpendableOutputDescriptor), "LDKSpendableOutputDescriptor");
+       *ret_copy = SpendableOutputDescriptor_static_payment_output(a_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_as_Listen(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKListen* ret_ret = MALLOC(sizeof(LDKListen), "LDKListen");
-       *ret_ret = ChannelManager_as_Listen(&this_arg_conv);
-       return (uint64_t)ret_ret;
+int8_tArray  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_write(uint32_t obj) {
+       LDKSpendableOutputDescriptor* obj_conv = (LDKSpendableOutputDescriptor*)obj;
+       LDKCVec_u8Z ret_var = SpendableOutputDescriptor_write(obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_as_Confirm(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKConfirm* ret_ret = MALLOC(sizeof(LDKConfirm), "LDKConfirm");
-       *ret_ret = ChannelManager_as_Confirm(&this_arg_conv);
-       return (uint64_t)ret_ret;
+uint32_t  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ), "LDKCResult_SpendableOutputDescriptorDecodeErrorZ");
+       *ret_conv = SpendableOutputDescriptor_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_BaseSign_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKBaseSign this_ptr_conv = *(LDKBaseSign*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       BaseSign_free(this_ptr_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelManager_await_persistable_update_timeout(uint32_t this_arg, int64_t max_wait) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       jboolean ret_val = ChannelManager_await_persistable_update_timeout(&this_arg_conv, max_wait);
-       return ret_val;
+static inline uint64_t Sign_clone_ptr(LDKSign *NONNULL_PTR arg) {
+       LDKSign* ret_ret = MALLOC(sizeof(LDKSign), "LDKSign");
+       *ret_ret = Sign_clone(arg);
+       return (uint64_t)ret_ret;
 }
-
-void  __attribute__((visibility("default"))) TS_ChannelManager_await_persistable_update(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       ChannelManager_await_persistable_update(&this_arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_Sign_clone_ptr(uint32_t arg) {
+       void* arg_ptr = (void*)(((uint64_t)arg) & ~1);
+       if (!(arg & 1)) { CHECK_ACCESS(arg_ptr); }
+       LDKSign* arg_conv = (LDKSign*)arg_ptr;
+       int64_t ret_val = Sign_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_current_best_block(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKBestBlock ret_var = ChannelManager_current_best_block(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_Sign_clone(uint32_t orig) {
+       void* orig_ptr = (void*)(((uint64_t)orig) & ~1);
+       if (!(orig & 1)) { CHECK_ACCESS(orig_ptr); }
+       LDKSign* orig_conv = (LDKSign*)orig_ptr;
+       LDKSign* ret_ret = MALLOC(sizeof(LDKSign), "LDKSign");
+       *ret_ret = Sign_clone(orig_conv);
+       return (uint64_t)ret_ret;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_as_ChannelMessageHandler(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKChannelMessageHandler* ret_ret = MALLOC(sizeof(LDKChannelMessageHandler), "LDKChannelMessageHandler");
-       *ret_ret = ChannelManager_as_ChannelMessageHandler(&this_arg_conv);
-       return (uint64_t)ret_ret;
+void  __attribute__((visibility("default"))) TS_Sign_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKSign this_ptr_conv = *(LDKSign*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       Sign_free(this_ptr_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelManager_write(uint32_t obj) {
-       LDKChannelManager obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ChannelManager_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_KeysInterface_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKKeysInterface this_ptr_conv = *(LDKKeysInterface*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       KeysInterface_free(this_ptr_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_free(uint32_t this_obj) {
-       LDKChannelManagerReadArgs this_obj_conv;
+void  __attribute__((visibility("default"))) TS_InMemorySigner_free(uint32_t this_obj) {
+       LDKInMemorySigner this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelManagerReadArgs_free(this_obj_conv);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_get_keys_manager(uint32_t this_ptr) {
-       LDKChannelManagerReadArgs this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       // WARNING: This object doesn't live past this scope, needs clone!
-       uint64_t ret_ret = ((uint64_t)ChannelManagerReadArgs_get_keys_manager(&this_ptr_conv)) | 1;
-       return ret_ret;
-}
-
-void  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_set_keys_manager(uint32_t this_ptr, uint32_t val) {
-       LDKChannelManagerReadArgs this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKKeysInterface val_conv = *(LDKKeysInterface*)(val_ptr);
-       ChannelManagerReadArgs_set_keys_manager(&this_ptr_conv, val_conv);
+       InMemorySigner_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_get_fee_estimator(uint32_t this_ptr) {
-       LDKChannelManagerReadArgs this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_InMemorySigner_get_funding_key(uint32_t this_ptr) {
+       LDKInMemorySigner this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       // WARNING: This object doesn't live past this scope, needs clone!
-       uint64_t ret_ret = ((uint64_t)ChannelManagerReadArgs_get_fee_estimator(&this_ptr_conv)) | 1;
-       return ret_ret;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *InMemorySigner_get_funding_key(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_set_fee_estimator(uint32_t this_ptr, uint32_t val) {
-       LDKChannelManagerReadArgs this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_InMemorySigner_set_funding_key(uint32_t this_ptr, int8_tArray val) {
+       LDKInMemorySigner this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKFeeEstimator val_conv = *(LDKFeeEstimator*)(val_ptr);
-       ChannelManagerReadArgs_set_fee_estimator(&this_ptr_conv, val_conv);
+       LDKSecretKey val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.bytes, val->elems, 32);
+       InMemorySigner_set_funding_key(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_get_chain_monitor(uint32_t this_ptr) {
-       LDKChannelManagerReadArgs this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_InMemorySigner_get_revocation_base_key(uint32_t this_ptr) {
+       LDKInMemorySigner this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       // WARNING: This object doesn't live past this scope, needs clone!
-       uint64_t ret_ret = ((uint64_t)ChannelManagerReadArgs_get_chain_monitor(&this_ptr_conv)) | 1;
-       return ret_ret;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *InMemorySigner_get_revocation_base_key(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_set_chain_monitor(uint32_t this_ptr, uint32_t val) {
-       LDKChannelManagerReadArgs this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_InMemorySigner_set_revocation_base_key(uint32_t this_ptr, int8_tArray val) {
+       LDKInMemorySigner this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKWatch val_conv = *(LDKWatch*)(val_ptr);
-       ChannelManagerReadArgs_set_chain_monitor(&this_ptr_conv, val_conv);
+       LDKSecretKey val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.bytes, val->elems, 32);
+       InMemorySigner_set_revocation_base_key(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_get_tx_broadcaster(uint32_t this_ptr) {
-       LDKChannelManagerReadArgs this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_InMemorySigner_get_payment_key(uint32_t this_ptr) {
+       LDKInMemorySigner this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       // WARNING: This object doesn't live past this scope, needs clone!
-       uint64_t ret_ret = ((uint64_t)ChannelManagerReadArgs_get_tx_broadcaster(&this_ptr_conv)) | 1;
-       return ret_ret;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *InMemorySigner_get_payment_key(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_set_tx_broadcaster(uint32_t this_ptr, uint32_t val) {
-       LDKChannelManagerReadArgs this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_InMemorySigner_set_payment_key(uint32_t this_ptr, int8_tArray val) {
+       LDKInMemorySigner this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKBroadcasterInterface val_conv = *(LDKBroadcasterInterface*)(val_ptr);
-       ChannelManagerReadArgs_set_tx_broadcaster(&this_ptr_conv, val_conv);
+       LDKSecretKey val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.bytes, val->elems, 32);
+       InMemorySigner_set_payment_key(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_get_logger(uint32_t this_ptr) {
-       LDKChannelManagerReadArgs this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_InMemorySigner_get_delayed_payment_base_key(uint32_t this_ptr) {
+       LDKInMemorySigner this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       // WARNING: This object doesn't live past this scope, needs clone!
-       uint64_t ret_ret = ((uint64_t)ChannelManagerReadArgs_get_logger(&this_ptr_conv)) | 1;
-       return ret_ret;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *InMemorySigner_get_delayed_payment_base_key(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_set_logger(uint32_t this_ptr, uint32_t val) {
-       LDKChannelManagerReadArgs this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_InMemorySigner_set_delayed_payment_base_key(uint32_t this_ptr, int8_tArray val) {
+       LDKInMemorySigner this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKLogger val_conv = *(LDKLogger*)(val_ptr);
-       ChannelManagerReadArgs_set_logger(&this_ptr_conv, val_conv);
+       LDKSecretKey val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.bytes, val->elems, 32);
+       InMemorySigner_set_delayed_payment_base_key(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_get_default_config(uint32_t this_ptr) {
-       LDKChannelManagerReadArgs this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_InMemorySigner_get_htlc_base_key(uint32_t this_ptr) {
+       LDKInMemorySigner this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKUserConfig ret_var = ChannelManagerReadArgs_get_default_config(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *InMemorySigner_get_htlc_base_key(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_set_default_config(uint32_t this_ptr, uint32_t val) {
-       LDKChannelManagerReadArgs this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_InMemorySigner_set_htlc_base_key(uint32_t this_ptr, int8_tArray val) {
+       LDKInMemorySigner this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKUserConfig val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = UserConfig_clone(&val_conv);
-       ChannelManagerReadArgs_set_default_config(&this_ptr_conv, val_conv);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_new(uint32_t keys_manager, uint32_t fee_estimator, uint32_t chain_monitor, uint32_t tx_broadcaster, uint32_t logger, uint32_t default_config, uint32_tArray channel_monitors) {
-       void* keys_manager_ptr = (void*)(((uint64_t)keys_manager) & ~1);
-       CHECK_ACCESS(keys_manager_ptr);
-       LDKKeysInterface keys_manager_conv = *(LDKKeysInterface*)(keys_manager_ptr);
-       void* fee_estimator_ptr = (void*)(((uint64_t)fee_estimator) & ~1);
-       CHECK_ACCESS(fee_estimator_ptr);
-       LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(fee_estimator_ptr);
-       void* chain_monitor_ptr = (void*)(((uint64_t)chain_monitor) & ~1);
-       CHECK_ACCESS(chain_monitor_ptr);
-       LDKWatch chain_monitor_conv = *(LDKWatch*)(chain_monitor_ptr);
-       void* tx_broadcaster_ptr = (void*)(((uint64_t)tx_broadcaster) & ~1);
-       CHECK_ACCESS(tx_broadcaster_ptr);
-       LDKBroadcasterInterface tx_broadcaster_conv = *(LDKBroadcasterInterface*)(tx_broadcaster_ptr);
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       CHECK_ACCESS(logger_ptr);
-       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
-       LDKUserConfig default_config_conv;
-       default_config_conv.inner = (void*)(default_config & (~1));
-       default_config_conv.is_owned = (default_config & 1) || (default_config == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(default_config_conv);
-       default_config_conv = UserConfig_clone(&default_config_conv);
-       LDKCVec_ChannelMonitorZ channel_monitors_constr;
-       channel_monitors_constr.datalen = *((uint32_t*)channel_monitors);
-       if (channel_monitors_constr.datalen > 0)
-               channel_monitors_constr.data = MALLOC(channel_monitors_constr.datalen * sizeof(LDKChannelMonitor), "LDKCVec_ChannelMonitorZ Elements");
-       else
-               channel_monitors_constr.data = NULL;
-       uint32_t* channel_monitors_vals = (uint32_t*)(channel_monitors + 4);
-       for (size_t q = 0; q < channel_monitors_constr.datalen; q++) {
-               uint32_t channel_monitors_conv_16 = channel_monitors_vals[q];
-               LDKChannelMonitor channel_monitors_conv_16_conv;
-               channel_monitors_conv_16_conv.inner = (void*)(channel_monitors_conv_16 & (~1));
-               channel_monitors_conv_16_conv.is_owned = (channel_monitors_conv_16 & 1) || (channel_monitors_conv_16 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_monitors_conv_16_conv);
-               channel_monitors_constr.data[q] = channel_monitors_conv_16_conv;
-       }
-       LDKChannelManagerReadArgs ret_var = ChannelManagerReadArgs_new(keys_manager_conv, fee_estimator_conv, chain_monitor_conv, tx_broadcaster_conv, logger_conv, default_config_conv, channel_monitors_constr);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       LDKSecretKey val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.bytes, val->elems, 32);
+       InMemorySigner_set_htlc_base_key(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelManagerZ_read(int8_tArray ser, uint32_t arg) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKChannelManagerReadArgs arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = (arg & 1) || (arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       // Warning: we need a move here but no clone is available for LDKChannelManagerReadArgs
-       LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ");
-       *ret_conv = C2Tuple_BlockHashChannelManagerZ_read(ser_ref, arg_conv);
-       return (uint64_t)ret_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_InMemorySigner_get_commitment_seed(uint32_t this_ptr) {
+       LDKInMemorySigner this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *InMemorySigner_get_commitment_seed(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_DecodeError_free(uint32_t this_obj) {
-       LDKDecodeError this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       DecodeError_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_InMemorySigner_set_commitment_seed(uint32_t this_ptr, int8_tArray val) {
+       LDKInMemorySigner this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       InMemorySigner_set_commitment_seed(&this_ptr_conv, val_ref);
 }
 
-static inline uint64_t DecodeError_clone_ptr(LDKDecodeError *NONNULL_PTR arg) {
-       LDKDecodeError ret_var = DecodeError_clone(arg);
+static inline uint64_t InMemorySigner_clone_ptr(LDKInMemorySigner *NONNULL_PTR arg) {
+       LDKInMemorySigner ret_var = InMemorySigner_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -22494,21 +20059,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_DecodeError_clone_ptr(uint32_t arg) {
-       LDKDecodeError arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_InMemorySigner_clone_ptr(uint32_t arg) {
+       LDKInMemorySigner arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = DecodeError_clone_ptr(&arg_conv);
+       int64_t ret_val = InMemorySigner_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_DecodeError_clone(uint32_t orig) {
-       LDKDecodeError orig_conv;
+uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_clone(uint32_t orig) {
+       LDKInMemorySigner orig_conv;
        orig_conv.inner = (void*)(orig & (~1));
        orig_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKDecodeError ret_var = DecodeError_clone(&orig_conv);
+       LDKInMemorySigner ret_var = InMemorySigner_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -22520,20 +20085,46 @@ uint32_t  __attribute__((visibility("default"))) TS_DecodeError_clone(uint32_t o
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_Init_free(uint32_t this_obj) {
-       LDKInit this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       Init_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_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, int8_tArray channel_keys_id) {
+       LDKSecretKey funding_key_ref;
+       CHECK(funding_key->arr_len == 32);
+       memcpy(funding_key_ref.bytes, funding_key->elems, 32);
+       LDKSecretKey revocation_base_key_ref;
+       CHECK(revocation_base_key->arr_len == 32);
+       memcpy(revocation_base_key_ref.bytes, revocation_base_key->elems, 32);
+       LDKSecretKey payment_key_ref;
+       CHECK(payment_key->arr_len == 32);
+       memcpy(payment_key_ref.bytes, payment_key->elems, 32);
+       LDKSecretKey delayed_payment_base_key_ref;
+       CHECK(delayed_payment_base_key->arr_len == 32);
+       memcpy(delayed_payment_base_key_ref.bytes, delayed_payment_base_key->elems, 32);
+       LDKSecretKey htlc_base_key_ref;
+       CHECK(htlc_base_key->arr_len == 32);
+       memcpy(htlc_base_key_ref.bytes, htlc_base_key->elems, 32);
+       LDKThirtyTwoBytes commitment_seed_ref;
+       CHECK(commitment_seed->arr_len == 32);
+       memcpy(commitment_seed_ref.data, commitment_seed->elems, 32);
+       LDKThirtyTwoBytes channel_keys_id_ref;
+       CHECK(channel_keys_id->arr_len == 32);
+       memcpy(channel_keys_id_ref.data, channel_keys_id->elems, 32);
+       LDKInMemorySigner ret_var = InMemorySigner_new(funding_key_ref, revocation_base_key_ref, payment_key_ref, delayed_payment_base_key_ref, htlc_base_key_ref, commitment_seed_ref, channel_value_satoshis, channel_keys_id_ref);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Init_get_features(uint32_t this_ptr) {
-       LDKInit this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKInitFeatures ret_var = Init_get_features(&this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_counterparty_pubkeys(uint32_t this_arg) {
+       LDKInMemorySigner this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKChannelPublicKeys ret_var = InMemorySigner_counterparty_pubkeys(&this_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -22545,26 +20136,39 @@ uint32_t  __attribute__((visibility("default"))) TS_Init_get_features(uint32_t t
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_Init_set_features(uint32_t this_ptr, uint32_t val) {
-       LDKInit this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKInitFeatures val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = InitFeatures_clone(&val_conv);
-       Init_set_features(&this_ptr_conv, val_conv);
+int16_t  __attribute__((visibility("default"))) TS_InMemorySigner_counterparty_selected_contest_delay(uint32_t this_arg) {
+       LDKInMemorySigner this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int16_t ret_val = InMemorySigner_counterparty_selected_contest_delay(&this_arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Init_new(uint32_t features_arg) {
-       LDKInitFeatures features_arg_conv;
-       features_arg_conv.inner = (void*)(features_arg & (~1));
-       features_arg_conv.is_owned = (features_arg & 1) || (features_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(features_arg_conv);
-       features_arg_conv = InitFeatures_clone(&features_arg_conv);
-       LDKInit ret_var = Init_new(features_arg_conv);
+int16_t  __attribute__((visibility("default"))) TS_InMemorySigner_holder_selected_contest_delay(uint32_t this_arg) {
+       LDKInMemorySigner this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int16_t ret_val = InMemorySigner_holder_selected_contest_delay(&this_arg_conv);
+       return ret_val;
+}
+
+jboolean  __attribute__((visibility("default"))) TS_InMemorySigner_is_outbound(uint32_t this_arg) {
+       LDKInMemorySigner this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       jboolean ret_val = InMemorySigner_is_outbound(&this_arg_conv);
+       return ret_val;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_funding_outpoint(uint32_t this_arg) {
+       LDKInMemorySigner this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKOutPoint ret_var = InMemorySigner_funding_outpoint(&this_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -22576,33 +20180,146 @@ uint32_t  __attribute__((visibility("default"))) TS_Init_new(uint32_t features_a
        return ret_ref;
 }
 
-static inline uint64_t Init_clone_ptr(LDKInit *NONNULL_PTR arg) {
-       LDKInit ret_var = Init_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
+uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_get_channel_parameters(uint32_t this_arg) {
+       LDKInMemorySigner this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKChannelTransactionParameters ret_var = InMemorySigner_get_channel_parameters(&this_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_Init_clone_ptr(uint32_t arg) {
-       LDKInit arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = Init_clone_ptr(&arg_conv);
+
+jboolean  __attribute__((visibility("default"))) TS_InMemorySigner_opt_anchors(uint32_t this_arg) {
+       LDKInMemorySigner this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       jboolean ret_val = InMemorySigner_opt_anchors(&this_arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Init_clone(uint32_t orig) {
-       LDKInit orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKInit ret_var = Init_clone(&orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_sign_counterparty_payment_input(uint32_t this_arg, int8_tArray spend_tx, int64_t input_idx, uint32_t descriptor) {
+       LDKInMemorySigner this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKTransaction spend_tx_ref;
+       spend_tx_ref.datalen = spend_tx->arr_len;
+       spend_tx_ref.data = MALLOC(spend_tx_ref.datalen, "LDKTransaction Bytes");
+       memcpy(spend_tx_ref.data, spend_tx->elems, spend_tx_ref.datalen);
+       spend_tx_ref.data_is_owned = true;
+       LDKStaticPaymentOutputDescriptor descriptor_conv;
+       descriptor_conv.inner = (void*)(descriptor & (~1));
+       descriptor_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(descriptor_conv);
+       LDKCResult_CVec_CVec_u8ZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ), "LDKCResult_CVec_CVec_u8ZZNoneZ");
+       *ret_conv = InMemorySigner_sign_counterparty_payment_input(&this_arg_conv, spend_tx_ref, input_idx, &descriptor_conv);
+       return (uint64_t)ret_conv;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_sign_dynamic_p2wsh_input(uint32_t this_arg, int8_tArray spend_tx, int64_t input_idx, uint32_t descriptor) {
+       LDKInMemorySigner this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKTransaction spend_tx_ref;
+       spend_tx_ref.datalen = spend_tx->arr_len;
+       spend_tx_ref.data = MALLOC(spend_tx_ref.datalen, "LDKTransaction Bytes");
+       memcpy(spend_tx_ref.data, spend_tx->elems, spend_tx_ref.datalen);
+       spend_tx_ref.data_is_owned = true;
+       LDKDelayedPaymentOutputDescriptor descriptor_conv;
+       descriptor_conv.inner = (void*)(descriptor & (~1));
+       descriptor_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(descriptor_conv);
+       LDKCResult_CVec_CVec_u8ZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ), "LDKCResult_CVec_CVec_u8ZZNoneZ");
+       *ret_conv = InMemorySigner_sign_dynamic_p2wsh_input(&this_arg_conv, spend_tx_ref, input_idx, &descriptor_conv);
+       return (uint64_t)ret_conv;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_as_BaseSign(uint32_t this_arg) {
+       LDKInMemorySigner this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKBaseSign* ret_ret = MALLOC(sizeof(LDKBaseSign), "LDKBaseSign");
+       *ret_ret = InMemorySigner_as_BaseSign(&this_arg_conv);
+       return (uint64_t)ret_ret;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_as_Sign(uint32_t this_arg) {
+       LDKInMemorySigner this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKSign* ret_ret = MALLOC(sizeof(LDKSign), "LDKSign");
+       *ret_ret = InMemorySigner_as_Sign(&this_arg_conv);
+       return (uint64_t)ret_ret;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_InMemorySigner_write(uint32_t obj) {
+       LDKInMemorySigner obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = InMemorySigner_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_InMemorySignerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InMemorySignerDecodeErrorZ), "LDKCResult_InMemorySignerDecodeErrorZ");
+       *ret_conv = InMemorySigner_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_KeysManager_free(uint32_t this_obj) {
+       LDKKeysManager this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       KeysManager_free(this_obj_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_KeysManager_new(int8_tArray seed, int64_t starting_time_secs, int32_t starting_time_nanos) {
+       unsigned char seed_arr[32];
+       CHECK(seed->arr_len == 32);
+       memcpy(seed_arr, seed->elems, 32);
+       unsigned char (*seed_ref)[32] = &seed_arr;
+       LDKKeysManager ret_var = KeysManager_new(seed_ref, starting_time_secs, starting_time_nanos);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_KeysManager_derive_channel_keys(uint32_t this_arg, int64_t channel_value_satoshis, int8_tArray params) {
+       LDKKeysManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       unsigned char params_arr[32];
+       CHECK(params->arr_len == 32);
+       memcpy(params_arr, params->elems, 32);
+       unsigned char (*params_ref)[32] = &params_arr;
+       LDKInMemorySigner ret_var = KeysManager_derive_channel_keys(&this_arg_conv, channel_value_satoshis, params_ref);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -22614,61 +20331,132 @@ uint32_t  __attribute__((visibility("default"))) TS_Init_clone(uint32_t orig) {
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ErrorMessage_free(uint32_t this_obj) {
-       LDKErrorMessage this_obj_conv;
+uint32_t  __attribute__((visibility("default"))) TS_KeysManager_spend_spendable_outputs(uint32_t this_arg, uint32_tArray descriptors, uint32_tArray outputs, int8_tArray change_destination_script, int32_t feerate_sat_per_1000_weight) {
+       LDKKeysManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKCVec_SpendableOutputDescriptorZ descriptors_constr;
+       descriptors_constr.datalen = descriptors->arr_len;
+       if (descriptors_constr.datalen > 0)
+               descriptors_constr.data = MALLOC(descriptors_constr.datalen * sizeof(LDKSpendableOutputDescriptor), "LDKCVec_SpendableOutputDescriptorZ Elements");
+       else
+               descriptors_constr.data = NULL;
+       uint32_t* descriptors_vals = descriptors->elems;
+       for (size_t b = 0; b < descriptors_constr.datalen; b++) {
+               uint32_t descriptors_conv_27 = descriptors_vals[b];
+               void* descriptors_conv_27_ptr = (void*)(((uint64_t)descriptors_conv_27) & ~1);
+               CHECK_ACCESS(descriptors_conv_27_ptr);
+               LDKSpendableOutputDescriptor descriptors_conv_27_conv = *(LDKSpendableOutputDescriptor*)(descriptors_conv_27_ptr);
+               descriptors_conv_27_conv = SpendableOutputDescriptor_clone((LDKSpendableOutputDescriptor*)(((uint64_t)descriptors_conv_27) & ~1));
+               descriptors_constr.data[b] = descriptors_conv_27_conv;
+       }
+       LDKCVec_TxOutZ outputs_constr;
+       outputs_constr.datalen = outputs->arr_len;
+       if (outputs_constr.datalen > 0)
+               outputs_constr.data = MALLOC(outputs_constr.datalen * sizeof(LDKTxOut), "LDKCVec_TxOutZ Elements");
+       else
+               outputs_constr.data = NULL;
+       uint32_t* outputs_vals = outputs->elems;
+       for (size_t h = 0; h < outputs_constr.datalen; h++) {
+               uint32_t outputs_conv_7 = outputs_vals[h];
+               void* outputs_conv_7_ptr = (void*)(((uint64_t)outputs_conv_7) & ~1);
+               CHECK_ACCESS(outputs_conv_7_ptr);
+               LDKTxOut outputs_conv_7_conv = *(LDKTxOut*)(outputs_conv_7_ptr);
+               outputs_conv_7_conv = TxOut_clone((LDKTxOut*)(((uint64_t)outputs_conv_7) & ~1));
+               outputs_constr.data[h] = outputs_conv_7_conv;
+       }
+       LDKCVec_u8Z change_destination_script_ref;
+       change_destination_script_ref.datalen = change_destination_script->arr_len;
+       change_destination_script_ref.data = MALLOC(change_destination_script_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(change_destination_script_ref.data, change_destination_script->elems, change_destination_script_ref.datalen);
+       LDKCResult_TransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TransactionNoneZ), "LDKCResult_TransactionNoneZ");
+       *ret_conv = KeysManager_spend_spendable_outputs(&this_arg_conv, descriptors_constr, outputs_constr, change_destination_script_ref, feerate_sat_per_1000_weight);
+       return (uint64_t)ret_conv;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_KeysManager_as_KeysInterface(uint32_t this_arg) {
+       LDKKeysManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKKeysInterface* ret_ret = MALLOC(sizeof(LDKKeysInterface), "LDKKeysInterface");
+       *ret_ret = KeysManager_as_KeysInterface(&this_arg_conv);
+       return (uint64_t)ret_ret;
+}
+
+void  __attribute__((visibility("default"))) TS_ChannelManager_free(uint32_t this_obj) {
+       LDKChannelManager this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ErrorMessage_free(this_obj_conv);
+       ChannelManager_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ErrorMessage_get_channel_id(uint32_t this_ptr) {
-       LDKErrorMessage this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChainParameters_free(uint32_t this_obj) {
+       LDKChainParameters this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       ChainParameters_free(this_obj_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ChainParameters_get_network(uint32_t this_ptr) {
+       LDKChainParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *ErrorMessage_get_channel_id(&this_ptr_conv), 32);
-       return ret_arr;
+       uint32_t ret_conv = LDKNetwork_to_js(ChainParameters_get_network(&this_ptr_conv));
+       return ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_ErrorMessage_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKErrorMessage this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChainParameters_set_network(uint32_t this_ptr, uint32_t val) {
+       LDKChainParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       ErrorMessage_set_channel_id(&this_ptr_conv, val_ref);
+       LDKNetwork val_conv = LDKNetwork_from_js(val);
+       ChainParameters_set_network(&this_ptr_conv, val_conv);
 }
 
-jstring  __attribute__((visibility("default"))) TS_ErrorMessage_get_data(uint32_t this_ptr) {
-       LDKErrorMessage this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChainParameters_get_best_block(uint32_t this_ptr) {
+       LDKChainParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKStr ret_str = ErrorMessage_get_data(&this_ptr_conv);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
+       LDKBestBlock ret_var = ChainParameters_get_best_block(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ErrorMessage_set_data(uint32_t this_ptr, jstring val) {
-       LDKErrorMessage this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChainParameters_set_best_block(uint32_t this_ptr, uint32_t val) {
+       LDKChainParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKStr val_conv = str_ref_to_owned_c(val);
-       ErrorMessage_set_data(&this_ptr_conv, val_conv);
+       LDKBestBlock val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = BestBlock_clone(&val_conv);
+       ChainParameters_set_best_block(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ErrorMessage_new(int8_tArray channel_id_arg, jstring data_arg) {
-       LDKThirtyTwoBytes channel_id_arg_ref;
-       CHECK(*((uint32_t*)channel_id_arg) == 32);
-       memcpy(channel_id_arg_ref.data, (uint8_t*)(channel_id_arg + 4), 32);
-       LDKStr data_arg_conv = str_ref_to_owned_c(data_arg);
-       LDKErrorMessage ret_var = ErrorMessage_new(channel_id_arg_ref, data_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ChainParameters_new(uint32_t network_arg, uint32_t best_block_arg) {
+       LDKNetwork network_arg_conv = LDKNetwork_from_js(network_arg);
+       LDKBestBlock best_block_arg_conv;
+       best_block_arg_conv.inner = (void*)(best_block_arg & (~1));
+       best_block_arg_conv.is_owned = (best_block_arg & 1) || (best_block_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(best_block_arg_conv);
+       best_block_arg_conv = BestBlock_clone(&best_block_arg_conv);
+       LDKChainParameters ret_var = ChainParameters_new(network_arg_conv, best_block_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -22680,8 +20468,8 @@ uint32_t  __attribute__((visibility("default"))) TS_ErrorMessage_new(int8_tArray
        return ret_ref;
 }
 
-static inline uint64_t ErrorMessage_clone_ptr(LDKErrorMessage *NONNULL_PTR arg) {
-       LDKErrorMessage ret_var = ErrorMessage_clone(arg);
+static inline uint64_t ChainParameters_clone_ptr(LDKChainParameters *NONNULL_PTR arg) {
+       LDKChainParameters ret_var = ChainParameters_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -22692,21 +20480,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_ErrorMessage_clone_ptr(uint32_t arg) {
-       LDKErrorMessage arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChainParameters_clone_ptr(uint32_t arg) {
+       LDKChainParameters arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ErrorMessage_clone_ptr(&arg_conv);
+       int64_t ret_val = ChainParameters_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ErrorMessage_clone(uint32_t orig) {
-       LDKErrorMessage orig_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChainParameters_clone(uint32_t orig) {
+       LDKChainParameters orig_conv;
        orig_conv.inner = (void*)(orig & (~1));
        orig_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKErrorMessage ret_var = ErrorMessage_clone(&orig_conv);
+       LDKChainParameters ret_var = ChainParameters_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -22718,126 +20506,67 @@ uint32_t  __attribute__((visibility("default"))) TS_ErrorMessage_clone(uint32_t
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_Ping_free(uint32_t this_obj) {
-       LDKPing this_obj_conv;
+void  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_free(uint32_t this_obj) {
+       LDKCounterpartyForwardingInfo this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       Ping_free(this_obj_conv);
+       CounterpartyForwardingInfo_free(this_obj_conv);
 }
 
-int16_t  __attribute__((visibility("default"))) TS_Ping_get_ponglen(uint32_t this_ptr) {
-       LDKPing this_ptr_conv;
+int32_t  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_get_fee_base_msat(uint32_t this_ptr) {
+       LDKCounterpartyForwardingInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = Ping_get_ponglen(&this_ptr_conv);
+       int32_t ret_val = CounterpartyForwardingInfo_get_fee_base_msat(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_Ping_set_ponglen(uint32_t this_ptr, int16_t val) {
-       LDKPing this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_set_fee_base_msat(uint32_t this_ptr, int32_t val) {
+       LDKCounterpartyForwardingInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       Ping_set_ponglen(&this_ptr_conv, val);
+       CounterpartyForwardingInfo_set_fee_base_msat(&this_ptr_conv, val);
 }
 
-int16_t  __attribute__((visibility("default"))) TS_Ping_get_byteslen(uint32_t this_ptr) {
-       LDKPing this_ptr_conv;
+int32_t  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_get_fee_proportional_millionths(uint32_t this_ptr) {
+       LDKCounterpartyForwardingInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = Ping_get_byteslen(&this_ptr_conv);
+       int32_t ret_val = CounterpartyForwardingInfo_get_fee_proportional_millionths(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_Ping_set_byteslen(uint32_t this_ptr, int16_t val) {
-       LDKPing this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_set_fee_proportional_millionths(uint32_t this_ptr, int32_t val) {
+       LDKCounterpartyForwardingInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       Ping_set_byteslen(&this_ptr_conv, val);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_Ping_new(int16_t ponglen_arg, int16_t byteslen_arg) {
-       LDKPing ret_var = Ping_new(ponglen_arg, byteslen_arg);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
-}
-
-static inline uint64_t Ping_clone_ptr(LDKPing *NONNULL_PTR arg) {
-       LDKPing ret_var = Ping_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_Ping_clone_ptr(uint32_t arg) {
-       LDKPing arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = Ping_clone_ptr(&arg_conv);
-       return ret_val;
-}
-
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKPing ret_var = Ping_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
-}
-
-void  __attribute__((visibility("default"))) TS_Pong_free(uint32_t this_obj) {
-       LDKPong this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       Pong_free(this_obj_conv);
+       CounterpartyForwardingInfo_set_fee_proportional_millionths(&this_ptr_conv, val);
 }
 
-int16_t  __attribute__((visibility("default"))) TS_Pong_get_byteslen(uint32_t this_ptr) {
-       LDKPong this_ptr_conv;
+int16_t  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_get_cltv_expiry_delta(uint32_t this_ptr) {
+       LDKCounterpartyForwardingInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = Pong_get_byteslen(&this_ptr_conv);
+       int16_t ret_val = CounterpartyForwardingInfo_get_cltv_expiry_delta(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_Pong_set_byteslen(uint32_t this_ptr, int16_t val) {
-       LDKPong this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_set_cltv_expiry_delta(uint32_t this_ptr, int16_t val) {
+       LDKCounterpartyForwardingInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       Pong_set_byteslen(&this_ptr_conv, val);
+       CounterpartyForwardingInfo_set_cltv_expiry_delta(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Pong_new(int16_t byteslen_arg) {
-       LDKPong ret_var = Pong_new(byteslen_arg);
+uint32_t  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_new(int32_t fee_base_msat_arg, int32_t fee_proportional_millionths_arg, int16_t cltv_expiry_delta_arg) {
+       LDKCounterpartyForwardingInfo ret_var = CounterpartyForwardingInfo_new(fee_base_msat_arg, fee_proportional_millionths_arg, cltv_expiry_delta_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -22849,8 +20578,8 @@ uint32_t  __attribute__((visibility("default"))) TS_Pong_new(int16_t byteslen_ar
        return ret_ref;
 }
 
-static inline uint64_t Pong_clone_ptr(LDKPong *NONNULL_PTR arg) {
-       LDKPong ret_var = Pong_clone(arg);
+static inline uint64_t CounterpartyForwardingInfo_clone_ptr(LDKCounterpartyForwardingInfo *NONNULL_PTR arg) {
+       LDKCounterpartyForwardingInfo ret_var = CounterpartyForwardingInfo_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -22860,22 +20589,22 @@ if (ret_var.is_owned) {
        ret_ref |= 1;
 }
        return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_Pong_clone_ptr(uint32_t arg) {
-       LDKPong arg_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_clone_ptr(uint32_t arg) {
+       LDKCounterpartyForwardingInfo arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = Pong_clone_ptr(&arg_conv);
+       int64_t ret_val = CounterpartyForwardingInfo_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Pong_clone(uint32_t orig) {
-       LDKPong orig_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_clone(uint32_t orig) {
+       LDKCounterpartyForwardingInfo orig_conv;
        orig_conv.inner = (void*)(orig & (~1));
        orig_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKPong ret_var = Pong_clone(&orig_conv);
+       LDKCounterpartyForwardingInfo ret_var = CounterpartyForwardingInfo_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -22887,940 +20616,1176 @@ uint32_t  __attribute__((visibility("default"))) TS_Pong_clone(uint32_t orig) {
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_free(uint32_t this_obj) {
-       LDKOpenChannel this_obj_conv;
+void  __attribute__((visibility("default"))) TS_ChannelCounterparty_free(uint32_t this_obj) {
+       LDKChannelCounterparty this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       OpenChannel_free(this_obj_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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *OpenChannel_get_chain_hash(&this_ptr_conv), 32);
-       return ret_arr;
-}
-
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
-       LDKOpenChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       OpenChannel_set_chain_hash(&this_ptr_conv, val_ref);
+       ChannelCounterparty_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_get_temporary_channel_id(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelCounterparty_get_node_id(uint32_t this_ptr) {
+       LDKChannelCounterparty this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *OpenChannel_get_temporary_channel_id(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, ChannelCounterparty_get_node_id(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_temporary_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKOpenChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelCounterparty_set_node_id(uint32_t this_ptr, int8_tArray val) {
+       LDKChannelCounterparty this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       OpenChannel_set_temporary_channel_id(&this_ptr_conv, val_ref);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       ChannelCounterparty_set_node_id(&this_ptr_conv, val_ref);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_OpenChannel_get_funding_satoshis(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelCounterparty_get_features(uint32_t this_ptr) {
+       LDKChannelCounterparty this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = OpenChannel_get_funding_satoshis(&this_ptr_conv);
-       return ret_val;
+       LDKInitFeatures ret_var = ChannelCounterparty_get_features(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_funding_satoshis(uint32_t this_ptr, int64_t val) {
-       LDKOpenChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelCounterparty_set_features(uint32_t this_ptr, uint32_t val) {
+       LDKChannelCounterparty this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       OpenChannel_set_funding_satoshis(&this_ptr_conv, val);
+       LDKInitFeatures val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = InitFeatures_clone(&val_conv);
+       ChannelCounterparty_set_features(&this_ptr_conv, val_conv);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_OpenChannel_get_push_msat(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelCounterparty_get_unspendable_punishment_reserve(uint32_t this_ptr) {
+       LDKChannelCounterparty this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = OpenChannel_get_push_msat(&this_ptr_conv);
+       int64_t ret_val = ChannelCounterparty_get_unspendable_punishment_reserve(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_push_msat(uint32_t this_ptr, int64_t val) {
-       LDKOpenChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       OpenChannel_set_push_msat(&this_ptr_conv, val);
-}
-
-int64_t  __attribute__((visibility("default"))) TS_OpenChannel_get_dust_limit_satoshis(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelCounterparty_set_unspendable_punishment_reserve(uint32_t this_ptr, int64_t val) {
+       LDKChannelCounterparty this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = OpenChannel_get_dust_limit_satoshis(&this_ptr_conv);
-       return ret_val;
+       ChannelCounterparty_set_unspendable_punishment_reserve(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_dust_limit_satoshis(uint32_t this_ptr, int64_t val) {
-       LDKOpenChannel this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelCounterparty_get_forwarding_info(uint32_t this_ptr) {
+       LDKChannelCounterparty this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       OpenChannel_set_dust_limit_satoshis(&this_ptr_conv, val);
+       LDKCounterpartyForwardingInfo ret_var = ChannelCounterparty_get_forwarding_info(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       if ((uint64_t)ret_var.inner > 4096) {
+               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+               ret_ref = (uint64_t)ret_var.inner;
+               if (ret_var.is_owned) {
+                       ret_ref |= 1;
+               }
+       }
+       return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_OpenChannel_get_max_htlc_value_in_flight_msat(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelCounterparty_set_forwarding_info(uint32_t this_ptr, uint32_t val) {
+       LDKChannelCounterparty this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = OpenChannel_get_max_htlc_value_in_flight_msat(&this_ptr_conv);
-       return ret_val;
+       LDKCounterpartyForwardingInfo val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = CounterpartyForwardingInfo_clone(&val_conv);
+       ChannelCounterparty_set_forwarding_info(&this_ptr_conv, val_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_max_htlc_value_in_flight_msat(uint32_t this_ptr, int64_t val) {
-       LDKOpenChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       OpenChannel_set_max_htlc_value_in_flight_msat(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelCounterparty_new(int8_tArray node_id_arg, uint32_t features_arg, int64_t unspendable_punishment_reserve_arg, uint32_t forwarding_info_arg) {
+       LDKPublicKey node_id_arg_ref;
+       CHECK(node_id_arg->arr_len == 33);
+       memcpy(node_id_arg_ref.compressed_form, node_id_arg->elems, 33);
+       LDKInitFeatures features_arg_conv;
+       features_arg_conv.inner = (void*)(features_arg & (~1));
+       features_arg_conv.is_owned = (features_arg & 1) || (features_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(features_arg_conv);
+       features_arg_conv = InitFeatures_clone(&features_arg_conv);
+       LDKCounterpartyForwardingInfo forwarding_info_arg_conv;
+       forwarding_info_arg_conv.inner = (void*)(forwarding_info_arg & (~1));
+       forwarding_info_arg_conv.is_owned = (forwarding_info_arg & 1) || (forwarding_info_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(forwarding_info_arg_conv);
+       forwarding_info_arg_conv = CounterpartyForwardingInfo_clone(&forwarding_info_arg_conv);
+       LDKChannelCounterparty ret_var = ChannelCounterparty_new(node_id_arg_ref, features_arg_conv, unspendable_punishment_reserve_arg, forwarding_info_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_OpenChannel_get_channel_reserve_satoshis(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = OpenChannel_get_channel_reserve_satoshis(&this_ptr_conv);
-       return ret_val;
+static inline uint64_t ChannelCounterparty_clone_ptr(LDKChannelCounterparty *NONNULL_PTR arg) {
+       LDKChannelCounterparty ret_var = ChannelCounterparty_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_channel_reserve_satoshis(uint32_t this_ptr, int64_t val) {
-       LDKOpenChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       OpenChannel_set_channel_reserve_satoshis(&this_ptr_conv, val);
+       return ret_ref;
 }
-
-int64_t  __attribute__((visibility("default"))) TS_OpenChannel_get_htlc_minimum_msat(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = OpenChannel_get_htlc_minimum_msat(&this_ptr_conv);
+int64_t  __attribute__((visibility("default"))) TS_ChannelCounterparty_clone_ptr(uint32_t arg) {
+       LDKChannelCounterparty arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ChannelCounterparty_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_htlc_minimum_msat(uint32_t this_ptr, int64_t val) {
-       LDKOpenChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       OpenChannel_set_htlc_minimum_msat(&this_ptr_conv, val);
-}
-
-int32_t  __attribute__((visibility("default"))) TS_OpenChannel_get_feerate_per_kw(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = OpenChannel_get_feerate_per_kw(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelCounterparty_clone(uint32_t orig) {
+       LDKChannelCounterparty orig_conv;
+       orig_conv.inner = (void*)(orig & (~1));
+       orig_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKChannelCounterparty ret_var = ChannelCounterparty_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_feerate_per_kw(uint32_t this_ptr, int32_t val) {
-       LDKOpenChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       OpenChannel_set_feerate_per_kw(&this_ptr_conv, val);
+void  __attribute__((visibility("default"))) TS_ChannelDetails_free(uint32_t this_obj) {
+       LDKChannelDetails this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       ChannelDetails_free(this_obj_conv);
 }
 
-int16_t  __attribute__((visibility("default"))) TS_OpenChannel_get_to_self_delay(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = OpenChannel_get_to_self_delay(&this_ptr_conv);
-       return ret_val;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *ChannelDetails_get_channel_id(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_to_self_delay(uint32_t this_ptr, int16_t val) {
-       LDKOpenChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       OpenChannel_set_to_self_delay(&this_ptr_conv, val);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       ChannelDetails_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-int16_t  __attribute__((visibility("default"))) TS_OpenChannel_get_max_accepted_htlcs(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_counterparty(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = OpenChannel_get_max_accepted_htlcs(&this_ptr_conv);
-       return ret_val;
+       LDKChannelCounterparty ret_var = ChannelDetails_get_counterparty(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_max_accepted_htlcs(uint32_t this_ptr, int16_t val) {
-       LDKOpenChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_counterparty(uint32_t this_ptr, uint32_t val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       OpenChannel_set_max_accepted_htlcs(&this_ptr_conv, val);
+       LDKChannelCounterparty val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = ChannelCounterparty_clone(&val_conv);
+       ChannelDetails_set_counterparty(&this_ptr_conv, val_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_get_funding_pubkey(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_funding_txo(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), OpenChannel_get_funding_pubkey(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       LDKOutPoint ret_var = ChannelDetails_get_funding_txo(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       if ((uint64_t)ret_var.inner > 4096) {
+               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+               ret_ref = (uint64_t)ret_var.inner;
+               if (ret_var.is_owned) {
+                       ret_ref |= 1;
+               }
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_funding_pubkey(uint32_t this_ptr, int8_tArray val) {
-       LDKOpenChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_funding_txo(uint32_t this_ptr, uint32_t val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       OpenChannel_set_funding_pubkey(&this_ptr_conv, val_ref);
+       LDKOutPoint val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = OutPoint_clone(&val_conv);
+       ChannelDetails_set_funding_txo(&this_ptr_conv, val_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_get_revocation_basepoint(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_short_channel_id(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), OpenChannel_get_revocation_basepoint(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
+       *ret_copy = ChannelDetails_get_short_channel_id(&this_ptr_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_revocation_basepoint(uint32_t this_ptr, int8_tArray val) {
-       LDKOpenChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_short_channel_id(uint32_t this_ptr, uint32_t val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       OpenChannel_set_revocation_basepoint(&this_ptr_conv, val_ref);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKCOption_u64Z val_conv = *(LDKCOption_u64Z*)(val_ptr);
+       val_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)val) & ~1));
+       ChannelDetails_set_short_channel_id(&this_ptr_conv, val_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_get_payment_point(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_channel_value_satoshis(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), OpenChannel_get_payment_point(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       int64_t ret_val = ChannelDetails_get_channel_value_satoshis(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_payment_point(uint32_t this_ptr, int8_tArray val) {
-       LDKOpenChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_channel_value_satoshis(uint32_t this_ptr, int64_t val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       OpenChannel_set_payment_point(&this_ptr_conv, val_ref);
+       ChannelDetails_set_channel_value_satoshis(&this_ptr_conv, val);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_get_delayed_payment_basepoint(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_unspendable_punishment_reserve(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), OpenChannel_get_delayed_payment_basepoint(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
+       *ret_copy = ChannelDetails_get_unspendable_punishment_reserve(&this_ptr_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_delayed_payment_basepoint(uint32_t this_ptr, int8_tArray val) {
-       LDKOpenChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_unspendable_punishment_reserve(uint32_t this_ptr, uint32_t val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       OpenChannel_set_delayed_payment_basepoint(&this_ptr_conv, val_ref);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKCOption_u64Z val_conv = *(LDKCOption_u64Z*)(val_ptr);
+       val_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)val) & ~1));
+       ChannelDetails_set_unspendable_punishment_reserve(&this_ptr_conv, val_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_get_htlc_basepoint(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_user_channel_id(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), OpenChannel_get_htlc_basepoint(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       int64_t ret_val = ChannelDetails_get_user_channel_id(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_htlc_basepoint(uint32_t this_ptr, int8_tArray val) {
-       LDKOpenChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_user_channel_id(uint32_t this_ptr, int64_t val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       OpenChannel_set_htlc_basepoint(&this_ptr_conv, val_ref);
+       ChannelDetails_set_user_channel_id(&this_ptr_conv, val);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_get_first_per_commitment_point(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_balance_msat(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), OpenChannel_get_first_per_commitment_point(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       int64_t ret_val = ChannelDetails_get_balance_msat(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_first_per_commitment_point(uint32_t this_ptr, int8_tArray val) {
-       LDKOpenChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_balance_msat(uint32_t this_ptr, int64_t val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       OpenChannel_set_first_per_commitment_point(&this_ptr_conv, val_ref);
+       ChannelDetails_set_balance_msat(&this_ptr_conv, val);
 }
 
-int8_t  __attribute__((visibility("default"))) TS_OpenChannel_get_channel_flags(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_outbound_capacity_msat(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_t ret_val = OpenChannel_get_channel_flags(&this_ptr_conv);
+       int64_t ret_val = ChannelDetails_get_outbound_capacity_msat(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_channel_flags(uint32_t this_ptr, int8_t val) {
-       LDKOpenChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_outbound_capacity_msat(uint32_t this_ptr, int64_t val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       OpenChannel_set_channel_flags(&this_ptr_conv, val);
+       ChannelDetails_set_outbound_capacity_msat(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_OpenChannel_get_channel_type(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_inbound_capacity_msat(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelTypeFeatures ret_var = OpenChannel_get_channel_type(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
-       }
-       return ret_ref;
+       int64_t ret_val = ChannelDetails_get_inbound_capacity_msat(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_channel_type(uint32_t this_ptr, uint32_t val) {
-       LDKOpenChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_inbound_capacity_msat(uint32_t this_ptr, int64_t val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelTypeFeatures val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = ChannelTypeFeatures_clone(&val_conv);
-       OpenChannel_set_channel_type(&this_ptr_conv, val_conv);
-}
-
-static inline uint64_t OpenChannel_clone_ptr(LDKOpenChannel *NONNULL_PTR arg) {
-       LDKOpenChannel ret_var = OpenChannel_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_OpenChannel_clone_ptr(uint32_t arg) {
-       LDKOpenChannel arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = OpenChannel_clone_ptr(&arg_conv);
-       return ret_val;
-}
-
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKOpenChannel ret_var = OpenChannel_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
-}
-
-void  __attribute__((visibility("default"))) TS_AcceptChannel_free(uint32_t this_obj) {
-       LDKAcceptChannel this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       AcceptChannel_free(this_obj_conv);
+       ChannelDetails_set_inbound_capacity_msat(&this_ptr_conv, val);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_get_temporary_channel_id(uint32_t this_ptr) {
-       LDKAcceptChannel this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_confirmations_required(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *AcceptChannel_get_temporary_channel_id(&this_ptr_conv), 32);
-       return ret_arr;
+       LDKCOption_u32Z *ret_copy = MALLOC(sizeof(LDKCOption_u32Z), "LDKCOption_u32Z");
+       *ret_copy = ChannelDetails_get_confirmations_required(&this_ptr_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_AcceptChannel_set_temporary_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKAcceptChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_confirmations_required(uint32_t this_ptr, uint32_t val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       AcceptChannel_set_temporary_channel_id(&this_ptr_conv, val_ref);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKCOption_u32Z val_conv = *(LDKCOption_u32Z*)(val_ptr);
+       val_conv = COption_u32Z_clone((LDKCOption_u32Z*)(((uint64_t)val) & ~1));
+       ChannelDetails_set_confirmations_required(&this_ptr_conv, val_conv);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_AcceptChannel_get_dust_limit_satoshis(uint32_t this_ptr) {
-       LDKAcceptChannel this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_force_close_spend_delay(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = AcceptChannel_get_dust_limit_satoshis(&this_ptr_conv);
-       return ret_val;
+       LDKCOption_u16Z *ret_copy = MALLOC(sizeof(LDKCOption_u16Z), "LDKCOption_u16Z");
+       *ret_copy = ChannelDetails_get_force_close_spend_delay(&this_ptr_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_AcceptChannel_set_dust_limit_satoshis(uint32_t this_ptr, int64_t val) {
-       LDKAcceptChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_force_close_spend_delay(uint32_t this_ptr, uint32_t val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       AcceptChannel_set_dust_limit_satoshis(&this_ptr_conv, val);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKCOption_u16Z val_conv = *(LDKCOption_u16Z*)(val_ptr);
+       val_conv = COption_u16Z_clone((LDKCOption_u16Z*)(((uint64_t)val) & ~1));
+       ChannelDetails_set_force_close_spend_delay(&this_ptr_conv, val_conv);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_AcceptChannel_get_max_htlc_value_in_flight_msat(uint32_t this_ptr) {
-       LDKAcceptChannel this_ptr_conv;
+jboolean  __attribute__((visibility("default"))) TS_ChannelDetails_get_is_outbound(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = AcceptChannel_get_max_htlc_value_in_flight_msat(&this_ptr_conv);
+       jboolean ret_val = ChannelDetails_get_is_outbound(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_AcceptChannel_set_max_htlc_value_in_flight_msat(uint32_t this_ptr, int64_t val) {
-       LDKAcceptChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_is_outbound(uint32_t this_ptr, jboolean val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       AcceptChannel_set_max_htlc_value_in_flight_msat(&this_ptr_conv, val);
+       ChannelDetails_set_is_outbound(&this_ptr_conv, val);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_AcceptChannel_get_channel_reserve_satoshis(uint32_t this_ptr) {
-       LDKAcceptChannel this_ptr_conv;
+jboolean  __attribute__((visibility("default"))) TS_ChannelDetails_get_is_funding_locked(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = AcceptChannel_get_channel_reserve_satoshis(&this_ptr_conv);
+       jboolean ret_val = ChannelDetails_get_is_funding_locked(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_AcceptChannel_set_channel_reserve_satoshis(uint32_t this_ptr, int64_t val) {
-       LDKAcceptChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_is_funding_locked(uint32_t this_ptr, jboolean val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       AcceptChannel_set_channel_reserve_satoshis(&this_ptr_conv, val);
+       ChannelDetails_set_is_funding_locked(&this_ptr_conv, val);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_AcceptChannel_get_htlc_minimum_msat(uint32_t this_ptr) {
-       LDKAcceptChannel this_ptr_conv;
+jboolean  __attribute__((visibility("default"))) TS_ChannelDetails_get_is_usable(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = AcceptChannel_get_htlc_minimum_msat(&this_ptr_conv);
+       jboolean ret_val = ChannelDetails_get_is_usable(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_AcceptChannel_set_htlc_minimum_msat(uint32_t this_ptr, int64_t val) {
-       LDKAcceptChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_is_usable(uint32_t this_ptr, jboolean val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       AcceptChannel_set_htlc_minimum_msat(&this_ptr_conv, val);
+       ChannelDetails_set_is_usable(&this_ptr_conv, val);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_AcceptChannel_get_minimum_depth(uint32_t this_ptr) {
-       LDKAcceptChannel this_ptr_conv;
+jboolean  __attribute__((visibility("default"))) TS_ChannelDetails_get_is_public(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = AcceptChannel_get_minimum_depth(&this_ptr_conv);
+       jboolean ret_val = ChannelDetails_get_is_public(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_AcceptChannel_set_minimum_depth(uint32_t this_ptr, int32_t val) {
-       LDKAcceptChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_is_public(uint32_t this_ptr, jboolean val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       AcceptChannel_set_minimum_depth(&this_ptr_conv, val);
+       ChannelDetails_set_is_public(&this_ptr_conv, val);
 }
 
-int16_t  __attribute__((visibility("default"))) TS_AcceptChannel_get_to_self_delay(uint32_t this_ptr) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = AcceptChannel_get_to_self_delay(&this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_new(int8_tArray channel_id_arg, uint32_t counterparty_arg, uint32_t funding_txo_arg, uint32_t short_channel_id_arg, int64_t channel_value_satoshis_arg, uint32_t unspendable_punishment_reserve_arg, int64_t user_channel_id_arg, int64_t balance_msat_arg, int64_t outbound_capacity_msat_arg, int64_t inbound_capacity_msat_arg, uint32_t confirmations_required_arg, uint32_t force_close_spend_delay_arg, jboolean is_outbound_arg, jboolean is_funding_locked_arg, jboolean is_usable_arg, jboolean is_public_arg) {
+       LDKThirtyTwoBytes channel_id_arg_ref;
+       CHECK(channel_id_arg->arr_len == 32);
+       memcpy(channel_id_arg_ref.data, channel_id_arg->elems, 32);
+       LDKChannelCounterparty counterparty_arg_conv;
+       counterparty_arg_conv.inner = (void*)(counterparty_arg & (~1));
+       counterparty_arg_conv.is_owned = (counterparty_arg & 1) || (counterparty_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(counterparty_arg_conv);
+       counterparty_arg_conv = ChannelCounterparty_clone(&counterparty_arg_conv);
+       LDKOutPoint funding_txo_arg_conv;
+       funding_txo_arg_conv.inner = (void*)(funding_txo_arg & (~1));
+       funding_txo_arg_conv.is_owned = (funding_txo_arg & 1) || (funding_txo_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_arg_conv);
+       funding_txo_arg_conv = OutPoint_clone(&funding_txo_arg_conv);
+       void* short_channel_id_arg_ptr = (void*)(((uint64_t)short_channel_id_arg) & ~1);
+       CHECK_ACCESS(short_channel_id_arg_ptr);
+       LDKCOption_u64Z short_channel_id_arg_conv = *(LDKCOption_u64Z*)(short_channel_id_arg_ptr);
+       short_channel_id_arg_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)short_channel_id_arg) & ~1));
+       void* unspendable_punishment_reserve_arg_ptr = (void*)(((uint64_t)unspendable_punishment_reserve_arg) & ~1);
+       CHECK_ACCESS(unspendable_punishment_reserve_arg_ptr);
+       LDKCOption_u64Z unspendable_punishment_reserve_arg_conv = *(LDKCOption_u64Z*)(unspendable_punishment_reserve_arg_ptr);
+       void* confirmations_required_arg_ptr = (void*)(((uint64_t)confirmations_required_arg) & ~1);
+       CHECK_ACCESS(confirmations_required_arg_ptr);
+       LDKCOption_u32Z confirmations_required_arg_conv = *(LDKCOption_u32Z*)(confirmations_required_arg_ptr);
+       confirmations_required_arg_conv = COption_u32Z_clone((LDKCOption_u32Z*)(((uint64_t)confirmations_required_arg) & ~1));
+       void* force_close_spend_delay_arg_ptr = (void*)(((uint64_t)force_close_spend_delay_arg) & ~1);
+       CHECK_ACCESS(force_close_spend_delay_arg_ptr);
+       LDKCOption_u16Z force_close_spend_delay_arg_conv = *(LDKCOption_u16Z*)(force_close_spend_delay_arg_ptr);
+       force_close_spend_delay_arg_conv = COption_u16Z_clone((LDKCOption_u16Z*)(((uint64_t)force_close_spend_delay_arg) & ~1));
+       LDKChannelDetails ret_var = ChannelDetails_new(channel_id_arg_ref, counterparty_arg_conv, funding_txo_arg_conv, short_channel_id_arg_conv, channel_value_satoshis_arg, unspendable_punishment_reserve_arg_conv, user_channel_id_arg, balance_msat_arg, outbound_capacity_msat_arg, inbound_capacity_msat_arg, confirmations_required_arg_conv, force_close_spend_delay_arg_conv, is_outbound_arg, is_funding_locked_arg, is_usable_arg, is_public_arg);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+static inline uint64_t ChannelDetails_clone_ptr(LDKChannelDetails *NONNULL_PTR arg) {
+       LDKChannelDetails ret_var = ChannelDetails_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_ChannelDetails_clone_ptr(uint32_t arg) {
+       LDKChannelDetails arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ChannelDetails_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_AcceptChannel_set_to_self_delay(uint32_t this_ptr, int16_t val) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       AcceptChannel_set_to_self_delay(&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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKChannelDetails ret_var = ChannelDetails_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int16_t  __attribute__((visibility("default"))) TS_AcceptChannel_get_max_accepted_htlcs(uint32_t this_ptr) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = AcceptChannel_get_max_accepted_htlcs(&this_ptr_conv);
+void  __attribute__((visibility("default"))) TS_PaymentSendFailure_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKPaymentSendFailure this_ptr_conv = *(LDKPaymentSendFailure*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       PaymentSendFailure_free(this_ptr_conv);
+}
+
+static inline uint64_t PaymentSendFailure_clone_ptr(LDKPaymentSendFailure *NONNULL_PTR arg) {
+       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
+       *ret_copy = PaymentSendFailure_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_PaymentSendFailure_clone_ptr(uint32_t arg) {
+       LDKPaymentSendFailure* arg_conv = (LDKPaymentSendFailure*)arg;
+       int64_t ret_val = PaymentSendFailure_clone_ptr(arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_AcceptChannel_set_max_accepted_htlcs(uint32_t this_ptr, int16_t val) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       AcceptChannel_set_max_accepted_htlcs(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_PaymentSendFailure_clone(uint32_t orig) {
+       LDKPaymentSendFailure* orig_conv = (LDKPaymentSendFailure*)orig;
+       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
+       *ret_copy = PaymentSendFailure_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_get_funding_pubkey(uint32_t this_ptr) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), AcceptChannel_get_funding_pubkey(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_PaymentSendFailure_parameter_error(uint32_t a) {
+       void* a_ptr = (void*)(((uint64_t)a) & ~1);
+       CHECK_ACCESS(a_ptr);
+       LDKAPIError a_conv = *(LDKAPIError*)(a_ptr);
+       a_conv = APIError_clone((LDKAPIError*)(((uint64_t)a) & ~1));
+       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
+       *ret_copy = PaymentSendFailure_parameter_error(a_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_AcceptChannel_set_funding_pubkey(uint32_t this_ptr, int8_tArray val) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       AcceptChannel_set_funding_pubkey(&this_ptr_conv, val_ref);
+uint32_t  __attribute__((visibility("default"))) TS_PaymentSendFailure_path_parameter_error(uint32_tArray a) {
+       LDKCVec_CResult_NoneAPIErrorZZ a_constr;
+       a_constr.datalen = a->arr_len;
+       if (a_constr.datalen > 0)
+               a_constr.data = MALLOC(a_constr.datalen * sizeof(LDKCResult_NoneAPIErrorZ), "LDKCVec_CResult_NoneAPIErrorZZ Elements");
+       else
+               a_constr.data = NULL;
+       uint32_t* a_vals = a->elems;
+       for (size_t w = 0; w < a_constr.datalen; w++) {
+               uint32_t a_conv_22 = a_vals[w];
+               void* a_conv_22_ptr = (void*)(((uint64_t)a_conv_22) & ~1);
+               CHECK_ACCESS(a_conv_22_ptr);
+               LDKCResult_NoneAPIErrorZ a_conv_22_conv = *(LDKCResult_NoneAPIErrorZ*)(a_conv_22_ptr);
+               a_conv_22_conv = CResult_NoneAPIErrorZ_clone((LDKCResult_NoneAPIErrorZ*)(((uint64_t)a_conv_22) & ~1));
+               a_constr.data[w] = a_conv_22_conv;
+       }
+       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
+       *ret_copy = PaymentSendFailure_path_parameter_error(a_constr);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_get_revocation_basepoint(uint32_t this_ptr) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), AcceptChannel_get_revocation_basepoint(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_PaymentSendFailure_all_failed_retry_safe(uint32_tArray a) {
+       LDKCVec_APIErrorZ a_constr;
+       a_constr.datalen = a->arr_len;
+       if (a_constr.datalen > 0)
+               a_constr.data = MALLOC(a_constr.datalen * sizeof(LDKAPIError), "LDKCVec_APIErrorZ Elements");
+       else
+               a_constr.data = NULL;
+       uint32_t* a_vals = a->elems;
+       for (size_t k = 0; k < a_constr.datalen; k++) {
+               uint32_t a_conv_10 = a_vals[k];
+               void* a_conv_10_ptr = (void*)(((uint64_t)a_conv_10) & ~1);
+               CHECK_ACCESS(a_conv_10_ptr);
+               LDKAPIError a_conv_10_conv = *(LDKAPIError*)(a_conv_10_ptr);
+               a_conv_10_conv = APIError_clone((LDKAPIError*)(((uint64_t)a_conv_10) & ~1));
+               a_constr.data[k] = a_conv_10_conv;
+       }
+       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
+       *ret_copy = PaymentSendFailure_all_failed_retry_safe(a_constr);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_AcceptChannel_set_revocation_basepoint(uint32_t this_ptr, int8_tArray val) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       AcceptChannel_set_revocation_basepoint(&this_ptr_conv, val_ref);
+uint32_t  __attribute__((visibility("default"))) TS_PaymentSendFailure_partial_failure(uint32_tArray results, uint32_t failed_paths_retry, int8_tArray payment_id) {
+       LDKCVec_CResult_NoneAPIErrorZZ results_constr;
+       results_constr.datalen = results->arr_len;
+       if (results_constr.datalen > 0)
+               results_constr.data = MALLOC(results_constr.datalen * sizeof(LDKCResult_NoneAPIErrorZ), "LDKCVec_CResult_NoneAPIErrorZZ Elements");
+       else
+               results_constr.data = NULL;
+       uint32_t* results_vals = results->elems;
+       for (size_t w = 0; w < results_constr.datalen; w++) {
+               uint32_t results_conv_22 = results_vals[w];
+               void* results_conv_22_ptr = (void*)(((uint64_t)results_conv_22) & ~1);
+               CHECK_ACCESS(results_conv_22_ptr);
+               LDKCResult_NoneAPIErrorZ results_conv_22_conv = *(LDKCResult_NoneAPIErrorZ*)(results_conv_22_ptr);
+               results_constr.data[w] = results_conv_22_conv;
+       }
+       LDKRouteParameters failed_paths_retry_conv;
+       failed_paths_retry_conv.inner = (void*)(failed_paths_retry & (~1));
+       failed_paths_retry_conv.is_owned = (failed_paths_retry & 1) || (failed_paths_retry == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(failed_paths_retry_conv);
+       failed_paths_retry_conv = RouteParameters_clone(&failed_paths_retry_conv);
+       LDKThirtyTwoBytes payment_id_ref;
+       CHECK(payment_id->arr_len == 32);
+       memcpy(payment_id_ref.data, payment_id->elems, 32);
+       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
+       *ret_copy = PaymentSendFailure_partial_failure(results_constr, failed_paths_retry_conv, payment_id_ref);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_get_payment_point(uint32_t this_ptr) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), AcceptChannel_get_payment_point(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_new(uint32_t fee_est, uint32_t chain_monitor, uint32_t tx_broadcaster, uint32_t logger, uint32_t keys_manager, uint32_t config, uint32_t params) {
+       void* fee_est_ptr = (void*)(((uint64_t)fee_est) & ~1);
+       CHECK_ACCESS(fee_est_ptr);
+       LDKFeeEstimator fee_est_conv = *(LDKFeeEstimator*)(fee_est_ptr);
+       void* chain_monitor_ptr = (void*)(((uint64_t)chain_monitor) & ~1);
+       CHECK_ACCESS(chain_monitor_ptr);
+       LDKWatch chain_monitor_conv = *(LDKWatch*)(chain_monitor_ptr);
+       void* tx_broadcaster_ptr = (void*)(((uint64_t)tx_broadcaster) & ~1);
+       CHECK_ACCESS(tx_broadcaster_ptr);
+       LDKBroadcasterInterface tx_broadcaster_conv = *(LDKBroadcasterInterface*)(tx_broadcaster_ptr);
+       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
+       CHECK_ACCESS(logger_ptr);
+       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
+       void* keys_manager_ptr = (void*)(((uint64_t)keys_manager) & ~1);
+       CHECK_ACCESS(keys_manager_ptr);
+       LDKKeysInterface keys_manager_conv = *(LDKKeysInterface*)(keys_manager_ptr);
+       LDKUserConfig config_conv;
+       config_conv.inner = (void*)(config & (~1));
+       config_conv.is_owned = (config & 1) || (config == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(config_conv);
+       config_conv = UserConfig_clone(&config_conv);
+       LDKChainParameters params_conv;
+       params_conv.inner = (void*)(params & (~1));
+       params_conv.is_owned = (params & 1) || (params == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(params_conv);
+       params_conv = ChainParameters_clone(&params_conv);
+       LDKChannelManager ret_var = ChannelManager_new(fee_est_conv, chain_monitor_conv, tx_broadcaster_conv, logger_conv, keys_manager_conv, config_conv, params_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_AcceptChannel_set_payment_point(uint32_t this_ptr, int8_tArray val) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       AcceptChannel_set_payment_point(&this_ptr_conv, val_ref);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_get_current_default_configuration(uint32_t this_arg) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKUserConfig ret_var = ChannelManager_get_current_default_configuration(&this_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_get_delayed_payment_basepoint(uint32_t this_ptr) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), AcceptChannel_get_delayed_payment_basepoint(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_create_channel(uint32_t this_arg, int8_tArray their_network_key, int64_t channel_value_satoshis, int64_t push_msat, int64_t user_channel_id, uint32_t override_config) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKPublicKey their_network_key_ref;
+       CHECK(their_network_key->arr_len == 33);
+       memcpy(their_network_key_ref.compressed_form, their_network_key->elems, 33);
+       LDKUserConfig override_config_conv;
+       override_config_conv.inner = (void*)(override_config & (~1));
+       override_config_conv.is_owned = (override_config & 1) || (override_config == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(override_config_conv);
+       override_config_conv = UserConfig_clone(&override_config_conv);
+       LDKCResult__u832APIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult__u832APIErrorZ), "LDKCResult__u832APIErrorZ");
+       *ret_conv = ChannelManager_create_channel(&this_arg_conv, their_network_key_ref, channel_value_satoshis, push_msat, user_channel_id, override_config_conv);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_AcceptChannel_set_delayed_payment_basepoint(uint32_t this_ptr, int8_tArray val) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       AcceptChannel_set_delayed_payment_basepoint(&this_ptr_conv, val_ref);
+uint32_tArray  __attribute__((visibility("default"))) TS_ChannelManager_list_channels(uint32_t this_arg) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKCVec_ChannelDetailsZ ret_var = ChannelManager_list_channels(&this_arg_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t q = 0; q < ret_var.datalen; q++) {
+               LDKChannelDetails ret_conv_16_var = ret_var.data[q];
+               uint64_t ret_conv_16_ref = 0;
+               CHECK((((uint64_t)ret_conv_16_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_conv_16_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_16_var);
+               ret_conv_16_ref = (uint64_t)ret_conv_16_var.inner;
+               if (ret_conv_16_var.is_owned) {
+                       ret_conv_16_ref |= 1;
+               }
+               ret_arr_ptr[q] = ret_conv_16_ref;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_get_htlc_basepoint(uint32_t this_ptr) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), AcceptChannel_get_htlc_basepoint(&this_ptr_conv).compressed_form, 33);
+uint32_tArray  __attribute__((visibility("default"))) TS_ChannelManager_list_usable_channels(uint32_t this_arg) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKCVec_ChannelDetailsZ ret_var = ChannelManager_list_usable_channels(&this_arg_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t q = 0; q < ret_var.datalen; q++) {
+               LDKChannelDetails ret_conv_16_var = ret_var.data[q];
+               uint64_t ret_conv_16_ref = 0;
+               CHECK((((uint64_t)ret_conv_16_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_conv_16_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_16_var);
+               ret_conv_16_ref = (uint64_t)ret_conv_16_var.inner;
+               if (ret_conv_16_var.is_owned) {
+                       ret_conv_16_ref |= 1;
+               }
+               ret_arr_ptr[q] = ret_conv_16_ref;
+       }
+       
+       FREE(ret_var.data);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_AcceptChannel_set_htlc_basepoint(uint32_t this_ptr, int8_tArray val) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       AcceptChannel_set_htlc_basepoint(&this_ptr_conv, val_ref);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_close_channel(uint32_t this_arg, int8_tArray channel_id) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       unsigned char channel_id_arr[32];
+       CHECK(channel_id->arr_len == 32);
+       memcpy(channel_id_arr, channel_id->elems, 32);
+       unsigned char (*channel_id_ref)[32] = &channel_id_arr;
+       LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
+       *ret_conv = ChannelManager_close_channel(&this_arg_conv, channel_id_ref);
+       return (uint64_t)ret_conv;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_get_first_per_commitment_point(uint32_t this_ptr) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), AcceptChannel_get_first_per_commitment_point(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_close_channel_with_target_feerate(uint32_t this_arg, int8_tArray channel_id, int32_t target_feerate_sats_per_1000_weight) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       unsigned char channel_id_arr[32];
+       CHECK(channel_id->arr_len == 32);
+       memcpy(channel_id_arr, channel_id->elems, 32);
+       unsigned char (*channel_id_ref)[32] = &channel_id_arr;
+       LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
+       *ret_conv = ChannelManager_close_channel_with_target_feerate(&this_arg_conv, channel_id_ref, target_feerate_sats_per_1000_weight);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_AcceptChannel_set_first_per_commitment_point(uint32_t this_ptr, int8_tArray val) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       AcceptChannel_set_first_per_commitment_point(&this_ptr_conv, val_ref);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_force_close_channel(uint32_t this_arg, int8_tArray channel_id) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       unsigned char channel_id_arr[32];
+       CHECK(channel_id->arr_len == 32);
+       memcpy(channel_id_arr, channel_id->elems, 32);
+       unsigned char (*channel_id_ref)[32] = &channel_id_arr;
+       LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
+       *ret_conv = ChannelManager_force_close_channel(&this_arg_conv, channel_id_ref);
+       return (uint64_t)ret_conv;
 }
 
-static inline uint64_t AcceptChannel_clone_ptr(LDKAcceptChannel *NONNULL_PTR arg) {
-       LDKAcceptChannel ret_var = AcceptChannel_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_ChannelManager_force_close_all_channels(uint32_t this_arg) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       ChannelManager_force_close_all_channels(&this_arg_conv);
 }
-int64_t  __attribute__((visibility("default"))) TS_AcceptChannel_clone_ptr(uint32_t arg) {
-       LDKAcceptChannel arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = AcceptChannel_clone_ptr(&arg_conv);
-       return ret_val;
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_send_payment(uint32_t this_arg, uint32_t route, int8_tArray payment_hash, int8_tArray payment_secret) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKRoute route_conv;
+       route_conv.inner = (void*)(route & (~1));
+       route_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(route_conv);
+       LDKThirtyTwoBytes payment_hash_ref;
+       CHECK(payment_hash->arr_len == 32);
+       memcpy(payment_hash_ref.data, payment_hash->elems, 32);
+       LDKThirtyTwoBytes payment_secret_ref;
+       CHECK(payment_secret->arr_len == 32);
+       memcpy(payment_secret_ref.data, payment_secret->elems, 32);
+       LDKCResult_PaymentIdPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentSendFailureZ), "LDKCResult_PaymentIdPaymentSendFailureZ");
+       *ret_conv = ChannelManager_send_payment(&this_arg_conv, &route_conv, payment_hash_ref, payment_secret_ref);
+       return (uint64_t)ret_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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKAcceptChannel ret_var = AcceptChannel_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_retry_payment(uint32_t this_arg, uint32_t route, int8_tArray payment_id) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKRoute route_conv;
+       route_conv.inner = (void*)(route & (~1));
+       route_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(route_conv);
+       LDKThirtyTwoBytes payment_id_ref;
+       CHECK(payment_id->arr_len == 32);
+       memcpy(payment_id_ref.data, payment_id->elems, 32);
+       LDKCResult_NonePaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePaymentSendFailureZ), "LDKCResult_NonePaymentSendFailureZ");
+       *ret_conv = ChannelManager_retry_payment(&this_arg_conv, &route_conv, payment_id_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_FundingCreated_free(uint32_t this_obj) {
-       LDKFundingCreated this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       FundingCreated_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_ChannelManager_abandon_payment(uint32_t this_arg, int8_tArray payment_id) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKThirtyTwoBytes payment_id_ref;
+       CHECK(payment_id->arr_len == 32);
+       memcpy(payment_id_ref.data, payment_id->elems, 32);
+       ChannelManager_abandon_payment(&this_arg_conv, payment_id_ref);
 }
 
-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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *FundingCreated_get_temporary_channel_id(&this_ptr_conv), 32);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_send_spontaneous_payment(uint32_t this_arg, uint32_t route, int8_tArray payment_preimage) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKRoute route_conv;
+       route_conv.inner = (void*)(route & (~1));
+       route_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(route_conv);
+       LDKThirtyTwoBytes payment_preimage_ref;
+       CHECK(payment_preimage->arr_len == 32);
+       memcpy(payment_preimage_ref.data, payment_preimage->elems, 32);
+       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ), "LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ");
+       *ret_conv = ChannelManager_send_spontaneous_payment(&this_arg_conv, &route_conv, payment_preimage_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_FundingCreated_set_temporary_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKFundingCreated this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       FundingCreated_set_temporary_channel_id(&this_ptr_conv, val_ref);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_funding_transaction_generated(uint32_t this_arg, int8_tArray temporary_channel_id, int8_tArray funding_transaction) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       unsigned char temporary_channel_id_arr[32];
+       CHECK(temporary_channel_id->arr_len == 32);
+       memcpy(temporary_channel_id_arr, temporary_channel_id->elems, 32);
+       unsigned char (*temporary_channel_id_ref)[32] = &temporary_channel_id_arr;
+       LDKTransaction funding_transaction_ref;
+       funding_transaction_ref.datalen = funding_transaction->arr_len;
+       funding_transaction_ref.data = MALLOC(funding_transaction_ref.datalen, "LDKTransaction Bytes");
+       memcpy(funding_transaction_ref.data, funding_transaction->elems, funding_transaction_ref.datalen);
+       funding_transaction_ref.data_is_owned = true;
+       LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
+       *ret_conv = ChannelManager_funding_transaction_generated(&this_arg_conv, temporary_channel_id_ref, funding_transaction_ref);
+       return (uint64_t)ret_conv;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_FundingCreated_get_funding_txid(uint32_t this_ptr) {
-       LDKFundingCreated this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *FundingCreated_get_funding_txid(&this_ptr_conv), 32);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_ChannelManager_broadcast_node_announcement(uint32_t this_arg, int8_tArray rgb, int8_tArray alias, uint32_tArray addresses) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKThreeBytes rgb_ref;
+       CHECK(rgb->arr_len == 3);
+       memcpy(rgb_ref.data, rgb->elems, 3);
+       LDKThirtyTwoBytes alias_ref;
+       CHECK(alias->arr_len == 32);
+       memcpy(alias_ref.data, alias->elems, 32);
+       LDKCVec_NetAddressZ addresses_constr;
+       addresses_constr.datalen = addresses->arr_len;
+       if (addresses_constr.datalen > 0)
+               addresses_constr.data = MALLOC(addresses_constr.datalen * sizeof(LDKNetAddress), "LDKCVec_NetAddressZ Elements");
+       else
+               addresses_constr.data = NULL;
+       uint32_t* addresses_vals = addresses->elems;
+       for (size_t m = 0; m < addresses_constr.datalen; m++) {
+               uint32_t addresses_conv_12 = addresses_vals[m];
+               void* addresses_conv_12_ptr = (void*)(((uint64_t)addresses_conv_12) & ~1);
+               CHECK_ACCESS(addresses_conv_12_ptr);
+               LDKNetAddress addresses_conv_12_conv = *(LDKNetAddress*)(addresses_conv_12_ptr);
+               addresses_constr.data[m] = addresses_conv_12_conv;
+       }
+       ChannelManager_broadcast_node_announcement(&this_arg_conv, rgb_ref, alias_ref, addresses_constr);
 }
 
-void  __attribute__((visibility("default"))) TS_FundingCreated_set_funding_txid(uint32_t this_ptr, int8_tArray val) {
-       LDKFundingCreated this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       FundingCreated_set_funding_txid(&this_ptr_conv, val_ref);
+void  __attribute__((visibility("default"))) TS_ChannelManager_process_pending_htlc_forwards(uint32_t this_arg) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       ChannelManager_process_pending_htlc_forwards(&this_arg_conv);
 }
 
-int16_t  __attribute__((visibility("default"))) TS_FundingCreated_get_funding_output_index(uint32_t this_ptr) {
-       LDKFundingCreated this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = FundingCreated_get_funding_output_index(&this_ptr_conv);
+void  __attribute__((visibility("default"))) TS_ChannelManager_timer_tick_occurred(uint32_t this_arg) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       ChannelManager_timer_tick_occurred(&this_arg_conv);
+}
+
+jboolean  __attribute__((visibility("default"))) TS_ChannelManager_fail_htlc_backwards(uint32_t this_arg, int8_tArray payment_hash) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       unsigned char payment_hash_arr[32];
+       CHECK(payment_hash->arr_len == 32);
+       memcpy(payment_hash_arr, payment_hash->elems, 32);
+       unsigned char (*payment_hash_ref)[32] = &payment_hash_arr;
+       jboolean ret_val = ChannelManager_fail_htlc_backwards(&this_arg_conv, payment_hash_ref);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_FundingCreated_set_funding_output_index(uint32_t this_ptr, int16_t val) {
-       LDKFundingCreated this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       FundingCreated_set_funding_output_index(&this_ptr_conv, val);
+jboolean  __attribute__((visibility("default"))) TS_ChannelManager_claim_funds(uint32_t this_arg, int8_tArray payment_preimage) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKThirtyTwoBytes payment_preimage_ref;
+       CHECK(payment_preimage->arr_len == 32);
+       memcpy(payment_preimage_ref.data, payment_preimage->elems, 32);
+       jboolean ret_val = ChannelManager_claim_funds(&this_arg_conv, payment_preimage_ref);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_FundingCreated_get_signature(uint32_t this_ptr) {
-       LDKFundingCreated this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), FundingCreated_get_signature(&this_ptr_conv).compact_form, 64);
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelManager_get_our_node_id(uint32_t this_arg) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, ChannelManager_get_our_node_id(&this_arg_conv).compressed_form, 33);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_FundingCreated_set_signature(uint32_t this_ptr, int8_tArray val) {
-       LDKFundingCreated this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSignature val_ref;
-       CHECK(*((uint32_t*)val) == 64);
-       memcpy(val_ref.compact_form, (uint8_t*)(val + 4), 64);
-       FundingCreated_set_signature(&this_ptr_conv, val_ref);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_create_inbound_payment(uint32_t this_arg, uint32_t min_value_msat, int32_t invoice_expiry_delta_secs) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       void* min_value_msat_ptr = (void*)(((uint64_t)min_value_msat) & ~1);
+       CHECK_ACCESS(min_value_msat_ptr);
+       LDKCOption_u64Z min_value_msat_conv = *(LDKCOption_u64Z*)(min_value_msat_ptr);
+       min_value_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)min_value_msat) & ~1));
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ");
+       *ret_conv = ChannelManager_create_inbound_payment(&this_arg_conv, min_value_msat_conv, invoice_expiry_delta_secs);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_FundingCreated_new(int8_tArray temporary_channel_id_arg, int8_tArray funding_txid_arg, int16_t funding_output_index_arg, int8_tArray signature_arg) {
-       LDKThirtyTwoBytes temporary_channel_id_arg_ref;
-       CHECK(*((uint32_t*)temporary_channel_id_arg) == 32);
-       memcpy(temporary_channel_id_arg_ref.data, (uint8_t*)(temporary_channel_id_arg + 4), 32);
-       LDKThirtyTwoBytes funding_txid_arg_ref;
-       CHECK(*((uint32_t*)funding_txid_arg) == 32);
-       memcpy(funding_txid_arg_ref.data, (uint8_t*)(funding_txid_arg + 4), 32);
-       LDKSignature signature_arg_ref;
-       CHECK(*((uint32_t*)signature_arg) == 64);
-       memcpy(signature_arg_ref.compact_form, (uint8_t*)(signature_arg + 4), 64);
-       LDKFundingCreated ret_var = FundingCreated_new(temporary_channel_id_arg_ref, funding_txid_arg_ref, funding_output_index_arg, signature_arg_ref);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_create_inbound_payment_legacy(uint32_t this_arg, uint32_t min_value_msat, int32_t invoice_expiry_delta_secs) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       void* min_value_msat_ptr = (void*)(((uint64_t)min_value_msat) & ~1);
+       CHECK_ACCESS(min_value_msat_ptr);
+       LDKCOption_u64Z min_value_msat_conv = *(LDKCOption_u64Z*)(min_value_msat_ptr);
+       min_value_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)min_value_msat) & ~1));
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ");
+       *ret_conv = ChannelManager_create_inbound_payment_legacy(&this_arg_conv, min_value_msat_conv, invoice_expiry_delta_secs);
+       return (uint64_t)ret_conv;
 }
 
-static inline uint64_t FundingCreated_clone_ptr(LDKFundingCreated *NONNULL_PTR arg) {
-       LDKFundingCreated ret_var = FundingCreated_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_create_inbound_payment_for_hash(uint32_t this_arg, int8_tArray payment_hash, uint32_t min_value_msat, int32_t invoice_expiry_delta_secs) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKThirtyTwoBytes payment_hash_ref;
+       CHECK(payment_hash->arr_len == 32);
+       memcpy(payment_hash_ref.data, payment_hash->elems, 32);
+       void* min_value_msat_ptr = (void*)(((uint64_t)min_value_msat) & ~1);
+       CHECK_ACCESS(min_value_msat_ptr);
+       LDKCOption_u64Z min_value_msat_conv = *(LDKCOption_u64Z*)(min_value_msat_ptr);
+       min_value_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)min_value_msat) & ~1));
+       LDKCResult_PaymentSecretNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretNoneZ), "LDKCResult_PaymentSecretNoneZ");
+       *ret_conv = ChannelManager_create_inbound_payment_for_hash(&this_arg_conv, payment_hash_ref, min_value_msat_conv, invoice_expiry_delta_secs);
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_FundingCreated_clone_ptr(uint32_t arg) {
-       LDKFundingCreated arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = FundingCreated_clone_ptr(&arg_conv);
-       return ret_val;
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_create_inbound_payment_for_hash_legacy(uint32_t this_arg, int8_tArray payment_hash, uint32_t min_value_msat, int32_t invoice_expiry_delta_secs) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKThirtyTwoBytes payment_hash_ref;
+       CHECK(payment_hash->arr_len == 32);
+       memcpy(payment_hash_ref.data, payment_hash->elems, 32);
+       void* min_value_msat_ptr = (void*)(((uint64_t)min_value_msat) & ~1);
+       CHECK_ACCESS(min_value_msat_ptr);
+       LDKCOption_u64Z min_value_msat_conv = *(LDKCOption_u64Z*)(min_value_msat_ptr);
+       min_value_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)min_value_msat) & ~1));
+       LDKCResult_PaymentSecretAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretAPIErrorZ), "LDKCResult_PaymentSecretAPIErrorZ");
+       *ret_conv = ChannelManager_create_inbound_payment_for_hash_legacy(&this_arg_conv, payment_hash_ref, min_value_msat_conv, invoice_expiry_delta_secs);
+       return (uint64_t)ret_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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKFundingCreated ret_var = FundingCreated_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_get_payment_preimage(uint32_t this_arg, int8_tArray payment_hash, int8_tArray payment_secret) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKThirtyTwoBytes payment_hash_ref;
+       CHECK(payment_hash->arr_len == 32);
+       memcpy(payment_hash_ref.data, payment_hash->elems, 32);
+       LDKThirtyTwoBytes payment_secret_ref;
+       CHECK(payment_secret->arr_len == 32);
+       memcpy(payment_secret_ref.data, payment_secret->elems, 32);
+       LDKCResult_PaymentPreimageAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentPreimageAPIErrorZ), "LDKCResult_PaymentPreimageAPIErrorZ");
+       *ret_conv = ChannelManager_get_payment_preimage(&this_arg_conv, payment_hash_ref, payment_secret_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_FundingSigned_free(uint32_t this_obj) {
-       LDKFundingSigned this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       FundingSigned_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_as_MessageSendEventsProvider(uint32_t this_arg) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKMessageSendEventsProvider* ret_ret = MALLOC(sizeof(LDKMessageSendEventsProvider), "LDKMessageSendEventsProvider");
+       *ret_ret = ChannelManager_as_MessageSendEventsProvider(&this_arg_conv);
+       return (uint64_t)ret_ret;
 }
 
-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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *FundingSigned_get_channel_id(&this_ptr_conv), 32);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_as_EventsProvider(uint32_t this_arg) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKEventsProvider* ret_ret = MALLOC(sizeof(LDKEventsProvider), "LDKEventsProvider");
+       *ret_ret = ChannelManager_as_EventsProvider(&this_arg_conv);
+       return (uint64_t)ret_ret;
 }
 
-void  __attribute__((visibility("default"))) TS_FundingSigned_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKFundingSigned this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       FundingSigned_set_channel_id(&this_ptr_conv, val_ref);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_as_Listen(uint32_t this_arg) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKListen* ret_ret = MALLOC(sizeof(LDKListen), "LDKListen");
+       *ret_ret = ChannelManager_as_Listen(&this_arg_conv);
+       return (uint64_t)ret_ret;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_FundingSigned_get_signature(uint32_t this_ptr) {
-       LDKFundingSigned this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), FundingSigned_get_signature(&this_ptr_conv).compact_form, 64);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_as_Confirm(uint32_t this_arg) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKConfirm* ret_ret = MALLOC(sizeof(LDKConfirm), "LDKConfirm");
+       *ret_ret = ChannelManager_as_Confirm(&this_arg_conv);
+       return (uint64_t)ret_ret;
 }
 
-void  __attribute__((visibility("default"))) TS_FundingSigned_set_signature(uint32_t this_ptr, int8_tArray val) {
-       LDKFundingSigned this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSignature val_ref;
-       CHECK(*((uint32_t*)val) == 64);
-       memcpy(val_ref.compact_form, (uint8_t*)(val + 4), 64);
-       FundingSigned_set_signature(&this_ptr_conv, val_ref);
+void  __attribute__((visibility("default"))) TS_ChannelManager_await_persistable_update(uint32_t this_arg) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       ChannelManager_await_persistable_update(&this_arg_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_FundingSigned_new(int8_tArray channel_id_arg, int8_tArray signature_arg) {
-       LDKThirtyTwoBytes channel_id_arg_ref;
-       CHECK(*((uint32_t*)channel_id_arg) == 32);
-       memcpy(channel_id_arg_ref.data, (uint8_t*)(channel_id_arg + 4), 32);
-       LDKSignature signature_arg_ref;
-       CHECK(*((uint32_t*)signature_arg) == 64);
-       memcpy(signature_arg_ref.compact_form, (uint8_t*)(signature_arg + 4), 64);
-       LDKFundingSigned ret_var = FundingSigned_new(channel_id_arg_ref, signature_arg_ref);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_current_best_block(uint32_t this_arg) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKBestBlock ret_var = ChannelManager_current_best_block(&this_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -23832,212 +21797,147 @@ uint32_t  __attribute__((visibility("default"))) TS_FundingSigned_new(int8_tArra
        return ret_ref;
 }
 
-static inline uint64_t FundingSigned_clone_ptr(LDKFundingSigned *NONNULL_PTR arg) {
-       LDKFundingSigned ret_var = FundingSigned_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_FundingSigned_clone_ptr(uint32_t arg) {
-       LDKFundingSigned arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = FundingSigned_clone_ptr(&arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_as_ChannelMessageHandler(uint32_t this_arg) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKChannelMessageHandler* ret_ret = MALLOC(sizeof(LDKChannelMessageHandler), "LDKChannelMessageHandler");
+       *ret_ret = ChannelManager_as_ChannelMessageHandler(&this_arg_conv);
+       return (uint64_t)ret_ret;
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKFundingSigned ret_var = FundingSigned_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelManager_write(uint32_t obj) {
+       LDKChannelManager obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ChannelManager_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_FundingLocked_free(uint32_t this_obj) {
-       LDKFundingLocked this_obj_conv;
+void  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_free(uint32_t this_obj) {
+       LDKChannelManagerReadArgs this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       FundingLocked_free(this_obj_conv);
+       ChannelManagerReadArgs_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_FundingLocked_get_channel_id(uint32_t this_ptr) {
-       LDKFundingLocked this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_get_keys_manager(uint32_t this_ptr) {
+       LDKChannelManagerReadArgs this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *FundingLocked_get_channel_id(&this_ptr_conv), 32);
-       return ret_arr;
+       // WARNING: This object doesn't live past this scope, needs clone!
+       uint64_t ret_ret = ((uint64_t)ChannelManagerReadArgs_get_keys_manager(&this_ptr_conv)) | 1;
+       return ret_ret;
 }
 
-void  __attribute__((visibility("default"))) TS_FundingLocked_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKFundingLocked this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_set_keys_manager(uint32_t this_ptr, uint32_t val) {
+       LDKChannelManagerReadArgs this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       FundingLocked_set_channel_id(&this_ptr_conv, val_ref);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKKeysInterface val_conv = *(LDKKeysInterface*)(val_ptr);
+       ChannelManagerReadArgs_set_keys_manager(&this_ptr_conv, val_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_FundingLocked_get_next_per_commitment_point(uint32_t this_ptr) {
-       LDKFundingLocked this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_get_fee_estimator(uint32_t this_ptr) {
+       LDKChannelManagerReadArgs this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), FundingLocked_get_next_per_commitment_point(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       // WARNING: This object doesn't live past this scope, needs clone!
+       uint64_t ret_ret = ((uint64_t)ChannelManagerReadArgs_get_fee_estimator(&this_ptr_conv)) | 1;
+       return ret_ret;
 }
 
-void  __attribute__((visibility("default"))) TS_FundingLocked_set_next_per_commitment_point(uint32_t this_ptr, int8_tArray val) {
-       LDKFundingLocked this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_set_fee_estimator(uint32_t this_ptr, uint32_t val) {
+       LDKChannelManagerReadArgs this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       FundingLocked_set_next_per_commitment_point(&this_ptr_conv, val_ref);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_FundingLocked_new(int8_tArray channel_id_arg, int8_tArray next_per_commitment_point_arg) {
-       LDKThirtyTwoBytes channel_id_arg_ref;
-       CHECK(*((uint32_t*)channel_id_arg) == 32);
-       memcpy(channel_id_arg_ref.data, (uint8_t*)(channel_id_arg + 4), 32);
-       LDKPublicKey next_per_commitment_point_arg_ref;
-       CHECK(*((uint32_t*)next_per_commitment_point_arg) == 33);
-       memcpy(next_per_commitment_point_arg_ref.compressed_form, (uint8_t*)(next_per_commitment_point_arg + 4), 33);
-       LDKFundingLocked ret_var = FundingLocked_new(channel_id_arg_ref, next_per_commitment_point_arg_ref);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKFeeEstimator val_conv = *(LDKFeeEstimator*)(val_ptr);
+       ChannelManagerReadArgs_set_fee_estimator(&this_ptr_conv, val_conv);
 }
 
-static inline uint64_t FundingLocked_clone_ptr(LDKFundingLocked *NONNULL_PTR arg) {
-       LDKFundingLocked ret_var = FundingLocked_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_FundingLocked_clone_ptr(uint32_t arg) {
-       LDKFundingLocked arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = FundingLocked_clone_ptr(&arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_get_chain_monitor(uint32_t this_ptr) {
+       LDKChannelManagerReadArgs this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       // WARNING: This object doesn't live past this scope, needs clone!
+       uint64_t ret_ret = ((uint64_t)ChannelManagerReadArgs_get_chain_monitor(&this_ptr_conv)) | 1;
+       return ret_ret;
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKFundingLocked ret_var = FundingLocked_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_set_chain_monitor(uint32_t this_ptr, uint32_t val) {
+       LDKChannelManagerReadArgs this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKWatch val_conv = *(LDKWatch*)(val_ptr);
+       ChannelManagerReadArgs_set_chain_monitor(&this_ptr_conv, val_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_Shutdown_free(uint32_t this_obj) {
-       LDKShutdown this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       Shutdown_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_get_tx_broadcaster(uint32_t this_ptr) {
+       LDKChannelManagerReadArgs this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       // WARNING: This object doesn't live past this scope, needs clone!
+       uint64_t ret_ret = ((uint64_t)ChannelManagerReadArgs_get_tx_broadcaster(&this_ptr_conv)) | 1;
+       return ret_ret;
 }
-
-int8_tArray  __attribute__((visibility("default"))) TS_Shutdown_get_channel_id(uint32_t this_ptr) {
-       LDKShutdown this_ptr_conv;
+
+void  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_set_tx_broadcaster(uint32_t this_ptr, uint32_t val) {
+       LDKChannelManagerReadArgs this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *Shutdown_get_channel_id(&this_ptr_conv), 32);
-       return ret_arr;
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKBroadcasterInterface val_conv = *(LDKBroadcasterInterface*)(val_ptr);
+       ChannelManagerReadArgs_set_tx_broadcaster(&this_ptr_conv, val_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_Shutdown_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKShutdown this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_get_logger(uint32_t this_ptr) {
+       LDKChannelManagerReadArgs this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       Shutdown_set_channel_id(&this_ptr_conv, val_ref);
+       // WARNING: This object doesn't live past this scope, needs clone!
+       uint64_t ret_ret = ((uint64_t)ChannelManagerReadArgs_get_logger(&this_ptr_conv)) | 1;
+       return ret_ret;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_Shutdown_get_scriptpubkey(uint32_t this_ptr) {
-       LDKShutdown this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_set_logger(uint32_t this_ptr, uint32_t val) {
+       LDKChannelManagerReadArgs this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKu8slice ret_var = Shutdown_get_scriptpubkey(&this_ptr_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       return ret_arr;
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKLogger val_conv = *(LDKLogger*)(val_ptr);
+       ChannelManagerReadArgs_set_logger(&this_ptr_conv, val_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_Shutdown_set_scriptpubkey(uint32_t this_ptr, int8_tArray val) {
-       LDKShutdown this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_get_default_config(uint32_t this_ptr) {
+       LDKChannelManagerReadArgs this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_u8Z val_ref;
-       val_ref.datalen = *((uint32_t*)val);
-       val_ref.data = MALLOC(val_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(val_ref.data, (uint8_t*)(val + 4), val_ref.datalen);
-       Shutdown_set_scriptpubkey(&this_ptr_conv, val_ref);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_Shutdown_new(int8_tArray channel_id_arg, int8_tArray scriptpubkey_arg) {
-       LDKThirtyTwoBytes channel_id_arg_ref;
-       CHECK(*((uint32_t*)channel_id_arg) == 32);
-       memcpy(channel_id_arg_ref.data, (uint8_t*)(channel_id_arg + 4), 32);
-       LDKCVec_u8Z scriptpubkey_arg_ref;
-       scriptpubkey_arg_ref.datalen = *((uint32_t*)scriptpubkey_arg);
-       scriptpubkey_arg_ref.data = MALLOC(scriptpubkey_arg_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(scriptpubkey_arg_ref.data, (uint8_t*)(scriptpubkey_arg + 4), scriptpubkey_arg_ref.datalen);
-       LDKShutdown ret_var = Shutdown_new(channel_id_arg_ref, scriptpubkey_arg_ref);
+       LDKUserConfig ret_var = ChannelManagerReadArgs_get_default_config(&this_ptr_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -24049,33 +21949,56 @@ uint32_t  __attribute__((visibility("default"))) TS_Shutdown_new(int8_tArray cha
        return ret_ref;
 }
 
-static inline uint64_t Shutdown_clone_ptr(LDKShutdown *NONNULL_PTR arg) {
-       LDKShutdown ret_var = Shutdown_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_Shutdown_clone_ptr(uint32_t arg) {
-       LDKShutdown arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = Shutdown_clone_ptr(&arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_set_default_config(uint32_t this_ptr, uint32_t val) {
+       LDKChannelManagerReadArgs this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKUserConfig val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = UserConfig_clone(&val_conv);
+       ChannelManagerReadArgs_set_default_config(&this_ptr_conv, val_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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKShutdown ret_var = Shutdown_clone(&orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_new(uint32_t keys_manager, uint32_t fee_estimator, uint32_t chain_monitor, uint32_t tx_broadcaster, uint32_t logger, uint32_t default_config, uint32_tArray channel_monitors) {
+       void* keys_manager_ptr = (void*)(((uint64_t)keys_manager) & ~1);
+       CHECK_ACCESS(keys_manager_ptr);
+       LDKKeysInterface keys_manager_conv = *(LDKKeysInterface*)(keys_manager_ptr);
+       void* fee_estimator_ptr = (void*)(((uint64_t)fee_estimator) & ~1);
+       CHECK_ACCESS(fee_estimator_ptr);
+       LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(fee_estimator_ptr);
+       void* chain_monitor_ptr = (void*)(((uint64_t)chain_monitor) & ~1);
+       CHECK_ACCESS(chain_monitor_ptr);
+       LDKWatch chain_monitor_conv = *(LDKWatch*)(chain_monitor_ptr);
+       void* tx_broadcaster_ptr = (void*)(((uint64_t)tx_broadcaster) & ~1);
+       CHECK_ACCESS(tx_broadcaster_ptr);
+       LDKBroadcasterInterface tx_broadcaster_conv = *(LDKBroadcasterInterface*)(tx_broadcaster_ptr);
+       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
+       CHECK_ACCESS(logger_ptr);
+       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
+       LDKUserConfig default_config_conv;
+       default_config_conv.inner = (void*)(default_config & (~1));
+       default_config_conv.is_owned = (default_config & 1) || (default_config == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(default_config_conv);
+       default_config_conv = UserConfig_clone(&default_config_conv);
+       LDKCVec_ChannelMonitorZ channel_monitors_constr;
+       channel_monitors_constr.datalen = channel_monitors->arr_len;
+       if (channel_monitors_constr.datalen > 0)
+               channel_monitors_constr.data = MALLOC(channel_monitors_constr.datalen * sizeof(LDKChannelMonitor), "LDKCVec_ChannelMonitorZ Elements");
+       else
+               channel_monitors_constr.data = NULL;
+       uint32_t* channel_monitors_vals = channel_monitors->elems;
+       for (size_t q = 0; q < channel_monitors_constr.datalen; q++) {
+               uint32_t channel_monitors_conv_16 = channel_monitors_vals[q];
+               LDKChannelMonitor channel_monitors_conv_16_conv;
+               channel_monitors_conv_16_conv.inner = (void*)(channel_monitors_conv_16 & (~1));
+               channel_monitors_conv_16_conv.is_owned = (channel_monitors_conv_16 & 1) || (channel_monitors_conv_16 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_monitors_conv_16_conv);
+               channel_monitors_constr.data[q] = channel_monitors_conv_16_conv;
+       }
+       LDKChannelManagerReadArgs ret_var = ChannelManagerReadArgs_new(keys_manager_conv, fee_estimator_conv, chain_monitor_conv, tx_broadcaster_conv, logger_conv, default_config_conv, channel_monitors_constr);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -24087,63 +22010,30 @@ uint32_t  __attribute__((visibility("default"))) TS_Shutdown_clone(uint32_t orig
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_free(uint32_t this_obj) {
-       LDKClosingSignedFeeRange this_obj_conv;
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelManagerZ_read(int8_tArray ser, uint32_t arg) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKChannelManagerReadArgs arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = (arg & 1) || (arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       // Warning: we need a move here but no clone is available for LDKChannelManagerReadArgs
+       LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ");
+       *ret_conv = C2Tuple_BlockHashChannelManagerZ_read(ser_ref, arg_conv);
+       return (uint64_t)ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_DecodeError_free(uint32_t this_obj) {
+       LDKDecodeError this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ClosingSignedFeeRange_free(this_obj_conv);
-}
-
-int64_t  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_get_min_fee_satoshis(uint32_t this_ptr) {
-       LDKClosingSignedFeeRange this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ClosingSignedFeeRange_get_min_fee_satoshis(&this_ptr_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_set_min_fee_satoshis(uint32_t this_ptr, int64_t val) {
-       LDKClosingSignedFeeRange this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ClosingSignedFeeRange_set_min_fee_satoshis(&this_ptr_conv, val);
-}
-
-int64_t  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_get_max_fee_satoshis(uint32_t this_ptr) {
-       LDKClosingSignedFeeRange this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ClosingSignedFeeRange_get_max_fee_satoshis(&this_ptr_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_set_max_fee_satoshis(uint32_t this_ptr, int64_t val) {
-       LDKClosingSignedFeeRange this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ClosingSignedFeeRange_set_max_fee_satoshis(&this_ptr_conv, val);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_new(int64_t min_fee_satoshis_arg, int64_t max_fee_satoshis_arg) {
-       LDKClosingSignedFeeRange ret_var = ClosingSignedFeeRange_new(min_fee_satoshis_arg, max_fee_satoshis_arg);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       DecodeError_free(this_obj_conv);
 }
 
-static inline uint64_t ClosingSignedFeeRange_clone_ptr(LDKClosingSignedFeeRange *NONNULL_PTR arg) {
-       LDKClosingSignedFeeRange ret_var = ClosingSignedFeeRange_clone(arg);
+static inline uint64_t DecodeError_clone_ptr(LDKDecodeError *NONNULL_PTR arg) {
+       LDKDecodeError ret_var = DecodeError_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -24154,21 +22044,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_clone_ptr(uint32_t arg) {
-       LDKClosingSignedFeeRange arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_DecodeError_clone_ptr(uint32_t arg) {
+       LDKDecodeError arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ClosingSignedFeeRange_clone_ptr(&arg_conv);
+       int64_t ret_val = DecodeError_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_clone(uint32_t orig) {
-       LDKClosingSignedFeeRange orig_conv;
+uint32_t  __attribute__((visibility("default"))) TS_DecodeError_clone(uint32_t orig) {
+       LDKDecodeError orig_conv;
        orig_conv.inner = (void*)(orig & (~1));
        orig_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKClosingSignedFeeRange ret_var = ClosingSignedFeeRange_clone(&orig_conv);
+       LDKDecodeError ret_var = DecodeError_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -24180,118 +22070,51 @@ uint32_t  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_clone(
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ClosingSigned_free(uint32_t this_obj) {
-       LDKClosingSigned this_obj_conv;
+void  __attribute__((visibility("default"))) TS_Init_free(uint32_t this_obj) {
+       LDKInit this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ClosingSigned_free(this_obj_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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *ClosingSigned_get_channel_id(&this_ptr_conv), 32);
-       return ret_arr;
-}
-
-void  __attribute__((visibility("default"))) TS_ClosingSigned_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKClosingSigned this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       ClosingSigned_set_channel_id(&this_ptr_conv, val_ref);
-}
-
-int64_t  __attribute__((visibility("default"))) TS_ClosingSigned_get_fee_satoshis(uint32_t this_ptr) {
-       LDKClosingSigned this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ClosingSigned_get_fee_satoshis(&this_ptr_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_ClosingSigned_set_fee_satoshis(uint32_t this_ptr, int64_t val) {
-       LDKClosingSigned this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ClosingSigned_set_fee_satoshis(&this_ptr_conv, val);
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_ClosingSigned_get_signature(uint32_t this_ptr) {
-       LDKClosingSigned this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ClosingSigned_get_signature(&this_ptr_conv).compact_form, 64);
-       return ret_arr;
-}
-
-void  __attribute__((visibility("default"))) TS_ClosingSigned_set_signature(uint32_t this_ptr, int8_tArray val) {
-       LDKClosingSigned this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSignature val_ref;
-       CHECK(*((uint32_t*)val) == 64);
-       memcpy(val_ref.compact_form, (uint8_t*)(val + 4), 64);
-       ClosingSigned_set_signature(&this_ptr_conv, val_ref);
+       Init_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosingSigned_get_fee_range(uint32_t this_ptr) {
-       LDKClosingSigned this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_Init_get_features(uint32_t this_ptr) {
+       LDKInit this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKClosingSignedFeeRange ret_var = ClosingSigned_get_fee_range(&this_ptr_conv);
+       LDKInitFeatures ret_var = Init_get_features(&this_ptr_conv);
        uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
        CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ClosingSigned_set_fee_range(uint32_t this_ptr, uint32_t val) {
-       LDKClosingSigned this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_Init_set_features(uint32_t this_ptr, uint32_t val) {
+       LDKInit this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKClosingSignedFeeRange val_conv;
+       LDKInitFeatures val_conv;
        val_conv.inner = (void*)(val & (~1));
        val_conv.is_owned = (val & 1) || (val == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = ClosingSignedFeeRange_clone(&val_conv);
-       ClosingSigned_set_fee_range(&this_ptr_conv, val_conv);
+       val_conv = InitFeatures_clone(&val_conv);
+       Init_set_features(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosingSigned_new(int8_tArray channel_id_arg, int64_t fee_satoshis_arg, int8_tArray signature_arg, uint32_t fee_range_arg) {
-       LDKThirtyTwoBytes channel_id_arg_ref;
-       CHECK(*((uint32_t*)channel_id_arg) == 32);
-       memcpy(channel_id_arg_ref.data, (uint8_t*)(channel_id_arg + 4), 32);
-       LDKSignature signature_arg_ref;
-       CHECK(*((uint32_t*)signature_arg) == 64);
-       memcpy(signature_arg_ref.compact_form, (uint8_t*)(signature_arg + 4), 64);
-       LDKClosingSignedFeeRange fee_range_arg_conv;
-       fee_range_arg_conv.inner = (void*)(fee_range_arg & (~1));
-       fee_range_arg_conv.is_owned = (fee_range_arg & 1) || (fee_range_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(fee_range_arg_conv);
-       fee_range_arg_conv = ClosingSignedFeeRange_clone(&fee_range_arg_conv);
-       LDKClosingSigned ret_var = ClosingSigned_new(channel_id_arg_ref, fee_satoshis_arg, signature_arg_ref, fee_range_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_Init_new(uint32_t features_arg) {
+       LDKInitFeatures features_arg_conv;
+       features_arg_conv.inner = (void*)(features_arg & (~1));
+       features_arg_conv.is_owned = (features_arg & 1) || (features_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(features_arg_conv);
+       features_arg_conv = InitFeatures_clone(&features_arg_conv);
+       LDKInit ret_var = Init_new(features_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -24303,8 +22126,8 @@ uint32_t  __attribute__((visibility("default"))) TS_ClosingSigned_new(int8_tArra
        return ret_ref;
 }
 
-static inline uint64_t ClosingSigned_clone_ptr(LDKClosingSigned *NONNULL_PTR arg) {
-       LDKClosingSigned ret_var = ClosingSigned_clone(arg);
+static inline uint64_t Init_clone_ptr(LDKInit *NONNULL_PTR arg) {
+       LDKInit ret_var = Init_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -24315,21 +22138,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_ClosingSigned_clone_ptr(uint32_t arg) {
-       LDKClosingSigned arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_Init_clone_ptr(uint32_t arg) {
+       LDKInit arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ClosingSigned_clone_ptr(&arg_conv);
+       int64_t ret_val = Init_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosingSigned_clone(uint32_t orig) {
-       LDKClosingSigned orig_conv;
+uint32_t  __attribute__((visibility("default"))) TS_Init_clone(uint32_t orig) {
+       LDKInit orig_conv;
        orig_conv.inner = (void*)(orig & (~1));
        orig_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKClosingSigned ret_var = ClosingSigned_clone(&orig_conv);
+       LDKInit ret_var = Init_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -24341,109 +22164,167 @@ uint32_t  __attribute__((visibility("default"))) TS_ClosingSigned_clone(uint32_t
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateAddHTLC_free(uint32_t this_obj) {
-       LDKUpdateAddHTLC this_obj_conv;
+void  __attribute__((visibility("default"))) TS_ErrorMessage_free(uint32_t this_obj) {
+       LDKErrorMessage this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       UpdateAddHTLC_free(this_obj_conv);
+       ErrorMessage_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UpdateAddHTLC_get_channel_id(uint32_t this_ptr) {
-       LDKUpdateAddHTLC this_ptr_conv;
+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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *UpdateAddHTLC_get_channel_id(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *ErrorMessage_get_channel_id(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateAddHTLC_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKUpdateAddHTLC this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ErrorMessage_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKErrorMessage this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
        LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       UpdateAddHTLC_set_channel_id(&this_ptr_conv, val_ref);
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       ErrorMessage_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_UpdateAddHTLC_get_htlc_id(uint32_t this_ptr) {
-       LDKUpdateAddHTLC this_ptr_conv;
+jstring  __attribute__((visibility("default"))) TS_ErrorMessage_get_data(uint32_t this_ptr) {
+       LDKErrorMessage this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = UpdateAddHTLC_get_htlc_id(&this_ptr_conv);
-       return ret_val;
+       LDKStr ret_str = ErrorMessage_get_data(&this_ptr_conv);
+       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
+       Str_free(ret_str);
+       return ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateAddHTLC_set_htlc_id(uint32_t this_ptr, int64_t val) {
-       LDKUpdateAddHTLC this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ErrorMessage_set_data(uint32_t this_ptr, jstring val) {
+       LDKErrorMessage this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UpdateAddHTLC_set_htlc_id(&this_ptr_conv, val);
+       LDKStr val_conv = str_ref_to_owned_c(val);
+       ErrorMessage_set_data(&this_ptr_conv, val_conv);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_UpdateAddHTLC_get_amount_msat(uint32_t this_ptr) {
-       LDKUpdateAddHTLC this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = UpdateAddHTLC_get_amount_msat(&this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ErrorMessage_new(int8_tArray channel_id_arg, jstring data_arg) {
+       LDKThirtyTwoBytes channel_id_arg_ref;
+       CHECK(channel_id_arg->arr_len == 32);
+       memcpy(channel_id_arg_ref.data, channel_id_arg->elems, 32);
+       LDKStr data_arg_conv = str_ref_to_owned_c(data_arg);
+       LDKErrorMessage ret_var = ErrorMessage_new(channel_id_arg_ref, data_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+static inline uint64_t ErrorMessage_clone_ptr(LDKErrorMessage *NONNULL_PTR arg) {
+       LDKErrorMessage ret_var = ErrorMessage_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_ErrorMessage_clone_ptr(uint32_t arg) {
+       LDKErrorMessage arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ErrorMessage_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateAddHTLC_set_amount_msat(uint32_t this_ptr, int64_t val) {
-       LDKUpdateAddHTLC this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UpdateAddHTLC_set_amount_msat(&this_ptr_conv, val);
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKErrorMessage ret_var = ErrorMessage_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UpdateAddHTLC_get_payment_hash(uint32_t this_ptr) {
-       LDKUpdateAddHTLC this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_Ping_free(uint32_t this_obj) {
+       LDKPing this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       Ping_free(this_obj_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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *UpdateAddHTLC_get_payment_hash(&this_ptr_conv), 32);
-       return ret_arr;
+       int16_t ret_val = Ping_get_ponglen(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateAddHTLC_set_payment_hash(uint32_t this_ptr, int8_tArray val) {
-       LDKUpdateAddHTLC this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_Ping_set_ponglen(uint32_t this_ptr, int16_t val) {
+       LDKPing this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       UpdateAddHTLC_set_payment_hash(&this_ptr_conv, val_ref);
+       Ping_set_ponglen(&this_ptr_conv, val);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_UpdateAddHTLC_get_cltv_expiry(uint32_t this_ptr) {
-       LDKUpdateAddHTLC this_ptr_conv;
+int16_t  __attribute__((visibility("default"))) TS_Ping_get_byteslen(uint32_t this_ptr) {
+       LDKPing this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = UpdateAddHTLC_get_cltv_expiry(&this_ptr_conv);
+       int16_t ret_val = Ping_get_byteslen(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateAddHTLC_set_cltv_expiry(uint32_t this_ptr, int32_t val) {
-       LDKUpdateAddHTLC this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_Ping_set_byteslen(uint32_t this_ptr, int16_t val) {
+       LDKPing this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UpdateAddHTLC_set_cltv_expiry(&this_ptr_conv, val);
+       Ping_set_byteslen(&this_ptr_conv, val);
 }
 
-static inline uint64_t UpdateAddHTLC_clone_ptr(LDKUpdateAddHTLC *NONNULL_PTR arg) {
-       LDKUpdateAddHTLC ret_var = UpdateAddHTLC_clone(arg);
+uint32_t  __attribute__((visibility("default"))) TS_Ping_new(int16_t ponglen_arg, int16_t byteslen_arg) {
+       LDKPing ret_var = Ping_new(ponglen_arg, byteslen_arg);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+static inline uint64_t Ping_clone_ptr(LDKPing *NONNULL_PTR arg) {
+       LDKPing ret_var = Ping_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -24454,21 +22335,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_UpdateAddHTLC_clone_ptr(uint32_t arg) {
-       LDKUpdateAddHTLC arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_Ping_clone_ptr(uint32_t arg) {
+       LDKPing arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = UpdateAddHTLC_clone_ptr(&arg_conv);
+       int64_t ret_val = Ping_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UpdateAddHTLC_clone(uint32_t orig) {
-       LDKUpdateAddHTLC 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKUpdateAddHTLC ret_var = UpdateAddHTLC_clone(&orig_conv);
+       LDKPing ret_var = Ping_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -24480,81 +22361,33 @@ uint32_t  __attribute__((visibility("default"))) TS_UpdateAddHTLC_clone(uint32_t
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_free(uint32_t this_obj) {
-       LDKUpdateFulfillHTLC this_obj_conv;
+void  __attribute__((visibility("default"))) TS_Pong_free(uint32_t this_obj) {
+       LDKPong this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       UpdateFulfillHTLC_free(this_obj_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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *UpdateFulfillHTLC_get_channel_id(&this_ptr_conv), 32);
-       return ret_arr;
-}
-
-void  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKUpdateFulfillHTLC this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       UpdateFulfillHTLC_set_channel_id(&this_ptr_conv, val_ref);
+       Pong_free(this_obj_conv);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_get_htlc_id(uint32_t this_ptr) {
-       LDKUpdateFulfillHTLC 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = UpdateFulfillHTLC_get_htlc_id(&this_ptr_conv);
+       int16_t ret_val = Pong_get_byteslen(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_set_htlc_id(uint32_t this_ptr, int64_t val) {
-       LDKUpdateFulfillHTLC this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UpdateFulfillHTLC_set_htlc_id(&this_ptr_conv, val);
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_get_payment_preimage(uint32_t this_ptr) {
-       LDKUpdateFulfillHTLC this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *UpdateFulfillHTLC_get_payment_preimage(&this_ptr_conv), 32);
-       return ret_arr;
-}
-
-void  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_set_payment_preimage(uint32_t this_ptr, int8_tArray val) {
-       LDKUpdateFulfillHTLC this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_Pong_set_byteslen(uint32_t this_ptr, int16_t val) {
+       LDKPong this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       UpdateFulfillHTLC_set_payment_preimage(&this_ptr_conv, val_ref);
+       Pong_set_byteslen(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_new(int8_tArray channel_id_arg, int64_t htlc_id_arg, int8_tArray payment_preimage_arg) {
-       LDKThirtyTwoBytes channel_id_arg_ref;
-       CHECK(*((uint32_t*)channel_id_arg) == 32);
-       memcpy(channel_id_arg_ref.data, (uint8_t*)(channel_id_arg + 4), 32);
-       LDKThirtyTwoBytes payment_preimage_arg_ref;
-       CHECK(*((uint32_t*)payment_preimage_arg) == 32);
-       memcpy(payment_preimage_arg_ref.data, (uint8_t*)(payment_preimage_arg + 4), 32);
-       LDKUpdateFulfillHTLC ret_var = UpdateFulfillHTLC_new(channel_id_arg_ref, htlc_id_arg, payment_preimage_arg_ref);
+uint32_t  __attribute__((visibility("default"))) TS_Pong_new(int16_t byteslen_arg) {
+       LDKPong ret_var = Pong_new(byteslen_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -24566,8 +22399,8 @@ uint32_t  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_new(int8_t
        return ret_ref;
 }
 
-static inline uint64_t UpdateFulfillHTLC_clone_ptr(LDKUpdateFulfillHTLC *NONNULL_PTR arg) {
-       LDKUpdateFulfillHTLC ret_var = UpdateFulfillHTLC_clone(arg);
+static inline uint64_t Pong_clone_ptr(LDKPong *NONNULL_PTR arg) {
+       LDKPong ret_var = Pong_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -24578,21 +22411,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_clone_ptr(uint32_t arg) {
-       LDKUpdateFulfillHTLC arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_Pong_clone_ptr(uint32_t arg) {
+       LDKPong arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = UpdateFulfillHTLC_clone_ptr(&arg_conv);
+       int64_t ret_val = Pong_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_clone(uint32_t orig) {
-       LDKUpdateFulfillHTLC 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKUpdateFulfillHTLC ret_var = UpdateFulfillHTLC_clone(&orig_conv);
+       LDKPong ret_var = Pong_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -24604,529 +22437,386 @@ uint32_t  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_clone(uint
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateFailHTLC_free(uint32_t this_obj) {
-       LDKUpdateFailHTLC this_obj_conv;
+void  __attribute__((visibility("default"))) TS_OpenChannel_free(uint32_t this_obj) {
+       LDKOpenChannel this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       UpdateFailHTLC_free(this_obj_conv);
+       OpenChannel_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UpdateFailHTLC_get_channel_id(uint32_t this_ptr) {
-       LDKUpdateFailHTLC 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *UpdateFailHTLC_get_channel_id(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *OpenChannel_get_chain_hash(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateFailHTLC_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKUpdateFailHTLC this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
        LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       UpdateFailHTLC_set_channel_id(&this_ptr_conv, val_ref);
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       OpenChannel_set_chain_hash(&this_ptr_conv, val_ref);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_UpdateFailHTLC_get_htlc_id(uint32_t this_ptr) {
-       LDKUpdateFailHTLC this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_get_temporary_channel_id(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = UpdateFailHTLC_get_htlc_id(&this_ptr_conv);
-       return ret_val;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *OpenChannel_get_temporary_channel_id(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateFailHTLC_set_htlc_id(uint32_t this_ptr, int64_t val) {
-       LDKUpdateFailHTLC this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_temporary_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UpdateFailHTLC_set_htlc_id(&this_ptr_conv, val);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       OpenChannel_set_temporary_channel_id(&this_ptr_conv, val_ref);
 }
 
-static inline uint64_t UpdateFailHTLC_clone_ptr(LDKUpdateFailHTLC *NONNULL_PTR arg) {
-       LDKUpdateFailHTLC ret_var = UpdateFailHTLC_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_UpdateFailHTLC_clone_ptr(uint32_t arg) {
-       LDKUpdateFailHTLC arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = UpdateFailHTLC_clone_ptr(&arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_OpenChannel_get_funding_satoshis(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = OpenChannel_get_funding_satoshis(&this_ptr_conv);
        return ret_val;
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKUpdateFailHTLC ret_var = UpdateFailHTLC_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_funding_satoshis(uint32_t this_ptr, int64_t val) {
+       LDKOpenChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       OpenChannel_set_funding_satoshis(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_free(uint32_t this_obj) {
-       LDKUpdateFailMalformedHTLC this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       UpdateFailMalformedHTLC_free(this_obj_conv);
+int64_t  __attribute__((visibility("default"))) TS_OpenChannel_get_push_msat(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = OpenChannel_get_push_msat(&this_ptr_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_get_channel_id(uint32_t this_ptr) {
-       LDKUpdateFailMalformedHTLC this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_push_msat(uint32_t this_ptr, int64_t val) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *UpdateFailMalformedHTLC_get_channel_id(&this_ptr_conv), 32);
-       return ret_arr;
+       OpenChannel_set_push_msat(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKUpdateFailMalformedHTLC this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_OpenChannel_get_dust_limit_satoshis(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       UpdateFailMalformedHTLC_set_channel_id(&this_ptr_conv, val_ref);
+       int64_t ret_val = OpenChannel_get_dust_limit_satoshis(&this_ptr_conv);
+       return ret_val;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_get_htlc_id(uint32_t this_ptr) {
-       LDKUpdateFailMalformedHTLC this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_dust_limit_satoshis(uint32_t this_ptr, int64_t val) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = UpdateFailMalformedHTLC_get_htlc_id(&this_ptr_conv);
+       OpenChannel_set_dust_limit_satoshis(&this_ptr_conv, val);
+}
+
+int64_t  __attribute__((visibility("default"))) TS_OpenChannel_get_max_htlc_value_in_flight_msat(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = OpenChannel_get_max_htlc_value_in_flight_msat(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_set_htlc_id(uint32_t this_ptr, int64_t val) {
-       LDKUpdateFailMalformedHTLC this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_max_htlc_value_in_flight_msat(uint32_t this_ptr, int64_t val) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UpdateFailMalformedHTLC_set_htlc_id(&this_ptr_conv, val);
+       OpenChannel_set_max_htlc_value_in_flight_msat(&this_ptr_conv, val);
 }
 
-int16_t  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_get_failure_code(uint32_t this_ptr) {
-       LDKUpdateFailMalformedHTLC this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_OpenChannel_get_channel_reserve_satoshis(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = UpdateFailMalformedHTLC_get_failure_code(&this_ptr_conv);
+       int64_t ret_val = OpenChannel_get_channel_reserve_satoshis(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_set_failure_code(uint32_t this_ptr, int16_t val) {
-       LDKUpdateFailMalformedHTLC this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_channel_reserve_satoshis(uint32_t this_ptr, int64_t val) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UpdateFailMalformedHTLC_set_failure_code(&this_ptr_conv, val);
+       OpenChannel_set_channel_reserve_satoshis(&this_ptr_conv, val);
 }
 
-static inline uint64_t UpdateFailMalformedHTLC_clone_ptr(LDKUpdateFailMalformedHTLC *NONNULL_PTR arg) {
-       LDKUpdateFailMalformedHTLC ret_var = UpdateFailMalformedHTLC_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
+int64_t  __attribute__((visibility("default"))) TS_OpenChannel_get_htlc_minimum_msat(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = OpenChannel_get_htlc_minimum_msat(&this_ptr_conv);
+       return ret_val;
 }
-       return ret_ref;
+
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_htlc_minimum_msat(uint32_t this_ptr, int64_t val) {
+       LDKOpenChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       OpenChannel_set_htlc_minimum_msat(&this_ptr_conv, val);
 }
-int64_t  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_clone_ptr(uint32_t arg) {
-       LDKUpdateFailMalformedHTLC arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = UpdateFailMalformedHTLC_clone_ptr(&arg_conv);
+
+int32_t  __attribute__((visibility("default"))) TS_OpenChannel_get_feerate_per_kw(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = OpenChannel_get_feerate_per_kw(&this_ptr_conv);
        return ret_val;
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKUpdateFailMalformedHTLC ret_var = UpdateFailMalformedHTLC_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_feerate_per_kw(uint32_t this_ptr, int32_t val) {
+       LDKOpenChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       OpenChannel_set_feerate_per_kw(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_CommitmentSigned_free(uint32_t this_obj) {
-       LDKCommitmentSigned this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       CommitmentSigned_free(this_obj_conv);
+int16_t  __attribute__((visibility("default"))) TS_OpenChannel_get_to_self_delay(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int16_t ret_val = OpenChannel_get_to_self_delay(&this_ptr_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_CommitmentSigned_get_channel_id(uint32_t this_ptr) {
-       LDKCommitmentSigned this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_to_self_delay(uint32_t this_ptr, int16_t val) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *CommitmentSigned_get_channel_id(&this_ptr_conv), 32);
-       return ret_arr;
+       OpenChannel_set_to_self_delay(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_CommitmentSigned_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKCommitmentSigned this_ptr_conv;
+int16_t  __attribute__((visibility("default"))) TS_OpenChannel_get_max_accepted_htlcs(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       CommitmentSigned_set_channel_id(&this_ptr_conv, val_ref);
+       int16_t ret_val = OpenChannel_get_max_accepted_htlcs(&this_ptr_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_max_accepted_htlcs(uint32_t this_ptr, int16_t val) {
+       LDKOpenChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       OpenChannel_set_max_accepted_htlcs(&this_ptr_conv, val);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_CommitmentSigned_get_signature(uint32_t this_ptr) {
-       LDKCommitmentSigned this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_get_funding_pubkey(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), CommitmentSigned_get_signature(&this_ptr_conv).compact_form, 64);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, OpenChannel_get_funding_pubkey(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_CommitmentSigned_set_signature(uint32_t this_ptr, int8_tArray val) {
-       LDKCommitmentSigned this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_funding_pubkey(uint32_t this_ptr, int8_tArray val) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSignature val_ref;
-       CHECK(*((uint32_t*)val) == 64);
-       memcpy(val_ref.compact_form, (uint8_t*)(val + 4), 64);
-       CommitmentSigned_set_signature(&this_ptr_conv, val_ref);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       OpenChannel_set_funding_pubkey(&this_ptr_conv, val_ref);
 }
 
-void  __attribute__((visibility("default"))) TS_CommitmentSigned_set_htlc_signatures(uint32_t this_ptr, ptrArray val) {
-       LDKCommitmentSigned this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_get_revocation_basepoint(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_SignatureZ val_constr;
-       val_constr.datalen = *((uint32_t*)val);
-       if (val_constr.datalen > 0)
-               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ Elements");
-       else
-               val_constr.data = NULL;
-       int8_tArray* val_vals = (int8_tArray*)(val + 4);
-       for (size_t m = 0; m < val_constr.datalen; m++) {
-               int8_tArray val_conv_12 = val_vals[m];
-               LDKSignature val_conv_12_ref;
-               CHECK(*((uint32_t*)val_conv_12) == 64);
-               memcpy(val_conv_12_ref.compact_form, (uint8_t*)(val_conv_12 + 4), 64);
-               val_constr.data[m] = val_conv_12_ref;
-       }
-       CommitmentSigned_set_htlc_signatures(&this_ptr_conv, val_constr);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CommitmentSigned_new(int8_tArray channel_id_arg, int8_tArray signature_arg, ptrArray htlc_signatures_arg) {
-       LDKThirtyTwoBytes channel_id_arg_ref;
-       CHECK(*((uint32_t*)channel_id_arg) == 32);
-       memcpy(channel_id_arg_ref.data, (uint8_t*)(channel_id_arg + 4), 32);
-       LDKSignature signature_arg_ref;
-       CHECK(*((uint32_t*)signature_arg) == 64);
-       memcpy(signature_arg_ref.compact_form, (uint8_t*)(signature_arg + 4), 64);
-       LDKCVec_SignatureZ htlc_signatures_arg_constr;
-       htlc_signatures_arg_constr.datalen = *((uint32_t*)htlc_signatures_arg);
-       if (htlc_signatures_arg_constr.datalen > 0)
-               htlc_signatures_arg_constr.data = MALLOC(htlc_signatures_arg_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ Elements");
-       else
-               htlc_signatures_arg_constr.data = NULL;
-       int8_tArray* htlc_signatures_arg_vals = (int8_tArray*)(htlc_signatures_arg + 4);
-       for (size_t m = 0; m < htlc_signatures_arg_constr.datalen; m++) {
-               int8_tArray htlc_signatures_arg_conv_12 = htlc_signatures_arg_vals[m];
-               LDKSignature htlc_signatures_arg_conv_12_ref;
-               CHECK(*((uint32_t*)htlc_signatures_arg_conv_12) == 64);
-               memcpy(htlc_signatures_arg_conv_12_ref.compact_form, (uint8_t*)(htlc_signatures_arg_conv_12 + 4), 64);
-               htlc_signatures_arg_constr.data[m] = htlc_signatures_arg_conv_12_ref;
-       }
-       LDKCommitmentSigned ret_var = CommitmentSigned_new(channel_id_arg_ref, signature_arg_ref, htlc_signatures_arg_constr);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
-}
-
-static inline uint64_t CommitmentSigned_clone_ptr(LDKCommitmentSigned *NONNULL_PTR arg) {
-       LDKCommitmentSigned ret_var = CommitmentSigned_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_CommitmentSigned_clone_ptr(uint32_t arg) {
-       LDKCommitmentSigned arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = CommitmentSigned_clone_ptr(&arg_conv);
-       return ret_val;
-}
-
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKCommitmentSigned ret_var = CommitmentSigned_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, OpenChannel_get_revocation_basepoint(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_RevokeAndACK_free(uint32_t this_obj) {
-       LDKRevokeAndACK this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       RevokeAndACK_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_revocation_basepoint(uint32_t this_ptr, int8_tArray val) {
+       LDKOpenChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       OpenChannel_set_revocation_basepoint(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_RevokeAndACK_get_channel_id(uint32_t this_ptr) {
-       LDKRevokeAndACK this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_get_payment_point(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *RevokeAndACK_get_channel_id(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, OpenChannel_get_payment_point(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_RevokeAndACK_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKRevokeAndACK this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_payment_point(uint32_t this_ptr, int8_tArray val) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       RevokeAndACK_set_channel_id(&this_ptr_conv, val_ref);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       OpenChannel_set_payment_point(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_RevokeAndACK_get_per_commitment_secret(uint32_t this_ptr) {
-       LDKRevokeAndACK this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_get_delayed_payment_basepoint(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *RevokeAndACK_get_per_commitment_secret(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, OpenChannel_get_delayed_payment_basepoint(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_RevokeAndACK_set_per_commitment_secret(uint32_t this_ptr, int8_tArray val) {
-       LDKRevokeAndACK this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_delayed_payment_basepoint(uint32_t this_ptr, int8_tArray val) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       RevokeAndACK_set_per_commitment_secret(&this_ptr_conv, val_ref);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       OpenChannel_set_delayed_payment_basepoint(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_RevokeAndACK_get_next_per_commitment_point(uint32_t this_ptr) {
-       LDKRevokeAndACK this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_get_htlc_basepoint(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), RevokeAndACK_get_next_per_commitment_point(&this_ptr_conv).compressed_form, 33);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, OpenChannel_get_htlc_basepoint(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_RevokeAndACK_set_next_per_commitment_point(uint32_t this_ptr, int8_tArray val) {
-       LDKRevokeAndACK this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_htlc_basepoint(uint32_t this_ptr, int8_tArray val) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
        LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       RevokeAndACK_set_next_per_commitment_point(&this_ptr_conv, val_ref);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_RevokeAndACK_new(int8_tArray channel_id_arg, int8_tArray per_commitment_secret_arg, int8_tArray next_per_commitment_point_arg) {
-       LDKThirtyTwoBytes channel_id_arg_ref;
-       CHECK(*((uint32_t*)channel_id_arg) == 32);
-       memcpy(channel_id_arg_ref.data, (uint8_t*)(channel_id_arg + 4), 32);
-       LDKThirtyTwoBytes per_commitment_secret_arg_ref;
-       CHECK(*((uint32_t*)per_commitment_secret_arg) == 32);
-       memcpy(per_commitment_secret_arg_ref.data, (uint8_t*)(per_commitment_secret_arg + 4), 32);
-       LDKPublicKey next_per_commitment_point_arg_ref;
-       CHECK(*((uint32_t*)next_per_commitment_point_arg) == 33);
-       memcpy(next_per_commitment_point_arg_ref.compressed_form, (uint8_t*)(next_per_commitment_point_arg + 4), 33);
-       LDKRevokeAndACK ret_var = RevokeAndACK_new(channel_id_arg_ref, per_commitment_secret_arg_ref, next_per_commitment_point_arg_ref);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
-}
-
-static inline uint64_t RevokeAndACK_clone_ptr(LDKRevokeAndACK *NONNULL_PTR arg) {
-       LDKRevokeAndACK ret_var = RevokeAndACK_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_RevokeAndACK_clone_ptr(uint32_t arg) {
-       LDKRevokeAndACK arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = RevokeAndACK_clone_ptr(&arg_conv);
-       return ret_val;
-}
-
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKRevokeAndACK ret_var = RevokeAndACK_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
-}
-
-void  __attribute__((visibility("default"))) TS_UpdateFee_free(uint32_t this_obj) {
-       LDKUpdateFee this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       UpdateFee_free(this_obj_conv);
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       OpenChannel_set_htlc_basepoint(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UpdateFee_get_channel_id(uint32_t this_ptr) {
-       LDKUpdateFee this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_get_first_per_commitment_point(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *UpdateFee_get_channel_id(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, OpenChannel_get_first_per_commitment_point(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateFee_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKUpdateFee this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_first_per_commitment_point(uint32_t this_ptr, int8_tArray val) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       UpdateFee_set_channel_id(&this_ptr_conv, val_ref);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       OpenChannel_set_first_per_commitment_point(&this_ptr_conv, val_ref);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_UpdateFee_get_feerate_per_kw(uint32_t this_ptr) {
-       LDKUpdateFee this_ptr_conv;
+int8_t  __attribute__((visibility("default"))) TS_OpenChannel_get_channel_flags(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = UpdateFee_get_feerate_per_kw(&this_ptr_conv);
+       int8_t ret_val = OpenChannel_get_channel_flags(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateFee_set_feerate_per_kw(uint32_t this_ptr, int32_t val) {
-       LDKUpdateFee this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_channel_flags(uint32_t this_ptr, int8_t val) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UpdateFee_set_feerate_per_kw(&this_ptr_conv, val);
+       OpenChannel_set_channel_flags(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UpdateFee_new(int8_tArray channel_id_arg, int32_t feerate_per_kw_arg) {
-       LDKThirtyTwoBytes channel_id_arg_ref;
-       CHECK(*((uint32_t*)channel_id_arg) == 32);
-       memcpy(channel_id_arg_ref.data, (uint8_t*)(channel_id_arg + 4), 32);
-       LDKUpdateFee ret_var = UpdateFee_new(channel_id_arg_ref, feerate_per_kw_arg);
+uint32_t  __attribute__((visibility("default"))) TS_OpenChannel_get_channel_type(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKChannelTypeFeatures ret_var = OpenChannel_get_channel_type(&this_ptr_conv);
        uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       if ((uint64_t)ret_var.inner > 4096) {
+               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
        CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
+               ret_ref = (uint64_t)ret_var.inner;
+               if (ret_var.is_owned) {
+                       ret_ref |= 1;
+               }
        }
        return ret_ref;
 }
 
-static inline uint64_t UpdateFee_clone_ptr(LDKUpdateFee *NONNULL_PTR arg) {
-       LDKUpdateFee ret_var = UpdateFee_clone(arg);
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_channel_type(uint32_t this_ptr, uint32_t val) {
+       LDKOpenChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKChannelTypeFeatures val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = ChannelTypeFeatures_clone(&val_conv);
+       OpenChannel_set_channel_type(&this_ptr_conv, val_conv);
+}
+
+static inline uint64_t OpenChannel_clone_ptr(LDKOpenChannel *NONNULL_PTR arg) {
+       LDKOpenChannel ret_var = OpenChannel_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -25137,21 +22827,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_UpdateFee_clone_ptr(uint32_t arg) {
-       LDKUpdateFee arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_OpenChannel_clone_ptr(uint32_t arg) {
+       LDKOpenChannel arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = UpdateFee_clone_ptr(&arg_conv);
+       int64_t ret_val = OpenChannel_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UpdateFee_clone(uint32_t orig) {
-       LDKUpdateFee 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKUpdateFee ret_var = UpdateFee_clone(&orig_conv);
+       LDKOpenChannel ret_var = OpenChannel_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -25163,326 +22853,282 @@ uint32_t  __attribute__((visibility("default"))) TS_UpdateFee_clone(uint32_t ori
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_DataLossProtect_free(uint32_t this_obj) {
-       LDKDataLossProtect this_obj_conv;
+void  __attribute__((visibility("default"))) TS_AcceptChannel_free(uint32_t this_obj) {
+       LDKAcceptChannel this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       DataLossProtect_free(this_obj_conv);
+       AcceptChannel_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_DataLossProtect_get_your_last_per_commitment_secret(uint32_t this_ptr) {
-       LDKDataLossProtect 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *DataLossProtect_get_your_last_per_commitment_secret(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *AcceptChannel_get_temporary_channel_id(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_DataLossProtect_set_your_last_per_commitment_secret(uint32_t this_ptr, int8_tArray val) {
-       LDKDataLossProtect this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_AcceptChannel_set_temporary_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
        LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       DataLossProtect_set_your_last_per_commitment_secret(&this_ptr_conv, val_ref);
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       AcceptChannel_set_temporary_channel_id(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_DataLossProtect_get_my_current_per_commitment_point(uint32_t this_ptr) {
-       LDKDataLossProtect this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_AcceptChannel_get_dust_limit_satoshis(uint32_t this_ptr) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), DataLossProtect_get_my_current_per_commitment_point(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       int64_t ret_val = AcceptChannel_get_dust_limit_satoshis(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_DataLossProtect_set_my_current_per_commitment_point(uint32_t this_ptr, int8_tArray val) {
-       LDKDataLossProtect this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_AcceptChannel_set_dust_limit_satoshis(uint32_t this_ptr, int64_t val) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       DataLossProtect_set_my_current_per_commitment_point(&this_ptr_conv, val_ref);
+       AcceptChannel_set_dust_limit_satoshis(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_DataLossProtect_new(int8_tArray your_last_per_commitment_secret_arg, int8_tArray my_current_per_commitment_point_arg) {
-       LDKThirtyTwoBytes your_last_per_commitment_secret_arg_ref;
-       CHECK(*((uint32_t*)your_last_per_commitment_secret_arg) == 32);
-       memcpy(your_last_per_commitment_secret_arg_ref.data, (uint8_t*)(your_last_per_commitment_secret_arg + 4), 32);
-       LDKPublicKey my_current_per_commitment_point_arg_ref;
-       CHECK(*((uint32_t*)my_current_per_commitment_point_arg) == 33);
-       memcpy(my_current_per_commitment_point_arg_ref.compressed_form, (uint8_t*)(my_current_per_commitment_point_arg + 4), 33);
-       LDKDataLossProtect ret_var = DataLossProtect_new(your_last_per_commitment_secret_arg_ref, my_current_per_commitment_point_arg_ref);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int64_t  __attribute__((visibility("default"))) TS_AcceptChannel_get_max_htlc_value_in_flight_msat(uint32_t this_ptr) {
+       LDKAcceptChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = AcceptChannel_get_max_htlc_value_in_flight_msat(&this_ptr_conv);
+       return ret_val;
 }
 
-static inline uint64_t DataLossProtect_clone_ptr(LDKDataLossProtect *NONNULL_PTR arg) {
-       LDKDataLossProtect ret_var = DataLossProtect_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_AcceptChannel_set_max_htlc_value_in_flight_msat(uint32_t this_ptr, int64_t val) {
+       LDKAcceptChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       AcceptChannel_set_max_htlc_value_in_flight_msat(&this_ptr_conv, val);
 }
-int64_t  __attribute__((visibility("default"))) TS_DataLossProtect_clone_ptr(uint32_t arg) {
-       LDKDataLossProtect arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = DataLossProtect_clone_ptr(&arg_conv);
+
+int64_t  __attribute__((visibility("default"))) TS_AcceptChannel_get_channel_reserve_satoshis(uint32_t this_ptr) {
+       LDKAcceptChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = AcceptChannel_get_channel_reserve_satoshis(&this_ptr_conv);
        return ret_val;
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKDataLossProtect ret_var = DataLossProtect_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_AcceptChannel_set_channel_reserve_satoshis(uint32_t this_ptr, int64_t val) {
+       LDKAcceptChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       AcceptChannel_set_channel_reserve_satoshis(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelReestablish_free(uint32_t this_obj) {
-       LDKChannelReestablish this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelReestablish_free(this_obj_conv);
+int64_t  __attribute__((visibility("default"))) TS_AcceptChannel_get_htlc_minimum_msat(uint32_t this_ptr) {
+       LDKAcceptChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = AcceptChannel_get_htlc_minimum_msat(&this_ptr_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelReestablish_get_channel_id(uint32_t this_ptr) {
-       LDKChannelReestablish this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_AcceptChannel_set_htlc_minimum_msat(uint32_t this_ptr, int64_t val) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *ChannelReestablish_get_channel_id(&this_ptr_conv), 32);
-       return ret_arr;
+       AcceptChannel_set_htlc_minimum_msat(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelReestablish_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKChannelReestablish this_ptr_conv;
+int32_t  __attribute__((visibility("default"))) TS_AcceptChannel_get_minimum_depth(uint32_t this_ptr) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       ChannelReestablish_set_channel_id(&this_ptr_conv, val_ref);
+       int32_t ret_val = AcceptChannel_get_minimum_depth(&this_ptr_conv);
+       return ret_val;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ChannelReestablish_get_next_local_commitment_number(uint32_t this_ptr) {
-       LDKChannelReestablish this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_AcceptChannel_set_minimum_depth(uint32_t this_ptr, int32_t val) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelReestablish_get_next_local_commitment_number(&this_ptr_conv);
+       AcceptChannel_set_minimum_depth(&this_ptr_conv, val);
+}
+
+int16_t  __attribute__((visibility("default"))) TS_AcceptChannel_get_to_self_delay(uint32_t this_ptr) {
+       LDKAcceptChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int16_t ret_val = AcceptChannel_get_to_self_delay(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelReestablish_set_next_local_commitment_number(uint32_t this_ptr, int64_t val) {
-       LDKChannelReestablish this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_AcceptChannel_set_to_self_delay(uint32_t this_ptr, int16_t val) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelReestablish_set_next_local_commitment_number(&this_ptr_conv, val);
+       AcceptChannel_set_to_self_delay(&this_ptr_conv, val);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ChannelReestablish_get_next_remote_commitment_number(uint32_t this_ptr) {
-       LDKChannelReestablish this_ptr_conv;
+int16_t  __attribute__((visibility("default"))) TS_AcceptChannel_get_max_accepted_htlcs(uint32_t this_ptr) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelReestablish_get_next_remote_commitment_number(&this_ptr_conv);
+       int16_t ret_val = AcceptChannel_get_max_accepted_htlcs(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelReestablish_set_next_remote_commitment_number(uint32_t this_ptr, int64_t val) {
-       LDKChannelReestablish this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_AcceptChannel_set_max_accepted_htlcs(uint32_t this_ptr, int16_t val) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelReestablish_set_next_remote_commitment_number(&this_ptr_conv, val);
+       AcceptChannel_set_max_accepted_htlcs(&this_ptr_conv, val);
 }
 
-static inline uint64_t ChannelReestablish_clone_ptr(LDKChannelReestablish *NONNULL_PTR arg) {
-       LDKChannelReestablish ret_var = ChannelReestablish_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_get_funding_pubkey(uint32_t this_ptr) {
+       LDKAcceptChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, AcceptChannel_get_funding_pubkey(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
-int64_t  __attribute__((visibility("default"))) TS_ChannelReestablish_clone_ptr(uint32_t arg) {
-       LDKChannelReestablish arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelReestablish_clone_ptr(&arg_conv);
-       return ret_val;
+
+void  __attribute__((visibility("default"))) TS_AcceptChannel_set_funding_pubkey(uint32_t this_ptr, int8_tArray val) {
+       LDKAcceptChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       AcceptChannel_set_funding_pubkey(&this_ptr_conv, val_ref);
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelReestablish ret_var = ChannelReestablish_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_get_revocation_basepoint(uint32_t this_ptr) {
+       LDKAcceptChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, AcceptChannel_get_revocation_basepoint(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_AnnouncementSignatures_free(uint32_t this_obj) {
-       LDKAnnouncementSignatures this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       AnnouncementSignatures_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_AcceptChannel_set_revocation_basepoint(uint32_t this_ptr, int8_tArray val) {
+       LDKAcceptChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       AcceptChannel_set_revocation_basepoint(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_AnnouncementSignatures_get_channel_id(uint32_t this_ptr) {
-       LDKAnnouncementSignatures this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_get_payment_point(uint32_t this_ptr) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *AnnouncementSignatures_get_channel_id(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, AcceptChannel_get_payment_point(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_AnnouncementSignatures_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKAnnouncementSignatures this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_AcceptChannel_set_payment_point(uint32_t this_ptr, int8_tArray val) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       AnnouncementSignatures_set_channel_id(&this_ptr_conv, val_ref);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       AcceptChannel_set_payment_point(&this_ptr_conv, val_ref);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_AnnouncementSignatures_get_short_channel_id(uint32_t this_ptr) {
-       LDKAnnouncementSignatures this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_get_delayed_payment_basepoint(uint32_t this_ptr) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = AnnouncementSignatures_get_short_channel_id(&this_ptr_conv);
-       return ret_val;
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, AcceptChannel_get_delayed_payment_basepoint(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_AnnouncementSignatures_set_short_channel_id(uint32_t this_ptr, int64_t val) {
-       LDKAnnouncementSignatures this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_AcceptChannel_set_delayed_payment_basepoint(uint32_t this_ptr, int8_tArray val) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       AnnouncementSignatures_set_short_channel_id(&this_ptr_conv, val);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       AcceptChannel_set_delayed_payment_basepoint(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_AnnouncementSignatures_get_node_signature(uint32_t this_ptr) {
-       LDKAnnouncementSignatures this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_get_htlc_basepoint(uint32_t this_ptr) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), AnnouncementSignatures_get_node_signature(&this_ptr_conv).compact_form, 64);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, AcceptChannel_get_htlc_basepoint(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_AnnouncementSignatures_set_node_signature(uint32_t this_ptr, int8_tArray val) {
-       LDKAnnouncementSignatures this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_AcceptChannel_set_htlc_basepoint(uint32_t this_ptr, int8_tArray val) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSignature val_ref;
-       CHECK(*((uint32_t*)val) == 64);
-       memcpy(val_ref.compact_form, (uint8_t*)(val + 4), 64);
-       AnnouncementSignatures_set_node_signature(&this_ptr_conv, val_ref);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       AcceptChannel_set_htlc_basepoint(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_AnnouncementSignatures_get_bitcoin_signature(uint32_t this_ptr) {
-       LDKAnnouncementSignatures this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_get_first_per_commitment_point(uint32_t this_ptr) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), AnnouncementSignatures_get_bitcoin_signature(&this_ptr_conv).compact_form, 64);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, AcceptChannel_get_first_per_commitment_point(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_AnnouncementSignatures_set_bitcoin_signature(uint32_t this_ptr, int8_tArray val) {
-       LDKAnnouncementSignatures this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_AcceptChannel_set_first_per_commitment_point(uint32_t this_ptr, int8_tArray val) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSignature val_ref;
-       CHECK(*((uint32_t*)val) == 64);
-       memcpy(val_ref.compact_form, (uint8_t*)(val + 4), 64);
-       AnnouncementSignatures_set_bitcoin_signature(&this_ptr_conv, val_ref);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_AnnouncementSignatures_new(int8_tArray channel_id_arg, int64_t short_channel_id_arg, int8_tArray node_signature_arg, int8_tArray bitcoin_signature_arg) {
-       LDKThirtyTwoBytes channel_id_arg_ref;
-       CHECK(*((uint32_t*)channel_id_arg) == 32);
-       memcpy(channel_id_arg_ref.data, (uint8_t*)(channel_id_arg + 4), 32);
-       LDKSignature node_signature_arg_ref;
-       CHECK(*((uint32_t*)node_signature_arg) == 64);
-       memcpy(node_signature_arg_ref.compact_form, (uint8_t*)(node_signature_arg + 4), 64);
-       LDKSignature bitcoin_signature_arg_ref;
-       CHECK(*((uint32_t*)bitcoin_signature_arg) == 64);
-       memcpy(bitcoin_signature_arg_ref.compact_form, (uint8_t*)(bitcoin_signature_arg + 4), 64);
-       LDKAnnouncementSignatures ret_var = AnnouncementSignatures_new(channel_id_arg_ref, short_channel_id_arg, node_signature_arg_ref, bitcoin_signature_arg_ref);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       AcceptChannel_set_first_per_commitment_point(&this_ptr_conv, val_ref);
 }
 
-static inline uint64_t AnnouncementSignatures_clone_ptr(LDKAnnouncementSignatures *NONNULL_PTR arg) {
-       LDKAnnouncementSignatures ret_var = AnnouncementSignatures_clone(arg);
+static inline uint64_t AcceptChannel_clone_ptr(LDKAcceptChannel *NONNULL_PTR arg) {
+       LDKAcceptChannel ret_var = AcceptChannel_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -25493,21 +23139,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_AnnouncementSignatures_clone_ptr(uint32_t arg) {
-       LDKAnnouncementSignatures arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_AcceptChannel_clone_ptr(uint32_t arg) {
+       LDKAcceptChannel arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = AnnouncementSignatures_clone_ptr(&arg_conv);
+       int64_t ret_val = AcceptChannel_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_AnnouncementSignatures_clone(uint32_t orig) {
-       LDKAnnouncementSignatures 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKAnnouncementSignatures ret_var = AnnouncementSignatures_clone(&orig_conv);
+       LDKAcceptChannel ret_var = AcceptChannel_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -25519,236 +23165,118 @@ uint32_t  __attribute__((visibility("default"))) TS_AnnouncementSignatures_clone
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_NetAddress_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKNetAddress this_ptr_conv = *(LDKNetAddress*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       NetAddress_free(this_ptr_conv);
-}
-
-static inline uint64_t NetAddress_clone_ptr(LDKNetAddress *NONNULL_PTR arg) {
-       LDKNetAddress *ret_copy = MALLOC(sizeof(LDKNetAddress), "LDKNetAddress");
-       *ret_copy = NetAddress_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_NetAddress_clone_ptr(uint32_t arg) {
-       LDKNetAddress* arg_conv = (LDKNetAddress*)arg;
-       int64_t ret_val = NetAddress_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NetAddress_clone(uint32_t orig) {
-       LDKNetAddress* orig_conv = (LDKNetAddress*)orig;
-       LDKNetAddress *ret_copy = MALLOC(sizeof(LDKNetAddress), "LDKNetAddress");
-       *ret_copy = NetAddress_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NetAddress_ipv4(int8_tArray addr, int16_t port) {
-       LDKFourBytes addr_ref;
-       CHECK(*((uint32_t*)addr) == 4);
-       memcpy(addr_ref.data, (uint8_t*)(addr + 4), 4);
-       LDKNetAddress *ret_copy = MALLOC(sizeof(LDKNetAddress), "LDKNetAddress");
-       *ret_copy = NetAddress_ipv4(addr_ref, port);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NetAddress_ipv6(int8_tArray addr, int16_t port) {
-       LDKSixteenBytes addr_ref;
-       CHECK(*((uint32_t*)addr) == 16);
-       memcpy(addr_ref.data, (uint8_t*)(addr + 4), 16);
-       LDKNetAddress *ret_copy = MALLOC(sizeof(LDKNetAddress), "LDKNetAddress");
-       *ret_copy = NetAddress_ipv6(addr_ref, port);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NetAddress_onion_v2(int8_tArray a) {
-       LDKTwelveBytes a_ref;
-       CHECK(*((uint32_t*)a) == 12);
-       memcpy(a_ref.data, (uint8_t*)(a + 4), 12);
-       LDKNetAddress *ret_copy = MALLOC(sizeof(LDKNetAddress), "LDKNetAddress");
-       *ret_copy = NetAddress_onion_v2(a_ref);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NetAddress_onion_v3(int8_tArray ed25519_pubkey, int16_t checksum, int8_t version, int16_t port) {
-       LDKThirtyTwoBytes ed25519_pubkey_ref;
-       CHECK(*((uint32_t*)ed25519_pubkey) == 32);
-       memcpy(ed25519_pubkey_ref.data, (uint8_t*)(ed25519_pubkey + 4), 32);
-       LDKNetAddress *ret_copy = MALLOC(sizeof(LDKNetAddress), "LDKNetAddress");
-       *ret_copy = NetAddress_onion_v3(ed25519_pubkey_ref, checksum, version, port);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_NetAddress_write(uint32_t obj) {
-       LDKNetAddress* obj_conv = (LDKNetAddress*)obj;
-       LDKCVec_u8Z ret_var = NetAddress_write(obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NetAddress_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_NetAddressDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetAddressDecodeErrorZ), "LDKCResult_NetAddressDecodeErrorZ");
-       *ret_conv = NetAddress_read(ser_ref);
-       return (uint64_t)ret_conv;
-}
-
-void  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_free(uint32_t this_obj) {
-       LDKUnsignedNodeAnnouncement this_obj_conv;
+void  __attribute__((visibility("default"))) TS_FundingCreated_free(uint32_t this_obj) {
+       LDKFundingCreated this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       UnsignedNodeAnnouncement_free(this_obj_conv);
-}
-
-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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNodeFeatures ret_var = UnsignedNodeAnnouncement_get_features(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
-}
-
-void  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_set_features(uint32_t this_ptr, uint32_t val) {
-       LDKUnsignedNodeAnnouncement this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNodeFeatures val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = NodeFeatures_clone(&val_conv);
-       UnsignedNodeAnnouncement_set_features(&this_ptr_conv, val_conv);
+       FundingCreated_free(this_obj_conv);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_get_timestamp(uint32_t this_ptr) {
-       LDKUnsignedNodeAnnouncement 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = UnsignedNodeAnnouncement_get_timestamp(&this_ptr_conv);
-       return ret_val;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *FundingCreated_get_temporary_channel_id(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_set_timestamp(uint32_t this_ptr, int32_t val) {
-       LDKUnsignedNodeAnnouncement this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_FundingCreated_set_temporary_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKFundingCreated this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UnsignedNodeAnnouncement_set_timestamp(&this_ptr_conv, val);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       FundingCreated_set_temporary_channel_id(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_get_node_id(uint32_t this_ptr) {
-       LDKUnsignedNodeAnnouncement this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_FundingCreated_get_funding_txid(uint32_t this_ptr) {
+       LDKFundingCreated this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), UnsignedNodeAnnouncement_get_node_id(&this_ptr_conv).compressed_form, 33);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *FundingCreated_get_funding_txid(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_set_node_id(uint32_t this_ptr, int8_tArray val) {
-       LDKUnsignedNodeAnnouncement this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_FundingCreated_set_funding_txid(uint32_t this_ptr, int8_tArray val) {
+       LDKFundingCreated this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       UnsignedNodeAnnouncement_set_node_id(&this_ptr_conv, val_ref);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       FundingCreated_set_funding_txid(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_get_rgb(uint32_t this_ptr) {
-       LDKUnsignedNodeAnnouncement this_ptr_conv;
+int16_t  __attribute__((visibility("default"))) TS_FundingCreated_get_funding_output_index(uint32_t this_ptr) {
+       LDKFundingCreated this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(3, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *UnsignedNodeAnnouncement_get_rgb(&this_ptr_conv), 3);
-       return ret_arr;
+       int16_t ret_val = FundingCreated_get_funding_output_index(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_set_rgb(uint32_t this_ptr, int8_tArray val) {
-       LDKUnsignedNodeAnnouncement this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_FundingCreated_set_funding_output_index(uint32_t this_ptr, int16_t val) {
+       LDKFundingCreated this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThreeBytes val_ref;
-       CHECK(*((uint32_t*)val) == 3);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 3);
-       UnsignedNodeAnnouncement_set_rgb(&this_ptr_conv, val_ref);
+       FundingCreated_set_funding_output_index(&this_ptr_conv, val);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_get_alias(uint32_t this_ptr) {
-       LDKUnsignedNodeAnnouncement this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_FundingCreated_get_signature(uint32_t this_ptr) {
+       LDKFundingCreated this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *UnsignedNodeAnnouncement_get_alias(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, FundingCreated_get_signature(&this_ptr_conv).compact_form, 64);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_set_alias(uint32_t this_ptr, int8_tArray val) {
-       LDKUnsignedNodeAnnouncement this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_FundingCreated_set_signature(uint32_t this_ptr, int8_tArray val) {
+       LDKFundingCreated this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       UnsignedNodeAnnouncement_set_alias(&this_ptr_conv, val_ref);
+       LDKSignature val_ref;
+       CHECK(val->arr_len == 64);
+       memcpy(val_ref.compact_form, val->elems, 64);
+       FundingCreated_set_signature(&this_ptr_conv, val_ref);
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_set_addresses(uint32_t this_ptr, uint32_tArray val) {
-       LDKUnsignedNodeAnnouncement this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_NetAddressZ val_constr;
-       val_constr.datalen = *((uint32_t*)val);
-       if (val_constr.datalen > 0)
-               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKNetAddress), "LDKCVec_NetAddressZ Elements");
-       else
-               val_constr.data = NULL;
-       uint32_t* val_vals = (uint32_t*)(val + 4);
-       for (size_t m = 0; m < val_constr.datalen; m++) {
-               uint32_t val_conv_12 = val_vals[m];
-               void* val_conv_12_ptr = (void*)(((uint64_t)val_conv_12) & ~1);
-               CHECK_ACCESS(val_conv_12_ptr);
-               LDKNetAddress val_conv_12_conv = *(LDKNetAddress*)(val_conv_12_ptr);
-               val_conv_12_conv = NetAddress_clone((LDKNetAddress*)(((uint64_t)val_conv_12) & ~1));
-               val_constr.data[m] = val_conv_12_conv;
+uint32_t  __attribute__((visibility("default"))) TS_FundingCreated_new(int8_tArray temporary_channel_id_arg, int8_tArray funding_txid_arg, int16_t funding_output_index_arg, int8_tArray signature_arg) {
+       LDKThirtyTwoBytes temporary_channel_id_arg_ref;
+       CHECK(temporary_channel_id_arg->arr_len == 32);
+       memcpy(temporary_channel_id_arg_ref.data, temporary_channel_id_arg->elems, 32);
+       LDKThirtyTwoBytes funding_txid_arg_ref;
+       CHECK(funding_txid_arg->arr_len == 32);
+       memcpy(funding_txid_arg_ref.data, funding_txid_arg->elems, 32);
+       LDKSignature signature_arg_ref;
+       CHECK(signature_arg->arr_len == 64);
+       memcpy(signature_arg_ref.compact_form, signature_arg->elems, 64);
+       LDKFundingCreated ret_var = FundingCreated_new(temporary_channel_id_arg_ref, funding_txid_arg_ref, funding_output_index_arg, signature_arg_ref);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       UnsignedNodeAnnouncement_set_addresses(&this_ptr_conv, val_constr);
+       return ret_ref;
 }
 
-static inline uint64_t UnsignedNodeAnnouncement_clone_ptr(LDKUnsignedNodeAnnouncement *NONNULL_PTR arg) {
-       LDKUnsignedNodeAnnouncement ret_var = UnsignedNodeAnnouncement_clone(arg);
+static inline uint64_t FundingCreated_clone_ptr(LDKFundingCreated *NONNULL_PTR arg) {
+       LDKFundingCreated ret_var = FundingCreated_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -25759,21 +23287,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_clone_ptr(uint32_t arg) {
-       LDKUnsignedNodeAnnouncement arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_FundingCreated_clone_ptr(uint32_t arg) {
+       LDKFundingCreated arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = UnsignedNodeAnnouncement_clone_ptr(&arg_conv);
+       int64_t ret_val = FundingCreated_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_clone(uint32_t orig) {
-       LDKUnsignedNodeAnnouncement 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKUnsignedNodeAnnouncement ret_var = UnsignedNodeAnnouncement_clone(&orig_conv);
+       LDKFundingCreated ret_var = FundingCreated_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -25785,75 +23313,64 @@ uint32_t  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_clo
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_NodeAnnouncement_free(uint32_t this_obj) {
-       LDKNodeAnnouncement this_obj_conv;
+void  __attribute__((visibility("default"))) TS_FundingSigned_free(uint32_t this_obj) {
+       LDKFundingSigned this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       NodeAnnouncement_free(this_obj_conv);
+       FundingSigned_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_NodeAnnouncement_get_signature(uint32_t this_ptr) {
-       LDKNodeAnnouncement 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), NodeAnnouncement_get_signature(&this_ptr_conv).compact_form, 64);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *FundingSigned_get_channel_id(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_NodeAnnouncement_set_signature(uint32_t this_ptr, int8_tArray val) {
-       LDKNodeAnnouncement this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_FundingSigned_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKFundingSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSignature val_ref;
-       CHECK(*((uint32_t*)val) == 64);
-       memcpy(val_ref.compact_form, (uint8_t*)(val + 4), 64);
-       NodeAnnouncement_set_signature(&this_ptr_conv, val_ref);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       FundingSigned_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncement_get_contents(uint32_t this_ptr) {
-       LDKNodeAnnouncement this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_FundingSigned_get_signature(uint32_t this_ptr) {
+       LDKFundingSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKUnsignedNodeAnnouncement ret_var = NodeAnnouncement_get_contents(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, FundingSigned_get_signature(&this_ptr_conv).compact_form, 64);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_NodeAnnouncement_set_contents(uint32_t this_ptr, uint32_t val) {
-       LDKNodeAnnouncement this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_FundingSigned_set_signature(uint32_t this_ptr, int8_tArray val) {
+       LDKFundingSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKUnsignedNodeAnnouncement val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = UnsignedNodeAnnouncement_clone(&val_conv);
-       NodeAnnouncement_set_contents(&this_ptr_conv, val_conv);
+       LDKSignature val_ref;
+       CHECK(val->arr_len == 64);
+       memcpy(val_ref.compact_form, val->elems, 64);
+       FundingSigned_set_signature(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncement_new(int8_tArray signature_arg, uint32_t contents_arg) {
+uint32_t  __attribute__((visibility("default"))) TS_FundingSigned_new(int8_tArray channel_id_arg, int8_tArray signature_arg) {
+       LDKThirtyTwoBytes channel_id_arg_ref;
+       CHECK(channel_id_arg->arr_len == 32);
+       memcpy(channel_id_arg_ref.data, channel_id_arg->elems, 32);
        LDKSignature signature_arg_ref;
-       CHECK(*((uint32_t*)signature_arg) == 64);
-       memcpy(signature_arg_ref.compact_form, (uint8_t*)(signature_arg + 4), 64);
-       LDKUnsignedNodeAnnouncement contents_arg_conv;
-       contents_arg_conv.inner = (void*)(contents_arg & (~1));
-       contents_arg_conv.is_owned = (contents_arg & 1) || (contents_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(contents_arg_conv);
-       contents_arg_conv = UnsignedNodeAnnouncement_clone(&contents_arg_conv);
-       LDKNodeAnnouncement ret_var = NodeAnnouncement_new(signature_arg_ref, contents_arg_conv);
+       CHECK(signature_arg->arr_len == 64);
+       memcpy(signature_arg_ref.compact_form, signature_arg->elems, 64);
+       LDKFundingSigned ret_var = FundingSigned_new(channel_id_arg_ref, signature_arg_ref);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -25865,8 +23382,8 @@ uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncement_new(int8_tA
        return ret_ref;
 }
 
-static inline uint64_t NodeAnnouncement_clone_ptr(LDKNodeAnnouncement *NONNULL_PTR arg) {
-       LDKNodeAnnouncement ret_var = NodeAnnouncement_clone(arg);
+static inline uint64_t FundingSigned_clone_ptr(LDKFundingSigned *NONNULL_PTR arg) {
+       LDKFundingSigned ret_var = FundingSigned_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -25877,21 +23394,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_NodeAnnouncement_clone_ptr(uint32_t arg) {
-       LDKNodeAnnouncement arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_FundingSigned_clone_ptr(uint32_t arg) {
+       LDKFundingSigned arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = NodeAnnouncement_clone_ptr(&arg_conv);
+       int64_t ret_val = FundingSigned_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncement_clone(uint32_t orig) {
-       LDKNodeAnnouncement 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKNodeAnnouncement ret_var = NodeAnnouncement_clone(&orig_conv);
+       LDKFundingSigned ret_var = FundingSigned_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -25903,168 +23420,187 @@ uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncement_clone(uint3
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_free(uint32_t this_obj) {
-       LDKUnsignedChannelAnnouncement this_obj_conv;
+void  __attribute__((visibility("default"))) TS_FundingLocked_free(uint32_t this_obj) {
+       LDKFundingLocked this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       UnsignedChannelAnnouncement_free(this_obj_conv);
+       FundingLocked_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_get_features(uint32_t this_ptr) {
-       LDKUnsignedChannelAnnouncement 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelFeatures ret_var = UnsignedChannelAnnouncement_get_features(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *FundingLocked_get_channel_id(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_features(uint32_t this_ptr, uint32_t val) {
-       LDKUnsignedChannelAnnouncement this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_FundingLocked_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKFundingLocked this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelFeatures val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = ChannelFeatures_clone(&val_conv);
-       UnsignedChannelAnnouncement_set_features(&this_ptr_conv, val_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       FundingLocked_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_get_chain_hash(uint32_t this_ptr) {
-       LDKUnsignedChannelAnnouncement this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_FundingLocked_get_next_per_commitment_point(uint32_t this_ptr) {
+       LDKFundingLocked this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *UnsignedChannelAnnouncement_get_chain_hash(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, FundingLocked_get_next_per_commitment_point(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
-       LDKUnsignedChannelAnnouncement this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_FundingLocked_set_next_per_commitment_point(uint32_t this_ptr, int8_tArray val) {
+       LDKFundingLocked this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       UnsignedChannelAnnouncement_set_chain_hash(&this_ptr_conv, val_ref);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       FundingLocked_set_next_per_commitment_point(&this_ptr_conv, val_ref);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_get_short_channel_id(uint32_t this_ptr) {
-       LDKUnsignedChannelAnnouncement this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = UnsignedChannelAnnouncement_get_short_channel_id(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_FundingLocked_new(int8_tArray channel_id_arg, int8_tArray next_per_commitment_point_arg) {
+       LDKThirtyTwoBytes channel_id_arg_ref;
+       CHECK(channel_id_arg->arr_len == 32);
+       memcpy(channel_id_arg_ref.data, channel_id_arg->elems, 32);
+       LDKPublicKey next_per_commitment_point_arg_ref;
+       CHECK(next_per_commitment_point_arg->arr_len == 33);
+       memcpy(next_per_commitment_point_arg_ref.compressed_form, next_per_commitment_point_arg->elems, 33);
+       LDKFundingLocked ret_var = FundingLocked_new(channel_id_arg_ref, next_per_commitment_point_arg_ref);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_short_channel_id(uint32_t this_ptr, int64_t val) {
-       LDKUnsignedChannelAnnouncement this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UnsignedChannelAnnouncement_set_short_channel_id(&this_ptr_conv, val);
+static inline uint64_t FundingLocked_clone_ptr(LDKFundingLocked *NONNULL_PTR arg) {
+       LDKFundingLocked ret_var = FundingLocked_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_get_node_id_1(uint32_t this_ptr) {
-       LDKUnsignedChannelAnnouncement this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), UnsignedChannelAnnouncement_get_node_id_1(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       return ret_ref;
 }
-
-void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_node_id_1(uint32_t this_ptr, int8_tArray val) {
-       LDKUnsignedChannelAnnouncement this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       UnsignedChannelAnnouncement_set_node_id_1(&this_ptr_conv, val_ref);
+int64_t  __attribute__((visibility("default"))) TS_FundingLocked_clone_ptr(uint32_t arg) {
+       LDKFundingLocked arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = FundingLocked_clone_ptr(&arg_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_get_node_id_2(uint32_t this_ptr) {
-       LDKUnsignedChannelAnnouncement this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), UnsignedChannelAnnouncement_get_node_id_2(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKFundingLocked ret_var = FundingLocked_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_node_id_2(uint32_t this_ptr, int8_tArray val) {
-       LDKUnsignedChannelAnnouncement this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       UnsignedChannelAnnouncement_set_node_id_2(&this_ptr_conv, val_ref);
+void  __attribute__((visibility("default"))) TS_Shutdown_free(uint32_t this_obj) {
+       LDKShutdown this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       Shutdown_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_get_bitcoin_key_1(uint32_t this_ptr) {
-       LDKUnsignedChannelAnnouncement 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), UnsignedChannelAnnouncement_get_bitcoin_key_1(&this_ptr_conv).compressed_form, 33);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *Shutdown_get_channel_id(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_bitcoin_key_1(uint32_t this_ptr, int8_tArray val) {
-       LDKUnsignedChannelAnnouncement this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_Shutdown_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKShutdown this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       UnsignedChannelAnnouncement_set_bitcoin_key_1(&this_ptr_conv, val_ref);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       Shutdown_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_get_bitcoin_key_2(uint32_t this_ptr) {
-       LDKUnsignedChannelAnnouncement this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_Shutdown_get_scriptpubkey(uint32_t this_ptr) {
+       LDKShutdown this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), UnsignedChannelAnnouncement_get_bitcoin_key_2(&this_ptr_conv).compressed_form, 33);
+       LDKu8slice ret_var = Shutdown_get_scriptpubkey(&this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_bitcoin_key_2(uint32_t this_ptr, int8_tArray val) {
-       LDKUnsignedChannelAnnouncement this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_Shutdown_set_scriptpubkey(uint32_t this_ptr, int8_tArray val) {
+       LDKShutdown this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCVec_u8Z val_ref;
+       val_ref.datalen = val->arr_len;
+       val_ref.data = MALLOC(val_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(val_ref.data, val->elems, val_ref.datalen);
+       Shutdown_set_scriptpubkey(&this_ptr_conv, val_ref);
 }
 
-static inline uint64_t UnsignedChannelAnnouncement_clone_ptr(LDKUnsignedChannelAnnouncement *NONNULL_PTR arg) {
-       LDKUnsignedChannelAnnouncement ret_var = UnsignedChannelAnnouncement_clone(arg);
+uint32_t  __attribute__((visibility("default"))) TS_Shutdown_new(int8_tArray channel_id_arg, int8_tArray scriptpubkey_arg) {
+       LDKThirtyTwoBytes channel_id_arg_ref;
+       CHECK(channel_id_arg->arr_len == 32);
+       memcpy(channel_id_arg_ref.data, channel_id_arg->elems, 32);
+       LDKCVec_u8Z scriptpubkey_arg_ref;
+       scriptpubkey_arg_ref.datalen = scriptpubkey_arg->arr_len;
+       scriptpubkey_arg_ref.data = MALLOC(scriptpubkey_arg_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(scriptpubkey_arg_ref.data, scriptpubkey_arg->elems, scriptpubkey_arg_ref.datalen);
+       LDKShutdown ret_var = Shutdown_new(channel_id_arg_ref, scriptpubkey_arg_ref);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+static inline uint64_t Shutdown_clone_ptr(LDKShutdown *NONNULL_PTR arg) {
+       LDKShutdown ret_var = Shutdown_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26075,21 +23611,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_clone_ptr(uint32_t arg) {
-       LDKUnsignedChannelAnnouncement arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_Shutdown_clone_ptr(uint32_t arg) {
+       LDKShutdown arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = UnsignedChannelAnnouncement_clone_ptr(&arg_conv);
+       int64_t ret_val = Shutdown_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_clone(uint32_t orig) {
-       LDKUnsignedChannelAnnouncement 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKUnsignedChannelAnnouncement ret_var = UnsignedChannelAnnouncement_clone(&orig_conv);
+       LDKShutdown ret_var = Shutdown_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26101,147 +23637,50 @@ uint32_t  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelAnnouncement_free(uint32_t this_obj) {
-       LDKChannelAnnouncement this_obj_conv;
+void  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_free(uint32_t this_obj) {
+       LDKClosingSignedFeeRange this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelAnnouncement_free(this_obj_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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ChannelAnnouncement_get_node_signature_1(&this_ptr_conv).compact_form, 64);
-       return ret_arr;
-}
-
-void  __attribute__((visibility("default"))) TS_ChannelAnnouncement_set_node_signature_1(uint32_t this_ptr, int8_tArray val) {
-       LDKChannelAnnouncement this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSignature val_ref;
-       CHECK(*((uint32_t*)val) == 64);
-       memcpy(val_ref.compact_form, (uint8_t*)(val + 4), 64);
-       ChannelAnnouncement_set_node_signature_1(&this_ptr_conv, val_ref);
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelAnnouncement_get_node_signature_2(uint32_t this_ptr) {
-       LDKChannelAnnouncement this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ChannelAnnouncement_get_node_signature_2(&this_ptr_conv).compact_form, 64);
-       return ret_arr;
-}
-
-void  __attribute__((visibility("default"))) TS_ChannelAnnouncement_set_node_signature_2(uint32_t this_ptr, int8_tArray val) {
-       LDKChannelAnnouncement this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSignature val_ref;
-       CHECK(*((uint32_t*)val) == 64);
-       memcpy(val_ref.compact_form, (uint8_t*)(val + 4), 64);
-       ChannelAnnouncement_set_node_signature_2(&this_ptr_conv, val_ref);
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelAnnouncement_get_bitcoin_signature_1(uint32_t this_ptr) {
-       LDKChannelAnnouncement this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ChannelAnnouncement_get_bitcoin_signature_1(&this_ptr_conv).compact_form, 64);
-       return ret_arr;
-}
-
-void  __attribute__((visibility("default"))) TS_ChannelAnnouncement_set_bitcoin_signature_1(uint32_t this_ptr, int8_tArray val) {
-       LDKChannelAnnouncement this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSignature val_ref;
-       CHECK(*((uint32_t*)val) == 64);
-       memcpy(val_ref.compact_form, (uint8_t*)(val + 4), 64);
-       ChannelAnnouncement_set_bitcoin_signature_1(&this_ptr_conv, val_ref);
+       ClosingSignedFeeRange_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelAnnouncement_get_bitcoin_signature_2(uint32_t this_ptr) {
-       LDKChannelAnnouncement this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_get_min_fee_satoshis(uint32_t this_ptr) {
+       LDKClosingSignedFeeRange this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ChannelAnnouncement_get_bitcoin_signature_2(&this_ptr_conv).compact_form, 64);
-       return ret_arr;
+       int64_t ret_val = ClosingSignedFeeRange_get_min_fee_satoshis(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelAnnouncement_set_bitcoin_signature_2(uint32_t this_ptr, int8_tArray val) {
-       LDKChannelAnnouncement this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_set_min_fee_satoshis(uint32_t this_ptr, int64_t val) {
+       LDKClosingSignedFeeRange this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSignature val_ref;
-       CHECK(*((uint32_t*)val) == 64);
-       memcpy(val_ref.compact_form, (uint8_t*)(val + 4), 64);
-       ChannelAnnouncement_set_bitcoin_signature_2(&this_ptr_conv, val_ref);
+       ClosingSignedFeeRange_set_min_fee_satoshis(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelAnnouncement_get_contents(uint32_t this_ptr) {
-       LDKChannelAnnouncement this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_get_max_fee_satoshis(uint32_t this_ptr) {
+       LDKClosingSignedFeeRange this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKUnsignedChannelAnnouncement ret_var = ChannelAnnouncement_get_contents(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       int64_t ret_val = ClosingSignedFeeRange_get_max_fee_satoshis(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelAnnouncement_set_contents(uint32_t this_ptr, uint32_t val) {
-       LDKChannelAnnouncement this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_set_max_fee_satoshis(uint32_t this_ptr, int64_t val) {
+       LDKClosingSignedFeeRange this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKUnsignedChannelAnnouncement val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = UnsignedChannelAnnouncement_clone(&val_conv);
-       ChannelAnnouncement_set_contents(&this_ptr_conv, val_conv);
+       ClosingSignedFeeRange_set_max_fee_satoshis(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelAnnouncement_new(int8_tArray node_signature_1_arg, int8_tArray node_signature_2_arg, int8_tArray bitcoin_signature_1_arg, int8_tArray bitcoin_signature_2_arg, uint32_t contents_arg) {
-       LDKSignature node_signature_1_arg_ref;
-       CHECK(*((uint32_t*)node_signature_1_arg) == 64);
-       memcpy(node_signature_1_arg_ref.compact_form, (uint8_t*)(node_signature_1_arg + 4), 64);
-       LDKSignature node_signature_2_arg_ref;
-       CHECK(*((uint32_t*)node_signature_2_arg) == 64);
-       memcpy(node_signature_2_arg_ref.compact_form, (uint8_t*)(node_signature_2_arg + 4), 64);
-       LDKSignature bitcoin_signature_1_arg_ref;
-       CHECK(*((uint32_t*)bitcoin_signature_1_arg) == 64);
-       memcpy(bitcoin_signature_1_arg_ref.compact_form, (uint8_t*)(bitcoin_signature_1_arg + 4), 64);
-       LDKSignature bitcoin_signature_2_arg_ref;
-       CHECK(*((uint32_t*)bitcoin_signature_2_arg) == 64);
-       memcpy(bitcoin_signature_2_arg_ref.compact_form, (uint8_t*)(bitcoin_signature_2_arg + 4), 64);
-       LDKUnsignedChannelAnnouncement contents_arg_conv;
-       contents_arg_conv.inner = (void*)(contents_arg & (~1));
-       contents_arg_conv.is_owned = (contents_arg & 1) || (contents_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(contents_arg_conv);
-       contents_arg_conv = UnsignedChannelAnnouncement_clone(&contents_arg_conv);
-       LDKChannelAnnouncement ret_var = ChannelAnnouncement_new(node_signature_1_arg_ref, node_signature_2_arg_ref, bitcoin_signature_1_arg_ref, bitcoin_signature_2_arg_ref, contents_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_new(int64_t min_fee_satoshis_arg, int64_t max_fee_satoshis_arg) {
+       LDKClosingSignedFeeRange ret_var = ClosingSignedFeeRange_new(min_fee_satoshis_arg, max_fee_satoshis_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26253,8 +23692,8 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelAnnouncement_new(int8
        return ret_ref;
 }
 
-static inline uint64_t ChannelAnnouncement_clone_ptr(LDKChannelAnnouncement *NONNULL_PTR arg) {
-       LDKChannelAnnouncement ret_var = ChannelAnnouncement_clone(arg);
+static inline uint64_t ClosingSignedFeeRange_clone_ptr(LDKClosingSignedFeeRange *NONNULL_PTR arg) {
+       LDKClosingSignedFeeRange ret_var = ClosingSignedFeeRange_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26265,21 +23704,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_ChannelAnnouncement_clone_ptr(uint32_t arg) {
-       LDKChannelAnnouncement arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_clone_ptr(uint32_t arg) {
+       LDKClosingSignedFeeRange arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelAnnouncement_clone_ptr(&arg_conv);
+       int64_t ret_val = ClosingSignedFeeRange_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelAnnouncement_clone(uint32_t orig) {
-       LDKChannelAnnouncement orig_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_clone(uint32_t orig) {
+       LDKClosingSignedFeeRange orig_conv;
        orig_conv.inner = (void*)(orig & (~1));
        orig_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelAnnouncement ret_var = ChannelAnnouncement_clone(&orig_conv);
+       LDKClosingSignedFeeRange ret_var = ClosingSignedFeeRange_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26291,156 +23730,131 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelAnnouncement_clone(ui
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_free(uint32_t this_obj) {
-       LDKUnsignedChannelUpdate this_obj_conv;
+void  __attribute__((visibility("default"))) TS_ClosingSigned_free(uint32_t this_obj) {
+       LDKClosingSigned this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       UnsignedChannelUpdate_free(this_obj_conv);
+       ClosingSigned_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_chain_hash(uint32_t this_ptr) {
-       LDKUnsignedChannelUpdate 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *UnsignedChannelUpdate_get_chain_hash(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *ClosingSigned_get_channel_id(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ClosingSigned_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKClosingSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
        LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       UnsignedChannelUpdate_set_chain_hash(&this_ptr_conv, val_ref);
-}
-
-int64_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_short_channel_id(uint32_t this_ptr) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = UnsignedChannelUpdate_get_short_channel_id(&this_ptr_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_short_channel_id(uint32_t this_ptr, int64_t val) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UnsignedChannelUpdate_set_short_channel_id(&this_ptr_conv, val);
-}
-
-int32_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_timestamp(uint32_t this_ptr) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = UnsignedChannelUpdate_get_timestamp(&this_ptr_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_timestamp(uint32_t this_ptr, int32_t val) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UnsignedChannelUpdate_set_timestamp(&this_ptr_conv, val);
-}
-
-int8_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_flags(uint32_t this_ptr) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_t ret_val = UnsignedChannelUpdate_get_flags(&this_ptr_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_flags(uint32_t this_ptr, int8_t val) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UnsignedChannelUpdate_set_flags(&this_ptr_conv, val);
-}
-
-int16_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_cltv_expiry_delta(uint32_t this_ptr) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = UnsignedChannelUpdate_get_cltv_expiry_delta(&this_ptr_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_cltv_expiry_delta(uint32_t this_ptr, int16_t val) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UnsignedChannelUpdate_set_cltv_expiry_delta(&this_ptr_conv, val);
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       ClosingSigned_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_htlc_minimum_msat(uint32_t this_ptr) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_ClosingSigned_get_fee_satoshis(uint32_t this_ptr) {
+       LDKClosingSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = UnsignedChannelUpdate_get_htlc_minimum_msat(&this_ptr_conv);
+       int64_t ret_val = ClosingSigned_get_fee_satoshis(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_htlc_minimum_msat(uint32_t this_ptr, int64_t val) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ClosingSigned_set_fee_satoshis(uint32_t this_ptr, int64_t val) {
+       LDKClosingSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UnsignedChannelUpdate_set_htlc_minimum_msat(&this_ptr_conv, val);
+       ClosingSigned_set_fee_satoshis(&this_ptr_conv, val);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_fee_base_msat(uint32_t this_ptr) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_ClosingSigned_get_signature(uint32_t this_ptr) {
+       LDKClosingSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = UnsignedChannelUpdate_get_fee_base_msat(&this_ptr_conv);
-       return ret_val;
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, ClosingSigned_get_signature(&this_ptr_conv).compact_form, 64);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_fee_base_msat(uint32_t this_ptr, int32_t val) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ClosingSigned_set_signature(uint32_t this_ptr, int8_tArray val) {
+       LDKClosingSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UnsignedChannelUpdate_set_fee_base_msat(&this_ptr_conv, val);
+       LDKSignature val_ref;
+       CHECK(val->arr_len == 64);
+       memcpy(val_ref.compact_form, val->elems, 64);
+       ClosingSigned_set_signature(&this_ptr_conv, val_ref);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_fee_proportional_millionths(uint32_t this_ptr) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ClosingSigned_get_fee_range(uint32_t this_ptr) {
+       LDKClosingSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = UnsignedChannelUpdate_get_fee_proportional_millionths(&this_ptr_conv);
-       return ret_val;
+       LDKClosingSignedFeeRange ret_var = ClosingSigned_get_fee_range(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       if ((uint64_t)ret_var.inner > 4096) {
+               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+               ret_ref = (uint64_t)ret_var.inner;
+               if (ret_var.is_owned) {
+                       ret_ref |= 1;
+               }
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_fee_proportional_millionths(uint32_t this_ptr, int32_t val) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ClosingSigned_set_fee_range(uint32_t this_ptr, uint32_t val) {
+       LDKClosingSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UnsignedChannelUpdate_set_fee_proportional_millionths(&this_ptr_conv, val);
+       LDKClosingSignedFeeRange val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = ClosingSignedFeeRange_clone(&val_conv);
+       ClosingSigned_set_fee_range(&this_ptr_conv, val_conv);
 }
 
-static inline uint64_t UnsignedChannelUpdate_clone_ptr(LDKUnsignedChannelUpdate *NONNULL_PTR arg) {
-       LDKUnsignedChannelUpdate ret_var = UnsignedChannelUpdate_clone(arg);
+uint32_t  __attribute__((visibility("default"))) TS_ClosingSigned_new(int8_tArray channel_id_arg, int64_t fee_satoshis_arg, int8_tArray signature_arg, uint32_t fee_range_arg) {
+       LDKThirtyTwoBytes channel_id_arg_ref;
+       CHECK(channel_id_arg->arr_len == 32);
+       memcpy(channel_id_arg_ref.data, channel_id_arg->elems, 32);
+       LDKSignature signature_arg_ref;
+       CHECK(signature_arg->arr_len == 64);
+       memcpy(signature_arg_ref.compact_form, signature_arg->elems, 64);
+       LDKClosingSignedFeeRange fee_range_arg_conv;
+       fee_range_arg_conv.inner = (void*)(fee_range_arg & (~1));
+       fee_range_arg_conv.is_owned = (fee_range_arg & 1) || (fee_range_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(fee_range_arg_conv);
+       fee_range_arg_conv = ClosingSignedFeeRange_clone(&fee_range_arg_conv);
+       LDKClosingSigned ret_var = ClosingSigned_new(channel_id_arg_ref, fee_satoshis_arg, signature_arg_ref, fee_range_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+static inline uint64_t ClosingSigned_clone_ptr(LDKClosingSigned *NONNULL_PTR arg) {
+       LDKClosingSigned ret_var = ClosingSigned_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26451,21 +23865,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_clone_ptr(uint32_t arg) {
-       LDKUnsignedChannelUpdate arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_ClosingSigned_clone_ptr(uint32_t arg) {
+       LDKClosingSigned arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = UnsignedChannelUpdate_clone_ptr(&arg_conv);
+       int64_t ret_val = ClosingSigned_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_clone(uint32_t orig) {
-       LDKUnsignedChannelUpdate 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKUnsignedChannelUpdate ret_var = UnsignedChannelUpdate_clone(&orig_conv);
+       LDKClosingSigned ret_var = ClosingSigned_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26477,88 +23891,109 @@ uint32_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_clone(
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelUpdate_free(uint32_t this_obj) {
-       LDKChannelUpdate this_obj_conv;
+void  __attribute__((visibility("default"))) TS_UpdateAddHTLC_free(uint32_t this_obj) {
+       LDKUpdateAddHTLC this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelUpdate_free(this_obj_conv);
+       UpdateAddHTLC_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelUpdate_get_signature(uint32_t this_ptr) {
-       LDKChannelUpdate 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ChannelUpdate_get_signature(&this_ptr_conv).compact_form, 64);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *UpdateAddHTLC_get_channel_id(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelUpdate_set_signature(uint32_t this_ptr, int8_tArray val) {
-       LDKChannelUpdate this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UpdateAddHTLC_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKUpdateAddHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSignature val_ref;
-       CHECK(*((uint32_t*)val) == 64);
-       memcpy(val_ref.compact_form, (uint8_t*)(val + 4), 64);
-       ChannelUpdate_set_signature(&this_ptr_conv, val_ref);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       UpdateAddHTLC_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelUpdate_get_contents(uint32_t this_ptr) {
-       LDKChannelUpdate this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_UpdateAddHTLC_get_htlc_id(uint32_t this_ptr) {
+       LDKUpdateAddHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKUnsignedChannelUpdate ret_var = ChannelUpdate_get_contents(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       int64_t ret_val = UpdateAddHTLC_get_htlc_id(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelUpdate_set_contents(uint32_t this_ptr, uint32_t val) {
-       LDKChannelUpdate this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UpdateAddHTLC_set_htlc_id(uint32_t this_ptr, int64_t val) {
+       LDKUpdateAddHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKUnsignedChannelUpdate val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = UnsignedChannelUpdate_clone(&val_conv);
-       ChannelUpdate_set_contents(&this_ptr_conv, val_conv);
+       UpdateAddHTLC_set_htlc_id(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelUpdate_new(int8_tArray signature_arg, uint32_t contents_arg) {
-       LDKSignature signature_arg_ref;
-       CHECK(*((uint32_t*)signature_arg) == 64);
-       memcpy(signature_arg_ref.compact_form, (uint8_t*)(signature_arg + 4), 64);
-       LDKUnsignedChannelUpdate contents_arg_conv;
-       contents_arg_conv.inner = (void*)(contents_arg & (~1));
-       contents_arg_conv.is_owned = (contents_arg & 1) || (contents_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(contents_arg_conv);
-       contents_arg_conv = UnsignedChannelUpdate_clone(&contents_arg_conv);
-       LDKChannelUpdate ret_var = ChannelUpdate_new(signature_arg_ref, contents_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int64_t  __attribute__((visibility("default"))) TS_UpdateAddHTLC_get_amount_msat(uint32_t this_ptr) {
+       LDKUpdateAddHTLC this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = UpdateAddHTLC_get_amount_msat(&this_ptr_conv);
+       return ret_val;
 }
 
-static inline uint64_t ChannelUpdate_clone_ptr(LDKChannelUpdate *NONNULL_PTR arg) {
-       LDKChannelUpdate ret_var = ChannelUpdate_clone(arg);
+void  __attribute__((visibility("default"))) TS_UpdateAddHTLC_set_amount_msat(uint32_t this_ptr, int64_t val) {
+       LDKUpdateAddHTLC this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       UpdateAddHTLC_set_amount_msat(&this_ptr_conv, val);
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_UpdateAddHTLC_get_payment_hash(uint32_t this_ptr) {
+       LDKUpdateAddHTLC this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *UpdateAddHTLC_get_payment_hash(&this_ptr_conv), 32);
+       return ret_arr;
+}
+
+void  __attribute__((visibility("default"))) TS_UpdateAddHTLC_set_payment_hash(uint32_t this_ptr, int8_tArray val) {
+       LDKUpdateAddHTLC this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       UpdateAddHTLC_set_payment_hash(&this_ptr_conv, val_ref);
+}
+
+int32_t  __attribute__((visibility("default"))) TS_UpdateAddHTLC_get_cltv_expiry(uint32_t this_ptr) {
+       LDKUpdateAddHTLC this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = UpdateAddHTLC_get_cltv_expiry(&this_ptr_conv);
+       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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       UpdateAddHTLC_set_cltv_expiry(&this_ptr_conv, val);
+}
+
+static inline uint64_t UpdateAddHTLC_clone_ptr(LDKUpdateAddHTLC *NONNULL_PTR arg) {
+       LDKUpdateAddHTLC ret_var = UpdateAddHTLC_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26569,21 +24004,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_ChannelUpdate_clone_ptr(uint32_t arg) {
-       LDKChannelUpdate arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_UpdateAddHTLC_clone_ptr(uint32_t arg) {
+       LDKUpdateAddHTLC arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelUpdate_clone_ptr(&arg_conv);
+       int64_t ret_val = UpdateAddHTLC_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelUpdate_clone(uint32_t orig) {
-       LDKChannelUpdate 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelUpdate ret_var = ChannelUpdate_clone(&orig_conv);
+       LDKUpdateAddHTLC ret_var = UpdateAddHTLC_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26595,74 +24030,81 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelUpdate_clone(uint32_t
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_QueryChannelRange_free(uint32_t this_obj) {
-       LDKQueryChannelRange this_obj_conv;
+void  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_free(uint32_t this_obj) {
+       LDKUpdateFulfillHTLC this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       QueryChannelRange_free(this_obj_conv);
+       UpdateFulfillHTLC_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_QueryChannelRange_get_chain_hash(uint32_t this_ptr) {
-       LDKQueryChannelRange 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *QueryChannelRange_get_chain_hash(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *UpdateFulfillHTLC_get_channel_id(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_QueryChannelRange_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
-       LDKQueryChannelRange this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKUpdateFulfillHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
        LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       QueryChannelRange_set_chain_hash(&this_ptr_conv, val_ref);
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       UpdateFulfillHTLC_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_QueryChannelRange_get_first_blocknum(uint32_t this_ptr) {
-       LDKQueryChannelRange this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_get_htlc_id(uint32_t this_ptr) {
+       LDKUpdateFulfillHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = QueryChannelRange_get_first_blocknum(&this_ptr_conv);
+       int64_t ret_val = UpdateFulfillHTLC_get_htlc_id(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_QueryChannelRange_set_first_blocknum(uint32_t this_ptr, int32_t val) {
-       LDKQueryChannelRange this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_set_htlc_id(uint32_t this_ptr, int64_t val) {
+       LDKUpdateFulfillHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       QueryChannelRange_set_first_blocknum(&this_ptr_conv, val);
+       UpdateFulfillHTLC_set_htlc_id(&this_ptr_conv, val);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_QueryChannelRange_get_number_of_blocks(uint32_t this_ptr) {
-       LDKQueryChannelRange this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_get_payment_preimage(uint32_t this_ptr) {
+       LDKUpdateFulfillHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = QueryChannelRange_get_number_of_blocks(&this_ptr_conv);
-       return ret_val;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *UpdateFulfillHTLC_get_payment_preimage(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_QueryChannelRange_set_number_of_blocks(uint32_t this_ptr, int32_t val) {
-       LDKQueryChannelRange this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_set_payment_preimage(uint32_t this_ptr, int8_tArray val) {
+       LDKUpdateFulfillHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       QueryChannelRange_set_number_of_blocks(&this_ptr_conv, val);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       UpdateFulfillHTLC_set_payment_preimage(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_QueryChannelRange_new(int8_tArray chain_hash_arg, int32_t first_blocknum_arg, int32_t number_of_blocks_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);
-       LDKQueryChannelRange ret_var = QueryChannelRange_new(chain_hash_arg_ref, first_blocknum_arg, number_of_blocks_arg);
+uint32_t  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_new(int8_tArray channel_id_arg, int64_t htlc_id_arg, int8_tArray payment_preimage_arg) {
+       LDKThirtyTwoBytes channel_id_arg_ref;
+       CHECK(channel_id_arg->arr_len == 32);
+       memcpy(channel_id_arg_ref.data, channel_id_arg->elems, 32);
+       LDKThirtyTwoBytes payment_preimage_arg_ref;
+       CHECK(payment_preimage_arg->arr_len == 32);
+       memcpy(payment_preimage_arg_ref.data, payment_preimage_arg->elems, 32);
+       LDKUpdateFulfillHTLC ret_var = UpdateFulfillHTLC_new(channel_id_arg_ref, htlc_id_arg, payment_preimage_arg_ref);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26674,8 +24116,8 @@ uint32_t  __attribute__((visibility("default"))) TS_QueryChannelRange_new(int8_t
        return ret_ref;
 }
 
-static inline uint64_t QueryChannelRange_clone_ptr(LDKQueryChannelRange *NONNULL_PTR arg) {
-       LDKQueryChannelRange ret_var = QueryChannelRange_clone(arg);
+static inline uint64_t UpdateFulfillHTLC_clone_ptr(LDKUpdateFulfillHTLC *NONNULL_PTR arg) {
+       LDKUpdateFulfillHTLC ret_var = UpdateFulfillHTLC_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26686,21 +24128,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_QueryChannelRange_clone_ptr(uint32_t arg) {
-       LDKQueryChannelRange arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_clone_ptr(uint32_t arg) {
+       LDKUpdateFulfillHTLC arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = QueryChannelRange_clone_ptr(&arg_conv);
+       int64_t ret_val = UpdateFulfillHTLC_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_QueryChannelRange_clone(uint32_t orig) {
-       LDKQueryChannelRange 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKQueryChannelRange ret_var = QueryChannelRange_clone(&orig_conv);
+       LDKUpdateFulfillHTLC ret_var = UpdateFulfillHTLC_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26712,134 +24154,155 @@ uint32_t  __attribute__((visibility("default"))) TS_QueryChannelRange_clone(uint
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ReplyChannelRange_free(uint32_t this_obj) {
-       LDKReplyChannelRange this_obj_conv;
+void  __attribute__((visibility("default"))) TS_UpdateFailHTLC_free(uint32_t this_obj) {
+       LDKUpdateFailHTLC this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ReplyChannelRange_free(this_obj_conv);
+       UpdateFailHTLC_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ReplyChannelRange_get_chain_hash(uint32_t this_ptr) {
-       LDKReplyChannelRange 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *ReplyChannelRange_get_chain_hash(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *UpdateFailHTLC_get_channel_id(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ReplyChannelRange_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
-       LDKReplyChannelRange this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UpdateFailHTLC_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKUpdateFailHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
        LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       ReplyChannelRange_set_chain_hash(&this_ptr_conv, val_ref);
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       UpdateFailHTLC_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_ReplyChannelRange_get_first_blocknum(uint32_t this_ptr) {
-       LDKReplyChannelRange this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_UpdateFailHTLC_get_htlc_id(uint32_t this_ptr) {
+       LDKUpdateFailHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = ReplyChannelRange_get_first_blocknum(&this_ptr_conv);
+       int64_t ret_val = UpdateFailHTLC_get_htlc_id(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ReplyChannelRange_set_first_blocknum(uint32_t this_ptr, int32_t val) {
-       LDKReplyChannelRange this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UpdateFailHTLC_set_htlc_id(uint32_t this_ptr, int64_t val) {
+       LDKUpdateFailHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ReplyChannelRange_set_first_blocknum(&this_ptr_conv, val);
+       UpdateFailHTLC_set_htlc_id(&this_ptr_conv, val);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_ReplyChannelRange_get_number_of_blocks(uint32_t this_ptr) {
-       LDKReplyChannelRange this_ptr_conv;
+static inline uint64_t UpdateFailHTLC_clone_ptr(LDKUpdateFailHTLC *NONNULL_PTR arg) {
+       LDKUpdateFailHTLC ret_var = UpdateFailHTLC_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_UpdateFailHTLC_clone_ptr(uint32_t arg) {
+       LDKUpdateFailHTLC arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = UpdateFailHTLC_clone_ptr(&arg_conv);
+       return ret_val;
+}
+
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKUpdateFailHTLC ret_var = UpdateFailHTLC_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+void  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_free(uint32_t this_obj) {
+       LDKUpdateFailMalformedHTLC this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       UpdateFailMalformedHTLC_free(this_obj_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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = ReplyChannelRange_get_number_of_blocks(&this_ptr_conv);
-       return ret_val;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *UpdateFailMalformedHTLC_get_channel_id(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ReplyChannelRange_set_number_of_blocks(uint32_t this_ptr, int32_t val) {
-       LDKReplyChannelRange this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKUpdateFailMalformedHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ReplyChannelRange_set_number_of_blocks(&this_ptr_conv, val);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       UpdateFailMalformedHTLC_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ReplyChannelRange_get_sync_complete(uint32_t this_ptr) {
-       LDKReplyChannelRange this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_get_htlc_id(uint32_t this_ptr) {
+       LDKUpdateFailMalformedHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = ReplyChannelRange_get_sync_complete(&this_ptr_conv);
+       int64_t ret_val = UpdateFailMalformedHTLC_get_htlc_id(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ReplyChannelRange_set_sync_complete(uint32_t this_ptr, jboolean val) {
-       LDKReplyChannelRange this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_set_htlc_id(uint32_t this_ptr, int64_t val) {
+       LDKUpdateFailMalformedHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ReplyChannelRange_set_sync_complete(&this_ptr_conv, val);
+       UpdateFailMalformedHTLC_set_htlc_id(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_ReplyChannelRange_set_short_channel_ids(uint32_t this_ptr, int64_tArray val) {
-       LDKReplyChannelRange this_ptr_conv;
+int16_t  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_get_failure_code(uint32_t this_ptr) {
+       LDKUpdateFailMalformedHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_u64Z val_constr;
-       val_constr.datalen = *((uint32_t*)val);
-       if (val_constr.datalen > 0)
-               val_constr.data = MALLOC(val_constr.datalen * sizeof(int64_t), "LDKCVec_u64Z Elements");
-       else
-               val_constr.data = NULL;
-       int64_t* val_vals = (int64_t*)(val + 4);
-       for (size_t i = 0; i < val_constr.datalen; i++) {
-               int64_t val_conv_8 = val_vals[i];
-               val_constr.data[i] = val_conv_8;
-       }
-       ReplyChannelRange_set_short_channel_ids(&this_ptr_conv, val_constr);
+       int16_t ret_val = UpdateFailMalformedHTLC_get_failure_code(&this_ptr_conv);
+       return ret_val;
 }
 
-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);
-       LDKCVec_u64Z short_channel_ids_arg_constr;
-       short_channel_ids_arg_constr.datalen = *((uint32_t*)short_channel_ids_arg);
-       if (short_channel_ids_arg_constr.datalen > 0)
-               short_channel_ids_arg_constr.data = MALLOC(short_channel_ids_arg_constr.datalen * sizeof(int64_t), "LDKCVec_u64Z Elements");
-       else
-               short_channel_ids_arg_constr.data = NULL;
-       int64_t* short_channel_ids_arg_vals = (int64_t*)(short_channel_ids_arg + 4);
-       for (size_t i = 0; i < short_channel_ids_arg_constr.datalen; i++) {
-               int64_t short_channel_ids_arg_conv_8 = short_channel_ids_arg_vals[i];
-               short_channel_ids_arg_constr.data[i] = short_channel_ids_arg_conv_8;
-       }
-       LDKReplyChannelRange ret_var = ReplyChannelRange_new(chain_hash_arg_ref, first_blocknum_arg, number_of_blocks_arg, sync_complete_arg, short_channel_ids_arg_constr);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_set_failure_code(uint32_t this_ptr, int16_t val) {
+       LDKUpdateFailMalformedHTLC this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       UpdateFailMalformedHTLC_set_failure_code(&this_ptr_conv, val);
 }
 
-static inline uint64_t ReplyChannelRange_clone_ptr(LDKReplyChannelRange *NONNULL_PTR arg) {
-       LDKReplyChannelRange ret_var = ReplyChannelRange_clone(arg);
+static inline uint64_t UpdateFailMalformedHTLC_clone_ptr(LDKUpdateFailMalformedHTLC *NONNULL_PTR arg) {
+       LDKUpdateFailMalformedHTLC ret_var = UpdateFailMalformedHTLC_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26850,21 +24313,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_ReplyChannelRange_clone_ptr(uint32_t arg) {
-       LDKReplyChannelRange arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_clone_ptr(uint32_t arg) {
+       LDKUpdateFailMalformedHTLC arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ReplyChannelRange_clone_ptr(&arg_conv);
+       int64_t ret_val = UpdateFailMalformedHTLC_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ReplyChannelRange_clone(uint32_t orig) {
-       LDKReplyChannelRange 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKReplyChannelRange ret_var = ReplyChannelRange_clone(&orig_conv);
+       LDKUpdateFailMalformedHTLC ret_var = UpdateFailMalformedHTLC_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26876,70 +24339,100 @@ uint32_t  __attribute__((visibility("default"))) TS_ReplyChannelRange_clone(uint
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_QueryShortChannelIds_free(uint32_t this_obj) {
-       LDKQueryShortChannelIds this_obj_conv;
+void  __attribute__((visibility("default"))) TS_CommitmentSigned_free(uint32_t this_obj) {
+       LDKCommitmentSigned this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       QueryShortChannelIds_free(this_obj_conv);
+       CommitmentSigned_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_QueryShortChannelIds_get_chain_hash(uint32_t this_ptr) {
-       LDKQueryShortChannelIds 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *QueryShortChannelIds_get_chain_hash(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *CommitmentSigned_get_channel_id(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_QueryShortChannelIds_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
-       LDKQueryShortChannelIds this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_CommitmentSigned_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKCommitmentSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
        LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       QueryShortChannelIds_set_chain_hash(&this_ptr_conv, val_ref);
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       CommitmentSigned_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-void  __attribute__((visibility("default"))) TS_QueryShortChannelIds_set_short_channel_ids(uint32_t this_ptr, int64_tArray val) {
-       LDKQueryShortChannelIds this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_CommitmentSigned_get_signature(uint32_t this_ptr) {
+       LDKCommitmentSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_u64Z val_constr;
-       val_constr.datalen = *((uint32_t*)val);
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, CommitmentSigned_get_signature(&this_ptr_conv).compact_form, 64);
+       return ret_arr;
+}
+
+void  __attribute__((visibility("default"))) TS_CommitmentSigned_set_signature(uint32_t this_ptr, int8_tArray val) {
+       LDKCommitmentSigned this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKSignature val_ref;
+       CHECK(val->arr_len == 64);
+       memcpy(val_ref.compact_form, val->elems, 64);
+       CommitmentSigned_set_signature(&this_ptr_conv, val_ref);
+}
+
+void  __attribute__((visibility("default"))) TS_CommitmentSigned_set_htlc_signatures(uint32_t this_ptr, ptrArray val) {
+       LDKCommitmentSigned this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCVec_SignatureZ val_constr;
+       val_constr.datalen = val->arr_len;
        if (val_constr.datalen > 0)
-               val_constr.data = MALLOC(val_constr.datalen * sizeof(int64_t), "LDKCVec_u64Z Elements");
+               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ Elements");
        else
                val_constr.data = NULL;
-       int64_t* val_vals = (int64_t*)(val + 4);
-       for (size_t i = 0; i < val_constr.datalen; i++) {
-               int64_t val_conv_8 = val_vals[i];
-               val_constr.data[i] = val_conv_8;
+       int8_tArray* val_vals = (void*) val->elems;
+       for (size_t m = 0; m < val_constr.datalen; m++) {
+               int8_tArray val_conv_12 = val_vals[m];
+               LDKSignature val_conv_12_ref;
+               CHECK(val_conv_12->arr_len == 64);
+               memcpy(val_conv_12_ref.compact_form, val_conv_12->elems, 64);
+               val_constr.data[m] = val_conv_12_ref;
        }
-       QueryShortChannelIds_set_short_channel_ids(&this_ptr_conv, val_constr);
+       CommitmentSigned_set_htlc_signatures(&this_ptr_conv, val_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_QueryShortChannelIds_new(int8_tArray chain_hash_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);
-       LDKCVec_u64Z short_channel_ids_arg_constr;
-       short_channel_ids_arg_constr.datalen = *((uint32_t*)short_channel_ids_arg);
-       if (short_channel_ids_arg_constr.datalen > 0)
-               short_channel_ids_arg_constr.data = MALLOC(short_channel_ids_arg_constr.datalen * sizeof(int64_t), "LDKCVec_u64Z Elements");
+uint32_t  __attribute__((visibility("default"))) TS_CommitmentSigned_new(int8_tArray channel_id_arg, int8_tArray signature_arg, ptrArray htlc_signatures_arg) {
+       LDKThirtyTwoBytes channel_id_arg_ref;
+       CHECK(channel_id_arg->arr_len == 32);
+       memcpy(channel_id_arg_ref.data, channel_id_arg->elems, 32);
+       LDKSignature signature_arg_ref;
+       CHECK(signature_arg->arr_len == 64);
+       memcpy(signature_arg_ref.compact_form, signature_arg->elems, 64);
+       LDKCVec_SignatureZ htlc_signatures_arg_constr;
+       htlc_signatures_arg_constr.datalen = htlc_signatures_arg->arr_len;
+       if (htlc_signatures_arg_constr.datalen > 0)
+               htlc_signatures_arg_constr.data = MALLOC(htlc_signatures_arg_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ Elements");
        else
-               short_channel_ids_arg_constr.data = NULL;
-       int64_t* short_channel_ids_arg_vals = (int64_t*)(short_channel_ids_arg + 4);
-       for (size_t i = 0; i < short_channel_ids_arg_constr.datalen; i++) {
-               int64_t short_channel_ids_arg_conv_8 = short_channel_ids_arg_vals[i];
-               short_channel_ids_arg_constr.data[i] = short_channel_ids_arg_conv_8;
+               htlc_signatures_arg_constr.data = NULL;
+       int8_tArray* htlc_signatures_arg_vals = (void*) htlc_signatures_arg->elems;
+       for (size_t m = 0; m < htlc_signatures_arg_constr.datalen; m++) {
+               int8_tArray htlc_signatures_arg_conv_12 = htlc_signatures_arg_vals[m];
+               LDKSignature htlc_signatures_arg_conv_12_ref;
+               CHECK(htlc_signatures_arg_conv_12->arr_len == 64);
+               memcpy(htlc_signatures_arg_conv_12_ref.compact_form, htlc_signatures_arg_conv_12->elems, 64);
+               htlc_signatures_arg_constr.data[m] = htlc_signatures_arg_conv_12_ref;
        }
-       LDKQueryShortChannelIds ret_var = QueryShortChannelIds_new(chain_hash_arg_ref, short_channel_ids_arg_constr);
+       LDKCommitmentSigned ret_var = CommitmentSigned_new(channel_id_arg_ref, signature_arg_ref, htlc_signatures_arg_constr);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26951,8 +24444,8 @@ uint32_t  __attribute__((visibility("default"))) TS_QueryShortChannelIds_new(int
        return ret_ref;
 }
 
-static inline uint64_t QueryShortChannelIds_clone_ptr(LDKQueryShortChannelIds *NONNULL_PTR arg) {
-       LDKQueryShortChannelIds ret_var = QueryShortChannelIds_clone(arg);
+static inline uint64_t CommitmentSigned_clone_ptr(LDKCommitmentSigned *NONNULL_PTR arg) {
+       LDKCommitmentSigned ret_var = CommitmentSigned_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26963,21 +24456,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_QueryShortChannelIds_clone_ptr(uint32_t arg) {
-       LDKQueryShortChannelIds arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_CommitmentSigned_clone_ptr(uint32_t arg) {
+       LDKCommitmentSigned arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = QueryShortChannelIds_clone_ptr(&arg_conv);
+       int64_t ret_val = CommitmentSigned_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_QueryShortChannelIds_clone(uint32_t orig) {
-       LDKQueryShortChannelIds 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKQueryShortChannelIds ret_var = QueryShortChannelIds_clone(&orig_conv);
+       LDKCommitmentSigned ret_var = CommitmentSigned_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26989,57 +24482,88 @@ uint32_t  __attribute__((visibility("default"))) TS_QueryShortChannelIds_clone(u
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_free(uint32_t this_obj) {
-       LDKReplyShortChannelIdsEnd this_obj_conv;
+void  __attribute__((visibility("default"))) TS_RevokeAndACK_free(uint32_t this_obj) {
+       LDKRevokeAndACK this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ReplyShortChannelIdsEnd_free(this_obj_conv);
+       RevokeAndACK_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_get_chain_hash(uint32_t this_ptr) {
-       LDKReplyShortChannelIdsEnd 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *ReplyShortChannelIdsEnd_get_chain_hash(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *RevokeAndACK_get_channel_id(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
-       LDKReplyShortChannelIdsEnd this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_RevokeAndACK_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKRevokeAndACK this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
        LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       ReplyShortChannelIdsEnd_set_chain_hash(&this_ptr_conv, val_ref);
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       RevokeAndACK_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_get_full_information(uint32_t this_ptr) {
-       LDKReplyShortChannelIdsEnd this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_RevokeAndACK_get_per_commitment_secret(uint32_t this_ptr) {
+       LDKRevokeAndACK this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = ReplyShortChannelIdsEnd_get_full_information(&this_ptr_conv);
-       return ret_val;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *RevokeAndACK_get_per_commitment_secret(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_set_full_information(uint32_t this_ptr, jboolean val) {
-       LDKReplyShortChannelIdsEnd this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_RevokeAndACK_set_per_commitment_secret(uint32_t this_ptr, int8_tArray val) {
+       LDKRevokeAndACK this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ReplyShortChannelIdsEnd_set_full_information(&this_ptr_conv, val);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       RevokeAndACK_set_per_commitment_secret(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_new(int8_tArray chain_hash_arg, jboolean full_information_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);
-       LDKReplyShortChannelIdsEnd ret_var = ReplyShortChannelIdsEnd_new(chain_hash_arg_ref, full_information_arg);
+int8_tArray  __attribute__((visibility("default"))) TS_RevokeAndACK_get_next_per_commitment_point(uint32_t this_ptr) {
+       LDKRevokeAndACK this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, RevokeAndACK_get_next_per_commitment_point(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
+}
+
+void  __attribute__((visibility("default"))) TS_RevokeAndACK_set_next_per_commitment_point(uint32_t this_ptr, int8_tArray val) {
+       LDKRevokeAndACK this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       RevokeAndACK_set_next_per_commitment_point(&this_ptr_conv, val_ref);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_RevokeAndACK_new(int8_tArray channel_id_arg, int8_tArray per_commitment_secret_arg, int8_tArray next_per_commitment_point_arg) {
+       LDKThirtyTwoBytes channel_id_arg_ref;
+       CHECK(channel_id_arg->arr_len == 32);
+       memcpy(channel_id_arg_ref.data, channel_id_arg->elems, 32);
+       LDKThirtyTwoBytes per_commitment_secret_arg_ref;
+       CHECK(per_commitment_secret_arg->arr_len == 32);
+       memcpy(per_commitment_secret_arg_ref.data, per_commitment_secret_arg->elems, 32);
+       LDKPublicKey next_per_commitment_point_arg_ref;
+       CHECK(next_per_commitment_point_arg->arr_len == 33);
+       memcpy(next_per_commitment_point_arg_ref.compressed_form, next_per_commitment_point_arg->elems, 33);
+       LDKRevokeAndACK ret_var = RevokeAndACK_new(channel_id_arg_ref, per_commitment_secret_arg_ref, next_per_commitment_point_arg_ref);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -27051,8 +24575,8 @@ uint32_t  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_new(
        return ret_ref;
 }
 
-static inline uint64_t ReplyShortChannelIdsEnd_clone_ptr(LDKReplyShortChannelIdsEnd *NONNULL_PTR arg) {
-       LDKReplyShortChannelIdsEnd ret_var = ReplyShortChannelIdsEnd_clone(arg);
+static inline uint64_t RevokeAndACK_clone_ptr(LDKRevokeAndACK *NONNULL_PTR arg) {
+       LDKRevokeAndACK ret_var = RevokeAndACK_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -27063,21 +24587,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_clone_ptr(uint32_t arg) {
-       LDKReplyShortChannelIdsEnd arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_RevokeAndACK_clone_ptr(uint32_t arg) {
+       LDKRevokeAndACK arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ReplyShortChannelIdsEnd_clone_ptr(&arg_conv);
+       int64_t ret_val = RevokeAndACK_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_clone(uint32_t orig) {
-       LDKReplyShortChannelIdsEnd 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKReplyShortChannelIdsEnd ret_var = ReplyShortChannelIdsEnd_clone(&orig_conv);
+       LDKRevokeAndACK ret_var = RevokeAndACK_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -27089,74 +24613,57 @@ uint32_t  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_clon
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_GossipTimestampFilter_free(uint32_t this_obj) {
-       LDKGossipTimestampFilter this_obj_conv;
+void  __attribute__((visibility("default"))) TS_UpdateFee_free(uint32_t this_obj) {
+       LDKUpdateFee this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       GossipTimestampFilter_free(this_obj_conv);
+       UpdateFee_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_GossipTimestampFilter_get_chain_hash(uint32_t this_ptr) {
-       LDKGossipTimestampFilter 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *GossipTimestampFilter_get_chain_hash(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *UpdateFee_get_channel_id(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_GossipTimestampFilter_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
-       LDKGossipTimestampFilter this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UpdateFee_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKUpdateFee this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
        LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       GossipTimestampFilter_set_chain_hash(&this_ptr_conv, val_ref);
-}
-
-int32_t  __attribute__((visibility("default"))) TS_GossipTimestampFilter_get_first_timestamp(uint32_t this_ptr) {
-       LDKGossipTimestampFilter this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = GossipTimestampFilter_get_first_timestamp(&this_ptr_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_GossipTimestampFilter_set_first_timestamp(uint32_t this_ptr, int32_t val) {
-       LDKGossipTimestampFilter this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       GossipTimestampFilter_set_first_timestamp(&this_ptr_conv, val);
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       UpdateFee_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_GossipTimestampFilter_get_timestamp_range(uint32_t this_ptr) {
-       LDKGossipTimestampFilter this_ptr_conv;
+int32_t  __attribute__((visibility("default"))) TS_UpdateFee_get_feerate_per_kw(uint32_t this_ptr) {
+       LDKUpdateFee this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = GossipTimestampFilter_get_timestamp_range(&this_ptr_conv);
+       int32_t ret_val = UpdateFee_get_feerate_per_kw(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_GossipTimestampFilter_set_timestamp_range(uint32_t this_ptr, int32_t val) {
-       LDKGossipTimestampFilter this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UpdateFee_set_feerate_per_kw(uint32_t this_ptr, int32_t val) {
+       LDKUpdateFee this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       GossipTimestampFilter_set_timestamp_range(&this_ptr_conv, val);
+       UpdateFee_set_feerate_per_kw(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_GossipTimestampFilter_new(int8_tArray chain_hash_arg, int32_t first_timestamp_arg, int32_t timestamp_range_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);
-       LDKGossipTimestampFilter ret_var = GossipTimestampFilter_new(chain_hash_arg_ref, first_timestamp_arg, timestamp_range_arg);
+uint32_t  __attribute__((visibility("default"))) TS_UpdateFee_new(int8_tArray channel_id_arg, int32_t feerate_per_kw_arg) {
+       LDKThirtyTwoBytes channel_id_arg_ref;
+       CHECK(channel_id_arg->arr_len == 32);
+       memcpy(channel_id_arg_ref.data, channel_id_arg->elems, 32);
+       LDKUpdateFee ret_var = UpdateFee_new(channel_id_arg_ref, feerate_per_kw_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -27168,8 +24675,8 @@ uint32_t  __attribute__((visibility("default"))) TS_GossipTimestampFilter_new(in
        return ret_ref;
 }
 
-static inline uint64_t GossipTimestampFilter_clone_ptr(LDKGossipTimestampFilter *NONNULL_PTR arg) {
-       LDKGossipTimestampFilter ret_var = GossipTimestampFilter_clone(arg);
+static inline uint64_t UpdateFee_clone_ptr(LDKUpdateFee *NONNULL_PTR arg) {
+       LDKUpdateFee ret_var = UpdateFee_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -27180,21 +24687,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_GossipTimestampFilter_clone_ptr(uint32_t arg) {
-       LDKGossipTimestampFilter arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_UpdateFee_clone_ptr(uint32_t arg) {
+       LDKUpdateFee arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = GossipTimestampFilter_clone_ptr(&arg_conv);
+       int64_t ret_val = UpdateFee_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_GossipTimestampFilter_clone(uint32_t orig) {
-       LDKGossipTimestampFilter 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKGossipTimestampFilter ret_var = GossipTimestampFilter_clone(&orig_conv);
+       LDKUpdateFee ret_var = UpdateFee_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -27206,139 +24713,64 @@ uint32_t  __attribute__((visibility("default"))) TS_GossipTimestampFilter_clone(
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ErrorAction_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKErrorAction this_ptr_conv = *(LDKErrorAction*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       ErrorAction_free(this_ptr_conv);
-}
-
-static inline uint64_t ErrorAction_clone_ptr(LDKErrorAction *NONNULL_PTR arg) {
-       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
-       *ret_copy = ErrorAction_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_ErrorAction_clone_ptr(uint32_t arg) {
-       LDKErrorAction* arg_conv = (LDKErrorAction*)arg;
-       int64_t ret_val = ErrorAction_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ErrorAction_clone(uint32_t orig) {
-       LDKErrorAction* orig_conv = (LDKErrorAction*)orig;
-       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
-       *ret_copy = ErrorAction_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ErrorAction_disconnect_peer(uint32_t msg) {
-       LDKErrorMessage msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = ErrorMessage_clone(&msg_conv);
-       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
-       *ret_copy = ErrorAction_disconnect_peer(msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ErrorAction_ignore_error() {
-       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
-       *ret_copy = ErrorAction_ignore_error();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ErrorAction_ignore_and_log(uint32_t a) {
-       LDKLevel a_conv = LDKLevel_from_js(a);
-       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
-       *ret_copy = ErrorAction_ignore_and_log(a_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ErrorAction_ignore_duplicate_gossip() {
-       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
-       *ret_copy = ErrorAction_ignore_duplicate_gossip();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ErrorAction_send_error_message(uint32_t msg) {
-       LDKErrorMessage msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = ErrorMessage_clone(&msg_conv);
-       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
-       *ret_copy = ErrorAction_send_error_message(msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-void  __attribute__((visibility("default"))) TS_LightningError_free(uint32_t this_obj) {
-       LDKLightningError this_obj_conv;
+void  __attribute__((visibility("default"))) TS_DataLossProtect_free(uint32_t this_obj) {
+       LDKDataLossProtect this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       LightningError_free(this_obj_conv);
+       DataLossProtect_free(this_obj_conv);
 }
 
-jstring  __attribute__((visibility("default"))) TS_LightningError_get_err(uint32_t this_ptr) {
-       LDKLightningError 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKStr ret_str = LightningError_get_err(&this_ptr_conv);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *DataLossProtect_get_your_last_per_commitment_secret(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_LightningError_set_err(uint32_t this_ptr, jstring val) {
-       LDKLightningError this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DataLossProtect_set_your_last_per_commitment_secret(uint32_t this_ptr, int8_tArray val) {
+       LDKDataLossProtect this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKStr val_conv = str_ref_to_owned_c(val);
-       LightningError_set_err(&this_ptr_conv, val_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       DataLossProtect_set_your_last_per_commitment_secret(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_LightningError_get_action(uint32_t this_ptr) {
-       LDKLightningError this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
-       *ret_copy = LightningError_get_action(&this_ptr_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_DataLossProtect_get_my_current_per_commitment_point(uint32_t this_ptr) {
+       LDKDataLossProtect this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, DataLossProtect_get_my_current_per_commitment_point(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_LightningError_set_action(uint32_t this_ptr, uint32_t val) {
-       LDKLightningError this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DataLossProtect_set_my_current_per_commitment_point(uint32_t this_ptr, int8_tArray val) {
+       LDKDataLossProtect this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKErrorAction val_conv = *(LDKErrorAction*)(val_ptr);
-       val_conv = ErrorAction_clone((LDKErrorAction*)(((uint64_t)val) & ~1));
-       LightningError_set_action(&this_ptr_conv, val_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       DataLossProtect_set_my_current_per_commitment_point(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_LightningError_new(jstring err_arg, uint32_t action_arg) {
-       LDKStr err_arg_conv = str_ref_to_owned_c(err_arg);
-       void* action_arg_ptr = (void*)(((uint64_t)action_arg) & ~1);
-       CHECK_ACCESS(action_arg_ptr);
-       LDKErrorAction action_arg_conv = *(LDKErrorAction*)(action_arg_ptr);
-       action_arg_conv = ErrorAction_clone((LDKErrorAction*)(((uint64_t)action_arg) & ~1));
-       LDKLightningError ret_var = LightningError_new(err_arg_conv, action_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_DataLossProtect_new(int8_tArray your_last_per_commitment_secret_arg, int8_tArray my_current_per_commitment_point_arg) {
+       LDKThirtyTwoBytes your_last_per_commitment_secret_arg_ref;
+       CHECK(your_last_per_commitment_secret_arg->arr_len == 32);
+       memcpy(your_last_per_commitment_secret_arg_ref.data, your_last_per_commitment_secret_arg->elems, 32);
+       LDKPublicKey my_current_per_commitment_point_arg_ref;
+       CHECK(my_current_per_commitment_point_arg->arr_len == 33);
+       memcpy(my_current_per_commitment_point_arg_ref.compressed_form, my_current_per_commitment_point_arg->elems, 33);
+       LDKDataLossProtect ret_var = DataLossProtect_new(your_last_per_commitment_secret_arg_ref, my_current_per_commitment_point_arg_ref);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -27350,8 +24782,8 @@ uint32_t  __attribute__((visibility("default"))) TS_LightningError_new(jstring e
        return ret_ref;
 }
 
-static inline uint64_t LightningError_clone_ptr(LDKLightningError *NONNULL_PTR arg) {
-       LDKLightningError ret_var = LightningError_clone(arg);
+static inline uint64_t DataLossProtect_clone_ptr(LDKDataLossProtect *NONNULL_PTR arg) {
+       LDKDataLossProtect ret_var = DataLossProtect_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -27362,21 +24794,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_LightningError_clone_ptr(uint32_t arg) {
-       LDKLightningError arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_DataLossProtect_clone_ptr(uint32_t arg) {
+       LDKDataLossProtect arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = LightningError_clone_ptr(&arg_conv);
+       int64_t ret_val = DataLossProtect_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_LightningError_clone(uint32_t orig) {
-       LDKLightningError 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKLightningError ret_var = LightningError_clone(&orig_conv);
+       LDKDataLossProtect ret_var = DataLossProtect_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -27388,352 +24820,206 @@ uint32_t  __attribute__((visibility("default"))) TS_LightningError_clone(uint32_
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_CommitmentUpdate_free(uint32_t this_obj) {
-       LDKCommitmentUpdate this_obj_conv;
+void  __attribute__((visibility("default"))) TS_ChannelReestablish_free(uint32_t this_obj) {
+       LDKChannelReestablish this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       CommitmentUpdate_free(this_obj_conv);
+       ChannelReestablish_free(this_obj_conv);
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_CommitmentUpdate_get_update_add_htlcs(uint32_t this_ptr) {
-       LDKCommitmentUpdate 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_UpdateAddHTLCZ ret_var = CommitmentUpdate_get_update_add_htlcs(&this_ptr_conv);
-       uint32_tArray ret_arr = NULL;
-       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 p = 0; p < ret_var.datalen; p++) {
-               LDKUpdateAddHTLC ret_conv_15_var = ret_var.data[p];
-               uint64_t ret_conv_15_ref = 0;
-               CHECK((((uint64_t)ret_conv_15_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_conv_15_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_15_var);
-               ret_conv_15_ref = (uint64_t)ret_conv_15_var.inner;
-               if (ret_conv_15_var.is_owned) {
-                       ret_conv_15_ref |= 1;
-               }
-               ret_arr_ptr[p] = ret_conv_15_ref;
-       }
-       
-       FREE(ret_var.data);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *ChannelReestablish_get_channel_id(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_CommitmentUpdate_set_update_add_htlcs(uint32_t this_ptr, uint32_tArray val) {
-       LDKCommitmentUpdate this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelReestablish_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKChannelReestablish this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_UpdateAddHTLCZ val_constr;
-       val_constr.datalen = *((uint32_t*)val);
-       if (val_constr.datalen > 0)
-               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKUpdateAddHTLC), "LDKCVec_UpdateAddHTLCZ Elements");
-       else
-               val_constr.data = NULL;
-       uint32_t* val_vals = (uint32_t*)(val + 4);
-       for (size_t p = 0; p < val_constr.datalen; p++) {
-               uint32_t val_conv_15 = val_vals[p];
-               LDKUpdateAddHTLC val_conv_15_conv;
-               val_conv_15_conv.inner = (void*)(val_conv_15 & (~1));
-               val_conv_15_conv.is_owned = (val_conv_15 & 1) || (val_conv_15 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv_15_conv);
-               val_conv_15_conv = UpdateAddHTLC_clone(&val_conv_15_conv);
-               val_constr.data[p] = val_conv_15_conv;
-       }
-       CommitmentUpdate_set_update_add_htlcs(&this_ptr_conv, val_constr);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       ChannelReestablish_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_CommitmentUpdate_get_update_fulfill_htlcs(uint32_t this_ptr) {
-       LDKCommitmentUpdate this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelReestablish_get_next_local_commitment_number(uint32_t this_ptr) {
+       LDKChannelReestablish this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_UpdateFulfillHTLCZ ret_var = CommitmentUpdate_get_update_fulfill_htlcs(&this_ptr_conv);
-       uint32_tArray ret_arr = NULL;
-       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 t = 0; t < ret_var.datalen; t++) {
-               LDKUpdateFulfillHTLC ret_conv_19_var = ret_var.data[t];
-               uint64_t ret_conv_19_ref = 0;
-               CHECK((((uint64_t)ret_conv_19_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_conv_19_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_19_var);
-               ret_conv_19_ref = (uint64_t)ret_conv_19_var.inner;
-               if (ret_conv_19_var.is_owned) {
-                       ret_conv_19_ref |= 1;
-               }
-               ret_arr_ptr[t] = ret_conv_19_ref;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+       int64_t ret_val = ChannelReestablish_get_next_local_commitment_number(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CommitmentUpdate_set_update_fulfill_htlcs(uint32_t this_ptr, uint32_tArray val) {
-       LDKCommitmentUpdate this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelReestablish_set_next_local_commitment_number(uint32_t this_ptr, int64_t val) {
+       LDKChannelReestablish this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_UpdateFulfillHTLCZ val_constr;
-       val_constr.datalen = *((uint32_t*)val);
-       if (val_constr.datalen > 0)
-               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKUpdateFulfillHTLC), "LDKCVec_UpdateFulfillHTLCZ Elements");
-       else
-               val_constr.data = NULL;
-       uint32_t* val_vals = (uint32_t*)(val + 4);
-       for (size_t t = 0; t < val_constr.datalen; t++) {
-               uint32_t val_conv_19 = val_vals[t];
-               LDKUpdateFulfillHTLC val_conv_19_conv;
-               val_conv_19_conv.inner = (void*)(val_conv_19 & (~1));
-               val_conv_19_conv.is_owned = (val_conv_19 & 1) || (val_conv_19 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv_19_conv);
-               val_conv_19_conv = UpdateFulfillHTLC_clone(&val_conv_19_conv);
-               val_constr.data[t] = val_conv_19_conv;
-       }
-       CommitmentUpdate_set_update_fulfill_htlcs(&this_ptr_conv, val_constr);
+       ChannelReestablish_set_next_local_commitment_number(&this_ptr_conv, val);
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_CommitmentUpdate_get_update_fail_htlcs(uint32_t this_ptr) {
-       LDKCommitmentUpdate this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelReestablish_get_next_remote_commitment_number(uint32_t this_ptr) {
+       LDKChannelReestablish this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_UpdateFailHTLCZ ret_var = CommitmentUpdate_get_update_fail_htlcs(&this_ptr_conv);
-       uint32_tArray ret_arr = NULL;
-       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 q = 0; q < ret_var.datalen; q++) {
-               LDKUpdateFailHTLC ret_conv_16_var = ret_var.data[q];
-               uint64_t ret_conv_16_ref = 0;
-               CHECK((((uint64_t)ret_conv_16_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_conv_16_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_16_var);
-               ret_conv_16_ref = (uint64_t)ret_conv_16_var.inner;
-               if (ret_conv_16_var.is_owned) {
-                       ret_conv_16_ref |= 1;
-               }
-               ret_arr_ptr[q] = ret_conv_16_ref;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+       int64_t ret_val = ChannelReestablish_get_next_remote_commitment_number(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CommitmentUpdate_set_update_fail_htlcs(uint32_t this_ptr, uint32_tArray val) {
-       LDKCommitmentUpdate this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelReestablish_set_next_remote_commitment_number(uint32_t this_ptr, int64_t val) {
+       LDKChannelReestablish this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_UpdateFailHTLCZ val_constr;
-       val_constr.datalen = *((uint32_t*)val);
-       if (val_constr.datalen > 0)
-               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKUpdateFailHTLC), "LDKCVec_UpdateFailHTLCZ Elements");
-       else
-               val_constr.data = NULL;
-       uint32_t* val_vals = (uint32_t*)(val + 4);
-       for (size_t q = 0; q < val_constr.datalen; q++) {
-               uint32_t val_conv_16 = val_vals[q];
-               LDKUpdateFailHTLC val_conv_16_conv;
-               val_conv_16_conv.inner = (void*)(val_conv_16 & (~1));
-               val_conv_16_conv.is_owned = (val_conv_16 & 1) || (val_conv_16 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv_16_conv);
-               val_conv_16_conv = UpdateFailHTLC_clone(&val_conv_16_conv);
-               val_constr.data[q] = val_conv_16_conv;
+       ChannelReestablish_set_next_remote_commitment_number(&this_ptr_conv, val);
+}
+
+static inline uint64_t ChannelReestablish_clone_ptr(LDKChannelReestablish *NONNULL_PTR arg) {
+       LDKChannelReestablish ret_var = ChannelReestablish_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_ChannelReestablish_clone_ptr(uint32_t arg) {
+       LDKChannelReestablish arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ChannelReestablish_clone_ptr(&arg_conv);
+       return ret_val;
+}
+
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKChannelReestablish ret_var = ChannelReestablish_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       CommitmentUpdate_set_update_fail_htlcs(&this_ptr_conv, val_constr);
+       return ret_ref;
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_CommitmentUpdate_get_update_fail_malformed_htlcs(uint32_t this_ptr) {
-       LDKCommitmentUpdate this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_AnnouncementSignatures_free(uint32_t this_obj) {
+       LDKAnnouncementSignatures this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       AnnouncementSignatures_free(this_obj_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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_UpdateFailMalformedHTLCZ ret_var = CommitmentUpdate_get_update_fail_malformed_htlcs(&this_ptr_conv);
-       uint32_tArray ret_arr = NULL;
-       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 z = 0; z < ret_var.datalen; z++) {
-               LDKUpdateFailMalformedHTLC ret_conv_25_var = ret_var.data[z];
-               uint64_t ret_conv_25_ref = 0;
-               CHECK((((uint64_t)ret_conv_25_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_conv_25_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_25_var);
-               ret_conv_25_ref = (uint64_t)ret_conv_25_var.inner;
-               if (ret_conv_25_var.is_owned) {
-                       ret_conv_25_ref |= 1;
-               }
-               ret_arr_ptr[z] = ret_conv_25_ref;
-       }
-       
-       FREE(ret_var.data);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *AnnouncementSignatures_get_channel_id(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_CommitmentUpdate_set_update_fail_malformed_htlcs(uint32_t this_ptr, uint32_tArray val) {
-       LDKCommitmentUpdate this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_AnnouncementSignatures_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKAnnouncementSignatures this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       AnnouncementSignatures_set_channel_id(&this_ptr_conv, val_ref);
+}
+
+int64_t  __attribute__((visibility("default"))) TS_AnnouncementSignatures_get_short_channel_id(uint32_t this_ptr) {
+       LDKAnnouncementSignatures this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = AnnouncementSignatures_get_short_channel_id(&this_ptr_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_AnnouncementSignatures_set_short_channel_id(uint32_t this_ptr, int64_t val) {
+       LDKAnnouncementSignatures this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_UpdateFailMalformedHTLCZ val_constr;
-       val_constr.datalen = *((uint32_t*)val);
-       if (val_constr.datalen > 0)
-               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKUpdateFailMalformedHTLC), "LDKCVec_UpdateFailMalformedHTLCZ Elements");
-       else
-               val_constr.data = NULL;
-       uint32_t* val_vals = (uint32_t*)(val + 4);
-       for (size_t z = 0; z < val_constr.datalen; z++) {
-               uint32_t val_conv_25 = val_vals[z];
-               LDKUpdateFailMalformedHTLC val_conv_25_conv;
-               val_conv_25_conv.inner = (void*)(val_conv_25 & (~1));
-               val_conv_25_conv.is_owned = (val_conv_25 & 1) || (val_conv_25 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv_25_conv);
-               val_conv_25_conv = UpdateFailMalformedHTLC_clone(&val_conv_25_conv);
-               val_constr.data[z] = val_conv_25_conv;
-       }
-       CommitmentUpdate_set_update_fail_malformed_htlcs(&this_ptr_conv, val_constr);
+       AnnouncementSignatures_set_short_channel_id(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CommitmentUpdate_get_update_fee(uint32_t this_ptr) {
-       LDKCommitmentUpdate this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_AnnouncementSignatures_get_node_signature(uint32_t this_ptr) {
+       LDKAnnouncementSignatures this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKUpdateFee ret_var = CommitmentUpdate_get_update_fee(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
-       }
-       return ret_ref;
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, AnnouncementSignatures_get_node_signature(&this_ptr_conv).compact_form, 64);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_CommitmentUpdate_set_update_fee(uint32_t this_ptr, uint32_t val) {
-       LDKCommitmentUpdate this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_AnnouncementSignatures_set_node_signature(uint32_t this_ptr, int8_tArray val) {
+       LDKAnnouncementSignatures this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKUpdateFee val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = UpdateFee_clone(&val_conv);
-       CommitmentUpdate_set_update_fee(&this_ptr_conv, val_conv);
+       LDKSignature val_ref;
+       CHECK(val->arr_len == 64);
+       memcpy(val_ref.compact_form, val->elems, 64);
+       AnnouncementSignatures_set_node_signature(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CommitmentUpdate_get_commitment_signed(uint32_t this_ptr) {
-       LDKCommitmentUpdate this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_AnnouncementSignatures_get_bitcoin_signature(uint32_t this_ptr) {
+       LDKAnnouncementSignatures this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCommitmentSigned ret_var = CommitmentUpdate_get_commitment_signed(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, AnnouncementSignatures_get_bitcoin_signature(&this_ptr_conv).compact_form, 64);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_CommitmentUpdate_set_commitment_signed(uint32_t this_ptr, uint32_t val) {
-       LDKCommitmentUpdate this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_AnnouncementSignatures_set_bitcoin_signature(uint32_t this_ptr, int8_tArray val) {
+       LDKAnnouncementSignatures this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCommitmentSigned val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = CommitmentSigned_clone(&val_conv);
-       CommitmentUpdate_set_commitment_signed(&this_ptr_conv, val_conv);
+       LDKSignature val_ref;
+       CHECK(val->arr_len == 64);
+       memcpy(val_ref.compact_form, val->elems, 64);
+       AnnouncementSignatures_set_bitcoin_signature(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CommitmentUpdate_new(uint32_tArray update_add_htlcs_arg, uint32_tArray update_fulfill_htlcs_arg, uint32_tArray update_fail_htlcs_arg, uint32_tArray update_fail_malformed_htlcs_arg, uint32_t update_fee_arg, uint32_t commitment_signed_arg) {
-       LDKCVec_UpdateAddHTLCZ update_add_htlcs_arg_constr;
-       update_add_htlcs_arg_constr.datalen = *((uint32_t*)update_add_htlcs_arg);
-       if (update_add_htlcs_arg_constr.datalen > 0)
-               update_add_htlcs_arg_constr.data = MALLOC(update_add_htlcs_arg_constr.datalen * sizeof(LDKUpdateAddHTLC), "LDKCVec_UpdateAddHTLCZ Elements");
-       else
-               update_add_htlcs_arg_constr.data = NULL;
-       uint32_t* update_add_htlcs_arg_vals = (uint32_t*)(update_add_htlcs_arg + 4);
-       for (size_t p = 0; p < update_add_htlcs_arg_constr.datalen; p++) {
-               uint32_t update_add_htlcs_arg_conv_15 = update_add_htlcs_arg_vals[p];
-               LDKUpdateAddHTLC update_add_htlcs_arg_conv_15_conv;
-               update_add_htlcs_arg_conv_15_conv.inner = (void*)(update_add_htlcs_arg_conv_15 & (~1));
-               update_add_htlcs_arg_conv_15_conv.is_owned = (update_add_htlcs_arg_conv_15 & 1) || (update_add_htlcs_arg_conv_15 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(update_add_htlcs_arg_conv_15_conv);
-               update_add_htlcs_arg_conv_15_conv = UpdateAddHTLC_clone(&update_add_htlcs_arg_conv_15_conv);
-               update_add_htlcs_arg_constr.data[p] = update_add_htlcs_arg_conv_15_conv;
-       }
-       LDKCVec_UpdateFulfillHTLCZ update_fulfill_htlcs_arg_constr;
-       update_fulfill_htlcs_arg_constr.datalen = *((uint32_t*)update_fulfill_htlcs_arg);
-       if (update_fulfill_htlcs_arg_constr.datalen > 0)
-               update_fulfill_htlcs_arg_constr.data = MALLOC(update_fulfill_htlcs_arg_constr.datalen * sizeof(LDKUpdateFulfillHTLC), "LDKCVec_UpdateFulfillHTLCZ Elements");
-       else
-               update_fulfill_htlcs_arg_constr.data = NULL;
-       uint32_t* update_fulfill_htlcs_arg_vals = (uint32_t*)(update_fulfill_htlcs_arg + 4);
-       for (size_t t = 0; t < update_fulfill_htlcs_arg_constr.datalen; t++) {
-               uint32_t update_fulfill_htlcs_arg_conv_19 = update_fulfill_htlcs_arg_vals[t];
-               LDKUpdateFulfillHTLC update_fulfill_htlcs_arg_conv_19_conv;
-               update_fulfill_htlcs_arg_conv_19_conv.inner = (void*)(update_fulfill_htlcs_arg_conv_19 & (~1));
-               update_fulfill_htlcs_arg_conv_19_conv.is_owned = (update_fulfill_htlcs_arg_conv_19 & 1) || (update_fulfill_htlcs_arg_conv_19 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(update_fulfill_htlcs_arg_conv_19_conv);
-               update_fulfill_htlcs_arg_conv_19_conv = UpdateFulfillHTLC_clone(&update_fulfill_htlcs_arg_conv_19_conv);
-               update_fulfill_htlcs_arg_constr.data[t] = update_fulfill_htlcs_arg_conv_19_conv;
-       }
-       LDKCVec_UpdateFailHTLCZ update_fail_htlcs_arg_constr;
-       update_fail_htlcs_arg_constr.datalen = *((uint32_t*)update_fail_htlcs_arg);
-       if (update_fail_htlcs_arg_constr.datalen > 0)
-               update_fail_htlcs_arg_constr.data = MALLOC(update_fail_htlcs_arg_constr.datalen * sizeof(LDKUpdateFailHTLC), "LDKCVec_UpdateFailHTLCZ Elements");
-       else
-               update_fail_htlcs_arg_constr.data = NULL;
-       uint32_t* update_fail_htlcs_arg_vals = (uint32_t*)(update_fail_htlcs_arg + 4);
-       for (size_t q = 0; q < update_fail_htlcs_arg_constr.datalen; q++) {
-               uint32_t update_fail_htlcs_arg_conv_16 = update_fail_htlcs_arg_vals[q];
-               LDKUpdateFailHTLC update_fail_htlcs_arg_conv_16_conv;
-               update_fail_htlcs_arg_conv_16_conv.inner = (void*)(update_fail_htlcs_arg_conv_16 & (~1));
-               update_fail_htlcs_arg_conv_16_conv.is_owned = (update_fail_htlcs_arg_conv_16 & 1) || (update_fail_htlcs_arg_conv_16 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(update_fail_htlcs_arg_conv_16_conv);
-               update_fail_htlcs_arg_conv_16_conv = UpdateFailHTLC_clone(&update_fail_htlcs_arg_conv_16_conv);
-               update_fail_htlcs_arg_constr.data[q] = update_fail_htlcs_arg_conv_16_conv;
-       }
-       LDKCVec_UpdateFailMalformedHTLCZ update_fail_malformed_htlcs_arg_constr;
-       update_fail_malformed_htlcs_arg_constr.datalen = *((uint32_t*)update_fail_malformed_htlcs_arg);
-       if (update_fail_malformed_htlcs_arg_constr.datalen > 0)
-               update_fail_malformed_htlcs_arg_constr.data = MALLOC(update_fail_malformed_htlcs_arg_constr.datalen * sizeof(LDKUpdateFailMalformedHTLC), "LDKCVec_UpdateFailMalformedHTLCZ Elements");
-       else
-               update_fail_malformed_htlcs_arg_constr.data = NULL;
-       uint32_t* update_fail_malformed_htlcs_arg_vals = (uint32_t*)(update_fail_malformed_htlcs_arg + 4);
-       for (size_t z = 0; z < update_fail_malformed_htlcs_arg_constr.datalen; z++) {
-               uint32_t update_fail_malformed_htlcs_arg_conv_25 = update_fail_malformed_htlcs_arg_vals[z];
-               LDKUpdateFailMalformedHTLC update_fail_malformed_htlcs_arg_conv_25_conv;
-               update_fail_malformed_htlcs_arg_conv_25_conv.inner = (void*)(update_fail_malformed_htlcs_arg_conv_25 & (~1));
-               update_fail_malformed_htlcs_arg_conv_25_conv.is_owned = (update_fail_malformed_htlcs_arg_conv_25 & 1) || (update_fail_malformed_htlcs_arg_conv_25 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(update_fail_malformed_htlcs_arg_conv_25_conv);
-               update_fail_malformed_htlcs_arg_conv_25_conv = UpdateFailMalformedHTLC_clone(&update_fail_malformed_htlcs_arg_conv_25_conv);
-               update_fail_malformed_htlcs_arg_constr.data[z] = update_fail_malformed_htlcs_arg_conv_25_conv;
-       }
-       LDKUpdateFee update_fee_arg_conv;
-       update_fee_arg_conv.inner = (void*)(update_fee_arg & (~1));
-       update_fee_arg_conv.is_owned = (update_fee_arg & 1) || (update_fee_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_fee_arg_conv);
-       update_fee_arg_conv = UpdateFee_clone(&update_fee_arg_conv);
-       LDKCommitmentSigned commitment_signed_arg_conv;
-       commitment_signed_arg_conv.inner = (void*)(commitment_signed_arg & (~1));
-       commitment_signed_arg_conv.is_owned = (commitment_signed_arg & 1) || (commitment_signed_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_signed_arg_conv);
-       commitment_signed_arg_conv = CommitmentSigned_clone(&commitment_signed_arg_conv);
-       LDKCommitmentUpdate ret_var = CommitmentUpdate_new(update_add_htlcs_arg_constr, update_fulfill_htlcs_arg_constr, update_fail_htlcs_arg_constr, update_fail_malformed_htlcs_arg_constr, update_fee_arg_conv, commitment_signed_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_AnnouncementSignatures_new(int8_tArray channel_id_arg, int64_t short_channel_id_arg, int8_tArray node_signature_arg, int8_tArray bitcoin_signature_arg) {
+       LDKThirtyTwoBytes channel_id_arg_ref;
+       CHECK(channel_id_arg->arr_len == 32);
+       memcpy(channel_id_arg_ref.data, channel_id_arg->elems, 32);
+       LDKSignature node_signature_arg_ref;
+       CHECK(node_signature_arg->arr_len == 64);
+       memcpy(node_signature_arg_ref.compact_form, node_signature_arg->elems, 64);
+       LDKSignature bitcoin_signature_arg_ref;
+       CHECK(bitcoin_signature_arg->arr_len == 64);
+       memcpy(bitcoin_signature_arg_ref.compact_form, bitcoin_signature_arg->elems, 64);
+       LDKAnnouncementSignatures ret_var = AnnouncementSignatures_new(channel_id_arg_ref, short_channel_id_arg, node_signature_arg_ref, bitcoin_signature_arg_ref);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -27745,8 +25031,8 @@ uint32_t  __attribute__((visibility("default"))) TS_CommitmentUpdate_new(uint32_
        return ret_ref;
 }
 
-static inline uint64_t CommitmentUpdate_clone_ptr(LDKCommitmentUpdate *NONNULL_PTR arg) {
-       LDKCommitmentUpdate ret_var = CommitmentUpdate_clone(arg);
+static inline uint64_t AnnouncementSignatures_clone_ptr(LDKAnnouncementSignatures *NONNULL_PTR arg) {
+       LDKAnnouncementSignatures ret_var = AnnouncementSignatures_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -27757,21 +25043,133 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_CommitmentUpdate_clone_ptr(uint32_t arg) {
-       LDKCommitmentUpdate arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = CommitmentUpdate_clone_ptr(&arg_conv);
-       return ret_val;
+int64_t  __attribute__((visibility("default"))) TS_AnnouncementSignatures_clone_ptr(uint32_t arg) {
+       LDKAnnouncementSignatures arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = AnnouncementSignatures_clone_ptr(&arg_conv);
+       return ret_val;
+}
+
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKAnnouncementSignatures ret_var = AnnouncementSignatures_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)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;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKNetAddress this_ptr_conv = *(LDKNetAddress*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       NetAddress_free(this_ptr_conv);
+}
+
+static inline uint64_t NetAddress_clone_ptr(LDKNetAddress *NONNULL_PTR arg) {
+       LDKNetAddress *ret_copy = MALLOC(sizeof(LDKNetAddress), "LDKNetAddress");
+       *ret_copy = NetAddress_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_NetAddress_clone_ptr(uint32_t arg) {
+       LDKNetAddress* arg_conv = (LDKNetAddress*)arg;
+       int64_t ret_val = NetAddress_clone_ptr(arg_conv);
+       return ret_val;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_NetAddress_clone(uint32_t orig) {
+       LDKNetAddress* orig_conv = (LDKNetAddress*)orig;
+       LDKNetAddress *ret_copy = MALLOC(sizeof(LDKNetAddress), "LDKNetAddress");
+       *ret_copy = NetAddress_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_NetAddress_ipv4(int8_tArray addr, int16_t port) {
+       LDKFourBytes addr_ref;
+       CHECK(addr->arr_len == 4);
+       memcpy(addr_ref.data, addr->elems, 4);
+       LDKNetAddress *ret_copy = MALLOC(sizeof(LDKNetAddress), "LDKNetAddress");
+       *ret_copy = NetAddress_ipv4(addr_ref, port);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_NetAddress_ipv6(int8_tArray addr, int16_t port) {
+       LDKSixteenBytes addr_ref;
+       CHECK(addr->arr_len == 16);
+       memcpy(addr_ref.data, addr->elems, 16);
+       LDKNetAddress *ret_copy = MALLOC(sizeof(LDKNetAddress), "LDKNetAddress");
+       *ret_copy = NetAddress_ipv6(addr_ref, port);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_NetAddress_onion_v2(int8_tArray a) {
+       LDKTwelveBytes a_ref;
+       CHECK(a->arr_len == 12);
+       memcpy(a_ref.data, a->elems, 12);
+       LDKNetAddress *ret_copy = MALLOC(sizeof(LDKNetAddress), "LDKNetAddress");
+       *ret_copy = NetAddress_onion_v2(a_ref);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_NetAddress_onion_v3(int8_tArray ed25519_pubkey, int16_t checksum, int8_t version, int16_t port) {
+       LDKThirtyTwoBytes ed25519_pubkey_ref;
+       CHECK(ed25519_pubkey->arr_len == 32);
+       memcpy(ed25519_pubkey_ref.data, ed25519_pubkey->elems, 32);
+       LDKNetAddress *ret_copy = MALLOC(sizeof(LDKNetAddress), "LDKNetAddress");
+       *ret_copy = NetAddress_onion_v3(ed25519_pubkey_ref, checksum, version, port);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_NetAddress_write(uint32_t obj) {
+       LDKNetAddress* obj_conv = (LDKNetAddress*)obj;
+       LDKCVec_u8Z ret_var = NetAddress_write(obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_NetAddress_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_NetAddressDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetAddressDecodeErrorZ), "LDKCResult_NetAddressDecodeErrorZ");
+       *ret_conv = NetAddress_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_free(uint32_t this_obj) {
+       LDKUnsignedNodeAnnouncement this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       UnsignedNodeAnnouncement_free(this_obj_conv);
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKCommitmentUpdate ret_var = CommitmentUpdate_clone(&orig_conv);
+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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKNodeFeatures ret_var = UnsignedNodeAnnouncement_get_features(&this_ptr_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -27783,785 +25181,841 @@ uint32_t  __attribute__((visibility("default"))) TS_CommitmentUpdate_clone(uint3
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKChannelMessageHandler this_ptr_conv = *(LDKChannelMessageHandler*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       ChannelMessageHandler_free(this_ptr_conv);
-}
-
-void  __attribute__((visibility("default"))) TS_RoutingMessageHandler_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKRoutingMessageHandler this_ptr_conv = *(LDKRoutingMessageHandler*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       RoutingMessageHandler_free(this_ptr_conv);
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_write(uint32_t obj) {
-       LDKAcceptChannel obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = AcceptChannel_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_AcceptChannel_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_AcceptChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AcceptChannelDecodeErrorZ), "LDKCResult_AcceptChannelDecodeErrorZ");
-       *ret_conv = AcceptChannel_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_set_features(uint32_t this_ptr, uint32_t val) {
+       LDKUnsignedNodeAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKNodeFeatures val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = NodeFeatures_clone(&val_conv);
+       UnsignedNodeAnnouncement_set_features(&this_ptr_conv, val_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_AnnouncementSignatures_write(uint32_t obj) {
-       LDKAnnouncementSignatures obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = AnnouncementSignatures_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+int32_t  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_get_timestamp(uint32_t this_ptr) {
+       LDKUnsignedNodeAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = UnsignedNodeAnnouncement_get_timestamp(&this_ptr_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_AnnouncementSignatures_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_AnnouncementSignaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ), "LDKCResult_AnnouncementSignaturesDecodeErrorZ");
-       *ret_conv = AnnouncementSignatures_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_set_timestamp(uint32_t this_ptr, int32_t val) {
+       LDKUnsignedNodeAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       UnsignedNodeAnnouncement_set_timestamp(&this_ptr_conv, val);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelReestablish_write(uint32_t obj) {
-       LDKChannelReestablish obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ChannelReestablish_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+int8_tArray  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_get_node_id(uint32_t this_ptr) {
+       LDKUnsignedNodeAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, UnsignedNodeAnnouncement_get_node_id(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelReestablish_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ChannelReestablishDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelReestablishDecodeErrorZ), "LDKCResult_ChannelReestablishDecodeErrorZ");
-       *ret_conv = ChannelReestablish_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_set_node_id(uint32_t this_ptr, int8_tArray val) {
+       LDKUnsignedNodeAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       UnsignedNodeAnnouncement_set_node_id(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ClosingSigned_write(uint32_t obj) {
-       LDKClosingSigned obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ClosingSigned_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+int8_tArray  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_get_rgb(uint32_t this_ptr) {
+       LDKUnsignedNodeAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(3);
+       memcpy(ret_arr->elems, *UnsignedNodeAnnouncement_get_rgb(&this_ptr_conv), 3);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosingSigned_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ClosingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedDecodeErrorZ), "LDKCResult_ClosingSignedDecodeErrorZ");
-       *ret_conv = ClosingSigned_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_set_rgb(uint32_t this_ptr, int8_tArray val) {
+       LDKUnsignedNodeAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKThreeBytes val_ref;
+       CHECK(val->arr_len == 3);
+       memcpy(val_ref.data, val->elems, 3);
+       UnsignedNodeAnnouncement_set_rgb(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_write(uint32_t obj) {
-       LDKClosingSignedFeeRange obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ClosingSignedFeeRange_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+int8_tArray  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_get_alias(uint32_t this_ptr) {
+       LDKUnsignedNodeAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *UnsignedNodeAnnouncement_get_alias(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ), "LDKCResult_ClosingSignedFeeRangeDecodeErrorZ");
-       *ret_conv = ClosingSignedFeeRange_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_set_alias(uint32_t this_ptr, int8_tArray val) {
+       LDKUnsignedNodeAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       UnsignedNodeAnnouncement_set_alias(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_CommitmentSigned_write(uint32_t obj) {
-       LDKCommitmentSigned obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = CommitmentSigned_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_set_addresses(uint32_t this_ptr, uint32_tArray val) {
+       LDKUnsignedNodeAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCVec_NetAddressZ val_constr;
+       val_constr.datalen = val->arr_len;
+       if (val_constr.datalen > 0)
+               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKNetAddress), "LDKCVec_NetAddressZ Elements");
+       else
+               val_constr.data = NULL;
+       uint32_t* val_vals = val->elems;
+       for (size_t m = 0; m < val_constr.datalen; m++) {
+               uint32_t val_conv_12 = val_vals[m];
+               void* val_conv_12_ptr = (void*)(((uint64_t)val_conv_12) & ~1);
+               CHECK_ACCESS(val_conv_12_ptr);
+               LDKNetAddress val_conv_12_conv = *(LDKNetAddress*)(val_conv_12_ptr);
+               val_conv_12_conv = NetAddress_clone((LDKNetAddress*)(((uint64_t)val_conv_12) & ~1));
+               val_constr.data[m] = val_conv_12_conv;
+       }
+       UnsignedNodeAnnouncement_set_addresses(&this_ptr_conv, val_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CommitmentSigned_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_CommitmentSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentSignedDecodeErrorZ), "LDKCResult_CommitmentSignedDecodeErrorZ");
-       *ret_conv = CommitmentSigned_read(ser_ref);
-       return (uint64_t)ret_conv;
+static inline uint64_t UnsignedNodeAnnouncement_clone_ptr(LDKUnsignedNodeAnnouncement *NONNULL_PTR arg) {
+       LDKUnsignedNodeAnnouncement ret_var = UnsignedNodeAnnouncement_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-int8_tArray  __attribute__((visibility("default"))) TS_FundingCreated_write(uint32_t obj) {
-       LDKFundingCreated obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = FundingCreated_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+       return ret_ref;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_FundingCreated_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_FundingCreatedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingCreatedDecodeErrorZ), "LDKCResult_FundingCreatedDecodeErrorZ");
-       *ret_conv = FundingCreated_read(ser_ref);
-       return (uint64_t)ret_conv;
+int64_t  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_clone_ptr(uint32_t arg) {
+       LDKUnsignedNodeAnnouncement arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = UnsignedNodeAnnouncement_clone_ptr(&arg_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_FundingSigned_write(uint32_t obj) {
-       LDKFundingSigned obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = FundingSigned_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKUnsignedNodeAnnouncement ret_var = UnsignedNodeAnnouncement_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_FundingSigned_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_FundingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingSignedDecodeErrorZ), "LDKCResult_FundingSignedDecodeErrorZ");
-       *ret_conv = FundingSigned_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_NodeAnnouncement_free(uint32_t this_obj) {
+       LDKNodeAnnouncement this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       NodeAnnouncement_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_FundingLocked_write(uint32_t obj) {
-       LDKFundingLocked obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = FundingLocked_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, NodeAnnouncement_get_signature(&this_ptr_conv).compact_form, 64);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_FundingLocked_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_FundingLockedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingLockedDecodeErrorZ), "LDKCResult_FundingLockedDecodeErrorZ");
-       *ret_conv = FundingLocked_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_NodeAnnouncement_set_signature(uint32_t this_ptr, int8_tArray val) {
+       LDKNodeAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKSignature val_ref;
+       CHECK(val->arr_len == 64);
+       memcpy(val_ref.compact_form, val->elems, 64);
+       NodeAnnouncement_set_signature(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_Init_write(uint32_t obj) {
-       LDKInit obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = Init_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncement_get_contents(uint32_t this_ptr) {
+       LDKNodeAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKUnsignedNodeAnnouncement ret_var = NodeAnnouncement_get_contents(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Init_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_InitDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitDecodeErrorZ), "LDKCResult_InitDecodeErrorZ");
-       *ret_conv = Init_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_NodeAnnouncement_set_contents(uint32_t this_ptr, uint32_t val) {
+       LDKNodeAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKUnsignedNodeAnnouncement val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = UnsignedNodeAnnouncement_clone(&val_conv);
+       NodeAnnouncement_set_contents(&this_ptr_conv, val_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_write(uint32_t obj) {
-       LDKOpenChannel obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = OpenChannel_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncement_new(int8_tArray signature_arg, uint32_t contents_arg) {
+       LDKSignature signature_arg_ref;
+       CHECK(signature_arg->arr_len == 64);
+       memcpy(signature_arg_ref.compact_form, signature_arg->elems, 64);
+       LDKUnsignedNodeAnnouncement contents_arg_conv;
+       contents_arg_conv.inner = (void*)(contents_arg & (~1));
+       contents_arg_conv.is_owned = (contents_arg & 1) || (contents_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(contents_arg_conv);
+       contents_arg_conv = UnsignedNodeAnnouncement_clone(&contents_arg_conv);
+       LDKNodeAnnouncement ret_var = NodeAnnouncement_new(signature_arg_ref, contents_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_OpenChannel_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_OpenChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OpenChannelDecodeErrorZ), "LDKCResult_OpenChannelDecodeErrorZ");
-       *ret_conv = OpenChannel_read(ser_ref);
-       return (uint64_t)ret_conv;
+static inline uint64_t NodeAnnouncement_clone_ptr(LDKNodeAnnouncement *NONNULL_PTR arg) {
+       LDKNodeAnnouncement ret_var = NodeAnnouncement_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_NodeAnnouncement_clone_ptr(uint32_t arg) {
+       LDKNodeAnnouncement arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = NodeAnnouncement_clone_ptr(&arg_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_RevokeAndACK_write(uint32_t obj) {
-       LDKRevokeAndACK obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = RevokeAndACK_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKNodeAnnouncement ret_var = NodeAnnouncement_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RevokeAndACK_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_RevokeAndACKDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RevokeAndACKDecodeErrorZ), "LDKCResult_RevokeAndACKDecodeErrorZ");
-       *ret_conv = RevokeAndACK_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_free(uint32_t this_obj) {
+       LDKUnsignedChannelAnnouncement this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       UnsignedChannelAnnouncement_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_Shutdown_write(uint32_t obj) {
-       LDKShutdown obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = Shutdown_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKChannelFeatures ret_var = UnsignedChannelAnnouncement_get_features(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Shutdown_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ShutdownDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownDecodeErrorZ), "LDKCResult_ShutdownDecodeErrorZ");
-       *ret_conv = Shutdown_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_features(uint32_t this_ptr, uint32_t val) {
+       LDKUnsignedChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKChannelFeatures val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = ChannelFeatures_clone(&val_conv);
+       UnsignedChannelAnnouncement_set_features(&this_ptr_conv, val_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UpdateFailHTLC_write(uint32_t obj) {
-       LDKUpdateFailHTLC obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = UpdateFailHTLC_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_get_chain_hash(uint32_t this_ptr) {
+       LDKUnsignedChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *UnsignedChannelAnnouncement_get_chain_hash(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UpdateFailHTLC_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_UpdateFailHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ), "LDKCResult_UpdateFailHTLCDecodeErrorZ");
-       *ret_conv = UpdateFailHTLC_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
+       LDKUnsignedChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       UnsignedChannelAnnouncement_set_chain_hash(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_write(uint32_t obj) {
-       LDKUpdateFailMalformedHTLC obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = UpdateFailMalformedHTLC_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+int64_t  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_get_short_channel_id(uint32_t this_ptr) {
+       LDKUnsignedChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = UnsignedChannelAnnouncement_get_short_channel_id(&this_ptr_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ), "LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ");
-       *ret_conv = UpdateFailMalformedHTLC_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_short_channel_id(uint32_t this_ptr, int64_t val) {
+       LDKUnsignedChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       UnsignedChannelAnnouncement_set_short_channel_id(&this_ptr_conv, val);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UpdateFee_write(uint32_t obj) {
-       LDKUpdateFee obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = UpdateFee_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_get_node_id_1(uint32_t this_ptr) {
+       LDKUnsignedChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, UnsignedChannelAnnouncement_get_node_id_1(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UpdateFee_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_UpdateFeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFeeDecodeErrorZ), "LDKCResult_UpdateFeeDecodeErrorZ");
-       *ret_conv = UpdateFee_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_node_id_1(uint32_t this_ptr, int8_tArray val) {
+       LDKUnsignedChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       UnsignedChannelAnnouncement_set_node_id_1(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_write(uint32_t obj) {
-       LDKUpdateFulfillHTLC obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = UpdateFulfillHTLC_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_get_node_id_2(uint32_t this_ptr) {
+       LDKUnsignedChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, UnsignedChannelAnnouncement_get_node_id_2(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_UpdateFulfillHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ), "LDKCResult_UpdateFulfillHTLCDecodeErrorZ");
-       *ret_conv = UpdateFulfillHTLC_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_node_id_2(uint32_t this_ptr, int8_tArray val) {
+       LDKUnsignedChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       UnsignedChannelAnnouncement_set_node_id_2(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UpdateAddHTLC_write(uint32_t obj) {
-       LDKUpdateAddHTLC obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = UpdateAddHTLC_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_get_bitcoin_key_1(uint32_t this_ptr) {
+       LDKUnsignedChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, UnsignedChannelAnnouncement_get_bitcoin_key_1(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UpdateAddHTLC_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_UpdateAddHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ), "LDKCResult_UpdateAddHTLCDecodeErrorZ");
-       *ret_conv = UpdateAddHTLC_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_bitcoin_key_1(uint32_t this_ptr, int8_tArray val) {
+       LDKUnsignedChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       UnsignedChannelAnnouncement_set_bitcoin_key_1(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_Ping_write(uint32_t obj) {
-       LDKPing obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = Ping_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_get_bitcoin_key_2(uint32_t this_ptr) {
+       LDKUnsignedChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, UnsignedChannelAnnouncement_get_bitcoin_key_2(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Ping_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_PingDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PingDecodeErrorZ), "LDKCResult_PingDecodeErrorZ");
-       *ret_conv = Ping_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_bitcoin_key_2(uint32_t this_ptr, int8_tArray val) {
+       LDKUnsignedChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       UnsignedChannelAnnouncement_set_bitcoin_key_2(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_Pong_write(uint32_t obj) {
-       LDKPong obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = Pong_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+static inline uint64_t UnsignedChannelAnnouncement_clone_ptr(LDKUnsignedChannelAnnouncement *NONNULL_PTR arg) {
+       LDKUnsignedChannelAnnouncement ret_var = UnsignedChannelAnnouncement_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_clone_ptr(uint32_t arg) {
+       LDKUnsignedChannelAnnouncement arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = UnsignedChannelAnnouncement_clone_ptr(&arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Pong_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_PongDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PongDecodeErrorZ), "LDKCResult_PongDecodeErrorZ");
-       *ret_conv = Pong_read(ser_ref);
-       return (uint64_t)ret_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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKUnsignedChannelAnnouncement ret_var = UnsignedChannelAnnouncement_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_write(uint32_t obj) {
-       LDKUnsignedChannelAnnouncement obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = UnsignedChannelAnnouncement_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+void  __attribute__((visibility("default"))) TS_ChannelAnnouncement_free(uint32_t this_obj) {
+       LDKChannelAnnouncement this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       ChannelAnnouncement_free(this_obj_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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, ChannelAnnouncement_get_node_signature_1(&this_ptr_conv).compact_form, 64);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ), "LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ");
-       *ret_conv = UnsignedChannelAnnouncement_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_ChannelAnnouncement_set_node_signature_1(uint32_t this_ptr, int8_tArray val) {
+       LDKChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKSignature val_ref;
+       CHECK(val->arr_len == 64);
+       memcpy(val_ref.compact_form, val->elems, 64);
+       ChannelAnnouncement_set_node_signature_1(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelAnnouncement_write(uint32_t obj) {
-       LDKChannelAnnouncement obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ChannelAnnouncement_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelAnnouncement_get_node_signature_2(uint32_t this_ptr) {
+       LDKChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, ChannelAnnouncement_get_node_signature_2(&this_ptr_conv).compact_form, 64);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelAnnouncement_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ), "LDKCResult_ChannelAnnouncementDecodeErrorZ");
-       *ret_conv = ChannelAnnouncement_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_ChannelAnnouncement_set_node_signature_2(uint32_t this_ptr, int8_tArray val) {
+       LDKChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKSignature val_ref;
+       CHECK(val->arr_len == 64);
+       memcpy(val_ref.compact_form, val->elems, 64);
+       ChannelAnnouncement_set_node_signature_2(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_write(uint32_t obj) {
-       LDKUnsignedChannelUpdate obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = UnsignedChannelUpdate_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelAnnouncement_get_bitcoin_signature_1(uint32_t this_ptr) {
+       LDKChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, ChannelAnnouncement_get_bitcoin_signature_1(&this_ptr_conv).compact_form, 64);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_UnsignedChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ), "LDKCResult_UnsignedChannelUpdateDecodeErrorZ");
-       *ret_conv = UnsignedChannelUpdate_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_ChannelAnnouncement_set_bitcoin_signature_1(uint32_t this_ptr, int8_tArray val) {
+       LDKChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKSignature val_ref;
+       CHECK(val->arr_len == 64);
+       memcpy(val_ref.compact_form, val->elems, 64);
+       ChannelAnnouncement_set_bitcoin_signature_1(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelUpdate_write(uint32_t obj) {
-       LDKChannelUpdate obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ChannelUpdate_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelAnnouncement_get_bitcoin_signature_2(uint32_t this_ptr) {
+       LDKChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, ChannelAnnouncement_get_bitcoin_signature_2(&this_ptr_conv).compact_form, 64);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelUpdate_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelUpdateDecodeErrorZ), "LDKCResult_ChannelUpdateDecodeErrorZ");
-       *ret_conv = ChannelUpdate_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_ChannelAnnouncement_set_bitcoin_signature_2(uint32_t this_ptr, int8_tArray val) {
+       LDKChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKSignature val_ref;
+       CHECK(val->arr_len == 64);
+       memcpy(val_ref.compact_form, val->elems, 64);
+       ChannelAnnouncement_set_bitcoin_signature_2(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ErrorMessage_write(uint32_t obj) {
-       LDKErrorMessage obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ErrorMessage_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelAnnouncement_get_contents(uint32_t this_ptr) {
+       LDKChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKUnsignedChannelAnnouncement ret_var = ChannelAnnouncement_get_contents(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ErrorMessage_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ErrorMessageDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ErrorMessageDecodeErrorZ), "LDKCResult_ErrorMessageDecodeErrorZ");
-       *ret_conv = ErrorMessage_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_ChannelAnnouncement_set_contents(uint32_t this_ptr, uint32_t val) {
+       LDKChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKUnsignedChannelAnnouncement val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = UnsignedChannelAnnouncement_clone(&val_conv);
+       ChannelAnnouncement_set_contents(&this_ptr_conv, val_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_write(uint32_t obj) {
-       LDKUnsignedNodeAnnouncement obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = UnsignedNodeAnnouncement_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelAnnouncement_new(int8_tArray node_signature_1_arg, int8_tArray node_signature_2_arg, int8_tArray bitcoin_signature_1_arg, int8_tArray bitcoin_signature_2_arg, uint32_t contents_arg) {
+       LDKSignature node_signature_1_arg_ref;
+       CHECK(node_signature_1_arg->arr_len == 64);
+       memcpy(node_signature_1_arg_ref.compact_form, node_signature_1_arg->elems, 64);
+       LDKSignature node_signature_2_arg_ref;
+       CHECK(node_signature_2_arg->arr_len == 64);
+       memcpy(node_signature_2_arg_ref.compact_form, node_signature_2_arg->elems, 64);
+       LDKSignature bitcoin_signature_1_arg_ref;
+       CHECK(bitcoin_signature_1_arg->arr_len == 64);
+       memcpy(bitcoin_signature_1_arg_ref.compact_form, bitcoin_signature_1_arg->elems, 64);
+       LDKSignature bitcoin_signature_2_arg_ref;
+       CHECK(bitcoin_signature_2_arg->arr_len == 64);
+       memcpy(bitcoin_signature_2_arg_ref.compact_form, bitcoin_signature_2_arg->elems, 64);
+       LDKUnsignedChannelAnnouncement contents_arg_conv;
+       contents_arg_conv.inner = (void*)(contents_arg & (~1));
+       contents_arg_conv.is_owned = (contents_arg & 1) || (contents_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(contents_arg_conv);
+       contents_arg_conv = UnsignedChannelAnnouncement_clone(&contents_arg_conv);
+       LDKChannelAnnouncement ret_var = ChannelAnnouncement_new(node_signature_1_arg_ref, node_signature_2_arg_ref, bitcoin_signature_1_arg_ref, bitcoin_signature_2_arg_ref, contents_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ), "LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ");
-       *ret_conv = UnsignedNodeAnnouncement_read(ser_ref);
-       return (uint64_t)ret_conv;
+static inline uint64_t ChannelAnnouncement_clone_ptr(LDKChannelAnnouncement *NONNULL_PTR arg) {
+       LDKChannelAnnouncement ret_var = ChannelAnnouncement_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-int8_tArray  __attribute__((visibility("default"))) TS_NodeAnnouncement_write(uint32_t obj) {
-       LDKNodeAnnouncement obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = NodeAnnouncement_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+       return ret_ref;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncement_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_NodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ), "LDKCResult_NodeAnnouncementDecodeErrorZ");
-       *ret_conv = NodeAnnouncement_read(ser_ref);
-       return (uint64_t)ret_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelAnnouncement_clone_ptr(uint32_t arg) {
+       LDKChannelAnnouncement arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ChannelAnnouncement_clone_ptr(&arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_QueryShortChannelIds_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_QueryShortChannelIdsDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ), "LDKCResult_QueryShortChannelIdsDecodeErrorZ");
-       *ret_conv = QueryShortChannelIds_read(ser_ref);
-       return (uint64_t)ret_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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKChannelAnnouncement ret_var = ChannelAnnouncement_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_QueryShortChannelIds_write(uint32_t obj) {
-       LDKQueryShortChannelIds obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = QueryShortChannelIds_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_free(uint32_t this_obj) {
+       LDKUnsignedChannelUpdate this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       UnsignedChannelUpdate_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_write(uint32_t obj) {
-       LDKReplyShortChannelIdsEnd obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ReplyShortChannelIdsEnd_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *UnsignedChannelUpdate_get_chain_hash(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ), "LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ");
-       *ret_conv = ReplyShortChannelIdsEnd_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       UnsignedChannelUpdate_set_chain_hash(&this_ptr_conv, val_ref);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_QueryChannelRange_end_blocknum(uint32_t this_arg) {
-       LDKQueryChannelRange this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int32_t ret_val = QueryChannelRange_end_blocknum(&this_arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_short_channel_id(uint32_t this_ptr) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = UnsignedChannelUpdate_get_short_channel_id(&this_ptr_conv);
        return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_QueryChannelRange_write(uint32_t obj) {
-       LDKQueryChannelRange obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = QueryChannelRange_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_short_channel_id(uint32_t this_ptr, int64_t val) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       UnsignedChannelUpdate_set_short_channel_id(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_QueryChannelRange_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_QueryChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ), "LDKCResult_QueryChannelRangeDecodeErrorZ");
-       *ret_conv = QueryChannelRange_read(ser_ref);
-       return (uint64_t)ret_conv;
+int32_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_timestamp(uint32_t this_ptr) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = UnsignedChannelUpdate_get_timestamp(&this_ptr_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ReplyChannelRange_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ReplyChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ), "LDKCResult_ReplyChannelRangeDecodeErrorZ");
-       *ret_conv = ReplyChannelRange_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_timestamp(uint32_t this_ptr, int32_t val) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       UnsignedChannelUpdate_set_timestamp(&this_ptr_conv, val);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ReplyChannelRange_write(uint32_t obj) {
-       LDKReplyChannelRange obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ReplyChannelRange_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+int8_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_flags(uint32_t this_ptr) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_t ret_val = UnsignedChannelUpdate_get_flags(&this_ptr_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_GossipTimestampFilter_write(uint32_t obj) {
-       LDKGossipTimestampFilter obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = GossipTimestampFilter_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_flags(uint32_t this_ptr, int8_t val) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       UnsignedChannelUpdate_set_flags(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_GossipTimestampFilter_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_GossipTimestampFilterDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ), "LDKCResult_GossipTimestampFilterDecodeErrorZ");
-       *ret_conv = GossipTimestampFilter_read(ser_ref);
-       return (uint64_t)ret_conv;
+int16_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_cltv_expiry_delta(uint32_t this_ptr) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int16_t ret_val = UnsignedChannelUpdate_get_cltv_expiry_delta(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CustomMessageHandler_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKCustomMessageHandler this_ptr_conv = *(LDKCustomMessageHandler*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       CustomMessageHandler_free(this_ptr_conv);
+void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_cltv_expiry_delta(uint32_t this_ptr, int16_t val) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       UnsignedChannelUpdate_set_cltv_expiry_delta(&this_ptr_conv, val);
+}
+
+int64_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_htlc_minimum_msat(uint32_t this_ptr) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = UnsignedChannelUpdate_get_htlc_minimum_msat(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_IgnoringMessageHandler_free(uint32_t this_obj) {
-       LDKIgnoringMessageHandler this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       IgnoringMessageHandler_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_htlc_minimum_msat(uint32_t this_ptr, int64_t val) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       UnsignedChannelUpdate_set_htlc_minimum_msat(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_IgnoringMessageHandler_new() {
-       LDKIgnoringMessageHandler ret_var = IgnoringMessageHandler_new();
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int32_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_fee_base_msat(uint32_t this_ptr) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = UnsignedChannelUpdate_get_fee_base_msat(&this_ptr_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_IgnoringMessageHandler_as_MessageSendEventsProvider(uint32_t this_arg) {
-       LDKIgnoringMessageHandler this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKMessageSendEventsProvider* ret_ret = MALLOC(sizeof(LDKMessageSendEventsProvider), "LDKMessageSendEventsProvider");
-       *ret_ret = IgnoringMessageHandler_as_MessageSendEventsProvider(&this_arg_conv);
-       return (uint64_t)ret_ret;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_fee_base_msat(uint32_t this_ptr, int32_t val) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       UnsignedChannelUpdate_set_fee_base_msat(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_IgnoringMessageHandler_as_RoutingMessageHandler(uint32_t this_arg) {
-       LDKIgnoringMessageHandler this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKRoutingMessageHandler* ret_ret = MALLOC(sizeof(LDKRoutingMessageHandler), "LDKRoutingMessageHandler");
-       *ret_ret = IgnoringMessageHandler_as_RoutingMessageHandler(&this_arg_conv);
-       return (uint64_t)ret_ret;
+int32_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_fee_proportional_millionths(uint32_t this_ptr) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = UnsignedChannelUpdate_get_fee_proportional_millionths(&this_ptr_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_IgnoringMessageHandler_as_CustomMessageReader(uint32_t this_arg) {
-       LDKIgnoringMessageHandler this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCustomMessageReader* ret_ret = MALLOC(sizeof(LDKCustomMessageReader), "LDKCustomMessageReader");
-       *ret_ret = IgnoringMessageHandler_as_CustomMessageReader(&this_arg_conv);
-       return (uint64_t)ret_ret;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_fee_proportional_millionths(uint32_t this_ptr, int32_t val) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       UnsignedChannelUpdate_set_fee_proportional_millionths(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_IgnoringMessageHandler_as_CustomMessageHandler(uint32_t this_arg) {
-       LDKIgnoringMessageHandler this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCustomMessageHandler* ret_ret = MALLOC(sizeof(LDKCustomMessageHandler), "LDKCustomMessageHandler");
-       *ret_ret = IgnoringMessageHandler_as_CustomMessageHandler(&this_arg_conv);
-       return (uint64_t)ret_ret;
+static inline uint64_t UnsignedChannelUpdate_clone_ptr(LDKUnsignedChannelUpdate *NONNULL_PTR arg) {
+       LDKUnsignedChannelUpdate ret_var = UnsignedChannelUpdate_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-void  __attribute__((visibility("default"))) TS_ErroringMessageHandler_free(uint32_t this_obj) {
-       LDKErroringMessageHandler this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ErroringMessageHandler_free(this_obj_conv);
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_clone_ptr(uint32_t arg) {
+       LDKUnsignedChannelUpdate arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = UnsignedChannelUpdate_clone_ptr(&arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ErroringMessageHandler_new() {
-       LDKErroringMessageHandler ret_var = ErroringMessageHandler_new();
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKUnsignedChannelUpdate ret_var = UnsignedChannelUpdate_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -28573,84 +26027,75 @@ uint32_t  __attribute__((visibility("default"))) TS_ErroringMessageHandler_new()
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ErroringMessageHandler_as_MessageSendEventsProvider(uint32_t this_arg) {
-       LDKErroringMessageHandler this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKMessageSendEventsProvider* ret_ret = MALLOC(sizeof(LDKMessageSendEventsProvider), "LDKMessageSendEventsProvider");
-       *ret_ret = ErroringMessageHandler_as_MessageSendEventsProvider(&this_arg_conv);
-       return (uint64_t)ret_ret;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ErroringMessageHandler_as_ChannelMessageHandler(uint32_t this_arg) {
-       LDKErroringMessageHandler this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKChannelMessageHandler* ret_ret = MALLOC(sizeof(LDKChannelMessageHandler), "LDKChannelMessageHandler");
-       *ret_ret = ErroringMessageHandler_as_ChannelMessageHandler(&this_arg_conv);
-       return (uint64_t)ret_ret;
-}
-
-void  __attribute__((visibility("default"))) TS_MessageHandler_free(uint32_t this_obj) {
-       LDKMessageHandler this_obj_conv;
+void  __attribute__((visibility("default"))) TS_ChannelUpdate_free(uint32_t this_obj) {
+       LDKChannelUpdate this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       MessageHandler_free(this_obj_conv);
+       ChannelUpdate_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageHandler_get_chan_handler(uint32_t this_ptr) {
-       LDKMessageHandler 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       // WARNING: This object doesn't live past this scope, needs clone!
-       uint64_t ret_ret = ((uint64_t)MessageHandler_get_chan_handler(&this_ptr_conv)) | 1;
-       return ret_ret;
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, ChannelUpdate_get_signature(&this_ptr_conv).compact_form, 64);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_MessageHandler_set_chan_handler(uint32_t this_ptr, uint32_t val) {
-       LDKMessageHandler this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelUpdate_set_signature(uint32_t this_ptr, int8_tArray val) {
+       LDKChannelUpdate this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKChannelMessageHandler val_conv = *(LDKChannelMessageHandler*)(val_ptr);
-       MessageHandler_set_chan_handler(&this_ptr_conv, val_conv);
+       LDKSignature val_ref;
+       CHECK(val->arr_len == 64);
+       memcpy(val_ref.compact_form, val->elems, 64);
+       ChannelUpdate_set_signature(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageHandler_get_route_handler(uint32_t this_ptr) {
-       LDKMessageHandler this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelUpdate_get_contents(uint32_t this_ptr) {
+       LDKChannelUpdate this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       // WARNING: This object doesn't live past this scope, needs clone!
-       uint64_t ret_ret = ((uint64_t)MessageHandler_get_route_handler(&this_ptr_conv)) | 1;
-       return ret_ret;
+       LDKUnsignedChannelUpdate ret_var = ChannelUpdate_get_contents(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_MessageHandler_set_route_handler(uint32_t this_ptr, uint32_t val) {
-       LDKMessageHandler this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelUpdate_set_contents(uint32_t this_ptr, uint32_t val) {
+       LDKChannelUpdate this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKRoutingMessageHandler val_conv = *(LDKRoutingMessageHandler*)(val_ptr);
-       MessageHandler_set_route_handler(&this_ptr_conv, val_conv);
+       LDKUnsignedChannelUpdate val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = UnsignedChannelUpdate_clone(&val_conv);
+       ChannelUpdate_set_contents(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageHandler_new(uint32_t chan_handler_arg, uint32_t route_handler_arg) {
-       void* chan_handler_arg_ptr = (void*)(((uint64_t)chan_handler_arg) & ~1);
-       CHECK_ACCESS(chan_handler_arg_ptr);
-       LDKChannelMessageHandler chan_handler_arg_conv = *(LDKChannelMessageHandler*)(chan_handler_arg_ptr);
-       void* route_handler_arg_ptr = (void*)(((uint64_t)route_handler_arg) & ~1);
-       CHECK_ACCESS(route_handler_arg_ptr);
-       LDKRoutingMessageHandler route_handler_arg_conv = *(LDKRoutingMessageHandler*)(route_handler_arg_ptr);
-       LDKMessageHandler ret_var = MessageHandler_new(chan_handler_arg_conv, route_handler_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelUpdate_new(int8_tArray signature_arg, uint32_t contents_arg) {
+       LDKSignature signature_arg_ref;
+       CHECK(signature_arg->arr_len == 64);
+       memcpy(signature_arg_ref.compact_form, signature_arg->elems, 64);
+       LDKUnsignedChannelUpdate contents_arg_conv;
+       contents_arg_conv.inner = (void*)(contents_arg & (~1));
+       contents_arg_conv.is_owned = (contents_arg & 1) || (contents_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(contents_arg_conv);
+       contents_arg_conv = UnsignedChannelUpdate_clone(&contents_arg_conv);
+       LDKChannelUpdate ret_var = ChannelUpdate_new(signature_arg_ref, contents_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -28662,64 +26107,112 @@ uint32_t  __attribute__((visibility("default"))) TS_MessageHandler_new(uint32_t
        return ret_ref;
 }
 
-static inline uint64_t SocketDescriptor_clone_ptr(LDKSocketDescriptor *NONNULL_PTR arg) {
-       LDKSocketDescriptor* ret_ret = MALLOC(sizeof(LDKSocketDescriptor), "LDKSocketDescriptor");
-       *ret_ret = SocketDescriptor_clone(arg);
-       return (uint64_t)ret_ret;
+static inline uint64_t ChannelUpdate_clone_ptr(LDKChannelUpdate *NONNULL_PTR arg) {
+       LDKChannelUpdate ret_var = ChannelUpdate_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-int64_t  __attribute__((visibility("default"))) TS_SocketDescriptor_clone_ptr(uint32_t arg) {
-       void* arg_ptr = (void*)(((uint64_t)arg) & ~1);
-       if (!(arg & 1)) { CHECK_ACCESS(arg_ptr); }
-       LDKSocketDescriptor* arg_conv = (LDKSocketDescriptor*)arg_ptr;
-       int64_t ret_val = SocketDescriptor_clone_ptr(arg_conv);
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_ChannelUpdate_clone_ptr(uint32_t arg) {
+       LDKChannelUpdate arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ChannelUpdate_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SocketDescriptor_clone(uint32_t orig) {
-       void* orig_ptr = (void*)(((uint64_t)orig) & ~1);
-       if (!(orig & 1)) { CHECK_ACCESS(orig_ptr); }
-       LDKSocketDescriptor* orig_conv = (LDKSocketDescriptor*)orig_ptr;
-       LDKSocketDescriptor* ret_ret = MALLOC(sizeof(LDKSocketDescriptor), "LDKSocketDescriptor");
-       *ret_ret = SocketDescriptor_clone(orig_conv);
-       return (uint64_t)ret_ret;
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKChannelUpdate ret_var = ChannelUpdate_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+void  __attribute__((visibility("default"))) TS_QueryChannelRange_free(uint32_t this_obj) {
+       LDKQueryChannelRange this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       QueryChannelRange_free(this_obj_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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *QueryChannelRange_get_chain_hash(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_SocketDescriptor_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKSocketDescriptor this_ptr_conv = *(LDKSocketDescriptor*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       SocketDescriptor_free(this_ptr_conv);
+void  __attribute__((visibility("default"))) TS_QueryChannelRange_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
+       LDKQueryChannelRange this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       QueryChannelRange_set_chain_hash(&this_ptr_conv, val_ref);
 }
 
-void  __attribute__((visibility("default"))) TS_PeerHandleError_free(uint32_t this_obj) {
-       LDKPeerHandleError this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       PeerHandleError_free(this_obj_conv);
+int32_t  __attribute__((visibility("default"))) TS_QueryChannelRange_get_first_blocknum(uint32_t this_ptr) {
+       LDKQueryChannelRange this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = QueryChannelRange_get_first_blocknum(&this_ptr_conv);
+       return ret_val;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_PeerHandleError_get_no_connection_possible(uint32_t this_ptr) {
-       LDKPeerHandleError this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_QueryChannelRange_set_first_blocknum(uint32_t this_ptr, int32_t val) {
+       LDKQueryChannelRange this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = PeerHandleError_get_no_connection_possible(&this_ptr_conv);
+       QueryChannelRange_set_first_blocknum(&this_ptr_conv, val);
+}
+
+int32_t  __attribute__((visibility("default"))) TS_QueryChannelRange_get_number_of_blocks(uint32_t this_ptr) {
+       LDKQueryChannelRange this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = QueryChannelRange_get_number_of_blocks(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_PeerHandleError_set_no_connection_possible(uint32_t this_ptr, jboolean val) {
-       LDKPeerHandleError this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_QueryChannelRange_set_number_of_blocks(uint32_t this_ptr, int32_t val) {
+       LDKQueryChannelRange this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       PeerHandleError_set_no_connection_possible(&this_ptr_conv, val);
+       QueryChannelRange_set_number_of_blocks(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PeerHandleError_new(jboolean no_connection_possible_arg) {
-       LDKPeerHandleError ret_var = PeerHandleError_new(no_connection_possible_arg);
+uint32_t  __attribute__((visibility("default"))) TS_QueryChannelRange_new(int8_tArray chain_hash_arg, int32_t first_blocknum_arg, int32_t number_of_blocks_arg) {
+       LDKThirtyTwoBytes chain_hash_arg_ref;
+       CHECK(chain_hash_arg->arr_len == 32);
+       memcpy(chain_hash_arg_ref.data, chain_hash_arg->elems, 32);
+       LDKQueryChannelRange ret_var = QueryChannelRange_new(chain_hash_arg_ref, first_blocknum_arg, number_of_blocks_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -28731,8 +26224,8 @@ uint32_t  __attribute__((visibility("default"))) TS_PeerHandleError_new(jboolean
        return ret_ref;
 }
 
-static inline uint64_t PeerHandleError_clone_ptr(LDKPeerHandleError *NONNULL_PTR arg) {
-       LDKPeerHandleError ret_var = PeerHandleError_clone(arg);
+static inline uint64_t QueryChannelRange_clone_ptr(LDKQueryChannelRange *NONNULL_PTR arg) {
+       LDKQueryChannelRange ret_var = QueryChannelRange_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -28743,21 +26236,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_PeerHandleError_clone_ptr(uint32_t arg) {
-       LDKPeerHandleError arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_QueryChannelRange_clone_ptr(uint32_t arg) {
+       LDKQueryChannelRange arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = PeerHandleError_clone_ptr(&arg_conv);
+       int64_t ret_val = QueryChannelRange_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PeerHandleError_clone(uint32_t orig) {
-       LDKPeerHandleError 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKPeerHandleError ret_var = PeerHandleError_clone(&orig_conv);
+       LDKQueryChannelRange ret_var = QueryChannelRange_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -28769,390 +26262,334 @@ uint32_t  __attribute__((visibility("default"))) TS_PeerHandleError_clone(uint32
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_PeerManager_free(uint32_t this_obj) {
-       LDKPeerManager this_obj_conv;
+void  __attribute__((visibility("default"))) TS_ReplyChannelRange_free(uint32_t this_obj) {
+       LDKReplyChannelRange this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       PeerManager_free(this_obj_conv);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_PeerManager_new(uint32_t message_handler, int8_tArray our_node_secret, int8_tArray ephemeral_random_data, uint32_t logger, uint32_t custom_message_handler) {
-       LDKMessageHandler message_handler_conv;
-       message_handler_conv.inner = (void*)(message_handler & (~1));
-       message_handler_conv.is_owned = (message_handler & 1) || (message_handler == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(message_handler_conv);
-       // Warning: we need a move here but no clone is available for LDKMessageHandler
-       LDKSecretKey our_node_secret_ref;
-       CHECK(*((uint32_t*)our_node_secret) == 32);
-       memcpy(our_node_secret_ref.bytes, (uint8_t*)(our_node_secret + 4), 32);
-       unsigned char ephemeral_random_data_arr[32];
-       CHECK(*((uint32_t*)ephemeral_random_data) == 32);
-       memcpy(ephemeral_random_data_arr, (uint8_t*)(ephemeral_random_data + 4), 32);
-       unsigned char (*ephemeral_random_data_ref)[32] = &ephemeral_random_data_arr;
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       CHECK_ACCESS(logger_ptr);
-       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
-       void* custom_message_handler_ptr = (void*)(((uint64_t)custom_message_handler) & ~1);
-       CHECK_ACCESS(custom_message_handler_ptr);
-       LDKCustomMessageHandler custom_message_handler_conv = *(LDKCustomMessageHandler*)(custom_message_handler_ptr);
-       LDKPeerManager ret_var = PeerManager_new(message_handler_conv, our_node_secret_ref, ephemeral_random_data_ref, logger_conv, custom_message_handler_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       ReplyChannelRange_free(this_obj_conv);
 }
 
-ptrArray  __attribute__((visibility("default"))) TS_PeerManager_get_peer_node_ids(uint32_t this_arg) {
-       LDKPeerManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCVec_PublicKeyZ ret_var = PeerManager_get_peer_node_ids(&this_arg_conv);
-       ptrArray ret_arr = NULL;
-       ret_arr = init_arr(ret_var.datalen, sizeof(uint32_t), "Native ptrArray Bytes");
-       int8_tArray *ret_arr_ptr = (int8_tArray*)(ret_arr + 4);
-       for (size_t m = 0; m < ret_var.datalen; m++) {
-               int8_tArray ret_conv_12_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-               memcpy((uint8_t*)(ret_conv_12_arr + 4), ret_var.data[m].compressed_form, 33);
-               ret_arr_ptr[m] = ret_conv_12_arr;
-       }
-       
-       FREE(ret_var.data);
+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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *ReplyChannelRange_get_chain_hash(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PeerManager_new_outbound_connection(uint32_t this_arg, int8_tArray their_node_id, uint32_t descriptor) {
-       LDKPeerManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       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);
-       void* descriptor_ptr = (void*)(((uint64_t)descriptor) & ~1);
-       CHECK_ACCESS(descriptor_ptr);
-       LDKSocketDescriptor descriptor_conv = *(LDKSocketDescriptor*)(descriptor_ptr);
-       LDKCResult_CVec_u8ZPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ), "LDKCResult_CVec_u8ZPeerHandleErrorZ");
-       *ret_conv = PeerManager_new_outbound_connection(&this_arg_conv, their_node_id_ref, descriptor_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_PeerManager_new_inbound_connection(uint32_t this_arg, uint32_t descriptor) {
-       LDKPeerManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       void* descriptor_ptr = (void*)(((uint64_t)descriptor) & ~1);
-       CHECK_ACCESS(descriptor_ptr);
-       LDKSocketDescriptor descriptor_conv = *(LDKSocketDescriptor*)(descriptor_ptr);
-       LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ");
-       *ret_conv = PeerManager_new_inbound_connection(&this_arg_conv, descriptor_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_PeerManager_write_buffer_space_avail(uint32_t this_arg, uint32_t descriptor) {
-       LDKPeerManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       void* descriptor_ptr = (void*)(((uint64_t)descriptor) & ~1);
-       if (!(descriptor & 1)) { CHECK_ACCESS(descriptor_ptr); }
-       LDKSocketDescriptor* descriptor_conv = (LDKSocketDescriptor*)descriptor_ptr;
-       LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ");
-       *ret_conv = PeerManager_write_buffer_space_avail(&this_arg_conv, descriptor_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_PeerManager_read_event(uint32_t this_arg, uint32_t peer_descriptor, int8_tArray data) {
-       LDKPeerManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       void* peer_descriptor_ptr = (void*)(((uint64_t)peer_descriptor) & ~1);
-       if (!(peer_descriptor & 1)) { CHECK_ACCESS(peer_descriptor_ptr); }
-       LDKSocketDescriptor* peer_descriptor_conv = (LDKSocketDescriptor*)peer_descriptor_ptr;
-       LDKu8slice data_ref;
-       data_ref.datalen = *((uint32_t*)data);
-       data_ref.data = (int8_t*)(data + 4);
-       LDKCResult_boolPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolPeerHandleErrorZ), "LDKCResult_boolPeerHandleErrorZ");
-       *ret_conv = PeerManager_read_event(&this_arg_conv, peer_descriptor_conv, data_ref);
-       return (uint64_t)ret_conv;
-}
-
-void  __attribute__((visibility("default"))) TS_PeerManager_process_events(uint32_t this_arg) {
-       LDKPeerManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       PeerManager_process_events(&this_arg_conv);
-}
-
-void  __attribute__((visibility("default"))) TS_PeerManager_socket_disconnected(uint32_t this_arg, uint32_t descriptor) {
-       LDKPeerManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       void* descriptor_ptr = (void*)(((uint64_t)descriptor) & ~1);
-       if (!(descriptor & 1)) { CHECK_ACCESS(descriptor_ptr); }
-       LDKSocketDescriptor* descriptor_conv = (LDKSocketDescriptor*)descriptor_ptr;
-       PeerManager_socket_disconnected(&this_arg_conv, descriptor_conv);
+void  __attribute__((visibility("default"))) TS_ReplyChannelRange_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
+       LDKReplyChannelRange this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       ReplyChannelRange_set_chain_hash(&this_ptr_conv, val_ref);
 }
 
-void  __attribute__((visibility("default"))) TS_PeerManager_disconnect_by_node_id(uint32_t this_arg, int8_tArray node_id, jboolean no_connection_possible) {
-       LDKPeerManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       PeerManager_disconnect_by_node_id(&this_arg_conv, node_id_ref, no_connection_possible);
+int32_t  __attribute__((visibility("default"))) TS_ReplyChannelRange_get_first_blocknum(uint32_t this_ptr) {
+       LDKReplyChannelRange this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = ReplyChannelRange_get_first_blocknum(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_PeerManager_disconnect_all_peers(uint32_t this_arg) {
-       LDKPeerManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       PeerManager_disconnect_all_peers(&this_arg_conv);
+void  __attribute__((visibility("default"))) TS_ReplyChannelRange_set_first_blocknum(uint32_t this_ptr, int32_t val) {
+       LDKReplyChannelRange this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ReplyChannelRange_set_first_blocknum(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_PeerManager_timer_tick_occurred(uint32_t this_arg) {
-       LDKPeerManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       PeerManager_timer_tick_occurred(&this_arg_conv);
+int32_t  __attribute__((visibility("default"))) TS_ReplyChannelRange_get_number_of_blocks(uint32_t this_ptr) {
+       LDKReplyChannelRange this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = ReplyChannelRange_get_number_of_blocks(&this_ptr_conv);
+       return ret_val;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_htlc_success_tx_weight(jboolean opt_anchors) {
-       int64_t ret_val = htlc_success_tx_weight(opt_anchors);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_ReplyChannelRange_set_number_of_blocks(uint32_t this_ptr, int32_t val) {
+       LDKReplyChannelRange this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ReplyChannelRange_set_number_of_blocks(&this_ptr_conv, val);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_htlc_timeout_tx_weight(jboolean opt_anchors) {
-       int64_t ret_val = htlc_timeout_tx_weight(opt_anchors);
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       jboolean ret_val = ReplyChannelRange_get_sync_complete(&this_ptr_conv);
        return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_build_commitment_secret(int8_tArray commitment_seed, int64_t idx) {
-       unsigned char commitment_seed_arr[32];
-       CHECK(*((uint32_t*)commitment_seed) == 32);
-       memcpy(commitment_seed_arr, (uint8_t*)(commitment_seed + 4), 32);
-       unsigned char (*commitment_seed_ref)[32] = &commitment_seed_arr;
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), build_commitment_secret(commitment_seed_ref, idx).data, 32);
-       return ret_arr;
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ReplyChannelRange_set_sync_complete(&this_ptr_conv, val);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_build_closing_transaction(int64_t to_holder_value_sat, int64_t to_counterparty_value_sat, int8_tArray to_holder_script, int8_tArray to_counterparty_script, uint32_t funding_outpoint) {
-       LDKCVec_u8Z to_holder_script_ref;
-       to_holder_script_ref.datalen = *((uint32_t*)to_holder_script);
-       to_holder_script_ref.data = MALLOC(to_holder_script_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(to_holder_script_ref.data, (uint8_t*)(to_holder_script + 4), to_holder_script_ref.datalen);
-       LDKCVec_u8Z to_counterparty_script_ref;
-       to_counterparty_script_ref.datalen = *((uint32_t*)to_counterparty_script);
-       to_counterparty_script_ref.data = MALLOC(to_counterparty_script_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(to_counterparty_script_ref.data, (uint8_t*)(to_counterparty_script + 4), to_counterparty_script_ref.datalen);
-       LDKOutPoint funding_outpoint_conv;
-       funding_outpoint_conv.inner = (void*)(funding_outpoint & (~1));
-       funding_outpoint_conv.is_owned = (funding_outpoint & 1) || (funding_outpoint == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_outpoint_conv);
-       funding_outpoint_conv = OutPoint_clone(&funding_outpoint_conv);
-       LDKTransaction ret_var = build_closing_transaction(to_holder_value_sat, to_counterparty_value_sat, to_holder_script_ref, to_counterparty_script_ref, funding_outpoint_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       Transaction_free(ret_var);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_ReplyChannelRange_set_short_channel_ids(uint32_t this_ptr, int64_tArray val) {
+       LDKReplyChannelRange this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCVec_u64Z val_constr;
+       val_constr.datalen = val->arr_len;
+       if (val_constr.datalen > 0)
+               val_constr.data = MALLOC(val_constr.datalen * sizeof(int64_t), "LDKCVec_u64Z Elements");
+       else
+               val_constr.data = NULL;
+       int64_t* val_vals = val->elems;
+       for (size_t i = 0; i < val_constr.datalen; i++) {
+               int64_t val_conv_8 = val_vals[i];
+               val_constr.data[i] = val_conv_8;
+       }
+       ReplyChannelRange_set_short_channel_ids(&this_ptr_conv, val_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_derive_private_key(int8_tArray per_commitment_point, int8_tArray base_secret) {
-       LDKPublicKey per_commitment_point_ref;
-       CHECK(*((uint32_t*)per_commitment_point) == 33);
-       memcpy(per_commitment_point_ref.compressed_form, (uint8_t*)(per_commitment_point + 4), 33);
-       unsigned char base_secret_arr[32];
-       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_SecretKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SecretKeyErrorZ), "LDKCResult_SecretKeyErrorZ");
-       *ret_conv = derive_private_key(per_commitment_point_ref, base_secret_ref);
-       return (uint64_t)ret_conv;
+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(chain_hash_arg->arr_len == 32);
+       memcpy(chain_hash_arg_ref.data, chain_hash_arg->elems, 32);
+       LDKCVec_u64Z short_channel_ids_arg_constr;
+       short_channel_ids_arg_constr.datalen = short_channel_ids_arg->arr_len;
+       if (short_channel_ids_arg_constr.datalen > 0)
+               short_channel_ids_arg_constr.data = MALLOC(short_channel_ids_arg_constr.datalen * sizeof(int64_t), "LDKCVec_u64Z Elements");
+       else
+               short_channel_ids_arg_constr.data = NULL;
+       int64_t* short_channel_ids_arg_vals = short_channel_ids_arg->elems;
+       for (size_t i = 0; i < short_channel_ids_arg_constr.datalen; i++) {
+               int64_t short_channel_ids_arg_conv_8 = short_channel_ids_arg_vals[i];
+               short_channel_ids_arg_constr.data[i] = short_channel_ids_arg_conv_8;
+       }
+       LDKReplyChannelRange ret_var = ReplyChannelRange_new(chain_hash_arg_ref, first_blocknum_arg, number_of_blocks_arg, sync_complete_arg, short_channel_ids_arg_constr);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_derive_public_key(int8_tArray per_commitment_point, int8_tArray base_point) {
-       LDKPublicKey per_commitment_point_ref;
-       CHECK(*((uint32_t*)per_commitment_point) == 33);
-       memcpy(per_commitment_point_ref.compressed_form, (uint8_t*)(per_commitment_point + 4), 33);
-       LDKPublicKey base_point_ref;
-       CHECK(*((uint32_t*)base_point) == 33);
-       memcpy(base_point_ref.compressed_form, (uint8_t*)(base_point + 4), 33);
-       LDKCResult_PublicKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeyErrorZ), "LDKCResult_PublicKeyErrorZ");
-       *ret_conv = derive_public_key(per_commitment_point_ref, base_point_ref);
-       return (uint64_t)ret_conv;
+static inline uint64_t ReplyChannelRange_clone_ptr(LDKReplyChannelRange *NONNULL_PTR arg) {
+       LDKReplyChannelRange ret_var = ReplyChannelRange_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_derive_private_revocation_key(int8_tArray per_commitment_secret, int8_tArray countersignatory_revocation_base_secret) {
-       unsigned char per_commitment_secret_arr[32];
-       CHECK(*((uint32_t*)per_commitment_secret) == 32);
-       memcpy(per_commitment_secret_arr, (uint8_t*)(per_commitment_secret + 4), 32);
-       unsigned char (*per_commitment_secret_ref)[32] = &per_commitment_secret_arr;
-       unsigned char countersignatory_revocation_base_secret_arr[32];
-       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_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 (uint64_t)ret_conv;
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_ReplyChannelRange_clone_ptr(uint32_t arg) {
+       LDKReplyChannelRange arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ReplyChannelRange_clone_ptr(&arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_derive_public_revocation_key(int8_tArray per_commitment_point, int8_tArray countersignatory_revocation_base_point) {
-       LDKPublicKey per_commitment_point_ref;
-       CHECK(*((uint32_t*)per_commitment_point) == 33);
-       memcpy(per_commitment_point_ref.compressed_form, (uint8_t*)(per_commitment_point + 4), 33);
-       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_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 (uint64_t)ret_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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKReplyChannelRange ret_var = ReplyChannelRange_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_TxCreationKeys_free(uint32_t this_obj) {
-       LDKTxCreationKeys this_obj_conv;
+void  __attribute__((visibility("default"))) TS_QueryShortChannelIds_free(uint32_t this_obj) {
+       LDKQueryShortChannelIds this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       TxCreationKeys_free(this_obj_conv);
+       QueryShortChannelIds_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_TxCreationKeys_get_per_commitment_point(uint32_t this_ptr) {
-       LDKTxCreationKeys 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), TxCreationKeys_get_per_commitment_point(&this_ptr_conv).compressed_form, 33);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *QueryShortChannelIds_get_chain_hash(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_TxCreationKeys_set_per_commitment_point(uint32_t this_ptr, int8_tArray val) {
-       LDKTxCreationKeys this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_QueryShortChannelIds_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
+       LDKQueryShortChannelIds this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       TxCreationKeys_set_per_commitment_point(&this_ptr_conv, val_ref);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       QueryShortChannelIds_set_chain_hash(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_TxCreationKeys_get_revocation_key(uint32_t this_ptr) {
-       LDKTxCreationKeys this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_QueryShortChannelIds_set_short_channel_ids(uint32_t this_ptr, int64_tArray val) {
+       LDKQueryShortChannelIds this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), TxCreationKeys_get_revocation_key(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       LDKCVec_u64Z val_constr;
+       val_constr.datalen = val->arr_len;
+       if (val_constr.datalen > 0)
+               val_constr.data = MALLOC(val_constr.datalen * sizeof(int64_t), "LDKCVec_u64Z Elements");
+       else
+               val_constr.data = NULL;
+       int64_t* val_vals = val->elems;
+       for (size_t i = 0; i < val_constr.datalen; i++) {
+               int64_t val_conv_8 = val_vals[i];
+               val_constr.data[i] = val_conv_8;
+       }
+       QueryShortChannelIds_set_short_channel_ids(&this_ptr_conv, val_constr);
 }
 
-void  __attribute__((visibility("default"))) TS_TxCreationKeys_set_revocation_key(uint32_t this_ptr, int8_tArray val) {
-       LDKTxCreationKeys this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       TxCreationKeys_set_revocation_key(&this_ptr_conv, val_ref);
+uint32_t  __attribute__((visibility("default"))) TS_QueryShortChannelIds_new(int8_tArray chain_hash_arg, int64_tArray short_channel_ids_arg) {
+       LDKThirtyTwoBytes chain_hash_arg_ref;
+       CHECK(chain_hash_arg->arr_len == 32);
+       memcpy(chain_hash_arg_ref.data, chain_hash_arg->elems, 32);
+       LDKCVec_u64Z short_channel_ids_arg_constr;
+       short_channel_ids_arg_constr.datalen = short_channel_ids_arg->arr_len;
+       if (short_channel_ids_arg_constr.datalen > 0)
+               short_channel_ids_arg_constr.data = MALLOC(short_channel_ids_arg_constr.datalen * sizeof(int64_t), "LDKCVec_u64Z Elements");
+       else
+               short_channel_ids_arg_constr.data = NULL;
+       int64_t* short_channel_ids_arg_vals = short_channel_ids_arg->elems;
+       for (size_t i = 0; i < short_channel_ids_arg_constr.datalen; i++) {
+               int64_t short_channel_ids_arg_conv_8 = short_channel_ids_arg_vals[i];
+               short_channel_ids_arg_constr.data[i] = short_channel_ids_arg_conv_8;
+       }
+       LDKQueryShortChannelIds ret_var = QueryShortChannelIds_new(chain_hash_arg_ref, short_channel_ids_arg_constr);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_TxCreationKeys_get_broadcaster_htlc_key(uint32_t this_ptr) {
-       LDKTxCreationKeys this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), TxCreationKeys_get_broadcaster_htlc_key(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+static inline uint64_t QueryShortChannelIds_clone_ptr(LDKQueryShortChannelIds *NONNULL_PTR arg) {
+       LDKQueryShortChannelIds ret_var = QueryShortChannelIds_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_QueryShortChannelIds_clone_ptr(uint32_t arg) {
+       LDKQueryShortChannelIds arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = QueryShortChannelIds_clone_ptr(&arg_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_TxCreationKeys_set_broadcaster_htlc_key(uint32_t this_ptr, int8_tArray val) {
-       LDKTxCreationKeys this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       TxCreationKeys_set_broadcaster_htlc_key(&this_ptr_conv, val_ref);
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKQueryShortChannelIds ret_var = QueryShortChannelIds_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_TxCreationKeys_get_countersignatory_htlc_key(uint32_t this_ptr) {
-       LDKTxCreationKeys this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_free(uint32_t this_obj) {
+       LDKReplyShortChannelIdsEnd this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       ReplyShortChannelIdsEnd_free(this_obj_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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), TxCreationKeys_get_countersignatory_htlc_key(&this_ptr_conv).compressed_form, 33);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *ReplyShortChannelIdsEnd_get_chain_hash(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_TxCreationKeys_set_countersignatory_htlc_key(uint32_t this_ptr, int8_tArray val) {
-       LDKTxCreationKeys this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
+       LDKReplyShortChannelIdsEnd this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       TxCreationKeys_set_countersignatory_htlc_key(&this_ptr_conv, val_ref);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       ReplyShortChannelIdsEnd_set_chain_hash(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_TxCreationKeys_get_broadcaster_delayed_payment_key(uint32_t this_ptr) {
-       LDKTxCreationKeys this_ptr_conv;
+jboolean  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_get_full_information(uint32_t this_ptr) {
+       LDKReplyShortChannelIdsEnd this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), TxCreationKeys_get_broadcaster_delayed_payment_key(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       jboolean ret_val = ReplyShortChannelIdsEnd_get_full_information(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_TxCreationKeys_set_broadcaster_delayed_payment_key(uint32_t this_ptr, int8_tArray val) {
-       LDKTxCreationKeys this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_set_full_information(uint32_t this_ptr, jboolean val) {
+       LDKReplyShortChannelIdsEnd this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       TxCreationKeys_set_broadcaster_delayed_payment_key(&this_ptr_conv, val_ref);
+       ReplyShortChannelIdsEnd_set_full_information(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_TxCreationKeys_new(int8_tArray per_commitment_point_arg, int8_tArray revocation_key_arg, int8_tArray broadcaster_htlc_key_arg, int8_tArray countersignatory_htlc_key_arg, int8_tArray broadcaster_delayed_payment_key_arg) {
-       LDKPublicKey per_commitment_point_arg_ref;
-       CHECK(*((uint32_t*)per_commitment_point_arg) == 33);
-       memcpy(per_commitment_point_arg_ref.compressed_form, (uint8_t*)(per_commitment_point_arg + 4), 33);
-       LDKPublicKey revocation_key_arg_ref;
-       CHECK(*((uint32_t*)revocation_key_arg) == 33);
-       memcpy(revocation_key_arg_ref.compressed_form, (uint8_t*)(revocation_key_arg + 4), 33);
-       LDKPublicKey broadcaster_htlc_key_arg_ref;
-       CHECK(*((uint32_t*)broadcaster_htlc_key_arg) == 33);
-       memcpy(broadcaster_htlc_key_arg_ref.compressed_form, (uint8_t*)(broadcaster_htlc_key_arg + 4), 33);
-       LDKPublicKey countersignatory_htlc_key_arg_ref;
-       CHECK(*((uint32_t*)countersignatory_htlc_key_arg) == 33);
-       memcpy(countersignatory_htlc_key_arg_ref.compressed_form, (uint8_t*)(countersignatory_htlc_key_arg + 4), 33);
-       LDKPublicKey broadcaster_delayed_payment_key_arg_ref;
-       CHECK(*((uint32_t*)broadcaster_delayed_payment_key_arg) == 33);
-       memcpy(broadcaster_delayed_payment_key_arg_ref.compressed_form, (uint8_t*)(broadcaster_delayed_payment_key_arg + 4), 33);
-       LDKTxCreationKeys ret_var = TxCreationKeys_new(per_commitment_point_arg_ref, revocation_key_arg_ref, broadcaster_htlc_key_arg_ref, countersignatory_htlc_key_arg_ref, broadcaster_delayed_payment_key_arg_ref);
+uint32_t  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_new(int8_tArray chain_hash_arg, jboolean full_information_arg) {
+       LDKThirtyTwoBytes chain_hash_arg_ref;
+       CHECK(chain_hash_arg->arr_len == 32);
+       memcpy(chain_hash_arg_ref.data, chain_hash_arg->elems, 32);
+       LDKReplyShortChannelIdsEnd ret_var = ReplyShortChannelIdsEnd_new(chain_hash_arg_ref, full_information_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -29164,8 +26601,8 @@ uint32_t  __attribute__((visibility("default"))) TS_TxCreationKeys_new(int8_tArr
        return ret_ref;
 }
 
-static inline uint64_t TxCreationKeys_clone_ptr(LDKTxCreationKeys *NONNULL_PTR arg) {
-       LDKTxCreationKeys ret_var = TxCreationKeys_clone(arg);
+static inline uint64_t ReplyShortChannelIdsEnd_clone_ptr(LDKReplyShortChannelIdsEnd *NONNULL_PTR arg) {
+       LDKReplyShortChannelIdsEnd ret_var = ReplyShortChannelIdsEnd_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -29176,21 +26613,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_TxCreationKeys_clone_ptr(uint32_t arg) {
-       LDKTxCreationKeys arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_clone_ptr(uint32_t arg) {
+       LDKReplyShortChannelIdsEnd arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = TxCreationKeys_clone_ptr(&arg_conv);
+       int64_t ret_val = ReplyShortChannelIdsEnd_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_TxCreationKeys_clone(uint32_t orig) {
-       LDKTxCreationKeys 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKTxCreationKeys ret_var = TxCreationKeys_clone(&orig_conv);
+       LDKReplyShortChannelIdsEnd ret_var = ReplyShortChannelIdsEnd_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -29202,157 +26639,74 @@ uint32_t  __attribute__((visibility("default"))) TS_TxCreationKeys_clone(uint32_
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_TxCreationKeys_write(uint32_t obj) {
-       LDKTxCreationKeys obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = TxCreationKeys_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_TxCreationKeys_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_TxCreationKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysDecodeErrorZ), "LDKCResult_TxCreationKeysDecodeErrorZ");
-       *ret_conv = TxCreationKeys_read(ser_ref);
-       return (uint64_t)ret_conv;
-}
-
-void  __attribute__((visibility("default"))) TS_ChannelPublicKeys_free(uint32_t this_obj) {
-       LDKChannelPublicKeys this_obj_conv;
+void  __attribute__((visibility("default"))) TS_GossipTimestampFilter_free(uint32_t this_obj) {
+       LDKGossipTimestampFilter this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelPublicKeys_free(this_obj_conv);
-}
-
-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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ChannelPublicKeys_get_funding_pubkey(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
-}
-
-void  __attribute__((visibility("default"))) TS_ChannelPublicKeys_set_funding_pubkey(uint32_t this_ptr, int8_tArray val) {
-       LDKChannelPublicKeys this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       ChannelPublicKeys_set_funding_pubkey(&this_ptr_conv, val_ref);
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelPublicKeys_get_revocation_basepoint(uint32_t this_ptr) {
-       LDKChannelPublicKeys this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ChannelPublicKeys_get_revocation_basepoint(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
-}
-
-void  __attribute__((visibility("default"))) TS_ChannelPublicKeys_set_revocation_basepoint(uint32_t this_ptr, int8_tArray val) {
-       LDKChannelPublicKeys this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       ChannelPublicKeys_set_revocation_basepoint(&this_ptr_conv, val_ref);
+       GossipTimestampFilter_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelPublicKeys_get_payment_point(uint32_t this_ptr) {
-       LDKChannelPublicKeys 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ChannelPublicKeys_get_payment_point(&this_ptr_conv).compressed_form, 33);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *GossipTimestampFilter_get_chain_hash(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelPublicKeys_set_payment_point(uint32_t this_ptr, int8_tArray val) {
-       LDKChannelPublicKeys this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_GossipTimestampFilter_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
+       LDKGossipTimestampFilter this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       ChannelPublicKeys_set_payment_point(&this_ptr_conv, val_ref);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       GossipTimestampFilter_set_chain_hash(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelPublicKeys_get_delayed_payment_basepoint(uint32_t this_ptr) {
-       LDKChannelPublicKeys this_ptr_conv;
+int32_t  __attribute__((visibility("default"))) TS_GossipTimestampFilter_get_first_timestamp(uint32_t this_ptr) {
+       LDKGossipTimestampFilter this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ChannelPublicKeys_get_delayed_payment_basepoint(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       int32_t ret_val = GossipTimestampFilter_get_first_timestamp(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelPublicKeys_set_delayed_payment_basepoint(uint32_t this_ptr, int8_tArray val) {
-       LDKChannelPublicKeys this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_GossipTimestampFilter_set_first_timestamp(uint32_t this_ptr, int32_t val) {
+       LDKGossipTimestampFilter this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       ChannelPublicKeys_set_delayed_payment_basepoint(&this_ptr_conv, val_ref);
+       GossipTimestampFilter_set_first_timestamp(&this_ptr_conv, val);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelPublicKeys_get_htlc_basepoint(uint32_t this_ptr) {
-       LDKChannelPublicKeys this_ptr_conv;
+int32_t  __attribute__((visibility("default"))) TS_GossipTimestampFilter_get_timestamp_range(uint32_t this_ptr) {
+       LDKGossipTimestampFilter this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ChannelPublicKeys_get_htlc_basepoint(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       int32_t ret_val = GossipTimestampFilter_get_timestamp_range(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelPublicKeys_set_htlc_basepoint(uint32_t this_ptr, int8_tArray val) {
-       LDKChannelPublicKeys this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_GossipTimestampFilter_set_timestamp_range(uint32_t this_ptr, int32_t val) {
+       LDKGossipTimestampFilter this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       ChannelPublicKeys_set_htlc_basepoint(&this_ptr_conv, val_ref);
+       GossipTimestampFilter_set_timestamp_range(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelPublicKeys_new(int8_tArray funding_pubkey_arg, int8_tArray revocation_basepoint_arg, int8_tArray payment_point_arg, int8_tArray delayed_payment_basepoint_arg, int8_tArray htlc_basepoint_arg) {
-       LDKPublicKey funding_pubkey_arg_ref;
-       CHECK(*((uint32_t*)funding_pubkey_arg) == 33);
-       memcpy(funding_pubkey_arg_ref.compressed_form, (uint8_t*)(funding_pubkey_arg + 4), 33);
-       LDKPublicKey revocation_basepoint_arg_ref;
-       CHECK(*((uint32_t*)revocation_basepoint_arg) == 33);
-       memcpy(revocation_basepoint_arg_ref.compressed_form, (uint8_t*)(revocation_basepoint_arg + 4), 33);
-       LDKPublicKey payment_point_arg_ref;
-       CHECK(*((uint32_t*)payment_point_arg) == 33);
-       memcpy(payment_point_arg_ref.compressed_form, (uint8_t*)(payment_point_arg + 4), 33);
-       LDKPublicKey delayed_payment_basepoint_arg_ref;
-       CHECK(*((uint32_t*)delayed_payment_basepoint_arg) == 33);
-       memcpy(delayed_payment_basepoint_arg_ref.compressed_form, (uint8_t*)(delayed_payment_basepoint_arg + 4), 33);
-       LDKPublicKey htlc_basepoint_arg_ref;
-       CHECK(*((uint32_t*)htlc_basepoint_arg) == 33);
-       memcpy(htlc_basepoint_arg_ref.compressed_form, (uint8_t*)(htlc_basepoint_arg + 4), 33);
-       LDKChannelPublicKeys ret_var = ChannelPublicKeys_new(funding_pubkey_arg_ref, revocation_basepoint_arg_ref, payment_point_arg_ref, delayed_payment_basepoint_arg_ref, htlc_basepoint_arg_ref);
+uint32_t  __attribute__((visibility("default"))) TS_GossipTimestampFilter_new(int8_tArray chain_hash_arg, int32_t first_timestamp_arg, int32_t timestamp_range_arg) {
+       LDKThirtyTwoBytes chain_hash_arg_ref;
+       CHECK(chain_hash_arg->arr_len == 32);
+       memcpy(chain_hash_arg_ref.data, chain_hash_arg->elems, 32);
+       LDKGossipTimestampFilter ret_var = GossipTimestampFilter_new(chain_hash_arg_ref, first_timestamp_arg, timestamp_range_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -29364,8 +26718,8 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelPublicKeys_new(int8_t
        return ret_ref;
 }
 
-static inline uint64_t ChannelPublicKeys_clone_ptr(LDKChannelPublicKeys *NONNULL_PTR arg) {
-       LDKChannelPublicKeys ret_var = ChannelPublicKeys_clone(arg);
+static inline uint64_t GossipTimestampFilter_clone_ptr(LDKGossipTimestampFilter *NONNULL_PTR arg) {
+       LDKGossipTimestampFilter ret_var = GossipTimestampFilter_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -29376,21 +26730,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_ChannelPublicKeys_clone_ptr(uint32_t arg) {
-       LDKChannelPublicKeys arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_GossipTimestampFilter_clone_ptr(uint32_t arg) {
+       LDKGossipTimestampFilter arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelPublicKeys_clone_ptr(&arg_conv);
+       int64_t ret_val = GossipTimestampFilter_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelPublicKeys_clone(uint32_t orig) {
-       LDKChannelPublicKeys orig_conv;
+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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelPublicKeys ret_var = ChannelPublicKeys_clone(&orig_conv);
+       LDKGossipTimestampFilter ret_var = GossipTimestampFilter_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -29402,191 +26756,139 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelPublicKeys_clone(uint
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelPublicKeys_write(uint32_t obj) {
-       LDKChannelPublicKeys obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ChannelPublicKeys_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ChannelPublicKeys_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ChannelPublicKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ), "LDKCResult_ChannelPublicKeysDecodeErrorZ");
-       *ret_conv = ChannelPublicKeys_read(ser_ref);
-       return (uint64_t)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) {
-       LDKPublicKey per_commitment_point_ref;
-       CHECK(*((uint32_t*)per_commitment_point) == 33);
-       memcpy(per_commitment_point_ref.compressed_form, (uint8_t*)(per_commitment_point + 4), 33);
-       LDKPublicKey broadcaster_delayed_payment_base_ref;
-       CHECK(*((uint32_t*)broadcaster_delayed_payment_base) == 33);
-       memcpy(broadcaster_delayed_payment_base_ref.compressed_form, (uint8_t*)(broadcaster_delayed_payment_base + 4), 33);
-       LDKPublicKey broadcaster_htlc_base_ref;
-       CHECK(*((uint32_t*)broadcaster_htlc_base) == 33);
-       memcpy(broadcaster_htlc_base_ref.compressed_form, (uint8_t*)(broadcaster_htlc_base + 4), 33);
-       LDKPublicKey countersignatory_revocation_base_ref;
-       CHECK(*((uint32_t*)countersignatory_revocation_base) == 33);
-       memcpy(countersignatory_revocation_base_ref.compressed_form, (uint8_t*)(countersignatory_revocation_base + 4), 33);
-       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_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 (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_ErrorAction_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKErrorAction this_ptr_conv = *(LDKErrorAction*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       ErrorAction_free(this_ptr_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_TxCreationKeys_from_channel_static_keys(int8_tArray per_commitment_point, uint32_t broadcaster_keys, uint32_t countersignatory_keys) {
-       LDKPublicKey per_commitment_point_ref;
-       CHECK(*((uint32_t*)per_commitment_point) == 33);
-       memcpy(per_commitment_point_ref.compressed_form, (uint8_t*)(per_commitment_point + 4), 33);
-       LDKChannelPublicKeys broadcaster_keys_conv;
-       broadcaster_keys_conv.inner = (void*)(broadcaster_keys & (~1));
-       broadcaster_keys_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(broadcaster_keys_conv);
-       LDKChannelPublicKeys countersignatory_keys_conv;
-       countersignatory_keys_conv.inner = (void*)(countersignatory_keys & (~1));
-       countersignatory_keys_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(countersignatory_keys_conv);
-       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 (uint64_t)ret_conv;
+static inline uint64_t ErrorAction_clone_ptr(LDKErrorAction *NONNULL_PTR arg) {
+       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
+       *ret_copy = ErrorAction_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
-
-int8_tArray  __attribute__((visibility("default"))) TS_get_revokeable_redeemscript(int8_tArray revocation_key, int16_t contest_delay, int8_tArray broadcaster_delayed_payment_key) {
-       LDKPublicKey revocation_key_ref;
-       CHECK(*((uint32_t*)revocation_key) == 33);
-       memcpy(revocation_key_ref.compressed_form, (uint8_t*)(revocation_key + 4), 33);
-       LDKPublicKey broadcaster_delayed_payment_key_ref;
-       CHECK(*((uint32_t*)broadcaster_delayed_payment_key) == 33);
-       memcpy(broadcaster_delayed_payment_key_ref.compressed_form, (uint8_t*)(broadcaster_delayed_payment_key + 4), 33);
-       LDKCVec_u8Z ret_var = get_revokeable_redeemscript(revocation_key_ref, contest_delay, broadcaster_delayed_payment_key_ref);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+int64_t  __attribute__((visibility("default"))) TS_ErrorAction_clone_ptr(uint32_t arg) {
+       LDKErrorAction* arg_conv = (LDKErrorAction*)arg;
+       int64_t ret_val = ErrorAction_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_free(uint32_t this_obj) {
-       LDKHTLCOutputInCommitment this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       HTLCOutputInCommitment_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ErrorAction_clone(uint32_t orig) {
+       LDKErrorAction* orig_conv = (LDKErrorAction*)orig;
+       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
+       *ret_copy = ErrorAction_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = HTLCOutputInCommitment_get_offered(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_ErrorAction_disconnect_peer(uint32_t msg) {
+       LDKErrorMessage msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = ErrorMessage_clone(&msg_conv);
+       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
+       *ret_copy = ErrorAction_disconnect_peer(msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_set_offered(uint32_t this_ptr, jboolean val) {
-       LDKHTLCOutputInCommitment this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       HTLCOutputInCommitment_set_offered(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_ErrorAction_ignore_error() {
+       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
+       *ret_copy = ErrorAction_ignore_error();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_get_amount_msat(uint32_t this_ptr) {
-       LDKHTLCOutputInCommitment this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = HTLCOutputInCommitment_get_amount_msat(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_ErrorAction_ignore_and_log(uint32_t a) {
+       LDKLevel a_conv = LDKLevel_from_js(a);
+       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
+       *ret_copy = ErrorAction_ignore_and_log(a_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_set_amount_msat(uint32_t this_ptr, int64_t val) {
-       LDKHTLCOutputInCommitment this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       HTLCOutputInCommitment_set_amount_msat(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_ErrorAction_ignore_duplicate_gossip() {
+       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
+       *ret_copy = ErrorAction_ignore_duplicate_gossip();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-int32_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_get_cltv_expiry(uint32_t this_ptr) {
-       LDKHTLCOutputInCommitment this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = HTLCOutputInCommitment_get_cltv_expiry(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_ErrorAction_send_error_message(uint32_t msg) {
+       LDKErrorMessage msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = ErrorMessage_clone(&msg_conv);
+       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
+       *ret_copy = ErrorAction_send_error_message(msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_set_cltv_expiry(uint32_t this_ptr, int32_t val) {
-       LDKHTLCOutputInCommitment this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       HTLCOutputInCommitment_set_cltv_expiry(&this_ptr_conv, val);
+void  __attribute__((visibility("default"))) TS_LightningError_free(uint32_t this_obj) {
+       LDKLightningError this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       LightningError_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_get_payment_hash(uint32_t this_ptr) {
-       LDKHTLCOutputInCommitment this_ptr_conv;
+jstring  __attribute__((visibility("default"))) TS_LightningError_get_err(uint32_t this_ptr) {
+       LDKLightningError this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *HTLCOutputInCommitment_get_payment_hash(&this_ptr_conv), 32);
-       return ret_arr;
+       LDKStr ret_str = LightningError_get_err(&this_ptr_conv);
+       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
+       Str_free(ret_str);
+       return ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_set_payment_hash(uint32_t this_ptr, int8_tArray val) {
-       LDKHTLCOutputInCommitment this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_LightningError_set_err(uint32_t this_ptr, jstring val) {
+       LDKLightningError this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       HTLCOutputInCommitment_set_payment_hash(&this_ptr_conv, val_ref);
+       LDKStr val_conv = str_ref_to_owned_c(val);
+       LightningError_set_err(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_get_transaction_output_index(uint32_t this_ptr) {
-       LDKHTLCOutputInCommitment this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_LightningError_get_action(uint32_t this_ptr) {
+       LDKLightningError this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCOption_u32Z *ret_copy = MALLOC(sizeof(LDKCOption_u32Z), "LDKCOption_u32Z");
-       *ret_copy = HTLCOutputInCommitment_get_transaction_output_index(&this_ptr_conv);
+       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
+       *ret_copy = LightningError_get_action(&this_ptr_conv);
        uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_set_transaction_output_index(uint32_t this_ptr, uint32_t val) {
-       LDKHTLCOutputInCommitment this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_LightningError_set_action(uint32_t this_ptr, uint32_t val) {
+       LDKLightningError this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
        void* val_ptr = (void*)(((uint64_t)val) & ~1);
        CHECK_ACCESS(val_ptr);
-       LDKCOption_u32Z val_conv = *(LDKCOption_u32Z*)(val_ptr);
-       val_conv = COption_u32Z_clone((LDKCOption_u32Z*)(((uint64_t)val) & ~1));
-       HTLCOutputInCommitment_set_transaction_output_index(&this_ptr_conv, val_conv);
+       LDKErrorAction val_conv = *(LDKErrorAction*)(val_ptr);
+       val_conv = ErrorAction_clone((LDKErrorAction*)(((uint64_t)val) & ~1));
+       LightningError_set_action(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_new(jboolean offered_arg, int64_t amount_msat_arg, int32_t cltv_expiry_arg, int8_tArray payment_hash_arg, uint32_t transaction_output_index_arg) {
-       LDKThirtyTwoBytes payment_hash_arg_ref;
-       CHECK(*((uint32_t*)payment_hash_arg) == 32);
-       memcpy(payment_hash_arg_ref.data, (uint8_t*)(payment_hash_arg + 4), 32);
-       void* transaction_output_index_arg_ptr = (void*)(((uint64_t)transaction_output_index_arg) & ~1);
-       CHECK_ACCESS(transaction_output_index_arg_ptr);
-       LDKCOption_u32Z transaction_output_index_arg_conv = *(LDKCOption_u32Z*)(transaction_output_index_arg_ptr);
-       transaction_output_index_arg_conv = COption_u32Z_clone((LDKCOption_u32Z*)(((uint64_t)transaction_output_index_arg) & ~1));
-       LDKHTLCOutputInCommitment ret_var = HTLCOutputInCommitment_new(offered_arg, amount_msat_arg, cltv_expiry_arg, payment_hash_arg_ref, transaction_output_index_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_LightningError_new(jstring err_arg, uint32_t action_arg) {
+       LDKStr err_arg_conv = str_ref_to_owned_c(err_arg);
+       void* action_arg_ptr = (void*)(((uint64_t)action_arg) & ~1);
+       CHECK_ACCESS(action_arg_ptr);
+       LDKErrorAction action_arg_conv = *(LDKErrorAction*)(action_arg_ptr);
+       action_arg_conv = ErrorAction_clone((LDKErrorAction*)(((uint64_t)action_arg) & ~1));
+       LDKLightningError ret_var = LightningError_new(err_arg_conv, action_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -29598,8 +26900,8 @@ uint32_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_new(j
        return ret_ref;
 }
 
-static inline uint64_t HTLCOutputInCommitment_clone_ptr(LDKHTLCOutputInCommitment *NONNULL_PTR arg) {
-       LDKHTLCOutputInCommitment ret_var = HTLCOutputInCommitment_clone(arg);
+static inline uint64_t LightningError_clone_ptr(LDKLightningError *NONNULL_PTR arg) {
+       LDKLightningError ret_var = LightningError_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -29610,21 +26912,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_clone_ptr(uint32_t arg) {
-       LDKHTLCOutputInCommitment arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_LightningError_clone_ptr(uint32_t arg) {
+       LDKLightningError arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = HTLCOutputInCommitment_clone_ptr(&arg_conv);
+       int64_t ret_val = LightningError_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_clone(uint32_t orig) {
-       LDKHTLCOutputInCommitment 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKHTLCOutputInCommitment ret_var = HTLCOutputInCommitment_clone(&orig_conv);
+       LDKLightningError ret_var = LightningError_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -29636,168 +26938,220 @@ uint32_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_clone
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_write(uint32_t obj) {
-       LDKHTLCOutputInCommitment obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = HTLCOutputInCommitment_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ), "LDKCResult_HTLCOutputInCommitmentDecodeErrorZ");
-       *ret_conv = HTLCOutputInCommitment_read(ser_ref);
-       return (uint64_t)ret_conv;
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_get_htlc_redeemscript(uint32_t htlc, jboolean opt_anchors, uint32_t keys) {
-       LDKHTLCOutputInCommitment htlc_conv;
-       htlc_conv.inner = (void*)(htlc & (~1));
-       htlc_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_conv);
-       LDKTxCreationKeys keys_conv;
-       keys_conv.inner = (void*)(keys & (~1));
-       keys_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(keys_conv);
-       LDKCVec_u8Z ret_var = get_htlc_redeemscript(&htlc_conv, opt_anchors, &keys_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_make_funding_redeemscript(int8_tArray broadcaster, int8_tArray countersignatory) {
-       LDKPublicKey broadcaster_ref;
-       CHECK(*((uint32_t*)broadcaster) == 33);
-       memcpy(broadcaster_ref.compressed_form, (uint8_t*)(broadcaster + 4), 33);
-       LDKPublicKey countersignatory_ref;
-       CHECK(*((uint32_t*)countersignatory) == 33);
-       memcpy(countersignatory_ref.compressed_form, (uint8_t*)(countersignatory + 4), 33);
-       LDKCVec_u8Z ret_var = make_funding_redeemscript(broadcaster_ref, countersignatory_ref);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_build_htlc_transaction(int8_tArray commitment_txid, int32_t feerate_per_kw, int16_t contest_delay, uint32_t htlc, jboolean opt_anchors, int8_tArray broadcaster_delayed_payment_key, int8_tArray revocation_key) {
-       unsigned char commitment_txid_arr[32];
-       CHECK(*((uint32_t*)commitment_txid) == 32);
-       memcpy(commitment_txid_arr, (uint8_t*)(commitment_txid + 4), 32);
-       unsigned char (*commitment_txid_ref)[32] = &commitment_txid_arr;
-       LDKHTLCOutputInCommitment htlc_conv;
-       htlc_conv.inner = (void*)(htlc & (~1));
-       htlc_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_conv);
-       LDKPublicKey broadcaster_delayed_payment_key_ref;
-       CHECK(*((uint32_t*)broadcaster_delayed_payment_key) == 33);
-       memcpy(broadcaster_delayed_payment_key_ref.compressed_form, (uint8_t*)(broadcaster_delayed_payment_key + 4), 33);
-       LDKPublicKey revocation_key_ref;
-       CHECK(*((uint32_t*)revocation_key) == 33);
-       memcpy(revocation_key_ref.compressed_form, (uint8_t*)(revocation_key + 4), 33);
-       LDKTransaction ret_var = build_htlc_transaction(commitment_txid_ref, feerate_per_kw, contest_delay, &htlc_conv, opt_anchors, broadcaster_delayed_payment_key_ref, revocation_key_ref);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       Transaction_free(ret_var);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_CommitmentUpdate_free(uint32_t this_obj) {
+       LDKCommitmentUpdate this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       CommitmentUpdate_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_get_anchor_redeemscript(int8_tArray funding_pubkey) {
-       LDKPublicKey funding_pubkey_ref;
-       CHECK(*((uint32_t*)funding_pubkey) == 33);
-       memcpy(funding_pubkey_ref.compressed_form, (uint8_t*)(funding_pubkey + 4), 33);
-       LDKCVec_u8Z ret_var = get_anchor_redeemscript(funding_pubkey_ref);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+uint32_tArray  __attribute__((visibility("default"))) TS_CommitmentUpdate_get_update_add_htlcs(uint32_t this_ptr) {
+       LDKCommitmentUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCVec_UpdateAddHTLCZ ret_var = CommitmentUpdate_get_update_add_htlcs(&this_ptr_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t p = 0; p < ret_var.datalen; p++) {
+               LDKUpdateAddHTLC ret_conv_15_var = ret_var.data[p];
+               uint64_t ret_conv_15_ref = 0;
+               CHECK((((uint64_t)ret_conv_15_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_conv_15_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_15_var);
+               ret_conv_15_ref = (uint64_t)ret_conv_15_var.inner;
+               if (ret_conv_15_var.is_owned) {
+                       ret_conv_15_ref |= 1;
+               }
+               ret_arr_ptr[p] = ret_conv_15_ref;
+       }
+       
+       FREE(ret_var.data);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_free(uint32_t this_obj) {
-       LDKChannelTransactionParameters this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelTransactionParameters_free(this_obj_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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCVec_UpdateAddHTLCZ val_constr;
+       val_constr.datalen = val->arr_len;
+       if (val_constr.datalen > 0)
+               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKUpdateAddHTLC), "LDKCVec_UpdateAddHTLCZ Elements");
+       else
+               val_constr.data = NULL;
+       uint32_t* val_vals = val->elems;
+       for (size_t p = 0; p < val_constr.datalen; p++) {
+               uint32_t val_conv_15 = val_vals[p];
+               LDKUpdateAddHTLC val_conv_15_conv;
+               val_conv_15_conv.inner = (void*)(val_conv_15 & (~1));
+               val_conv_15_conv.is_owned = (val_conv_15 & 1) || (val_conv_15 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv_15_conv);
+               val_conv_15_conv = UpdateAddHTLC_clone(&val_conv_15_conv);
+               val_constr.data[p] = val_conv_15_conv;
+       }
+       CommitmentUpdate_set_update_add_htlcs(&this_ptr_conv, val_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_get_holder_pubkeys(uint32_t this_ptr) {
-       LDKChannelTransactionParameters this_ptr_conv;
+uint32_tArray  __attribute__((visibility("default"))) TS_CommitmentUpdate_get_update_fulfill_htlcs(uint32_t this_ptr) {
+       LDKCommitmentUpdate this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelPublicKeys ret_var = ChannelTransactionParameters_get_holder_pubkeys(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
+       LDKCVec_UpdateFulfillHTLCZ ret_var = CommitmentUpdate_get_update_fulfill_htlcs(&this_ptr_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t t = 0; t < ret_var.datalen; t++) {
+               LDKUpdateFulfillHTLC ret_conv_19_var = ret_var.data[t];
+               uint64_t ret_conv_19_ref = 0;
+               CHECK((((uint64_t)ret_conv_19_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_conv_19_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_19_var);
+               ret_conv_19_ref = (uint64_t)ret_conv_19_var.inner;
+               if (ret_conv_19_var.is_owned) {
+                       ret_conv_19_ref |= 1;
+               }
+               ret_arr_ptr[t] = ret_conv_19_ref;
        }
-       return ret_ref;
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_set_holder_pubkeys(uint32_t this_ptr, uint32_t val) {
-       LDKChannelTransactionParameters this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_CommitmentUpdate_set_update_fulfill_htlcs(uint32_t this_ptr, uint32_tArray val) {
+       LDKCommitmentUpdate this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelPublicKeys val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = ChannelPublicKeys_clone(&val_conv);
-       ChannelTransactionParameters_set_holder_pubkeys(&this_ptr_conv, val_conv);
+       LDKCVec_UpdateFulfillHTLCZ val_constr;
+       val_constr.datalen = val->arr_len;
+       if (val_constr.datalen > 0)
+               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKUpdateFulfillHTLC), "LDKCVec_UpdateFulfillHTLCZ Elements");
+       else
+               val_constr.data = NULL;
+       uint32_t* val_vals = val->elems;
+       for (size_t t = 0; t < val_constr.datalen; t++) {
+               uint32_t val_conv_19 = val_vals[t];
+               LDKUpdateFulfillHTLC val_conv_19_conv;
+               val_conv_19_conv.inner = (void*)(val_conv_19 & (~1));
+               val_conv_19_conv.is_owned = (val_conv_19 & 1) || (val_conv_19 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv_19_conv);
+               val_conv_19_conv = UpdateFulfillHTLC_clone(&val_conv_19_conv);
+               val_constr.data[t] = val_conv_19_conv;
+       }
+       CommitmentUpdate_set_update_fulfill_htlcs(&this_ptr_conv, val_constr);
 }
 
-int16_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_get_holder_selected_contest_delay(uint32_t this_ptr) {
-       LDKChannelTransactionParameters this_ptr_conv;
+uint32_tArray  __attribute__((visibility("default"))) TS_CommitmentUpdate_get_update_fail_htlcs(uint32_t this_ptr) {
+       LDKCommitmentUpdate this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = ChannelTransactionParameters_get_holder_selected_contest_delay(&this_ptr_conv);
-       return ret_val;
+       LDKCVec_UpdateFailHTLCZ ret_var = CommitmentUpdate_get_update_fail_htlcs(&this_ptr_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t q = 0; q < ret_var.datalen; q++) {
+               LDKUpdateFailHTLC ret_conv_16_var = ret_var.data[q];
+               uint64_t ret_conv_16_ref = 0;
+               CHECK((((uint64_t)ret_conv_16_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_conv_16_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_16_var);
+               ret_conv_16_ref = (uint64_t)ret_conv_16_var.inner;
+               if (ret_conv_16_var.is_owned) {
+                       ret_conv_16_ref |= 1;
+               }
+               ret_arr_ptr[q] = ret_conv_16_ref;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_set_holder_selected_contest_delay(uint32_t this_ptr, int16_t val) {
-       LDKChannelTransactionParameters this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_CommitmentUpdate_set_update_fail_htlcs(uint32_t this_ptr, uint32_tArray val) {
+       LDKCommitmentUpdate this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelTransactionParameters_set_holder_selected_contest_delay(&this_ptr_conv, val);
+       LDKCVec_UpdateFailHTLCZ val_constr;
+       val_constr.datalen = val->arr_len;
+       if (val_constr.datalen > 0)
+               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKUpdateFailHTLC), "LDKCVec_UpdateFailHTLCZ Elements");
+       else
+               val_constr.data = NULL;
+       uint32_t* val_vals = val->elems;
+       for (size_t q = 0; q < val_constr.datalen; q++) {
+               uint32_t val_conv_16 = val_vals[q];
+               LDKUpdateFailHTLC val_conv_16_conv;
+               val_conv_16_conv.inner = (void*)(val_conv_16 & (~1));
+               val_conv_16_conv.is_owned = (val_conv_16 & 1) || (val_conv_16 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv_16_conv);
+               val_conv_16_conv = UpdateFailHTLC_clone(&val_conv_16_conv);
+               val_constr.data[q] = val_conv_16_conv;
+       }
+       CommitmentUpdate_set_update_fail_htlcs(&this_ptr_conv, val_constr);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_get_is_outbound_from_holder(uint32_t this_ptr) {
-       LDKChannelTransactionParameters this_ptr_conv;
+uint32_tArray  __attribute__((visibility("default"))) TS_CommitmentUpdate_get_update_fail_malformed_htlcs(uint32_t this_ptr) {
+       LDKCommitmentUpdate this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = ChannelTransactionParameters_get_is_outbound_from_holder(&this_ptr_conv);
-       return ret_val;
+       LDKCVec_UpdateFailMalformedHTLCZ ret_var = CommitmentUpdate_get_update_fail_malformed_htlcs(&this_ptr_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t z = 0; z < ret_var.datalen; z++) {
+               LDKUpdateFailMalformedHTLC ret_conv_25_var = ret_var.data[z];
+               uint64_t ret_conv_25_ref = 0;
+               CHECK((((uint64_t)ret_conv_25_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_conv_25_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_25_var);
+               ret_conv_25_ref = (uint64_t)ret_conv_25_var.inner;
+               if (ret_conv_25_var.is_owned) {
+                       ret_conv_25_ref |= 1;
+               }
+               ret_arr_ptr[z] = ret_conv_25_ref;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_set_is_outbound_from_holder(uint32_t this_ptr, jboolean val) {
-       LDKChannelTransactionParameters this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_CommitmentUpdate_set_update_fail_malformed_htlcs(uint32_t this_ptr, uint32_tArray val) {
+       LDKCommitmentUpdate this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelTransactionParameters_set_is_outbound_from_holder(&this_ptr_conv, val);
+       LDKCVec_UpdateFailMalformedHTLCZ val_constr;
+       val_constr.datalen = val->arr_len;
+       if (val_constr.datalen > 0)
+               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKUpdateFailMalformedHTLC), "LDKCVec_UpdateFailMalformedHTLCZ Elements");
+       else
+               val_constr.data = NULL;
+       uint32_t* val_vals = val->elems;
+       for (size_t z = 0; z < val_constr.datalen; z++) {
+               uint32_t val_conv_25 = val_vals[z];
+               LDKUpdateFailMalformedHTLC val_conv_25_conv;
+               val_conv_25_conv.inner = (void*)(val_conv_25 & (~1));
+               val_conv_25_conv.is_owned = (val_conv_25 & 1) || (val_conv_25 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv_25_conv);
+               val_conv_25_conv = UpdateFailMalformedHTLC_clone(&val_conv_25_conv);
+               val_constr.data[z] = val_conv_25_conv;
+       }
+       CommitmentUpdate_set_update_fail_malformed_htlcs(&this_ptr_conv, val_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_get_counterparty_parameters(uint32_t this_ptr) {
-       LDKChannelTransactionParameters this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CommitmentUpdate_get_update_fee(uint32_t this_ptr) {
+       LDKCommitmentUpdate this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCounterpartyChannelTransactionParameters ret_var = ChannelTransactionParameters_get_counterparty_parameters(&this_ptr_conv);
+       LDKUpdateFee ret_var = CommitmentUpdate_get_update_fee(&this_ptr_conv);
        uint64_t ret_ref = 0;
        if ((uint64_t)ret_var.inner > 4096) {
                CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
@@ -29811,87 +27165,125 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_set_counterparty_parameters(uint32_t this_ptr, uint32_t val) {
-       LDKChannelTransactionParameters this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_CommitmentUpdate_set_update_fee(uint32_t this_ptr, uint32_t val) {
+       LDKCommitmentUpdate this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCounterpartyChannelTransactionParameters val_conv;
+       LDKUpdateFee val_conv;
        val_conv.inner = (void*)(val & (~1));
        val_conv.is_owned = (val & 1) || (val == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = CounterpartyChannelTransactionParameters_clone(&val_conv);
-       ChannelTransactionParameters_set_counterparty_parameters(&this_ptr_conv, val_conv);
+       val_conv = UpdateFee_clone(&val_conv);
+       CommitmentUpdate_set_update_fee(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_get_funding_outpoint(uint32_t this_ptr) {
-       LDKChannelTransactionParameters this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CommitmentUpdate_get_commitment_signed(uint32_t this_ptr) {
+       LDKCommitmentUpdate this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKOutPoint ret_var = ChannelTransactionParameters_get_funding_outpoint(&this_ptr_conv);
+       LDKCommitmentSigned ret_var = CommitmentUpdate_get_commitment_signed(&this_ptr_conv);
        uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
        CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_set_funding_outpoint(uint32_t this_ptr, uint32_t val) {
-       LDKChannelTransactionParameters this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_CommitmentUpdate_set_commitment_signed(uint32_t this_ptr, uint32_t val) {
+       LDKCommitmentUpdate this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKOutPoint val_conv;
+       LDKCommitmentSigned val_conv;
        val_conv.inner = (void*)(val & (~1));
        val_conv.is_owned = (val & 1) || (val == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = OutPoint_clone(&val_conv);
-       ChannelTransactionParameters_set_funding_outpoint(&this_ptr_conv, val_conv);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_get_opt_anchors(uint32_t this_ptr) {
-       LDKChannelTransactionParameters this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       uint32_t ret_conv = LDKCOption_NoneZ_to_js(ChannelTransactionParameters_get_opt_anchors(&this_ptr_conv));
-       return ret_conv;
-}
-
-void  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_set_opt_anchors(uint32_t this_ptr, uint32_t val) {
-       LDKChannelTransactionParameters this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCOption_NoneZ val_conv = LDKCOption_NoneZ_from_js(val);
-       ChannelTransactionParameters_set_opt_anchors(&this_ptr_conv, val_conv);
+       val_conv = CommitmentSigned_clone(&val_conv);
+       CommitmentUpdate_set_commitment_signed(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_new(uint32_t holder_pubkeys_arg, int16_t holder_selected_contest_delay_arg, jboolean is_outbound_from_holder_arg, uint32_t counterparty_parameters_arg, uint32_t funding_outpoint_arg, uint32_t opt_anchors_arg) {
-       LDKChannelPublicKeys holder_pubkeys_arg_conv;
-       holder_pubkeys_arg_conv.inner = (void*)(holder_pubkeys_arg & (~1));
-       holder_pubkeys_arg_conv.is_owned = (holder_pubkeys_arg & 1) || (holder_pubkeys_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(holder_pubkeys_arg_conv);
-       holder_pubkeys_arg_conv = ChannelPublicKeys_clone(&holder_pubkeys_arg_conv);
-       LDKCounterpartyChannelTransactionParameters counterparty_parameters_arg_conv;
-       counterparty_parameters_arg_conv.inner = (void*)(counterparty_parameters_arg & (~1));
-       counterparty_parameters_arg_conv.is_owned = (counterparty_parameters_arg & 1) || (counterparty_parameters_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(counterparty_parameters_arg_conv);
-       counterparty_parameters_arg_conv = CounterpartyChannelTransactionParameters_clone(&counterparty_parameters_arg_conv);
-       LDKOutPoint funding_outpoint_arg_conv;
-       funding_outpoint_arg_conv.inner = (void*)(funding_outpoint_arg & (~1));
-       funding_outpoint_arg_conv.is_owned = (funding_outpoint_arg & 1) || (funding_outpoint_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_outpoint_arg_conv);
-       funding_outpoint_arg_conv = OutPoint_clone(&funding_outpoint_arg_conv);
-       LDKCOption_NoneZ opt_anchors_arg_conv = LDKCOption_NoneZ_from_js(opt_anchors_arg);
-       LDKChannelTransactionParameters ret_var = ChannelTransactionParameters_new(holder_pubkeys_arg_conv, holder_selected_contest_delay_arg, is_outbound_from_holder_arg, counterparty_parameters_arg_conv, funding_outpoint_arg_conv, opt_anchors_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CommitmentUpdate_new(uint32_tArray update_add_htlcs_arg, uint32_tArray update_fulfill_htlcs_arg, uint32_tArray update_fail_htlcs_arg, uint32_tArray update_fail_malformed_htlcs_arg, uint32_t update_fee_arg, uint32_t commitment_signed_arg) {
+       LDKCVec_UpdateAddHTLCZ update_add_htlcs_arg_constr;
+       update_add_htlcs_arg_constr.datalen = update_add_htlcs_arg->arr_len;
+       if (update_add_htlcs_arg_constr.datalen > 0)
+               update_add_htlcs_arg_constr.data = MALLOC(update_add_htlcs_arg_constr.datalen * sizeof(LDKUpdateAddHTLC), "LDKCVec_UpdateAddHTLCZ Elements");
+       else
+               update_add_htlcs_arg_constr.data = NULL;
+       uint32_t* update_add_htlcs_arg_vals = update_add_htlcs_arg->elems;
+       for (size_t p = 0; p < update_add_htlcs_arg_constr.datalen; p++) {
+               uint32_t update_add_htlcs_arg_conv_15 = update_add_htlcs_arg_vals[p];
+               LDKUpdateAddHTLC update_add_htlcs_arg_conv_15_conv;
+               update_add_htlcs_arg_conv_15_conv.inner = (void*)(update_add_htlcs_arg_conv_15 & (~1));
+               update_add_htlcs_arg_conv_15_conv.is_owned = (update_add_htlcs_arg_conv_15 & 1) || (update_add_htlcs_arg_conv_15 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(update_add_htlcs_arg_conv_15_conv);
+               update_add_htlcs_arg_conv_15_conv = UpdateAddHTLC_clone(&update_add_htlcs_arg_conv_15_conv);
+               update_add_htlcs_arg_constr.data[p] = update_add_htlcs_arg_conv_15_conv;
+       }
+       LDKCVec_UpdateFulfillHTLCZ update_fulfill_htlcs_arg_constr;
+       update_fulfill_htlcs_arg_constr.datalen = update_fulfill_htlcs_arg->arr_len;
+       if (update_fulfill_htlcs_arg_constr.datalen > 0)
+               update_fulfill_htlcs_arg_constr.data = MALLOC(update_fulfill_htlcs_arg_constr.datalen * sizeof(LDKUpdateFulfillHTLC), "LDKCVec_UpdateFulfillHTLCZ Elements");
+       else
+               update_fulfill_htlcs_arg_constr.data = NULL;
+       uint32_t* update_fulfill_htlcs_arg_vals = update_fulfill_htlcs_arg->elems;
+       for (size_t t = 0; t < update_fulfill_htlcs_arg_constr.datalen; t++) {
+               uint32_t update_fulfill_htlcs_arg_conv_19 = update_fulfill_htlcs_arg_vals[t];
+               LDKUpdateFulfillHTLC update_fulfill_htlcs_arg_conv_19_conv;
+               update_fulfill_htlcs_arg_conv_19_conv.inner = (void*)(update_fulfill_htlcs_arg_conv_19 & (~1));
+               update_fulfill_htlcs_arg_conv_19_conv.is_owned = (update_fulfill_htlcs_arg_conv_19 & 1) || (update_fulfill_htlcs_arg_conv_19 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(update_fulfill_htlcs_arg_conv_19_conv);
+               update_fulfill_htlcs_arg_conv_19_conv = UpdateFulfillHTLC_clone(&update_fulfill_htlcs_arg_conv_19_conv);
+               update_fulfill_htlcs_arg_constr.data[t] = update_fulfill_htlcs_arg_conv_19_conv;
+       }
+       LDKCVec_UpdateFailHTLCZ update_fail_htlcs_arg_constr;
+       update_fail_htlcs_arg_constr.datalen = update_fail_htlcs_arg->arr_len;
+       if (update_fail_htlcs_arg_constr.datalen > 0)
+               update_fail_htlcs_arg_constr.data = MALLOC(update_fail_htlcs_arg_constr.datalen * sizeof(LDKUpdateFailHTLC), "LDKCVec_UpdateFailHTLCZ Elements");
+       else
+               update_fail_htlcs_arg_constr.data = NULL;
+       uint32_t* update_fail_htlcs_arg_vals = update_fail_htlcs_arg->elems;
+       for (size_t q = 0; q < update_fail_htlcs_arg_constr.datalen; q++) {
+               uint32_t update_fail_htlcs_arg_conv_16 = update_fail_htlcs_arg_vals[q];
+               LDKUpdateFailHTLC update_fail_htlcs_arg_conv_16_conv;
+               update_fail_htlcs_arg_conv_16_conv.inner = (void*)(update_fail_htlcs_arg_conv_16 & (~1));
+               update_fail_htlcs_arg_conv_16_conv.is_owned = (update_fail_htlcs_arg_conv_16 & 1) || (update_fail_htlcs_arg_conv_16 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(update_fail_htlcs_arg_conv_16_conv);
+               update_fail_htlcs_arg_conv_16_conv = UpdateFailHTLC_clone(&update_fail_htlcs_arg_conv_16_conv);
+               update_fail_htlcs_arg_constr.data[q] = update_fail_htlcs_arg_conv_16_conv;
+       }
+       LDKCVec_UpdateFailMalformedHTLCZ update_fail_malformed_htlcs_arg_constr;
+       update_fail_malformed_htlcs_arg_constr.datalen = update_fail_malformed_htlcs_arg->arr_len;
+       if (update_fail_malformed_htlcs_arg_constr.datalen > 0)
+               update_fail_malformed_htlcs_arg_constr.data = MALLOC(update_fail_malformed_htlcs_arg_constr.datalen * sizeof(LDKUpdateFailMalformedHTLC), "LDKCVec_UpdateFailMalformedHTLCZ Elements");
+       else
+               update_fail_malformed_htlcs_arg_constr.data = NULL;
+       uint32_t* update_fail_malformed_htlcs_arg_vals = update_fail_malformed_htlcs_arg->elems;
+       for (size_t z = 0; z < update_fail_malformed_htlcs_arg_constr.datalen; z++) {
+               uint32_t update_fail_malformed_htlcs_arg_conv_25 = update_fail_malformed_htlcs_arg_vals[z];
+               LDKUpdateFailMalformedHTLC update_fail_malformed_htlcs_arg_conv_25_conv;
+               update_fail_malformed_htlcs_arg_conv_25_conv.inner = (void*)(update_fail_malformed_htlcs_arg_conv_25 & (~1));
+               update_fail_malformed_htlcs_arg_conv_25_conv.is_owned = (update_fail_malformed_htlcs_arg_conv_25 & 1) || (update_fail_malformed_htlcs_arg_conv_25 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(update_fail_malformed_htlcs_arg_conv_25_conv);
+               update_fail_malformed_htlcs_arg_conv_25_conv = UpdateFailMalformedHTLC_clone(&update_fail_malformed_htlcs_arg_conv_25_conv);
+               update_fail_malformed_htlcs_arg_constr.data[z] = update_fail_malformed_htlcs_arg_conv_25_conv;
+       }
+       LDKUpdateFee update_fee_arg_conv;
+       update_fee_arg_conv.inner = (void*)(update_fee_arg & (~1));
+       update_fee_arg_conv.is_owned = (update_fee_arg & 1) || (update_fee_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_fee_arg_conv);
+       update_fee_arg_conv = UpdateFee_clone(&update_fee_arg_conv);
+       LDKCommitmentSigned commitment_signed_arg_conv;
+       commitment_signed_arg_conv.inner = (void*)(commitment_signed_arg & (~1));
+       commitment_signed_arg_conv.is_owned = (commitment_signed_arg & 1) || (commitment_signed_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_signed_arg_conv);
+       commitment_signed_arg_conv = CommitmentSigned_clone(&commitment_signed_arg_conv);
+       LDKCommitmentUpdate ret_var = CommitmentUpdate_new(update_add_htlcs_arg_constr, update_fulfill_htlcs_arg_constr, update_fail_htlcs_arg_constr, update_fail_malformed_htlcs_arg_constr, update_fee_arg_conv, commitment_signed_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -29903,8 +27295,8 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters
        return ret_ref;
 }
 
-static inline uint64_t ChannelTransactionParameters_clone_ptr(LDKChannelTransactionParameters *NONNULL_PTR arg) {
-       LDKChannelTransactionParameters ret_var = ChannelTransactionParameters_clone(arg);
+static inline uint64_t CommitmentUpdate_clone_ptr(LDKCommitmentUpdate *NONNULL_PTR arg) {
+       LDKCommitmentUpdate ret_var = CommitmentUpdate_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -29915,21 +27307,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_clone_ptr(uint32_t arg) {
-       LDKChannelTransactionParameters arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_CommitmentUpdate_clone_ptr(uint32_t arg) {
+       LDKCommitmentUpdate arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelTransactionParameters_clone_ptr(&arg_conv);
+       int64_t ret_val = CommitmentUpdate_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_clone(uint32_t orig) {
-       LDKChannelTransactionParameters orig_conv;
+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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelTransactionParameters ret_var = ChannelTransactionParameters_clone(&orig_conv);
+       LDKCommitmentUpdate ret_var = CommitmentUpdate_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -29941,841 +27333,724 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_free(uint32_t this_obj) {
-       LDKCounterpartyChannelTransactionParameters this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       CounterpartyChannelTransactionParameters_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKChannelMessageHandler this_ptr_conv = *(LDKChannelMessageHandler*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       ChannelMessageHandler_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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelPublicKeys ret_var = CounterpartyChannelTransactionParameters_get_pubkeys(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_RoutingMessageHandler_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKRoutingMessageHandler this_ptr_conv = *(LDKRoutingMessageHandler*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       RoutingMessageHandler_free(this_ptr_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_set_pubkeys(uint32_t this_ptr, uint32_t val) {
-       LDKCounterpartyChannelTransactionParameters this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelPublicKeys val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = ChannelPublicKeys_clone(&val_conv);
-       CounterpartyChannelTransactionParameters_set_pubkeys(&this_ptr_conv, val_conv);
+int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_write(uint32_t obj) {
+       LDKAcceptChannel obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = AcceptChannel_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-int16_t  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_get_selected_contest_delay(uint32_t this_ptr) {
-       LDKCounterpartyChannelTransactionParameters this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = CounterpartyChannelTransactionParameters_get_selected_contest_delay(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_AcceptChannel_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_AcceptChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AcceptChannelDecodeErrorZ), "LDKCResult_AcceptChannelDecodeErrorZ");
+       *ret_conv = AcceptChannel_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_set_selected_contest_delay(uint32_t this_ptr, int16_t val) {
-       LDKCounterpartyChannelTransactionParameters this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       CounterpartyChannelTransactionParameters_set_selected_contest_delay(&this_ptr_conv, val);
+int8_tArray  __attribute__((visibility("default"))) TS_AnnouncementSignatures_write(uint32_t obj) {
+       LDKAnnouncementSignatures obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = AnnouncementSignatures_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_new(uint32_t pubkeys_arg, int16_t selected_contest_delay_arg) {
-       LDKChannelPublicKeys pubkeys_arg_conv;
-       pubkeys_arg_conv.inner = (void*)(pubkeys_arg & (~1));
-       pubkeys_arg_conv.is_owned = (pubkeys_arg & 1) || (pubkeys_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(pubkeys_arg_conv);
-       pubkeys_arg_conv = ChannelPublicKeys_clone(&pubkeys_arg_conv);
-       LDKCounterpartyChannelTransactionParameters ret_var = CounterpartyChannelTransactionParameters_new(pubkeys_arg_conv, selected_contest_delay_arg);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_AnnouncementSignatures_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_AnnouncementSignaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ), "LDKCResult_AnnouncementSignaturesDecodeErrorZ");
+       *ret_conv = AnnouncementSignatures_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-static inline uint64_t CounterpartyChannelTransactionParameters_clone_ptr(LDKCounterpartyChannelTransactionParameters *NONNULL_PTR arg) {
-       LDKCounterpartyChannelTransactionParameters ret_var = CounterpartyChannelTransactionParameters_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelReestablish_write(uint32_t obj) {
+       LDKChannelReestablish obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ChannelReestablish_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
-       return ret_ref;
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelReestablish_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ChannelReestablishDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelReestablishDecodeErrorZ), "LDKCResult_ChannelReestablishDecodeErrorZ");
+       *ret_conv = ChannelReestablish_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_clone_ptr(uint32_t arg) {
-       LDKCounterpartyChannelTransactionParameters arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = CounterpartyChannelTransactionParameters_clone_ptr(&arg_conv);
-       return ret_val;
+
+int8_tArray  __attribute__((visibility("default"))) TS_ClosingSigned_write(uint32_t obj) {
+       LDKClosingSigned obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ClosingSigned_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKCounterpartyChannelTransactionParameters ret_var = CounterpartyChannelTransactionParameters_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_ClosingSigned_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ClosingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedDecodeErrorZ), "LDKCResult_ClosingSignedDecodeErrorZ");
+       *ret_conv = ClosingSigned_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_is_populated(uint32_t this_arg) {
-       LDKChannelTransactionParameters this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       jboolean ret_val = ChannelTransactionParameters_is_populated(&this_arg_conv);
-       return ret_val;
+int8_tArray  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_write(uint32_t obj) {
+       LDKClosingSignedFeeRange obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ClosingSignedFeeRange_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ), "LDKCResult_ClosingSignedFeeRangeDecodeErrorZ");
+       *ret_conv = ClosingSignedFeeRange_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_CommitmentSigned_write(uint32_t obj) {
+       LDKCommitmentSigned obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = CommitmentSigned_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_CommitmentSigned_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_CommitmentSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentSignedDecodeErrorZ), "LDKCResult_CommitmentSignedDecodeErrorZ");
+       *ret_conv = CommitmentSigned_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_FundingCreated_write(uint32_t obj) {
+       LDKFundingCreated obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = FundingCreated_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_FundingCreated_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_FundingCreatedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingCreatedDecodeErrorZ), "LDKCResult_FundingCreatedDecodeErrorZ");
+       *ret_conv = FundingCreated_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_FundingSigned_write(uint32_t obj) {
+       LDKFundingSigned obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = FundingSigned_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_as_holder_broadcastable(uint32_t this_arg) {
-       LDKChannelTransactionParameters this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKDirectedChannelTransactionParameters ret_var = ChannelTransactionParameters_as_holder_broadcastable(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_FundingSigned_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_FundingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingSignedDecodeErrorZ), "LDKCResult_FundingSignedDecodeErrorZ");
+       *ret_conv = FundingSigned_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_as_counterparty_broadcastable(uint32_t this_arg) {
-       LDKChannelTransactionParameters this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKDirectedChannelTransactionParameters ret_var = ChannelTransactionParameters_as_counterparty_broadcastable(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_FundingLocked_write(uint32_t obj) {
+       LDKFundingLocked obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = FundingLocked_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_write(uint32_t obj) {
-       LDKCounterpartyChannelTransactionParameters obj_conv;
+uint32_t  __attribute__((visibility("default"))) TS_FundingLocked_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_FundingLockedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingLockedDecodeErrorZ), "LDKCResult_FundingLockedDecodeErrorZ");
+       *ret_conv = FundingLocked_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_Init_write(uint32_t obj) {
+       LDKInit obj_conv;
        obj_conv.inner = (void*)(obj & (~1));
        obj_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = CounterpartyChannelTransactionParameters_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       LDKCVec_u8Z ret_var = Init_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_read(int8_tArray ser) {
+uint32_t  __attribute__((visibility("default"))) TS_Init_read(int8_tArray ser) {
        LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ), "LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ");
-       *ret_conv = CounterpartyChannelTransactionParameters_read(ser_ref);
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_InitDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitDecodeErrorZ), "LDKCResult_InitDecodeErrorZ");
+       *ret_conv = Init_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_write(uint32_t obj) {
-       LDKChannelTransactionParameters obj_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_write(uint32_t obj) {
+       LDKOpenChannel obj_conv;
        obj_conv.inner = (void*)(obj & (~1));
        obj_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ChannelTransactionParameters_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       LDKCVec_u8Z ret_var = OpenChannel_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_read(int8_tArray ser) {
+uint32_t  __attribute__((visibility("default"))) TS_OpenChannel_read(int8_tArray ser) {
        LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ), "LDKCResult_ChannelTransactionParametersDecodeErrorZ");
-       *ret_conv = ChannelTransactionParameters_read(ser_ref);
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_OpenChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OpenChannelDecodeErrorZ), "LDKCResult_OpenChannelDecodeErrorZ");
+       *ret_conv = OpenChannel_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_DirectedChannelTransactionParameters_free(uint32_t this_obj) {
-       LDKDirectedChannelTransactionParameters this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       DirectedChannelTransactionParameters_free(this_obj_conv);
+int8_tArray  __attribute__((visibility("default"))) TS_RevokeAndACK_write(uint32_t obj) {
+       LDKRevokeAndACK obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = RevokeAndACK_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_DirectedChannelTransactionParameters_broadcaster_pubkeys(uint32_t this_arg) {
-       LDKDirectedChannelTransactionParameters this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKChannelPublicKeys ret_var = DirectedChannelTransactionParameters_broadcaster_pubkeys(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_RevokeAndACK_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_RevokeAndACKDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RevokeAndACKDecodeErrorZ), "LDKCResult_RevokeAndACKDecodeErrorZ");
+       *ret_conv = RevokeAndACK_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_DirectedChannelTransactionParameters_countersignatory_pubkeys(uint32_t this_arg) {
-       LDKDirectedChannelTransactionParameters this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKChannelPublicKeys ret_var = DirectedChannelTransactionParameters_countersignatory_pubkeys(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_Shutdown_write(uint32_t obj) {
+       LDKShutdown obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = Shutdown_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-int16_t  __attribute__((visibility("default"))) TS_DirectedChannelTransactionParameters_contest_delay(uint32_t this_arg) {
-       LDKDirectedChannelTransactionParameters this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int16_t ret_val = DirectedChannelTransactionParameters_contest_delay(&this_arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_Shutdown_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ShutdownDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownDecodeErrorZ), "LDKCResult_ShutdownDecodeErrorZ");
+       *ret_conv = Shutdown_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_DirectedChannelTransactionParameters_is_outbound(uint32_t this_arg) {
-       LDKDirectedChannelTransactionParameters this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       jboolean ret_val = DirectedChannelTransactionParameters_is_outbound(&this_arg_conv);
-       return ret_val;
+int8_tArray  __attribute__((visibility("default"))) TS_UpdateFailHTLC_write(uint32_t obj) {
+       LDKUpdateFailHTLC obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = UpdateFailHTLC_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_DirectedChannelTransactionParameters_funding_outpoint(uint32_t this_arg) {
-       LDKDirectedChannelTransactionParameters this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKOutPoint ret_var = DirectedChannelTransactionParameters_funding_outpoint(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_UpdateFailHTLC_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_UpdateFailHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ), "LDKCResult_UpdateFailHTLCDecodeErrorZ");
+       *ret_conv = UpdateFailHTLC_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_DirectedChannelTransactionParameters_opt_anchors(uint32_t this_arg) {
-       LDKDirectedChannelTransactionParameters this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       jboolean ret_val = DirectedChannelTransactionParameters_opt_anchors(&this_arg_conv);
-       return ret_val;
+int8_tArray  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_write(uint32_t obj) {
+       LDKUpdateFailMalformedHTLC obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = UpdateFailMalformedHTLC_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_free(uint32_t this_obj) {
-       LDKHolderCommitmentTransaction this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       HolderCommitmentTransaction_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ), "LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ");
+       *ret_conv = UpdateFailMalformedHTLC_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), HolderCommitmentTransaction_get_counterparty_sig(&this_ptr_conv).compact_form, 64);
+int8_tArray  __attribute__((visibility("default"))) TS_UpdateFee_write(uint32_t obj) {
+       LDKUpdateFee obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = UpdateFee_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_set_counterparty_sig(uint32_t this_ptr, int8_tArray val) {
-       LDKHolderCommitmentTransaction this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSignature val_ref;
-       CHECK(*((uint32_t*)val) == 64);
-       memcpy(val_ref.compact_form, (uint8_t*)(val + 4), 64);
-       HolderCommitmentTransaction_set_counterparty_sig(&this_ptr_conv, val_ref);
+uint32_t  __attribute__((visibility("default"))) TS_UpdateFee_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_UpdateFeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFeeDecodeErrorZ), "LDKCResult_UpdateFeeDecodeErrorZ");
+       *ret_conv = UpdateFee_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_set_counterparty_htlc_sigs(uint32_t this_ptr, ptrArray val) {
-       LDKHolderCommitmentTransaction this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_SignatureZ val_constr;
-       val_constr.datalen = *((uint32_t*)val);
-       if (val_constr.datalen > 0)
-               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ Elements");
-       else
-               val_constr.data = NULL;
-       int8_tArray* val_vals = (int8_tArray*)(val + 4);
-       for (size_t m = 0; m < val_constr.datalen; m++) {
-               int8_tArray val_conv_12 = val_vals[m];
-               LDKSignature val_conv_12_ref;
-               CHECK(*((uint32_t*)val_conv_12) == 64);
-               memcpy(val_conv_12_ref.compact_form, (uint8_t*)(val_conv_12 + 4), 64);
-               val_constr.data[m] = val_conv_12_ref;
-       }
-       HolderCommitmentTransaction_set_counterparty_htlc_sigs(&this_ptr_conv, val_constr);
+int8_tArray  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_write(uint32_t obj) {
+       LDKUpdateFulfillHTLC obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = UpdateFulfillHTLC_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-static inline uint64_t HolderCommitmentTransaction_clone_ptr(LDKHolderCommitmentTransaction *NONNULL_PTR arg) {
-       LDKHolderCommitmentTransaction ret_var = HolderCommitmentTransaction_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_UpdateFulfillHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ), "LDKCResult_UpdateFulfillHTLCDecodeErrorZ");
+       *ret_conv = UpdateFulfillHTLC_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_clone_ptr(uint32_t arg) {
-       LDKHolderCommitmentTransaction arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = HolderCommitmentTransaction_clone_ptr(&arg_conv);
-       return ret_val;
+
+int8_tArray  __attribute__((visibility("default"))) TS_UpdateAddHTLC_write(uint32_t obj) {
+       LDKUpdateAddHTLC obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = UpdateAddHTLC_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKHolderCommitmentTransaction ret_var = HolderCommitmentTransaction_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_UpdateAddHTLC_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_UpdateAddHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ), "LDKCResult_UpdateAddHTLCDecodeErrorZ");
+       *ret_conv = UpdateAddHTLC_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_write(uint32_t obj) {
-       LDKHolderCommitmentTransaction obj_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_Ping_write(uint32_t obj) {
+       LDKPing obj_conv;
        obj_conv.inner = (void*)(obj & (~1));
        obj_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = HolderCommitmentTransaction_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       LDKCVec_u8Z ret_var = Ping_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_read(int8_tArray ser) {
+uint32_t  __attribute__((visibility("default"))) TS_Ping_read(int8_tArray ser) {
        LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_HolderCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ), "LDKCResult_HolderCommitmentTransactionDecodeErrorZ");
-       *ret_conv = HolderCommitmentTransaction_read(ser_ref);
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_PingDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PingDecodeErrorZ), "LDKCResult_PingDecodeErrorZ");
+       *ret_conv = Ping_read(ser_ref);
        return (uint64_t)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) {
-       LDKCommitmentTransaction commitment_tx_conv;
-       commitment_tx_conv.inner = (void*)(commitment_tx & (~1));
-       commitment_tx_conv.is_owned = (commitment_tx & 1) || (commitment_tx == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_tx_conv);
-       commitment_tx_conv = CommitmentTransaction_clone(&commitment_tx_conv);
-       LDKSignature counterparty_sig_ref;
-       CHECK(*((uint32_t*)counterparty_sig) == 64);
-       memcpy(counterparty_sig_ref.compact_form, (uint8_t*)(counterparty_sig + 4), 64);
-       LDKCVec_SignatureZ counterparty_htlc_sigs_constr;
-       counterparty_htlc_sigs_constr.datalen = *((uint32_t*)counterparty_htlc_sigs);
-       if (counterparty_htlc_sigs_constr.datalen > 0)
-               counterparty_htlc_sigs_constr.data = MALLOC(counterparty_htlc_sigs_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ Elements");
-       else
-               counterparty_htlc_sigs_constr.data = NULL;
-       int8_tArray* counterparty_htlc_sigs_vals = (int8_tArray*)(counterparty_htlc_sigs + 4);
-       for (size_t m = 0; m < counterparty_htlc_sigs_constr.datalen; m++) {
-               int8_tArray counterparty_htlc_sigs_conv_12 = counterparty_htlc_sigs_vals[m];
-               LDKSignature counterparty_htlc_sigs_conv_12_ref;
-               CHECK(*((uint32_t*)counterparty_htlc_sigs_conv_12) == 64);
-               memcpy(counterparty_htlc_sigs_conv_12_ref.compact_form, (uint8_t*)(counterparty_htlc_sigs_conv_12 + 4), 64);
-               counterparty_htlc_sigs_constr.data[m] = counterparty_htlc_sigs_conv_12_ref;
-       }
-       LDKPublicKey holder_funding_key_ref;
-       CHECK(*((uint32_t*)holder_funding_key) == 33);
-       memcpy(holder_funding_key_ref.compressed_form, (uint8_t*)(holder_funding_key + 4), 33);
-       LDKPublicKey counterparty_funding_key_ref;
-       CHECK(*((uint32_t*)counterparty_funding_key) == 33);
-       memcpy(counterparty_funding_key_ref.compressed_form, (uint8_t*)(counterparty_funding_key + 4), 33);
-       LDKHolderCommitmentTransaction ret_var = HolderCommitmentTransaction_new(commitment_tx_conv, counterparty_sig_ref, counterparty_htlc_sigs_constr, holder_funding_key_ref, counterparty_funding_key_ref);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_Pong_write(uint32_t obj) {
+       LDKPong obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = Pong_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_free(uint32_t this_obj) {
-       LDKBuiltCommitmentTransaction this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       BuiltCommitmentTransaction_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_Pong_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_PongDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PongDecodeErrorZ), "LDKCResult_PongDecodeErrorZ");
+       *ret_conv = Pong_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKTransaction ret_var = BuiltCommitmentTransaction_get_transaction(&this_ptr_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       Transaction_free(ret_var);
+int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_write(uint32_t obj) {
+       LDKUnsignedChannelAnnouncement obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = UnsignedChannelAnnouncement_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_set_transaction(uint32_t this_ptr, int8_tArray val) {
-       LDKBuiltCommitmentTransaction this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKTransaction val_ref;
-       val_ref.datalen = *((uint32_t*)val);
-       val_ref.data = MALLOC(val_ref.datalen, "LDKTransaction Bytes");
-       memcpy(val_ref.data, (uint8_t*)(val + 4), val_ref.datalen);
-       val_ref.data_is_owned = true;
-       BuiltCommitmentTransaction_set_transaction(&this_ptr_conv, val_ref);
+uint32_t  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ), "LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ");
+       *ret_conv = UnsignedChannelAnnouncement_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_get_txid(uint32_t this_ptr) {
-       LDKBuiltCommitmentTransaction this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *BuiltCommitmentTransaction_get_txid(&this_ptr_conv), 32);
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelAnnouncement_write(uint32_t obj) {
+       LDKChannelAnnouncement obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ChannelAnnouncement_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_set_txid(uint32_t this_ptr, int8_tArray val) {
-       LDKBuiltCommitmentTransaction this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       BuiltCommitmentTransaction_set_txid(&this_ptr_conv, val_ref);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelAnnouncement_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ), "LDKCResult_ChannelAnnouncementDecodeErrorZ");
+       *ret_conv = ChannelAnnouncement_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_new(int8_tArray transaction_arg, int8_tArray txid_arg) {
-       LDKTransaction transaction_arg_ref;
-       transaction_arg_ref.datalen = *((uint32_t*)transaction_arg);
-       transaction_arg_ref.data = MALLOC(transaction_arg_ref.datalen, "LDKTransaction Bytes");
-       memcpy(transaction_arg_ref.data, (uint8_t*)(transaction_arg + 4), transaction_arg_ref.datalen);
-       transaction_arg_ref.data_is_owned = true;
-       LDKThirtyTwoBytes txid_arg_ref;
-       CHECK(*((uint32_t*)txid_arg) == 32);
-       memcpy(txid_arg_ref.data, (uint8_t*)(txid_arg + 4), 32);
-       LDKBuiltCommitmentTransaction ret_var = BuiltCommitmentTransaction_new(transaction_arg_ref, txid_arg_ref);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_write(uint32_t obj) {
+       LDKUnsignedChannelUpdate obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = UnsignedChannelUpdate_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-static inline uint64_t BuiltCommitmentTransaction_clone_ptr(LDKBuiltCommitmentTransaction *NONNULL_PTR arg) {
-       LDKBuiltCommitmentTransaction ret_var = BuiltCommitmentTransaction_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_UnsignedChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ), "LDKCResult_UnsignedChannelUpdateDecodeErrorZ");
+       *ret_conv = UnsignedChannelUpdate_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
-       return ret_ref;
+
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelUpdate_write(uint32_t obj) {
+       LDKChannelUpdate obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ChannelUpdate_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
-int64_t  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_clone_ptr(uint32_t arg) {
-       LDKBuiltCommitmentTransaction arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = BuiltCommitmentTransaction_clone_ptr(&arg_conv);
-       return ret_val;
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelUpdate_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelUpdateDecodeErrorZ), "LDKCResult_ChannelUpdateDecodeErrorZ");
+       *ret_conv = ChannelUpdate_read(ser_ref);
+       return (uint64_t)ret_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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKBuiltCommitmentTransaction ret_var = BuiltCommitmentTransaction_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_ErrorMessage_write(uint32_t obj) {
+       LDKErrorMessage obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ErrorMessage_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_write(uint32_t obj) {
-       LDKBuiltCommitmentTransaction obj_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ErrorMessage_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ErrorMessageDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ErrorMessageDecodeErrorZ), "LDKCResult_ErrorMessageDecodeErrorZ");
+       *ret_conv = ErrorMessage_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_write(uint32_t obj) {
+       LDKUnsignedNodeAnnouncement obj_conv;
        obj_conv.inner = (void*)(obj & (~1));
        obj_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = BuiltCommitmentTransaction_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       LDKCVec_u8Z ret_var = UnsignedNodeAnnouncement_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_read(int8_tArray ser) {
+uint32_t  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_read(int8_tArray ser) {
        LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ), "LDKCResult_BuiltCommitmentTransactionDecodeErrorZ");
-       *ret_conv = BuiltCommitmentTransaction_read(ser_ref);
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ), "LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ");
+       *ret_conv = UnsignedNodeAnnouncement_read(ser_ref);
        return (uint64_t)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) {
-       LDKBuiltCommitmentTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKu8slice funding_redeemscript_ref;
-       funding_redeemscript_ref.datalen = *((uint32_t*)funding_redeemscript);
-       funding_redeemscript_ref.data = (int8_t*)(funding_redeemscript + 4);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), BuiltCommitmentTransaction_get_sighash_all(&this_arg_conv, funding_redeemscript_ref, channel_value_satoshis).data, 32);
-       return ret_arr;
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_sign(uint32_t this_arg, int8_tArray funding_key, int8_tArray funding_redeemscript, int64_t channel_value_satoshis) {
-       LDKBuiltCommitmentTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       unsigned char funding_key_arr[32];
-       CHECK(*((uint32_t*)funding_key) == 32);
-       memcpy(funding_key_arr, (uint8_t*)(funding_key + 4), 32);
-       unsigned char (*funding_key_ref)[32] = &funding_key_arr;
-       LDKu8slice funding_redeemscript_ref;
-       funding_redeemscript_ref.datalen = *((uint32_t*)funding_redeemscript);
-       funding_redeemscript_ref.data = (int8_t*)(funding_redeemscript + 4);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), BuiltCommitmentTransaction_sign(&this_arg_conv, funding_key_ref, funding_redeemscript_ref, channel_value_satoshis).compact_form, 64);
+int8_tArray  __attribute__((visibility("default"))) TS_NodeAnnouncement_write(uint32_t obj) {
+       LDKNodeAnnouncement obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = NodeAnnouncement_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ClosingTransaction_free(uint32_t this_obj) {
-       LDKClosingTransaction this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ClosingTransaction_free(this_obj_conv);
-}
-
-static inline uint64_t ClosingTransaction_clone_ptr(LDKClosingTransaction *NONNULL_PTR arg) {
-       LDKClosingTransaction ret_var = ClosingTransaction_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_ClosingTransaction_clone_ptr(uint32_t arg) {
-       LDKClosingTransaction arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ClosingTransaction_clone_ptr(&arg_conv);
-       return ret_val;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ClosingTransaction_clone(uint32_t orig) {
-       LDKClosingTransaction orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKClosingTransaction ret_var = ClosingTransaction_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncement_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_NodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ), "LDKCResult_NodeAnnouncementDecodeErrorZ");
+       *ret_conv = NodeAnnouncement_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ClosingTransaction_hash(uint32_t o) {
-       LDKClosingTransaction o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = ClosingTransaction_hash(&o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_QueryShortChannelIds_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_QueryShortChannelIdsDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ), "LDKCResult_QueryShortChannelIdsDecodeErrorZ");
+       *ret_conv = QueryShortChannelIds_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosingTransaction_new(int64_t to_holder_value_sat, int64_t to_counterparty_value_sat, int8_tArray to_holder_script, int8_tArray to_counterparty_script, uint32_t funding_outpoint) {
-       LDKCVec_u8Z to_holder_script_ref;
-       to_holder_script_ref.datalen = *((uint32_t*)to_holder_script);
-       to_holder_script_ref.data = MALLOC(to_holder_script_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(to_holder_script_ref.data, (uint8_t*)(to_holder_script + 4), to_holder_script_ref.datalen);
-       LDKCVec_u8Z to_counterparty_script_ref;
-       to_counterparty_script_ref.datalen = *((uint32_t*)to_counterparty_script);
-       to_counterparty_script_ref.data = MALLOC(to_counterparty_script_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(to_counterparty_script_ref.data, (uint8_t*)(to_counterparty_script + 4), to_counterparty_script_ref.datalen);
-       LDKOutPoint funding_outpoint_conv;
-       funding_outpoint_conv.inner = (void*)(funding_outpoint & (~1));
-       funding_outpoint_conv.is_owned = (funding_outpoint & 1) || (funding_outpoint == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_outpoint_conv);
-       funding_outpoint_conv = OutPoint_clone(&funding_outpoint_conv);
-       LDKClosingTransaction ret_var = ClosingTransaction_new(to_holder_value_sat, to_counterparty_value_sat, to_holder_script_ref, to_counterparty_script_ref, funding_outpoint_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_QueryShortChannelIds_write(uint32_t obj) {
+       LDKQueryShortChannelIds obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = QueryShortChannelIds_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosingTransaction_trust(uint32_t this_arg) {
-       LDKClosingTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKTrustedClosingTransaction ret_var = ClosingTransaction_trust(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_write(uint32_t obj) {
+       LDKReplyShortChannelIdsEnd obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ReplyShortChannelIdsEnd_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosingTransaction_verify(uint32_t this_arg, uint32_t funding_outpoint) {
-       LDKClosingTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKOutPoint funding_outpoint_conv;
-       funding_outpoint_conv.inner = (void*)(funding_outpoint & (~1));
-       funding_outpoint_conv.is_owned = (funding_outpoint & 1) || (funding_outpoint == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_outpoint_conv);
-       funding_outpoint_conv = OutPoint_clone(&funding_outpoint_conv);
-       LDKCResult_TrustedClosingTransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TrustedClosingTransactionNoneZ), "LDKCResult_TrustedClosingTransactionNoneZ");
-       *ret_conv = ClosingTransaction_verify(&this_arg_conv, funding_outpoint_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ), "LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ");
+       *ret_conv = ReplyShortChannelIdsEnd_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ClosingTransaction_to_holder_value_sat(uint32_t this_arg) {
-       LDKClosingTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = ClosingTransaction_to_holder_value_sat(&this_arg_conv);
-       return ret_val;
-}
-
-int64_t  __attribute__((visibility("default"))) TS_ClosingTransaction_to_counterparty_value_sat(uint32_t this_arg) {
-       LDKClosingTransaction this_arg_conv;
+int32_t  __attribute__((visibility("default"))) TS_QueryChannelRange_end_blocknum(uint32_t this_arg) {
+       LDKQueryChannelRange this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = ClosingTransaction_to_counterparty_value_sat(&this_arg_conv);
+       int32_t ret_val = QueryChannelRange_end_blocknum(&this_arg_conv);
        return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ClosingTransaction_to_holder_script(uint32_t this_arg) {
-       LDKClosingTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKu8slice ret_var = ClosingTransaction_to_holder_script(&this_arg_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+int8_tArray  __attribute__((visibility("default"))) TS_QueryChannelRange_write(uint32_t obj) {
+       LDKQueryChannelRange obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = QueryChannelRange_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ClosingTransaction_to_counterparty_script(uint32_t this_arg) {
-       LDKClosingTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKu8slice ret_var = ClosingTransaction_to_counterparty_script(&this_arg_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_QueryChannelRange_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_QueryChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ), "LDKCResult_QueryChannelRangeDecodeErrorZ");
+       *ret_conv = QueryChannelRange_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_TrustedClosingTransaction_free(uint32_t this_obj) {
-       LDKTrustedClosingTransaction this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       TrustedClosingTransaction_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ReplyChannelRange_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ReplyChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ), "LDKCResult_ReplyChannelRangeDecodeErrorZ");
+       *ret_conv = ReplyChannelRange_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_TrustedClosingTransaction_built_transaction(uint32_t this_arg) {
-       LDKTrustedClosingTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKTransaction ret_var = TrustedClosingTransaction_built_transaction(&this_arg_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       Transaction_free(ret_var);
+int8_tArray  __attribute__((visibility("default"))) TS_ReplyChannelRange_write(uint32_t obj) {
+       LDKReplyChannelRange obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ReplyChannelRange_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_TrustedClosingTransaction_get_sighash_all(uint32_t this_arg, int8_tArray funding_redeemscript, int64_t channel_value_satoshis) {
-       LDKTrustedClosingTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKu8slice funding_redeemscript_ref;
-       funding_redeemscript_ref.datalen = *((uint32_t*)funding_redeemscript);
-       funding_redeemscript_ref.data = (int8_t*)(funding_redeemscript + 4);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), TrustedClosingTransaction_get_sighash_all(&this_arg_conv, funding_redeemscript_ref, channel_value_satoshis).data, 32);
+int8_tArray  __attribute__((visibility("default"))) TS_GossipTimestampFilter_write(uint32_t obj) {
+       LDKGossipTimestampFilter obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = GossipTimestampFilter_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_TrustedClosingTransaction_sign(uint32_t this_arg, int8_tArray funding_key, int8_tArray funding_redeemscript, int64_t channel_value_satoshis) {
-       LDKTrustedClosingTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       unsigned char funding_key_arr[32];
-       CHECK(*((uint32_t*)funding_key) == 32);
-       memcpy(funding_key_arr, (uint8_t*)(funding_key + 4), 32);
-       unsigned char (*funding_key_ref)[32] = &funding_key_arr;
-       LDKu8slice funding_redeemscript_ref;
-       funding_redeemscript_ref.datalen = *((uint32_t*)funding_redeemscript);
-       funding_redeemscript_ref.data = (int8_t*)(funding_redeemscript + 4);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), TrustedClosingTransaction_sign(&this_arg_conv, funding_key_ref, funding_redeemscript_ref, channel_value_satoshis).compact_form, 64);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_GossipTimestampFilter_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_GossipTimestampFilterDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ), "LDKCResult_GossipTimestampFilterDecodeErrorZ");
+       *ret_conv = GossipTimestampFilter_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_CustomMessageHandler_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKCustomMessageHandler this_ptr_conv = *(LDKCustomMessageHandler*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       CustomMessageHandler_free(this_ptr_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_CommitmentTransaction_free(uint32_t this_obj) {
-       LDKCommitmentTransaction this_obj_conv;
+void  __attribute__((visibility("default"))) TS_IgnoringMessageHandler_free(uint32_t this_obj) {
+       LDKIgnoringMessageHandler this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       CommitmentTransaction_free(this_obj_conv);
-}
-
-static inline uint64_t CommitmentTransaction_clone_ptr(LDKCommitmentTransaction *NONNULL_PTR arg) {
-       LDKCommitmentTransaction ret_var = CommitmentTransaction_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_clone_ptr(uint32_t arg) {
-       LDKCommitmentTransaction arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = CommitmentTransaction_clone_ptr(&arg_conv);
-       return ret_val;
+       IgnoringMessageHandler_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_clone(uint32_t orig) {
-       LDKCommitmentTransaction orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKCommitmentTransaction ret_var = CommitmentTransaction_clone(&orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_IgnoringMessageHandler_new() {
+       LDKIgnoringMessageHandler ret_var = IgnoringMessageHandler_new();
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -30787,69 +28062,56 @@ uint32_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_clone(
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_CommitmentTransaction_write(uint32_t obj) {
-       LDKCommitmentTransaction obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = CommitmentTransaction_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_CommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ), "LDKCResult_CommitmentTransactionDecodeErrorZ");
-       *ret_conv = CommitmentTransaction_read(ser_ref);
-       return (uint64_t)ret_conv;
-}
-
-int64_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_commitment_number(uint32_t this_arg) {
-       LDKCommitmentTransaction this_arg_conv;
+uint32_t  __attribute__((visibility("default"))) TS_IgnoringMessageHandler_as_MessageSendEventsProvider(uint32_t this_arg) {
+       LDKIgnoringMessageHandler this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = CommitmentTransaction_commitment_number(&this_arg_conv);
-       return ret_val;
+       LDKMessageSendEventsProvider* ret_ret = MALLOC(sizeof(LDKMessageSendEventsProvider), "LDKMessageSendEventsProvider");
+       *ret_ret = IgnoringMessageHandler_as_MessageSendEventsProvider(&this_arg_conv);
+       return (uint64_t)ret_ret;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_to_broadcaster_value_sat(uint32_t this_arg) {
-       LDKCommitmentTransaction this_arg_conv;
+uint32_t  __attribute__((visibility("default"))) TS_IgnoringMessageHandler_as_RoutingMessageHandler(uint32_t this_arg) {
+       LDKIgnoringMessageHandler this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = CommitmentTransaction_to_broadcaster_value_sat(&this_arg_conv);
-       return ret_val;
+       LDKRoutingMessageHandler* ret_ret = MALLOC(sizeof(LDKRoutingMessageHandler), "LDKRoutingMessageHandler");
+       *ret_ret = IgnoringMessageHandler_as_RoutingMessageHandler(&this_arg_conv);
+       return (uint64_t)ret_ret;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_to_countersignatory_value_sat(uint32_t this_arg) {
-       LDKCommitmentTransaction this_arg_conv;
+uint32_t  __attribute__((visibility("default"))) TS_IgnoringMessageHandler_as_CustomMessageReader(uint32_t this_arg) {
+       LDKIgnoringMessageHandler this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = CommitmentTransaction_to_countersignatory_value_sat(&this_arg_conv);
-       return ret_val;
+       LDKCustomMessageReader* ret_ret = MALLOC(sizeof(LDKCustomMessageReader), "LDKCustomMessageReader");
+       *ret_ret = IgnoringMessageHandler_as_CustomMessageReader(&this_arg_conv);
+       return (uint64_t)ret_ret;
 }
 
-int32_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_feerate_per_kw(uint32_t this_arg) {
-       LDKCommitmentTransaction this_arg_conv;
+uint32_t  __attribute__((visibility("default"))) TS_IgnoringMessageHandler_as_CustomMessageHandler(uint32_t this_arg) {
+       LDKIgnoringMessageHandler this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int32_t ret_val = CommitmentTransaction_feerate_per_kw(&this_arg_conv);
-       return ret_val;
+       LDKCustomMessageHandler* ret_ret = MALLOC(sizeof(LDKCustomMessageHandler), "LDKCustomMessageHandler");
+       *ret_ret = IgnoringMessageHandler_as_CustomMessageHandler(&this_arg_conv);
+       return (uint64_t)ret_ret;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_trust(uint32_t this_arg) {
-       LDKCommitmentTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKTrustedCommitmentTransaction ret_var = CommitmentTransaction_trust(&this_arg_conv);
+void  __attribute__((visibility("default"))) TS_ErroringMessageHandler_free(uint32_t this_obj) {
+       LDKErroringMessageHandler this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       ErroringMessageHandler_free(this_obj_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ErroringMessageHandler_new() {
+       LDKErroringMessageHandler ret_var = ErroringMessageHandler_new();
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -30861,69 +28123,84 @@ uint32_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_trust(
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_verify(uint32_t this_arg, uint32_t channel_parameters, uint32_t broadcaster_keys, uint32_t countersignatory_keys) {
-       LDKCommitmentTransaction this_arg_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ErroringMessageHandler_as_MessageSendEventsProvider(uint32_t this_arg) {
+       LDKErroringMessageHandler this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKDirectedChannelTransactionParameters channel_parameters_conv;
-       channel_parameters_conv.inner = (void*)(channel_parameters & (~1));
-       channel_parameters_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_parameters_conv);
-       LDKChannelPublicKeys broadcaster_keys_conv;
-       broadcaster_keys_conv.inner = (void*)(broadcaster_keys & (~1));
-       broadcaster_keys_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(broadcaster_keys_conv);
-       LDKChannelPublicKeys countersignatory_keys_conv;
-       countersignatory_keys_conv.inner = (void*)(countersignatory_keys & (~1));
-       countersignatory_keys_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(countersignatory_keys_conv);
-       LDKCResult_TrustedCommitmentTransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ), "LDKCResult_TrustedCommitmentTransactionNoneZ");
-       *ret_conv = CommitmentTransaction_verify(&this_arg_conv, &channel_parameters_conv, &broadcaster_keys_conv, &countersignatory_keys_conv);
-       return (uint64_t)ret_conv;
+       LDKMessageSendEventsProvider* ret_ret = MALLOC(sizeof(LDKMessageSendEventsProvider), "LDKMessageSendEventsProvider");
+       *ret_ret = ErroringMessageHandler_as_MessageSendEventsProvider(&this_arg_conv);
+       return (uint64_t)ret_ret;
 }
 
-void  __attribute__((visibility("default"))) TS_TrustedCommitmentTransaction_free(uint32_t this_obj) {
-       LDKTrustedCommitmentTransaction this_obj_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ErroringMessageHandler_as_ChannelMessageHandler(uint32_t this_arg) {
+       LDKErroringMessageHandler this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKChannelMessageHandler* ret_ret = MALLOC(sizeof(LDKChannelMessageHandler), "LDKChannelMessageHandler");
+       *ret_ret = ErroringMessageHandler_as_ChannelMessageHandler(&this_arg_conv);
+       return (uint64_t)ret_ret;
+}
+
+void  __attribute__((visibility("default"))) TS_MessageHandler_free(uint32_t this_obj) {
+       LDKMessageHandler this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       TrustedCommitmentTransaction_free(this_obj_conv);
+       MessageHandler_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_TrustedCommitmentTransaction_txid(uint32_t this_arg) {
-       LDKTrustedCommitmentTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), TrustedCommitmentTransaction_txid(&this_arg_conv).data, 32);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_MessageHandler_get_chan_handler(uint32_t this_ptr) {
+       LDKMessageHandler this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       // WARNING: This object doesn't live past this scope, needs clone!
+       uint64_t ret_ret = ((uint64_t)MessageHandler_get_chan_handler(&this_ptr_conv)) | 1;
+       return ret_ret;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_TrustedCommitmentTransaction_built_transaction(uint32_t this_arg) {
-       LDKTrustedCommitmentTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKBuiltCommitmentTransaction ret_var = TrustedCommitmentTransaction_built_transaction(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_MessageHandler_set_chan_handler(uint32_t this_ptr, uint32_t val) {
+       LDKMessageHandler this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKChannelMessageHandler val_conv = *(LDKChannelMessageHandler*)(val_ptr);
+       MessageHandler_set_chan_handler(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_TrustedCommitmentTransaction_keys(uint32_t this_arg) {
-       LDKTrustedCommitmentTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKTxCreationKeys ret_var = TrustedCommitmentTransaction_keys(&this_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_MessageHandler_get_route_handler(uint32_t this_ptr) {
+       LDKMessageHandler this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       // WARNING: This object doesn't live past this scope, needs clone!
+       uint64_t ret_ret = ((uint64_t)MessageHandler_get_route_handler(&this_ptr_conv)) | 1;
+       return ret_ret;
+}
+
+void  __attribute__((visibility("default"))) TS_MessageHandler_set_route_handler(uint32_t this_ptr, uint32_t val) {
+       LDKMessageHandler this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKRoutingMessageHandler val_conv = *(LDKRoutingMessageHandler*)(val_ptr);
+       MessageHandler_set_route_handler(&this_ptr_conv, val_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_MessageHandler_new(uint32_t chan_handler_arg, uint32_t route_handler_arg) {
+       void* chan_handler_arg_ptr = (void*)(((uint64_t)chan_handler_arg) & ~1);
+       CHECK_ACCESS(chan_handler_arg_ptr);
+       LDKChannelMessageHandler chan_handler_arg_conv = *(LDKChannelMessageHandler*)(chan_handler_arg_ptr);
+       void* route_handler_arg_ptr = (void*)(((uint64_t)route_handler_arg) & ~1);
+       CHECK_ACCESS(route_handler_arg_ptr);
+       LDKRoutingMessageHandler route_handler_arg_conv = *(LDKRoutingMessageHandler*)(route_handler_arg_ptr);
+       LDKMessageHandler ret_var = MessageHandler_new(chan_handler_arg_conv, route_handler_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -30935,136 +28212,64 @@ uint32_t  __attribute__((visibility("default"))) TS_TrustedCommitmentTransaction
        return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_TrustedCommitmentTransaction_opt_anchors(uint32_t this_arg) {
-       LDKTrustedCommitmentTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       jboolean ret_val = TrustedCommitmentTransaction_opt_anchors(&this_arg_conv);
-       return ret_val;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_TrustedCommitmentTransaction_get_htlc_sigs(uint32_t this_arg, int8_tArray htlc_base_key, uint32_t channel_parameters) {
-       LDKTrustedCommitmentTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       unsigned char htlc_base_key_arr[32];
-       CHECK(*((uint32_t*)htlc_base_key) == 32);
-       memcpy(htlc_base_key_arr, (uint8_t*)(htlc_base_key + 4), 32);
-       unsigned char (*htlc_base_key_ref)[32] = &htlc_base_key_arr;
-       LDKDirectedChannelTransactionParameters channel_parameters_conv;
-       channel_parameters_conv.inner = (void*)(channel_parameters & (~1));
-       channel_parameters_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_parameters_conv);
-       LDKCResult_CVec_SignatureZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_SignatureZNoneZ), "LDKCResult_CVec_SignatureZNoneZ");
-       *ret_conv = TrustedCommitmentTransaction_get_htlc_sigs(&this_arg_conv, htlc_base_key_ref, &channel_parameters_conv);
-       return (uint64_t)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;
+static inline uint64_t SocketDescriptor_clone_ptr(LDKSocketDescriptor *NONNULL_PTR arg) {
+       LDKSocketDescriptor* ret_ret = MALLOC(sizeof(LDKSocketDescriptor), "LDKSocketDescriptor");
+       *ret_ret = SocketDescriptor_clone(arg);
+       return (uint64_t)ret_ret;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_InitFeatures_eq(uint32_t a, uint32_t b) {
-       LDKInitFeatures a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKInitFeatures b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = InitFeatures_eq(&a_conv, &b_conv);
+int64_t  __attribute__((visibility("default"))) TS_SocketDescriptor_clone_ptr(uint32_t arg) {
+       void* arg_ptr = (void*)(((uint64_t)arg) & ~1);
+       if (!(arg & 1)) { CHECK_ACCESS(arg_ptr); }
+       LDKSocketDescriptor* arg_conv = (LDKSocketDescriptor*)arg_ptr;
+       int64_t ret_val = SocketDescriptor_clone_ptr(arg_conv);
        return ret_val;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_NodeFeatures_eq(uint32_t a, uint32_t b) {
-       LDKNodeFeatures a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKNodeFeatures b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = NodeFeatures_eq(&a_conv, &b_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_SocketDescriptor_clone(uint32_t orig) {
+       void* orig_ptr = (void*)(((uint64_t)orig) & ~1);
+       if (!(orig & 1)) { CHECK_ACCESS(orig_ptr); }
+       LDKSocketDescriptor* orig_conv = (LDKSocketDescriptor*)orig_ptr;
+       LDKSocketDescriptor* ret_ret = MALLOC(sizeof(LDKSocketDescriptor), "LDKSocketDescriptor");
+       *ret_ret = SocketDescriptor_clone(orig_conv);
+       return (uint64_t)ret_ret;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelFeatures_eq(uint32_t a, uint32_t b) {
-       LDKChannelFeatures a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKChannelFeatures b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = ChannelFeatures_eq(&a_conv, &b_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_SocketDescriptor_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKSocketDescriptor this_ptr_conv = *(LDKSocketDescriptor*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       SocketDescriptor_free(this_ptr_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_InvoiceFeatures_eq(uint32_t a, uint32_t b) {
-       LDKInvoiceFeatures a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKInvoiceFeatures b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = InvoiceFeatures_eq(&a_conv, &b_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_PeerHandleError_free(uint32_t this_obj) {
+       LDKPeerHandleError this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       PeerHandleError_free(this_obj_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_eq(uint32_t a, uint32_t b) {
-       LDKChannelTypeFeatures a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKChannelTypeFeatures b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = ChannelTypeFeatures_eq(&a_conv, &b_conv);
+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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       jboolean ret_val = PeerHandleError_get_no_connection_possible(&this_ptr_conv);
        return ret_val;
 }
 
-static inline uint64_t InitFeatures_clone_ptr(LDKInitFeatures *NONNULL_PTR arg) {
-       LDKInitFeatures ret_var = InitFeatures_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_InitFeatures_clone_ptr(uint32_t arg) {
-       LDKInitFeatures arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = InitFeatures_clone_ptr(&arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_PeerHandleError_set_no_connection_possible(uint32_t this_ptr, jboolean val) {
+       LDKPeerHandleError this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       PeerHandleError_set_no_connection_possible(&this_ptr_conv, 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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKInitFeatures ret_var = InitFeatures_clone(&orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_PeerHandleError_new(jboolean no_connection_possible_arg) {
+       LDKPeerHandleError ret_var = PeerHandleError_new(no_connection_possible_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -31076,8 +28281,8 @@ uint32_t  __attribute__((visibility("default"))) TS_InitFeatures_clone(uint32_t
        return ret_ref;
 }
 
-static inline uint64_t NodeFeatures_clone_ptr(LDKNodeFeatures *NONNULL_PTR arg) {
-       LDKNodeFeatures ret_var = NodeFeatures_clone(arg);
+static inline uint64_t PeerHandleError_clone_ptr(LDKPeerHandleError *NONNULL_PTR arg) {
+       LDKPeerHandleError ret_var = PeerHandleError_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -31088,21 +28293,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_NodeFeatures_clone_ptr(uint32_t arg) {
-       LDKNodeFeatures arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_PeerHandleError_clone_ptr(uint32_t arg) {
+       LDKPeerHandleError arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = NodeFeatures_clone_ptr(&arg_conv);
+       int64_t ret_val = PeerHandleError_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NodeFeatures_clone(uint32_t orig) {
-       LDKNodeFeatures orig_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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKNodeFeatures ret_var = NodeFeatures_clone(&orig_conv);
+       LDKPeerHandleError ret_var = PeerHandleError_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -31114,33 +28319,34 @@ uint32_t  __attribute__((visibility("default"))) TS_NodeFeatures_clone(uint32_t
        return ret_ref;
 }
 
-static inline uint64_t ChannelFeatures_clone_ptr(LDKChannelFeatures *NONNULL_PTR arg) {
-       LDKChannelFeatures ret_var = ChannelFeatures_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_ChannelFeatures_clone_ptr(uint32_t arg) {
-       LDKChannelFeatures arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelFeatures_clone_ptr(&arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_PeerManager_free(uint32_t this_obj) {
+       LDKPeerManager this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       PeerManager_free(this_obj_conv);
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelFeatures ret_var = ChannelFeatures_clone(&orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_PeerManager_new(uint32_t message_handler, int8_tArray our_node_secret, int8_tArray ephemeral_random_data, uint32_t logger, uint32_t custom_message_handler) {
+       LDKMessageHandler message_handler_conv;
+       message_handler_conv.inner = (void*)(message_handler & (~1));
+       message_handler_conv.is_owned = (message_handler & 1) || (message_handler == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(message_handler_conv);
+       // Warning: we need a move here but no clone is available for LDKMessageHandler
+       LDKSecretKey our_node_secret_ref;
+       CHECK(our_node_secret->arr_len == 32);
+       memcpy(our_node_secret_ref.bytes, our_node_secret->elems, 32);
+       unsigned char ephemeral_random_data_arr[32];
+       CHECK(ephemeral_random_data->arr_len == 32);
+       memcpy(ephemeral_random_data_arr, ephemeral_random_data->elems, 32);
+       unsigned char (*ephemeral_random_data_ref)[32] = &ephemeral_random_data_arr;
+       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
+       CHECK_ACCESS(logger_ptr);
+       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
+       void* custom_message_handler_ptr = (void*)(((uint64_t)custom_message_handler) & ~1);
+       CHECK_ACCESS(custom_message_handler_ptr);
+       LDKCustomMessageHandler custom_message_handler_conv = *(LDKCustomMessageHandler*)(custom_message_handler_ptr);
+       LDKPeerManager ret_var = PeerManager_new(message_handler_conv, our_node_secret_ref, ephemeral_random_data_ref, logger_conv, custom_message_handler_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -31152,242 +28358,351 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelFeatures_clone(uint32
        return ret_ref;
 }
 
-static inline uint64_t InvoiceFeatures_clone_ptr(LDKInvoiceFeatures *NONNULL_PTR arg) {
-       LDKInvoiceFeatures ret_var = InvoiceFeatures_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
+ptrArray  __attribute__((visibility("default"))) TS_PeerManager_get_peer_node_ids(uint32_t this_arg) {
+       LDKPeerManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKCVec_PublicKeyZ ret_var = PeerManager_get_peer_node_ids(&this_arg_conv);
+       ptrArray ret_arr = NULL;
+       ret_arr = init_ptrArray(ret_var.datalen);
+       int8_tArray *ret_arr_ptr = (int8_tArray*)(ret_arr + 4);
+       for (size_t m = 0; m < ret_var.datalen; m++) {
+               int8_tArray ret_conv_12_arr = init_int8_tArray(33);
+               memcpy(ret_conv_12_arr->elems, ret_var.data[m].compressed_form, 33);
+               ret_arr_ptr[m] = ret_conv_12_arr;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_PeerManager_new_outbound_connection(uint32_t this_arg, int8_tArray their_node_id, uint32_t descriptor) {
+       LDKPeerManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       void* descriptor_ptr = (void*)(((uint64_t)descriptor) & ~1);
+       CHECK_ACCESS(descriptor_ptr);
+       LDKSocketDescriptor descriptor_conv = *(LDKSocketDescriptor*)(descriptor_ptr);
+       LDKCResult_CVec_u8ZPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ), "LDKCResult_CVec_u8ZPeerHandleErrorZ");
+       *ret_conv = PeerManager_new_outbound_connection(&this_arg_conv, their_node_id_ref, descriptor_conv);
+       return (uint64_t)ret_conv;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_PeerManager_new_inbound_connection(uint32_t this_arg, uint32_t descriptor) {
+       LDKPeerManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       void* descriptor_ptr = (void*)(((uint64_t)descriptor) & ~1);
+       CHECK_ACCESS(descriptor_ptr);
+       LDKSocketDescriptor descriptor_conv = *(LDKSocketDescriptor*)(descriptor_ptr);
+       LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ");
+       *ret_conv = PeerManager_new_inbound_connection(&this_arg_conv, descriptor_conv);
+       return (uint64_t)ret_conv;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_PeerManager_write_buffer_space_avail(uint32_t this_arg, uint32_t descriptor) {
+       LDKPeerManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       void* descriptor_ptr = (void*)(((uint64_t)descriptor) & ~1);
+       if (!(descriptor & 1)) { CHECK_ACCESS(descriptor_ptr); }
+       LDKSocketDescriptor* descriptor_conv = (LDKSocketDescriptor*)descriptor_ptr;
+       LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ");
+       *ret_conv = PeerManager_write_buffer_space_avail(&this_arg_conv, descriptor_conv);
+       return (uint64_t)ret_conv;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_PeerManager_read_event(uint32_t this_arg, uint32_t peer_descriptor, int8_tArray data) {
+       LDKPeerManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       void* peer_descriptor_ptr = (void*)(((uint64_t)peer_descriptor) & ~1);
+       if (!(peer_descriptor & 1)) { CHECK_ACCESS(peer_descriptor_ptr); }
+       LDKSocketDescriptor* peer_descriptor_conv = (LDKSocketDescriptor*)peer_descriptor_ptr;
+       LDKu8slice data_ref;
+       data_ref.datalen = data->arr_len;
+       data_ref.data = data->elems;
+       LDKCResult_boolPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolPeerHandleErrorZ), "LDKCResult_boolPeerHandleErrorZ");
+       *ret_conv = PeerManager_read_event(&this_arg_conv, peer_descriptor_conv, data_ref);
+       return (uint64_t)ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_PeerManager_process_events(uint32_t this_arg) {
+       LDKPeerManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       PeerManager_process_events(&this_arg_conv);
+}
+
+void  __attribute__((visibility("default"))) TS_PeerManager_socket_disconnected(uint32_t this_arg, uint32_t descriptor) {
+       LDKPeerManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       void* descriptor_ptr = (void*)(((uint64_t)descriptor) & ~1);
+       if (!(descriptor & 1)) { CHECK_ACCESS(descriptor_ptr); }
+       LDKSocketDescriptor* descriptor_conv = (LDKSocketDescriptor*)descriptor_ptr;
+       PeerManager_socket_disconnected(&this_arg_conv, descriptor_conv);
 }
-int64_t  __attribute__((visibility("default"))) TS_InvoiceFeatures_clone_ptr(uint32_t arg) {
-       LDKInvoiceFeatures arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = InvoiceFeatures_clone_ptr(&arg_conv);
-       return ret_val;
+
+void  __attribute__((visibility("default"))) TS_PeerManager_disconnect_by_node_id(uint32_t this_arg, int8_tArray node_id, jboolean no_connection_possible) {
+       LDKPeerManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       PeerManager_disconnect_by_node_id(&this_arg_conv, node_id_ref, no_connection_possible);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InvoiceFeatures_clone(uint32_t orig) {
-       LDKInvoiceFeatures orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKInvoiceFeatures ret_var = InvoiceFeatures_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_PeerManager_disconnect_all_peers(uint32_t this_arg) {
+       LDKPeerManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       PeerManager_disconnect_all_peers(&this_arg_conv);
 }
 
-static inline uint64_t ChannelTypeFeatures_clone_ptr(LDKChannelTypeFeatures *NONNULL_PTR arg) {
-       LDKChannelTypeFeatures ret_var = ChannelTypeFeatures_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
+void  __attribute__((visibility("default"))) TS_PeerManager_timer_tick_occurred(uint32_t this_arg) {
+       LDKPeerManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       PeerManager_timer_tick_occurred(&this_arg_conv);
 }
-       return ret_ref;
+
+int64_t  __attribute__((visibility("default"))) TS_htlc_success_tx_weight(jboolean opt_anchors) {
+       int64_t ret_val = htlc_success_tx_weight(opt_anchors);
+       return ret_val;
 }
-int64_t  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_clone_ptr(uint32_t arg) {
-       LDKChannelTypeFeatures arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelTypeFeatures_clone_ptr(&arg_conv);
+
+int64_t  __attribute__((visibility("default"))) TS_htlc_timeout_tx_weight(jboolean opt_anchors) {
+       int64_t ret_val = htlc_timeout_tx_weight(opt_anchors);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_clone(uint32_t orig) {
-       LDKChannelTypeFeatures orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelTypeFeatures ret_var = ChannelTypeFeatures_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_build_commitment_secret(int8_tArray commitment_seed, int64_t idx) {
+       unsigned char commitment_seed_arr[32];
+       CHECK(commitment_seed->arr_len == 32);
+       memcpy(commitment_seed_arr, commitment_seed->elems, 32);
+       unsigned char (*commitment_seed_ref)[32] = &commitment_seed_arr;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, build_commitment_secret(commitment_seed_ref, idx).data, 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_InitFeatures_free(uint32_t this_obj) {
-       LDKInitFeatures this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       InitFeatures_free(this_obj_conv);
+int8_tArray  __attribute__((visibility("default"))) TS_build_closing_transaction(int64_t to_holder_value_sat, int64_t to_counterparty_value_sat, int8_tArray to_holder_script, int8_tArray to_counterparty_script, uint32_t funding_outpoint) {
+       LDKCVec_u8Z to_holder_script_ref;
+       to_holder_script_ref.datalen = to_holder_script->arr_len;
+       to_holder_script_ref.data = MALLOC(to_holder_script_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(to_holder_script_ref.data, to_holder_script->elems, to_holder_script_ref.datalen);
+       LDKCVec_u8Z to_counterparty_script_ref;
+       to_counterparty_script_ref.datalen = to_counterparty_script->arr_len;
+       to_counterparty_script_ref.data = MALLOC(to_counterparty_script_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(to_counterparty_script_ref.data, to_counterparty_script->elems, to_counterparty_script_ref.datalen);
+       LDKOutPoint funding_outpoint_conv;
+       funding_outpoint_conv.inner = (void*)(funding_outpoint & (~1));
+       funding_outpoint_conv.is_owned = (funding_outpoint & 1) || (funding_outpoint == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_outpoint_conv);
+       funding_outpoint_conv = OutPoint_clone(&funding_outpoint_conv);
+       LDKTransaction ret_var = build_closing_transaction(to_holder_value_sat, to_counterparty_value_sat, to_holder_script_ref, to_counterparty_script_ref, funding_outpoint_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       Transaction_free(ret_var);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_NodeFeatures_free(uint32_t this_obj) {
-       LDKNodeFeatures this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       NodeFeatures_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_derive_private_key(int8_tArray per_commitment_point, int8_tArray base_secret) {
+       LDKPublicKey per_commitment_point_ref;
+       CHECK(per_commitment_point->arr_len == 33);
+       memcpy(per_commitment_point_ref.compressed_form, per_commitment_point->elems, 33);
+       unsigned char base_secret_arr[32];
+       CHECK(base_secret->arr_len == 32);
+       memcpy(base_secret_arr, base_secret->elems, 32);
+       unsigned char (*base_secret_ref)[32] = &base_secret_arr;
+       LDKCResult_SecretKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SecretKeyErrorZ), "LDKCResult_SecretKeyErrorZ");
+       *ret_conv = derive_private_key(per_commitment_point_ref, base_secret_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelFeatures_free(uint32_t this_obj) {
-       LDKChannelFeatures this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelFeatures_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_derive_public_key(int8_tArray per_commitment_point, int8_tArray base_point) {
+       LDKPublicKey per_commitment_point_ref;
+       CHECK(per_commitment_point->arr_len == 33);
+       memcpy(per_commitment_point_ref.compressed_form, per_commitment_point->elems, 33);
+       LDKPublicKey base_point_ref;
+       CHECK(base_point->arr_len == 33);
+       memcpy(base_point_ref.compressed_form, base_point->elems, 33);
+       LDKCResult_PublicKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeyErrorZ), "LDKCResult_PublicKeyErrorZ");
+       *ret_conv = derive_public_key(per_commitment_point_ref, base_point_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_InvoiceFeatures_free(uint32_t this_obj) {
-       LDKInvoiceFeatures this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       InvoiceFeatures_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_derive_private_revocation_key(int8_tArray per_commitment_secret, int8_tArray countersignatory_revocation_base_secret) {
+       unsigned char per_commitment_secret_arr[32];
+       CHECK(per_commitment_secret->arr_len == 32);
+       memcpy(per_commitment_secret_arr, per_commitment_secret->elems, 32);
+       unsigned char (*per_commitment_secret_ref)[32] = &per_commitment_secret_arr;
+       unsigned char countersignatory_revocation_base_secret_arr[32];
+       CHECK(countersignatory_revocation_base_secret->arr_len == 32);
+       memcpy(countersignatory_revocation_base_secret_arr, countersignatory_revocation_base_secret->elems, 32);
+       unsigned char (*countersignatory_revocation_base_secret_ref)[32] = &countersignatory_revocation_base_secret_arr;
+       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 (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_free(uint32_t this_obj) {
-       LDKChannelTypeFeatures this_obj_conv;
+uint32_t  __attribute__((visibility("default"))) TS_derive_public_revocation_key(int8_tArray per_commitment_point, int8_tArray countersignatory_revocation_base_point) {
+       LDKPublicKey per_commitment_point_ref;
+       CHECK(per_commitment_point->arr_len == 33);
+       memcpy(per_commitment_point_ref.compressed_form, per_commitment_point->elems, 33);
+       LDKPublicKey countersignatory_revocation_base_point_ref;
+       CHECK(countersignatory_revocation_base_point->arr_len == 33);
+       memcpy(countersignatory_revocation_base_point_ref.compressed_form, countersignatory_revocation_base_point->elems, 33);
+       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 (uint64_t)ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_TxCreationKeys_free(uint32_t this_obj) {
+       LDKTxCreationKeys this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelTypeFeatures_free(this_obj_conv);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_InitFeatures_empty() {
-       LDKInitFeatures ret_var = InitFeatures_empty();
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       TxCreationKeys_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InitFeatures_known() {
-       LDKInitFeatures ret_var = InitFeatures_known();
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, TxCreationKeys_get_per_commitment_point(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_InitFeatures_requires_unknown_bits(uint32_t this_arg) {
-       LDKInitFeatures this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       jboolean ret_val = InitFeatures_requires_unknown_bits(&this_arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_TxCreationKeys_set_per_commitment_point(uint32_t this_ptr, int8_tArray val) {
+       LDKTxCreationKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       TxCreationKeys_set_per_commitment_point(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NodeFeatures_empty() {
-       LDKNodeFeatures ret_var = NodeFeatures_empty();
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_TxCreationKeys_get_revocation_key(uint32_t this_ptr) {
+       LDKTxCreationKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, TxCreationKeys_get_revocation_key(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NodeFeatures_known() {
-       LDKNodeFeatures ret_var = NodeFeatures_known();
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_TxCreationKeys_set_revocation_key(uint32_t this_ptr, int8_tArray val) {
+       LDKTxCreationKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       TxCreationKeys_set_revocation_key(&this_ptr_conv, val_ref);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_NodeFeatures_requires_unknown_bits(uint32_t this_arg) {
-       LDKNodeFeatures this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       jboolean ret_val = NodeFeatures_requires_unknown_bits(&this_arg_conv);
-       return ret_val;
+int8_tArray  __attribute__((visibility("default"))) TS_TxCreationKeys_get_broadcaster_htlc_key(uint32_t this_ptr) {
+       LDKTxCreationKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, TxCreationKeys_get_broadcaster_htlc_key(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelFeatures_empty() {
-       LDKChannelFeatures ret_var = ChannelFeatures_empty();
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_TxCreationKeys_set_broadcaster_htlc_key(uint32_t this_ptr, int8_tArray val) {
+       LDKTxCreationKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       TxCreationKeys_set_broadcaster_htlc_key(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelFeatures_known() {
-       LDKChannelFeatures ret_var = ChannelFeatures_known();
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_TxCreationKeys_get_countersignatory_htlc_key(uint32_t this_ptr) {
+       LDKTxCreationKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, TxCreationKeys_get_countersignatory_htlc_key(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelFeatures_requires_unknown_bits(uint32_t this_arg) {
-       LDKChannelFeatures this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       jboolean ret_val = ChannelFeatures_requires_unknown_bits(&this_arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_TxCreationKeys_set_countersignatory_htlc_key(uint32_t this_ptr, int8_tArray val) {
+       LDKTxCreationKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       TxCreationKeys_set_countersignatory_htlc_key(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InvoiceFeatures_empty() {
-       LDKInvoiceFeatures ret_var = InvoiceFeatures_empty();
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_TxCreationKeys_get_broadcaster_delayed_payment_key(uint32_t this_ptr) {
+       LDKTxCreationKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, TxCreationKeys_get_broadcaster_delayed_payment_key(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InvoiceFeatures_known() {
-       LDKInvoiceFeatures ret_var = InvoiceFeatures_known();
+void  __attribute__((visibility("default"))) TS_TxCreationKeys_set_broadcaster_delayed_payment_key(uint32_t this_ptr, int8_tArray val) {
+       LDKTxCreationKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       TxCreationKeys_set_broadcaster_delayed_payment_key(&this_ptr_conv, val_ref);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_TxCreationKeys_new(int8_tArray per_commitment_point_arg, int8_tArray revocation_key_arg, int8_tArray broadcaster_htlc_key_arg, int8_tArray countersignatory_htlc_key_arg, int8_tArray broadcaster_delayed_payment_key_arg) {
+       LDKPublicKey per_commitment_point_arg_ref;
+       CHECK(per_commitment_point_arg->arr_len == 33);
+       memcpy(per_commitment_point_arg_ref.compressed_form, per_commitment_point_arg->elems, 33);
+       LDKPublicKey revocation_key_arg_ref;
+       CHECK(revocation_key_arg->arr_len == 33);
+       memcpy(revocation_key_arg_ref.compressed_form, revocation_key_arg->elems, 33);
+       LDKPublicKey broadcaster_htlc_key_arg_ref;
+       CHECK(broadcaster_htlc_key_arg->arr_len == 33);
+       memcpy(broadcaster_htlc_key_arg_ref.compressed_form, broadcaster_htlc_key_arg->elems, 33);
+       LDKPublicKey countersignatory_htlc_key_arg_ref;
+       CHECK(countersignatory_htlc_key_arg->arr_len == 33);
+       memcpy(countersignatory_htlc_key_arg_ref.compressed_form, countersignatory_htlc_key_arg->elems, 33);
+       LDKPublicKey broadcaster_delayed_payment_key_arg_ref;
+       CHECK(broadcaster_delayed_payment_key_arg->arr_len == 33);
+       memcpy(broadcaster_delayed_payment_key_arg_ref.compressed_form, broadcaster_delayed_payment_key_arg->elems, 33);
+       LDKTxCreationKeys ret_var = TxCreationKeys_new(per_commitment_point_arg_ref, revocation_key_arg_ref, broadcaster_htlc_key_arg_ref, countersignatory_htlc_key_arg_ref, broadcaster_delayed_payment_key_arg_ref);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -31399,30 +28714,33 @@ uint32_t  __attribute__((visibility("default"))) TS_InvoiceFeatures_known() {
        return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_InvoiceFeatures_requires_unknown_bits(uint32_t this_arg) {
-       LDKInvoiceFeatures this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       jboolean ret_val = InvoiceFeatures_requires_unknown_bits(&this_arg_conv);
-       return ret_val;
+static inline uint64_t TxCreationKeys_clone_ptr(LDKTxCreationKeys *NONNULL_PTR arg) {
+       LDKTxCreationKeys ret_var = TxCreationKeys_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_empty() {
-       LDKChannelTypeFeatures ret_var = ChannelTypeFeatures_empty();
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
        return ret_ref;
 }
+int64_t  __attribute__((visibility("default"))) TS_TxCreationKeys_clone_ptr(uint32_t arg) {
+       LDKTxCreationKeys arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = TxCreationKeys_clone_ptr(&arg_conv);
+       return ret_val;
+}
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_known() {
-       LDKChannelTypeFeatures ret_var = ChannelTypeFeatures_known();
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKTxCreationKeys ret_var = TxCreationKeys_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -31434,203 +28752,157 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_known()
        return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_requires_unknown_bits(uint32_t this_arg) {
-       LDKChannelTypeFeatures this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       jboolean ret_val = ChannelTypeFeatures_requires_unknown_bits(&this_arg_conv);
-       return ret_val;
-}
-
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = InitFeatures_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-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 (uint64_t)ret_conv;
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelFeatures_write(uint32_t obj) {
-       LDKChannelFeatures obj_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_TxCreationKeys_write(uint32_t obj) {
+       LDKTxCreationKeys obj_conv;
        obj_conv.inner = (void*)(obj & (~1));
        obj_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ChannelFeatures_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       LDKCVec_u8Z ret_var = TxCreationKeys_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelFeatures_read(int8_tArray ser) {
+uint32_t  __attribute__((visibility("default"))) TS_TxCreationKeys_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);
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_TxCreationKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysDecodeErrorZ), "LDKCResult_TxCreationKeysDecodeErrorZ");
+       *ret_conv = TxCreationKeys_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = NodeFeatures_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-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 (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_ChannelPublicKeys_free(uint32_t this_obj) {
+       LDKChannelPublicKeys this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       ChannelPublicKeys_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_InvoiceFeatures_write(uint32_t obj) {
-       LDKInvoiceFeatures obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = InvoiceFeatures_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, ChannelPublicKeys_get_funding_pubkey(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InvoiceFeatures_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_InvoiceFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ), "LDKCResult_InvoiceFeaturesDecodeErrorZ");
-       *ret_conv = InvoiceFeatures_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_ChannelPublicKeys_set_funding_pubkey(uint32_t this_ptr, int8_tArray val) {
+       LDKChannelPublicKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       ChannelPublicKeys_set_funding_pubkey(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_write(uint32_t obj) {
-       LDKChannelTypeFeatures obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ChannelTypeFeatures_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelPublicKeys_get_revocation_basepoint(uint32_t this_ptr) {
+       LDKChannelPublicKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, ChannelPublicKeys_get_revocation_basepoint(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ChannelTypeFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ), "LDKCResult_ChannelTypeFeaturesDecodeErrorZ");
-       *ret_conv = ChannelTypeFeatures_read(ser_ref);
-       return (uint64_t)ret_conv;
-}
-
-void  __attribute__((visibility("default"))) TS_ShutdownScript_free(uint32_t this_obj) {
-       LDKShutdownScript this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ShutdownScript_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_ChannelPublicKeys_set_revocation_basepoint(uint32_t this_ptr, int8_tArray val) {
+       LDKChannelPublicKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       ChannelPublicKeys_set_revocation_basepoint(&this_ptr_conv, val_ref);
 }
 
-static inline uint64_t ShutdownScript_clone_ptr(LDKShutdownScript *NONNULL_PTR arg) {
-       LDKShutdownScript ret_var = ShutdownScript_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelPublicKeys_get_payment_point(uint32_t this_ptr) {
+       LDKChannelPublicKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, ChannelPublicKeys_get_payment_point(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
-int64_t  __attribute__((visibility("default"))) TS_ShutdownScript_clone_ptr(uint32_t arg) {
-       LDKShutdownScript arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ShutdownScript_clone_ptr(&arg_conv);
-       return ret_val;
+
+void  __attribute__((visibility("default"))) TS_ChannelPublicKeys_set_payment_point(uint32_t this_ptr, int8_tArray val) {
+       LDKChannelPublicKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       ChannelPublicKeys_set_payment_point(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ShutdownScript_clone(uint32_t orig) {
-       LDKShutdownScript orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKShutdownScript ret_var = ShutdownScript_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelPublicKeys_get_delayed_payment_basepoint(uint32_t this_ptr) {
+       LDKChannelPublicKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, ChannelPublicKeys_get_delayed_payment_basepoint(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_InvalidShutdownScript_free(uint32_t this_obj) {
-       LDKInvalidShutdownScript this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       InvalidShutdownScript_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_ChannelPublicKeys_set_delayed_payment_basepoint(uint32_t this_ptr, int8_tArray val) {
+       LDKChannelPublicKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       ChannelPublicKeys_set_delayed_payment_basepoint(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_InvalidShutdownScript_get_script(uint32_t this_ptr) {
-       LDKInvalidShutdownScript this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelPublicKeys_get_htlc_basepoint(uint32_t this_ptr) {
+       LDKChannelPublicKeys this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKu8slice ret_var = InvalidShutdownScript_get_script(&this_ptr_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, ChannelPublicKeys_get_htlc_basepoint(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_InvalidShutdownScript_set_script(uint32_t this_ptr, int8_tArray val) {
-       LDKInvalidShutdownScript this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelPublicKeys_set_htlc_basepoint(uint32_t this_ptr, int8_tArray val) {
+       LDKChannelPublicKeys this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_u8Z val_ref;
-       val_ref.datalen = *((uint32_t*)val);
-       val_ref.data = MALLOC(val_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(val_ref.data, (uint8_t*)(val + 4), val_ref.datalen);
-       InvalidShutdownScript_set_script(&this_ptr_conv, val_ref);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       ChannelPublicKeys_set_htlc_basepoint(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InvalidShutdownScript_new(int8_tArray script_arg) {
-       LDKCVec_u8Z script_arg_ref;
-       script_arg_ref.datalen = *((uint32_t*)script_arg);
-       script_arg_ref.data = MALLOC(script_arg_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(script_arg_ref.data, (uint8_t*)(script_arg + 4), script_arg_ref.datalen);
-       LDKInvalidShutdownScript ret_var = InvalidShutdownScript_new(script_arg_ref);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelPublicKeys_new(int8_tArray funding_pubkey_arg, int8_tArray revocation_basepoint_arg, int8_tArray payment_point_arg, int8_tArray delayed_payment_basepoint_arg, int8_tArray htlc_basepoint_arg) {
+       LDKPublicKey funding_pubkey_arg_ref;
+       CHECK(funding_pubkey_arg->arr_len == 33);
+       memcpy(funding_pubkey_arg_ref.compressed_form, funding_pubkey_arg->elems, 33);
+       LDKPublicKey revocation_basepoint_arg_ref;
+       CHECK(revocation_basepoint_arg->arr_len == 33);
+       memcpy(revocation_basepoint_arg_ref.compressed_form, revocation_basepoint_arg->elems, 33);
+       LDKPublicKey payment_point_arg_ref;
+       CHECK(payment_point_arg->arr_len == 33);
+       memcpy(payment_point_arg_ref.compressed_form, payment_point_arg->elems, 33);
+       LDKPublicKey delayed_payment_basepoint_arg_ref;
+       CHECK(delayed_payment_basepoint_arg->arr_len == 33);
+       memcpy(delayed_payment_basepoint_arg_ref.compressed_form, delayed_payment_basepoint_arg->elems, 33);
+       LDKPublicKey htlc_basepoint_arg_ref;
+       CHECK(htlc_basepoint_arg->arr_len == 33);
+       memcpy(htlc_basepoint_arg_ref.compressed_form, htlc_basepoint_arg->elems, 33);
+       LDKChannelPublicKeys ret_var = ChannelPublicKeys_new(funding_pubkey_arg_ref, revocation_basepoint_arg_ref, payment_point_arg_ref, delayed_payment_basepoint_arg_ref, htlc_basepoint_arg_ref);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -31642,8 +28914,8 @@ uint32_t  __attribute__((visibility("default"))) TS_InvalidShutdownScript_new(in
        return ret_ref;
 }
 
-static inline uint64_t InvalidShutdownScript_clone_ptr(LDKInvalidShutdownScript *NONNULL_PTR arg) {
-       LDKInvalidShutdownScript ret_var = InvalidShutdownScript_clone(arg);
+static inline uint64_t ChannelPublicKeys_clone_ptr(LDKChannelPublicKeys *NONNULL_PTR arg) {
+       LDKChannelPublicKeys ret_var = ChannelPublicKeys_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -31654,21 +28926,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_InvalidShutdownScript_clone_ptr(uint32_t arg) {
-       LDKInvalidShutdownScript arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelPublicKeys_clone_ptr(uint32_t arg) {
+       LDKChannelPublicKeys arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = InvalidShutdownScript_clone_ptr(&arg_conv);
+       int64_t ret_val = ChannelPublicKeys_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InvalidShutdownScript_clone(uint32_t orig) {
-       LDKInvalidShutdownScript orig_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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKInvalidShutdownScript ret_var = InvalidShutdownScript_clone(&orig_conv);
+       LDKChannelPublicKeys ret_var = ChannelPublicKeys_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -31680,197 +28952,191 @@ uint32_t  __attribute__((visibility("default"))) TS_InvalidShutdownScript_clone(
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ShutdownScript_write(uint32_t obj) {
-       LDKShutdownScript obj_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelPublicKeys_write(uint32_t obj) {
+       LDKChannelPublicKeys obj_conv;
        obj_conv.inner = (void*)(obj & (~1));
        obj_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ShutdownScript_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       LDKCVec_u8Z ret_var = ChannelPublicKeys_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ShutdownScript_read(int8_tArray ser) {
+uint32_t  __attribute__((visibility("default"))) TS_ChannelPublicKeys_read(int8_tArray ser) {
        LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ShutdownScriptDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptDecodeErrorZ), "LDKCResult_ShutdownScriptDecodeErrorZ");
-       *ret_conv = ShutdownScript_read(ser_ref);
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ChannelPublicKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ), "LDKCResult_ChannelPublicKeysDecodeErrorZ");
+       *ret_conv = ChannelPublicKeys_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ShutdownScript_new_p2wpkh(int8_tArray pubkey_hash) {
-       unsigned char pubkey_hash_arr[20];
-       CHECK(*((uint32_t*)pubkey_hash) == 20);
-       memcpy(pubkey_hash_arr, (uint8_t*)(pubkey_hash + 4), 20);
-       unsigned char (*pubkey_hash_ref)[20] = &pubkey_hash_arr;
-       LDKShutdownScript ret_var = ShutdownScript_new_p2wpkh(pubkey_hash_ref);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ShutdownScript_new_p2wsh(int8_tArray script_hash) {
-       unsigned char script_hash_arr[32];
-       CHECK(*((uint32_t*)script_hash) == 32);
-       memcpy(script_hash_arr, (uint8_t*)(script_hash + 4), 32);
-       unsigned char (*script_hash_ref)[32] = &script_hash_arr;
-       LDKShutdownScript ret_var = ShutdownScript_new_p2wsh(script_hash_ref);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+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) {
+       LDKPublicKey per_commitment_point_ref;
+       CHECK(per_commitment_point->arr_len == 33);
+       memcpy(per_commitment_point_ref.compressed_form, per_commitment_point->elems, 33);
+       LDKPublicKey broadcaster_delayed_payment_base_ref;
+       CHECK(broadcaster_delayed_payment_base->arr_len == 33);
+       memcpy(broadcaster_delayed_payment_base_ref.compressed_form, broadcaster_delayed_payment_base->elems, 33);
+       LDKPublicKey broadcaster_htlc_base_ref;
+       CHECK(broadcaster_htlc_base->arr_len == 33);
+       memcpy(broadcaster_htlc_base_ref.compressed_form, broadcaster_htlc_base->elems, 33);
+       LDKPublicKey countersignatory_revocation_base_ref;
+       CHECK(countersignatory_revocation_base->arr_len == 33);
+       memcpy(countersignatory_revocation_base_ref.compressed_form, countersignatory_revocation_base->elems, 33);
+       LDKPublicKey countersignatory_htlc_base_ref;
+       CHECK(countersignatory_htlc_base->arr_len == 33);
+       memcpy(countersignatory_htlc_base_ref.compressed_form, countersignatory_htlc_base->elems, 33);
+       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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ShutdownScript_new_witness_program(int8_t version, int8_tArray program) {
-       LDKu8slice program_ref;
-       program_ref.datalen = *((uint32_t*)program);
-       program_ref.data = (int8_t*)(program + 4);
-       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ), "LDKCResult_ShutdownScriptInvalidShutdownScriptZ");
-       *ret_conv = ShutdownScript_new_witness_program(version, program_ref);
+uint32_t  __attribute__((visibility("default"))) TS_TxCreationKeys_from_channel_static_keys(int8_tArray per_commitment_point, uint32_t broadcaster_keys, uint32_t countersignatory_keys) {
+       LDKPublicKey per_commitment_point_ref;
+       CHECK(per_commitment_point->arr_len == 33);
+       memcpy(per_commitment_point_ref.compressed_form, per_commitment_point->elems, 33);
+       LDKChannelPublicKeys broadcaster_keys_conv;
+       broadcaster_keys_conv.inner = (void*)(broadcaster_keys & (~1));
+       broadcaster_keys_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(broadcaster_keys_conv);
+       LDKChannelPublicKeys countersignatory_keys_conv;
+       countersignatory_keys_conv.inner = (void*)(countersignatory_keys & (~1));
+       countersignatory_keys_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(countersignatory_keys_conv);
+       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 (uint64_t)ret_conv;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ShutdownScript_into_inner(uint32_t this_arg) {
-       LDKShutdownScript this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       this_arg_conv = ShutdownScript_clone(&this_arg_conv);
-       LDKCVec_u8Z ret_var = ShutdownScript_into_inner(this_arg_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+int8_tArray  __attribute__((visibility("default"))) TS_get_revokeable_redeemscript(int8_tArray revocation_key, int16_t contest_delay, int8_tArray broadcaster_delayed_payment_key) {
+       LDKPublicKey revocation_key_ref;
+       CHECK(revocation_key->arr_len == 33);
+       memcpy(revocation_key_ref.compressed_form, revocation_key->elems, 33);
+       LDKPublicKey broadcaster_delayed_payment_key_ref;
+       CHECK(broadcaster_delayed_payment_key->arr_len == 33);
+       memcpy(broadcaster_delayed_payment_key_ref.compressed_form, broadcaster_delayed_payment_key->elems, 33);
+       LDKCVec_u8Z ret_var = get_revokeable_redeemscript(revocation_key_ref, contest_delay, broadcaster_delayed_payment_key_ref);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ShutdownScript_as_legacy_pubkey(uint32_t this_arg) {
-       LDKShutdownScript this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ShutdownScript_as_legacy_pubkey(&this_arg_conv).compressed_form, 33);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_free(uint32_t this_obj) {
+       LDKHTLCOutputInCommitment this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       HTLCOutputInCommitment_free(this_obj_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ShutdownScript_is_compatible(uint32_t this_arg, uint32_t features) {
-       LDKShutdownScript this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKInitFeatures features_conv;
-       features_conv.inner = (void*)(features & (~1));
-       features_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(features_conv);
-       jboolean ret_val = ShutdownScript_is_compatible(&this_arg_conv, &features_conv);
+jboolean  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_get_offered(uint32_t this_ptr) {
+       LDKHTLCOutputInCommitment this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       jboolean ret_val = HTLCOutputInCommitment_get_offered(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CustomMessageReader_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKCustomMessageReader this_ptr_conv = *(LDKCustomMessageReader*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       CustomMessageReader_free(this_ptr_conv);
+void  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_set_offered(uint32_t this_ptr, jboolean val) {
+       LDKHTLCOutputInCommitment this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       HTLCOutputInCommitment_set_offered(&this_ptr_conv, val);
 }
 
-static inline uint64_t Type_clone_ptr(LDKType *NONNULL_PTR arg) {
-       LDKType* ret_ret = MALLOC(sizeof(LDKType), "LDKType");
-       *ret_ret = Type_clone(arg);
-       return (uint64_t)ret_ret;
+int64_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_get_amount_msat(uint32_t this_ptr) {
+       LDKHTLCOutputInCommitment this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = HTLCOutputInCommitment_get_amount_msat(&this_ptr_conv);
+       return ret_val;
 }
-int64_t  __attribute__((visibility("default"))) TS_Type_clone_ptr(uint32_t arg) {
-       void* arg_ptr = (void*)(((uint64_t)arg) & ~1);
-       if (!(arg & 1)) { CHECK_ACCESS(arg_ptr); }
-       LDKType* arg_conv = (LDKType*)arg_ptr;
-       int64_t ret_val = Type_clone_ptr(arg_conv);
+
+void  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_set_amount_msat(uint32_t this_ptr, int64_t val) {
+       LDKHTLCOutputInCommitment this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       HTLCOutputInCommitment_set_amount_msat(&this_ptr_conv, val);
+}
+
+int32_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_get_cltv_expiry(uint32_t this_ptr) {
+       LDKHTLCOutputInCommitment this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = HTLCOutputInCommitment_get_cltv_expiry(&this_ptr_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Type_clone(uint32_t orig) {
-       void* orig_ptr = (void*)(((uint64_t)orig) & ~1);
-       if (!(orig & 1)) { CHECK_ACCESS(orig_ptr); }
-       LDKType* orig_conv = (LDKType*)orig_ptr;
-       LDKType* ret_ret = MALLOC(sizeof(LDKType), "LDKType");
-       *ret_ret = Type_clone(orig_conv);
-       return (uint64_t)ret_ret;
+void  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_set_cltv_expiry(uint32_t this_ptr, int32_t val) {
+       LDKHTLCOutputInCommitment this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       HTLCOutputInCommitment_set_cltv_expiry(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_Type_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKType this_ptr_conv = *(LDKType*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       Type_free(this_ptr_conv);
+int8_tArray  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_get_payment_hash(uint32_t this_ptr) {
+       LDKHTLCOutputInCommitment this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *HTLCOutputInCommitment_get_payment_hash(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_NodeId_free(uint32_t this_obj) {
-       LDKNodeId this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       NodeId_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_set_payment_hash(uint32_t this_ptr, int8_tArray val) {
+       LDKHTLCOutputInCommitment this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       HTLCOutputInCommitment_set_payment_hash(&this_ptr_conv, val_ref);
 }
 
-static inline uint64_t NodeId_clone_ptr(LDKNodeId *NONNULL_PTR arg) {
-       LDKNodeId ret_var = NodeId_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
+uint32_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_get_transaction_output_index(uint32_t this_ptr) {
+       LDKHTLCOutputInCommitment this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCOption_u32Z *ret_copy = MALLOC(sizeof(LDKCOption_u32Z), "LDKCOption_u32Z");
+       *ret_copy = HTLCOutputInCommitment_get_transaction_output_index(&this_ptr_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_NodeId_clone_ptr(uint32_t arg) {
-       LDKNodeId arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = NodeId_clone_ptr(&arg_conv);
-       return ret_val;
-}
 
-uint32_t  __attribute__((visibility("default"))) TS_NodeId_clone(uint32_t orig) {
-       LDKNodeId orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKNodeId ret_var = NodeId_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_set_transaction_output_index(uint32_t this_ptr, uint32_t val) {
+       LDKHTLCOutputInCommitment this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKCOption_u32Z val_conv = *(LDKCOption_u32Z*)(val_ptr);
+       val_conv = COption_u32Z_clone((LDKCOption_u32Z*)(((uint64_t)val) & ~1));
+       HTLCOutputInCommitment_set_transaction_output_index(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NodeId_from_pubkey(int8_tArray pubkey) {
-       LDKPublicKey pubkey_ref;
-       CHECK(*((uint32_t*)pubkey) == 33);
-       memcpy(pubkey_ref.compressed_form, (uint8_t*)(pubkey + 4), 33);
-       LDKNodeId ret_var = NodeId_from_pubkey(pubkey_ref);
+uint32_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_new(jboolean offered_arg, int64_t amount_msat_arg, int32_t cltv_expiry_arg, int8_tArray payment_hash_arg, uint32_t transaction_output_index_arg) {
+       LDKThirtyTwoBytes payment_hash_arg_ref;
+       CHECK(payment_hash_arg->arr_len == 32);
+       memcpy(payment_hash_arg_ref.data, payment_hash_arg->elems, 32);
+       void* transaction_output_index_arg_ptr = (void*)(((uint64_t)transaction_output_index_arg) & ~1);
+       CHECK_ACCESS(transaction_output_index_arg_ptr);
+       LDKCOption_u32Z transaction_output_index_arg_conv = *(LDKCOption_u32Z*)(transaction_output_index_arg_ptr);
+       transaction_output_index_arg_conv = COption_u32Z_clone((LDKCOption_u32Z*)(((uint64_t)transaction_output_index_arg) & ~1));
+       LDKHTLCOutputInCommitment ret_var = HTLCOutputInCommitment_new(offered_arg, amount_msat_arg, cltv_expiry_arg, payment_hash_arg_ref, transaction_output_index_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -31882,57 +29148,8 @@ uint32_t  __attribute__((visibility("default"))) TS_NodeId_from_pubkey(int8_tArr
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_NodeId_as_slice(uint32_t this_arg) {
-       LDKNodeId this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKu8slice ret_var = NodeId_as_slice(&this_arg_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       return ret_arr;
-}
-
-int64_t  __attribute__((visibility("default"))) TS_NodeId_hash(uint32_t o) {
-       LDKNodeId o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = NodeId_hash(&o_conv);
-       return ret_val;
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_NodeId_write(uint32_t obj) {
-       LDKNodeId obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = NodeId_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NodeId_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_NodeIdDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeIdDecodeErrorZ), "LDKCResult_NodeIdDecodeErrorZ");
-       *ret_conv = NodeId_read(ser_ref);
-       return (uint64_t)ret_conv;
-}
-
-void  __attribute__((visibility("default"))) TS_NetworkGraph_free(uint32_t this_obj) {
-       LDKNetworkGraph this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       NetworkGraph_free(this_obj_conv);
-}
-
-static inline uint64_t NetworkGraph_clone_ptr(LDKNetworkGraph *NONNULL_PTR arg) {
-       LDKNetworkGraph ret_var = NetworkGraph_clone(arg);
+static inline uint64_t HTLCOutputInCommitment_clone_ptr(LDKHTLCOutputInCommitment *NONNULL_PTR arg) {
+       LDKHTLCOutputInCommitment ret_var = HTLCOutputInCommitment_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -31943,21 +29160,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_NetworkGraph_clone_ptr(uint32_t arg) {
-       LDKNetworkGraph arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_clone_ptr(uint32_t arg) {
+       LDKHTLCOutputInCommitment arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = NetworkGraph_clone_ptr(&arg_conv);
+       int64_t ret_val = HTLCOutputInCommitment_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_clone(uint32_t orig) {
-       LDKNetworkGraph orig_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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKNetworkGraph ret_var = NetworkGraph_clone(&orig_conv);
+       LDKHTLCOutputInCommitment ret_var = HTLCOutputInCommitment_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -31969,124 +29186,104 @@ uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_clone(uint32_t
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ReadOnlyNetworkGraph_free(uint32_t this_obj) {
-       LDKReadOnlyNetworkGraph this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ReadOnlyNetworkGraph_free(this_obj_conv);
-}
-
-void  __attribute__((visibility("default"))) TS_NetworkUpdate_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKNetworkUpdate this_ptr_conv = *(LDKNetworkUpdate*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       NetworkUpdate_free(this_ptr_conv);
-}
-
-static inline uint64_t NetworkUpdate_clone_ptr(LDKNetworkUpdate *NONNULL_PTR arg) {
-       LDKNetworkUpdate *ret_copy = MALLOC(sizeof(LDKNetworkUpdate), "LDKNetworkUpdate");
-       *ret_copy = NetworkUpdate_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_NetworkUpdate_clone_ptr(uint32_t arg) {
-       LDKNetworkUpdate* arg_conv = (LDKNetworkUpdate*)arg;
-       int64_t ret_val = NetworkUpdate_clone_ptr(arg_conv);
-       return ret_val;
+int8_tArray  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_write(uint32_t obj) {
+       LDKHTLCOutputInCommitment obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = HTLCOutputInCommitment_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NetworkUpdate_clone(uint32_t orig) {
-       LDKNetworkUpdate* orig_conv = (LDKNetworkUpdate*)orig;
-       LDKNetworkUpdate *ret_copy = MALLOC(sizeof(LDKNetworkUpdate), "LDKNetworkUpdate");
-       *ret_copy = NetworkUpdate_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ), "LDKCResult_HTLCOutputInCommitmentDecodeErrorZ");
+       *ret_conv = HTLCOutputInCommitment_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NetworkUpdate_channel_update_message(uint32_t msg) {
-       LDKChannelUpdate msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = ChannelUpdate_clone(&msg_conv);
-       LDKNetworkUpdate *ret_copy = MALLOC(sizeof(LDKNetworkUpdate), "LDKNetworkUpdate");
-       *ret_copy = NetworkUpdate_channel_update_message(msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_get_htlc_redeemscript(uint32_t htlc, jboolean opt_anchors, uint32_t keys) {
+       LDKHTLCOutputInCommitment htlc_conv;
+       htlc_conv.inner = (void*)(htlc & (~1));
+       htlc_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_conv);
+       LDKTxCreationKeys keys_conv;
+       keys_conv.inner = (void*)(keys & (~1));
+       keys_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(keys_conv);
+       LDKCVec_u8Z ret_var = get_htlc_redeemscript(&htlc_conv, opt_anchors, &keys_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NetworkUpdate_channel_closed(int64_t short_channel_id, jboolean is_permanent) {
-       LDKNetworkUpdate *ret_copy = MALLOC(sizeof(LDKNetworkUpdate), "LDKNetworkUpdate");
-       *ret_copy = NetworkUpdate_channel_closed(short_channel_id, is_permanent);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_make_funding_redeemscript(int8_tArray broadcaster, int8_tArray countersignatory) {
+       LDKPublicKey broadcaster_ref;
+       CHECK(broadcaster->arr_len == 33);
+       memcpy(broadcaster_ref.compressed_form, broadcaster->elems, 33);
+       LDKPublicKey countersignatory_ref;
+       CHECK(countersignatory->arr_len == 33);
+       memcpy(countersignatory_ref.compressed_form, countersignatory->elems, 33);
+       LDKCVec_u8Z ret_var = make_funding_redeemscript(broadcaster_ref, countersignatory_ref);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NetworkUpdate_node_failure(int8_tArray node_id, jboolean is_permanent) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKNetworkUpdate *ret_copy = MALLOC(sizeof(LDKNetworkUpdate), "LDKNetworkUpdate");
-       *ret_copy = NetworkUpdate_node_failure(node_id_ref, is_permanent);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_build_htlc_transaction(int8_tArray commitment_txid, int32_t feerate_per_kw, int16_t contest_delay, uint32_t htlc, jboolean opt_anchors, int8_tArray broadcaster_delayed_payment_key, int8_tArray revocation_key) {
+       unsigned char commitment_txid_arr[32];
+       CHECK(commitment_txid->arr_len == 32);
+       memcpy(commitment_txid_arr, commitment_txid->elems, 32);
+       unsigned char (*commitment_txid_ref)[32] = &commitment_txid_arr;
+       LDKHTLCOutputInCommitment htlc_conv;
+       htlc_conv.inner = (void*)(htlc & (~1));
+       htlc_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_conv);
+       LDKPublicKey broadcaster_delayed_payment_key_ref;
+       CHECK(broadcaster_delayed_payment_key->arr_len == 33);
+       memcpy(broadcaster_delayed_payment_key_ref.compressed_form, broadcaster_delayed_payment_key->elems, 33);
+       LDKPublicKey revocation_key_ref;
+       CHECK(revocation_key->arr_len == 33);
+       memcpy(revocation_key_ref.compressed_form, revocation_key->elems, 33);
+       LDKTransaction ret_var = build_htlc_transaction(commitment_txid_ref, feerate_per_kw, contest_delay, &htlc_conv, opt_anchors, broadcaster_delayed_payment_key_ref, revocation_key_ref);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       Transaction_free(ret_var);
+       return ret_arr;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_NetworkUpdate_write(uint32_t obj) {
-       LDKNetworkUpdate* obj_conv = (LDKNetworkUpdate*)obj;
-       LDKCVec_u8Z ret_var = NetworkUpdate_write(obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+int8_tArray  __attribute__((visibility("default"))) TS_get_anchor_redeemscript(int8_tArray funding_pubkey) {
+       LDKPublicKey funding_pubkey_ref;
+       CHECK(funding_pubkey->arr_len == 33);
+       memcpy(funding_pubkey_ref.compressed_form, funding_pubkey->elems, 33);
+       LDKCVec_u8Z ret_var = get_anchor_redeemscript(funding_pubkey_ref);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NetworkUpdate_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_COption_NetworkUpdateZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_NetworkUpdateZDecodeErrorZ), "LDKCResult_COption_NetworkUpdateZDecodeErrorZ");
-       *ret_conv = NetworkUpdate_read(ser_ref);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NetGraphMsgHandler_as_EventHandler(uint32_t this_arg) {
-       LDKNetGraphMsgHandler this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKEventHandler* ret_ret = MALLOC(sizeof(LDKEventHandler), "LDKEventHandler");
-       *ret_ret = NetGraphMsgHandler_as_EventHandler(&this_arg_conv);
-       return (uint64_t)ret_ret;
-}
-
-void  __attribute__((visibility("default"))) TS_NetGraphMsgHandler_free(uint32_t this_obj) {
-       LDKNetGraphMsgHandler this_obj_conv;
+void  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_free(uint32_t this_obj) {
+       LDKChannelTransactionParameters this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       NetGraphMsgHandler_free(this_obj_conv);
+       ChannelTransactionParameters_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NetGraphMsgHandler_new(uint32_t network_graph, uint32_t chain_access, uint32_t logger) {
-       LDKNetworkGraph network_graph_conv;
-       network_graph_conv.inner = (void*)(network_graph & (~1));
-       network_graph_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(network_graph_conv);
-       void* chain_access_ptr = (void*)(((uint64_t)chain_access) & ~1);
-       CHECK_ACCESS(chain_access_ptr);
-       LDKCOption_AccessZ chain_access_conv = *(LDKCOption_AccessZ*)(chain_access_ptr);
-       // Warning: we may need a move here but no clone is available for LDKCOption_AccessZ
-       if (chain_access_conv.tag == LDKCOption_AccessZ_Some) {
-               // Manually implement clone for Java trait instances
-       }
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       CHECK_ACCESS(logger_ptr);
-       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
-       LDKNetGraphMsgHandler ret_var = NetGraphMsgHandler_new(&network_graph_conv, chain_access_conv, logger_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_get_holder_pubkeys(uint32_t this_ptr) {
+       LDKChannelTransactionParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKChannelPublicKeys ret_var = ChannelTransactionParameters_get_holder_pubkeys(&this_ptr_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -32098,146 +29295,216 @@ uint32_t  __attribute__((visibility("default"))) TS_NetGraphMsgHandler_new(uint3
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_NetGraphMsgHandler_add_chain_access(uint32_t this_arg, uint32_t chain_access) {
-       LDKNetGraphMsgHandler this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       void* chain_access_ptr = (void*)(((uint64_t)chain_access) & ~1);
-       CHECK_ACCESS(chain_access_ptr);
-       LDKCOption_AccessZ chain_access_conv = *(LDKCOption_AccessZ*)(chain_access_ptr);
-       // Warning: we may need a move here but no clone is available for LDKCOption_AccessZ
-       if (chain_access_conv.tag == LDKCOption_AccessZ_Some) {
-               // Manually implement clone for Java trait instances
-       }
-       NetGraphMsgHandler_add_chain_access(&this_arg_conv, chain_access_conv);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NetGraphMsgHandler_as_RoutingMessageHandler(uint32_t this_arg) {
-       LDKNetGraphMsgHandler this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKRoutingMessageHandler* ret_ret = MALLOC(sizeof(LDKRoutingMessageHandler), "LDKRoutingMessageHandler");
-       *ret_ret = NetGraphMsgHandler_as_RoutingMessageHandler(&this_arg_conv);
-       return (uint64_t)ret_ret;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NetGraphMsgHandler_as_MessageSendEventsProvider(uint32_t this_arg) {
-       LDKNetGraphMsgHandler this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKMessageSendEventsProvider* ret_ret = MALLOC(sizeof(LDKMessageSendEventsProvider), "LDKMessageSendEventsProvider");
-       *ret_ret = NetGraphMsgHandler_as_MessageSendEventsProvider(&this_arg_conv);
-       return (uint64_t)ret_ret;
-}
-
-void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_free(uint32_t this_obj) {
-       LDKDirectionalChannelInfo this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       DirectionalChannelInfo_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_set_holder_pubkeys(uint32_t this_ptr, uint32_t val) {
+       LDKChannelTransactionParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKChannelPublicKeys val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = ChannelPublicKeys_clone(&val_conv);
+       ChannelTransactionParameters_set_holder_pubkeys(&this_ptr_conv, val_conv);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_get_last_update(uint32_t this_ptr) {
-       LDKDirectionalChannelInfo this_ptr_conv;
+int16_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_get_holder_selected_contest_delay(uint32_t this_ptr) {
+       LDKChannelTransactionParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = DirectionalChannelInfo_get_last_update(&this_ptr_conv);
+       int16_t ret_val = ChannelTransactionParameters_get_holder_selected_contest_delay(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_set_last_update(uint32_t this_ptr, int32_t val) {
-       LDKDirectionalChannelInfo this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_set_holder_selected_contest_delay(uint32_t this_ptr, int16_t val) {
+       LDKChannelTransactionParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       DirectionalChannelInfo_set_last_update(&this_ptr_conv, val);
+       ChannelTransactionParameters_set_holder_selected_contest_delay(&this_ptr_conv, val);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_get_enabled(uint32_t this_ptr) {
-       LDKDirectionalChannelInfo this_ptr_conv;
+jboolean  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_get_is_outbound_from_holder(uint32_t this_ptr) {
+       LDKChannelTransactionParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = DirectionalChannelInfo_get_enabled(&this_ptr_conv);
+       jboolean ret_val = ChannelTransactionParameters_get_is_outbound_from_holder(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_set_enabled(uint32_t this_ptr, jboolean val) {
-       LDKDirectionalChannelInfo this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_set_is_outbound_from_holder(uint32_t this_ptr, jboolean val) {
+       LDKChannelTransactionParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       DirectionalChannelInfo_set_enabled(&this_ptr_conv, val);
+       ChannelTransactionParameters_set_is_outbound_from_holder(&this_ptr_conv, val);
 }
 
-int16_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_get_cltv_expiry_delta(uint32_t this_ptr) {
-       LDKDirectionalChannelInfo this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_get_counterparty_parameters(uint32_t this_ptr) {
+       LDKChannelTransactionParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = DirectionalChannelInfo_get_cltv_expiry_delta(&this_ptr_conv);
-       return ret_val;
+       LDKCounterpartyChannelTransactionParameters ret_var = ChannelTransactionParameters_get_counterparty_parameters(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       if ((uint64_t)ret_var.inner > 4096) {
+               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+               ret_ref = (uint64_t)ret_var.inner;
+               if (ret_var.is_owned) {
+                       ret_ref |= 1;
+               }
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_set_cltv_expiry_delta(uint32_t this_ptr, int16_t val) {
-       LDKDirectionalChannelInfo this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_set_counterparty_parameters(uint32_t this_ptr, uint32_t val) {
+       LDKChannelTransactionParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       DirectionalChannelInfo_set_cltv_expiry_delta(&this_ptr_conv, val);
+       LDKCounterpartyChannelTransactionParameters val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = CounterpartyChannelTransactionParameters_clone(&val_conv);
+       ChannelTransactionParameters_set_counterparty_parameters(&this_ptr_conv, val_conv);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_get_htlc_minimum_msat(uint32_t this_ptr) {
-       LDKDirectionalChannelInfo this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_get_funding_outpoint(uint32_t this_ptr) {
+       LDKChannelTransactionParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = DirectionalChannelInfo_get_htlc_minimum_msat(&this_ptr_conv);
-       return ret_val;
+       LDKOutPoint ret_var = ChannelTransactionParameters_get_funding_outpoint(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       if ((uint64_t)ret_var.inner > 4096) {
+               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+               ret_ref = (uint64_t)ret_var.inner;
+               if (ret_var.is_owned) {
+                       ret_ref |= 1;
+               }
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_set_htlc_minimum_msat(uint32_t this_ptr, int64_t val) {
-       LDKDirectionalChannelInfo this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_set_funding_outpoint(uint32_t this_ptr, uint32_t val) {
+       LDKChannelTransactionParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       DirectionalChannelInfo_set_htlc_minimum_msat(&this_ptr_conv, val);
+       LDKOutPoint val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = OutPoint_clone(&val_conv);
+       ChannelTransactionParameters_set_funding_outpoint(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_get_htlc_maximum_msat(uint32_t this_ptr) {
-       LDKDirectionalChannelInfo this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_get_opt_anchors(uint32_t this_ptr) {
+       LDKChannelTransactionParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
-       *ret_copy = DirectionalChannelInfo_get_htlc_maximum_msat(&this_ptr_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
+       uint32_t ret_conv = LDKCOption_NoneZ_to_js(ChannelTransactionParameters_get_opt_anchors(&this_ptr_conv));
+       return ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_set_opt_anchors(uint32_t this_ptr, uint32_t val) {
+       LDKChannelTransactionParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCOption_NoneZ val_conv = LDKCOption_NoneZ_from_js(val);
+       ChannelTransactionParameters_set_opt_anchors(&this_ptr_conv, val_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_new(uint32_t holder_pubkeys_arg, int16_t holder_selected_contest_delay_arg, jboolean is_outbound_from_holder_arg, uint32_t counterparty_parameters_arg, uint32_t funding_outpoint_arg, uint32_t opt_anchors_arg) {
+       LDKChannelPublicKeys holder_pubkeys_arg_conv;
+       holder_pubkeys_arg_conv.inner = (void*)(holder_pubkeys_arg & (~1));
+       holder_pubkeys_arg_conv.is_owned = (holder_pubkeys_arg & 1) || (holder_pubkeys_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(holder_pubkeys_arg_conv);
+       holder_pubkeys_arg_conv = ChannelPublicKeys_clone(&holder_pubkeys_arg_conv);
+       LDKCounterpartyChannelTransactionParameters counterparty_parameters_arg_conv;
+       counterparty_parameters_arg_conv.inner = (void*)(counterparty_parameters_arg & (~1));
+       counterparty_parameters_arg_conv.is_owned = (counterparty_parameters_arg & 1) || (counterparty_parameters_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(counterparty_parameters_arg_conv);
+       counterparty_parameters_arg_conv = CounterpartyChannelTransactionParameters_clone(&counterparty_parameters_arg_conv);
+       LDKOutPoint funding_outpoint_arg_conv;
+       funding_outpoint_arg_conv.inner = (void*)(funding_outpoint_arg & (~1));
+       funding_outpoint_arg_conv.is_owned = (funding_outpoint_arg & 1) || (funding_outpoint_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_outpoint_arg_conv);
+       funding_outpoint_arg_conv = OutPoint_clone(&funding_outpoint_arg_conv);
+       LDKCOption_NoneZ opt_anchors_arg_conv = LDKCOption_NoneZ_from_js(opt_anchors_arg);
+       LDKChannelTransactionParameters ret_var = ChannelTransactionParameters_new(holder_pubkeys_arg_conv, holder_selected_contest_delay_arg, is_outbound_from_holder_arg, counterparty_parameters_arg_conv, funding_outpoint_arg_conv, opt_anchors_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+static inline uint64_t ChannelTransactionParameters_clone_ptr(LDKChannelTransactionParameters *NONNULL_PTR arg) {
+       LDKChannelTransactionParameters ret_var = ChannelTransactionParameters_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_clone_ptr(uint32_t arg) {
+       LDKChannelTransactionParameters arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ChannelTransactionParameters_clone_ptr(&arg_conv);
+       return ret_val;
+}
+
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKChannelTransactionParameters ret_var = ChannelTransactionParameters_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_set_htlc_maximum_msat(uint32_t this_ptr, uint32_t val) {
-       LDKDirectionalChannelInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKCOption_u64Z val_conv = *(LDKCOption_u64Z*)(val_ptr);
-       val_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)val) & ~1));
-       DirectionalChannelInfo_set_htlc_maximum_msat(&this_ptr_conv, val_conv);
+void  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_free(uint32_t this_obj) {
+       LDKCounterpartyChannelTransactionParameters this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       CounterpartyChannelTransactionParameters_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_get_fees(uint32_t this_ptr) {
-       LDKDirectionalChannelInfo 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKRoutingFees ret_var = DirectionalChannelInfo_get_fees(&this_ptr_conv);
+       LDKChannelPublicKeys ret_var = CounterpartyChannelTransactionParameters_get_pubkeys(&this_ptr_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -32249,67 +29516,43 @@ uint32_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_get_f
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_set_fees(uint32_t this_ptr, uint32_t val) {
-       LDKDirectionalChannelInfo this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_set_pubkeys(uint32_t this_ptr, uint32_t val) {
+       LDKCounterpartyChannelTransactionParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKRoutingFees val_conv;
+       LDKChannelPublicKeys val_conv;
        val_conv.inner = (void*)(val & (~1));
        val_conv.is_owned = (val & 1) || (val == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = RoutingFees_clone(&val_conv);
-       DirectionalChannelInfo_set_fees(&this_ptr_conv, val_conv);
+       val_conv = ChannelPublicKeys_clone(&val_conv);
+       CounterpartyChannelTransactionParameters_set_pubkeys(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_get_last_update_message(uint32_t this_ptr) {
-       LDKDirectionalChannelInfo this_ptr_conv;
+int16_t  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_get_selected_contest_delay(uint32_t this_ptr) {
+       LDKCounterpartyChannelTransactionParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelUpdate ret_var = DirectionalChannelInfo_get_last_update_message(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
-       }
-       return ret_ref;
+       int16_t ret_val = CounterpartyChannelTransactionParameters_get_selected_contest_delay(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_set_last_update_message(uint32_t this_ptr, uint32_t val) {
-       LDKDirectionalChannelInfo this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_set_selected_contest_delay(uint32_t this_ptr, int16_t val) {
+       LDKCounterpartyChannelTransactionParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelUpdate val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = ChannelUpdate_clone(&val_conv);
-       DirectionalChannelInfo_set_last_update_message(&this_ptr_conv, val_conv);
+       CounterpartyChannelTransactionParameters_set_selected_contest_delay(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_new(int32_t last_update_arg, jboolean enabled_arg, int16_t cltv_expiry_delta_arg, int64_t htlc_minimum_msat_arg, uint32_t htlc_maximum_msat_arg, uint32_t fees_arg, uint32_t last_update_message_arg) {
-       void* htlc_maximum_msat_arg_ptr = (void*)(((uint64_t)htlc_maximum_msat_arg) & ~1);
-       CHECK_ACCESS(htlc_maximum_msat_arg_ptr);
-       LDKCOption_u64Z htlc_maximum_msat_arg_conv = *(LDKCOption_u64Z*)(htlc_maximum_msat_arg_ptr);
-       htlc_maximum_msat_arg_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)htlc_maximum_msat_arg) & ~1));
-       LDKRoutingFees fees_arg_conv;
-       fees_arg_conv.inner = (void*)(fees_arg & (~1));
-       fees_arg_conv.is_owned = (fees_arg & 1) || (fees_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(fees_arg_conv);
-       fees_arg_conv = RoutingFees_clone(&fees_arg_conv);
-       LDKChannelUpdate last_update_message_arg_conv;
-       last_update_message_arg_conv.inner = (void*)(last_update_message_arg & (~1));
-       last_update_message_arg_conv.is_owned = (last_update_message_arg & 1) || (last_update_message_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(last_update_message_arg_conv);
-       last_update_message_arg_conv = ChannelUpdate_clone(&last_update_message_arg_conv);
-       LDKDirectionalChannelInfo ret_var = DirectionalChannelInfo_new(last_update_arg, enabled_arg, cltv_expiry_delta_arg, htlc_minimum_msat_arg, htlc_maximum_msat_arg_conv, fees_arg_conv, last_update_message_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_new(uint32_t pubkeys_arg, int16_t selected_contest_delay_arg) {
+       LDKChannelPublicKeys pubkeys_arg_conv;
+       pubkeys_arg_conv.inner = (void*)(pubkeys_arg & (~1));
+       pubkeys_arg_conv.is_owned = (pubkeys_arg & 1) || (pubkeys_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(pubkeys_arg_conv);
+       pubkeys_arg_conv = ChannelPublicKeys_clone(&pubkeys_arg_conv);
+       LDKCounterpartyChannelTransactionParameters ret_var = CounterpartyChannelTransactionParameters_new(pubkeys_arg_conv, selected_contest_delay_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -32321,8 +29564,8 @@ uint32_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_new(i
        return ret_ref;
 }
 
-static inline uint64_t DirectionalChannelInfo_clone_ptr(LDKDirectionalChannelInfo *NONNULL_PTR arg) {
-       LDKDirectionalChannelInfo ret_var = DirectionalChannelInfo_clone(arg);
+static inline uint64_t CounterpartyChannelTransactionParameters_clone_ptr(LDKCounterpartyChannelTransactionParameters *NONNULL_PTR arg) {
+       LDKCounterpartyChannelTransactionParameters ret_var = CounterpartyChannelTransactionParameters_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -32333,21 +29576,183 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_clone_ptr(uint32_t arg) {
-       LDKDirectionalChannelInfo arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_clone_ptr(uint32_t arg) {
+       LDKCounterpartyChannelTransactionParameters arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = DirectionalChannelInfo_clone_ptr(&arg_conv);
+       int64_t ret_val = CounterpartyChannelTransactionParameters_clone_ptr(&arg_conv);
+       return ret_val;
+}
+
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKCounterpartyChannelTransactionParameters ret_var = CounterpartyChannelTransactionParameters_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)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));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       jboolean ret_val = ChannelTransactionParameters_is_populated(&this_arg_conv);
+       return ret_val;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_as_holder_broadcastable(uint32_t this_arg) {
+       LDKChannelTransactionParameters this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKDirectedChannelTransactionParameters ret_var = ChannelTransactionParameters_as_holder_broadcastable(&this_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_as_counterparty_broadcastable(uint32_t this_arg) {
+       LDKChannelTransactionParameters this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKDirectedChannelTransactionParameters ret_var = ChannelTransactionParameters_as_counterparty_broadcastable(&this_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_write(uint32_t obj) {
+       LDKCounterpartyChannelTransactionParameters obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = CounterpartyChannelTransactionParameters_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ), "LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ");
+       *ret_conv = CounterpartyChannelTransactionParameters_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_write(uint32_t obj) {
+       LDKChannelTransactionParameters obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ChannelTransactionParameters_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ), "LDKCResult_ChannelTransactionParametersDecodeErrorZ");
+       *ret_conv = ChannelTransactionParameters_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_DirectedChannelTransactionParameters_free(uint32_t this_obj) {
+       LDKDirectedChannelTransactionParameters this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       DirectedChannelTransactionParameters_free(this_obj_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_DirectedChannelTransactionParameters_broadcaster_pubkeys(uint32_t this_arg) {
+       LDKDirectedChannelTransactionParameters this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKChannelPublicKeys ret_var = DirectedChannelTransactionParameters_broadcaster_pubkeys(&this_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_DirectedChannelTransactionParameters_countersignatory_pubkeys(uint32_t this_arg) {
+       LDKDirectedChannelTransactionParameters this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKChannelPublicKeys ret_var = DirectedChannelTransactionParameters_countersignatory_pubkeys(&this_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+int16_t  __attribute__((visibility("default"))) TS_DirectedChannelTransactionParameters_contest_delay(uint32_t this_arg) {
+       LDKDirectedChannelTransactionParameters this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int16_t ret_val = DirectedChannelTransactionParameters_contest_delay(&this_arg_conv);
+       return ret_val;
+}
+
+jboolean  __attribute__((visibility("default"))) TS_DirectedChannelTransactionParameters_is_outbound(uint32_t this_arg) {
+       LDKDirectedChannelTransactionParameters this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       jboolean ret_val = DirectedChannelTransactionParameters_is_outbound(&this_arg_conv);
        return ret_val;
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKDirectionalChannelInfo ret_var = DirectionalChannelInfo_clone(&orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_DirectedChannelTransactionParameters_funding_outpoint(uint32_t this_arg) {
+       LDKDirectedChannelTransactionParameters this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKOutPoint ret_var = DirectedChannelTransactionParameters_funding_outpoint(&this_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -32359,71 +29764,93 @@ uint32_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_clone
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_write(uint32_t obj) {
-       LDKDirectionalChannelInfo obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = DirectionalChannelInfo_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_DirectionalChannelInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DirectionalChannelInfoDecodeErrorZ), "LDKCResult_DirectionalChannelInfoDecodeErrorZ");
-       *ret_conv = DirectionalChannelInfo_read(ser_ref);
-       return (uint64_t)ret_conv;
+jboolean  __attribute__((visibility("default"))) TS_DirectedChannelTransactionParameters_opt_anchors(uint32_t this_arg) {
+       LDKDirectedChannelTransactionParameters this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       jboolean ret_val = DirectedChannelTransactionParameters_opt_anchors(&this_arg_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelInfo_free(uint32_t this_obj) {
-       LDKChannelInfo this_obj_conv;
+void  __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_free(uint32_t this_obj) {
+       LDKHolderCommitmentTransaction this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelInfo_free(this_obj_conv);
+       HolderCommitmentTransaction_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_features(uint32_t this_ptr) {
-       LDKChannelInfo this_ptr_conv;
+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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelFeatures ret_var = ChannelInfo_get_features(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, HolderCommitmentTransaction_get_counterparty_sig(&this_ptr_conv).compact_form, 64);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelInfo_set_features(uint32_t this_ptr, uint32_t val) {
-       LDKChannelInfo this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_set_counterparty_sig(uint32_t this_ptr, int8_tArray val) {
+       LDKHolderCommitmentTransaction this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelFeatures val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = ChannelFeatures_clone(&val_conv);
-       ChannelInfo_set_features(&this_ptr_conv, val_conv);
+       LDKSignature val_ref;
+       CHECK(val->arr_len == 64);
+       memcpy(val_ref.compact_form, val->elems, 64);
+       HolderCommitmentTransaction_set_counterparty_sig(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_node_one(uint32_t this_ptr) {
-       LDKChannelInfo this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_set_counterparty_htlc_sigs(uint32_t this_ptr, ptrArray val) {
+       LDKHolderCommitmentTransaction this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNodeId ret_var = ChannelInfo_get_node_one(&this_ptr_conv);
+       LDKCVec_SignatureZ val_constr;
+       val_constr.datalen = val->arr_len;
+       if (val_constr.datalen > 0)
+               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ Elements");
+       else
+               val_constr.data = NULL;
+       int8_tArray* val_vals = (void*) val->elems;
+       for (size_t m = 0; m < val_constr.datalen; m++) {
+               int8_tArray val_conv_12 = val_vals[m];
+               LDKSignature val_conv_12_ref;
+               CHECK(val_conv_12->arr_len == 64);
+               memcpy(val_conv_12_ref.compact_form, val_conv_12->elems, 64);
+               val_constr.data[m] = val_conv_12_ref;
+       }
+       HolderCommitmentTransaction_set_counterparty_htlc_sigs(&this_ptr_conv, val_constr);
+}
+
+static inline uint64_t HolderCommitmentTransaction_clone_ptr(LDKHolderCommitmentTransaction *NONNULL_PTR arg) {
+       LDKHolderCommitmentTransaction ret_var = HolderCommitmentTransaction_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_clone_ptr(uint32_t arg) {
+       LDKHolderCommitmentTransaction arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = HolderCommitmentTransaction_clone_ptr(&arg_conv);
+       return ret_val;
+}
+
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKHolderCommitmentTransaction ret_var = HolderCommitmentTransaction_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -32435,57 +29862,57 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_node_one(uin
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelInfo_set_node_one(uint32_t this_ptr, uint32_t val) {
-       LDKChannelInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNodeId val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = NodeId_clone(&val_conv);
-       ChannelInfo_set_node_one(&this_ptr_conv, val_conv);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_one_to_two(uint32_t this_ptr) {
-       LDKChannelInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKDirectionalChannelInfo ret_var = ChannelInfo_get_one_to_two(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)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));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = HolderCommitmentTransaction_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelInfo_set_one_to_two(uint32_t this_ptr, uint32_t val) {
-       LDKChannelInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKDirectionalChannelInfo val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = DirectionalChannelInfo_clone(&val_conv);
-       ChannelInfo_set_one_to_two(&this_ptr_conv, val_conv);
+uint32_t  __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_HolderCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ), "LDKCResult_HolderCommitmentTransactionDecodeErrorZ");
+       *ret_conv = HolderCommitmentTransaction_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_node_two(uint32_t this_ptr) {
-       LDKChannelInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNodeId ret_var = ChannelInfo_get_node_two(&this_ptr_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) {
+       LDKCommitmentTransaction commitment_tx_conv;
+       commitment_tx_conv.inner = (void*)(commitment_tx & (~1));
+       commitment_tx_conv.is_owned = (commitment_tx & 1) || (commitment_tx == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_tx_conv);
+       commitment_tx_conv = CommitmentTransaction_clone(&commitment_tx_conv);
+       LDKSignature counterparty_sig_ref;
+       CHECK(counterparty_sig->arr_len == 64);
+       memcpy(counterparty_sig_ref.compact_form, counterparty_sig->elems, 64);
+       LDKCVec_SignatureZ counterparty_htlc_sigs_constr;
+       counterparty_htlc_sigs_constr.datalen = counterparty_htlc_sigs->arr_len;
+       if (counterparty_htlc_sigs_constr.datalen > 0)
+               counterparty_htlc_sigs_constr.data = MALLOC(counterparty_htlc_sigs_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ Elements");
+       else
+               counterparty_htlc_sigs_constr.data = NULL;
+       int8_tArray* counterparty_htlc_sigs_vals = (void*) counterparty_htlc_sigs->elems;
+       for (size_t m = 0; m < counterparty_htlc_sigs_constr.datalen; m++) {
+               int8_tArray counterparty_htlc_sigs_conv_12 = counterparty_htlc_sigs_vals[m];
+               LDKSignature counterparty_htlc_sigs_conv_12_ref;
+               CHECK(counterparty_htlc_sigs_conv_12->arr_len == 64);
+               memcpy(counterparty_htlc_sigs_conv_12_ref.compact_form, counterparty_htlc_sigs_conv_12->elems, 64);
+               counterparty_htlc_sigs_constr.data[m] = counterparty_htlc_sigs_conv_12_ref;
+       }
+       LDKPublicKey holder_funding_key_ref;
+       CHECK(holder_funding_key->arr_len == 33);
+       memcpy(holder_funding_key_ref.compressed_form, holder_funding_key->elems, 33);
+       LDKPublicKey counterparty_funding_key_ref;
+       CHECK(counterparty_funding_key->arr_len == 33);
+       memcpy(counterparty_funding_key_ref.compressed_form, counterparty_funding_key->elems, 33);
+       LDKHolderCommitmentTransaction ret_var = HolderCommitmentTransaction_new(commitment_tx_conv, counterparty_sig_ref, counterparty_htlc_sigs_constr, holder_funding_key_ref, counterparty_funding_key_ref);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -32497,108 +29924,83 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_node_two(uin
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelInfo_set_node_two(uint32_t this_ptr, uint32_t val) {
-       LDKChannelInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNodeId val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = NodeId_clone(&val_conv);
-       ChannelInfo_set_node_two(&this_ptr_conv, val_conv);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_two_to_one(uint32_t this_ptr) {
-       LDKChannelInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKDirectionalChannelInfo ret_var = ChannelInfo_get_two_to_one(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_free(uint32_t this_obj) {
+       LDKBuiltCommitmentTransaction this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       BuiltCommitmentTransaction_free(this_obj_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelInfo_set_two_to_one(uint32_t this_ptr, uint32_t val) {
-       LDKChannelInfo this_ptr_conv;
+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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKDirectionalChannelInfo val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = DirectionalChannelInfo_clone(&val_conv);
-       ChannelInfo_set_two_to_one(&this_ptr_conv, val_conv);
+       LDKTransaction ret_var = BuiltCommitmentTransaction_get_transaction(&this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       Transaction_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_capacity_sats(uint32_t this_ptr) {
-       LDKChannelInfo this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_set_transaction(uint32_t this_ptr, int8_tArray val) {
+       LDKBuiltCommitmentTransaction this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
-       *ret_copy = ChannelInfo_get_capacity_sats(&this_ptr_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+       LDKTransaction val_ref;
+       val_ref.datalen = val->arr_len;
+       val_ref.data = MALLOC(val_ref.datalen, "LDKTransaction Bytes");
+       memcpy(val_ref.data, val->elems, val_ref.datalen);
+       val_ref.data_is_owned = true;
+       BuiltCommitmentTransaction_set_transaction(&this_ptr_conv, val_ref);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelInfo_set_capacity_sats(uint32_t this_ptr, uint32_t val) {
-       LDKChannelInfo this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_get_txid(uint32_t this_ptr) {
+       LDKBuiltCommitmentTransaction this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKCOption_u64Z val_conv = *(LDKCOption_u64Z*)(val_ptr);
-       val_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)val) & ~1));
-       ChannelInfo_set_capacity_sats(&this_ptr_conv, val_conv);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *BuiltCommitmentTransaction_get_txid(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_announcement_message(uint32_t this_ptr) {
-       LDKChannelInfo this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_set_txid(uint32_t this_ptr, int8_tArray val) {
+       LDKBuiltCommitmentTransaction this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelAnnouncement ret_var = ChannelInfo_get_announcement_message(&this_ptr_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       BuiltCommitmentTransaction_set_txid(&this_ptr_conv, val_ref);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_new(int8_tArray transaction_arg, int8_tArray txid_arg) {
+       LDKTransaction transaction_arg_ref;
+       transaction_arg_ref.datalen = transaction_arg->arr_len;
+       transaction_arg_ref.data = MALLOC(transaction_arg_ref.datalen, "LDKTransaction Bytes");
+       memcpy(transaction_arg_ref.data, transaction_arg->elems, transaction_arg_ref.datalen);
+       transaction_arg_ref.data_is_owned = true;
+       LDKThirtyTwoBytes txid_arg_ref;
+       CHECK(txid_arg->arr_len == 32);
+       memcpy(txid_arg_ref.data, txid_arg->elems, 32);
+       LDKBuiltCommitmentTransaction ret_var = BuiltCommitmentTransaction_new(transaction_arg_ref, txid_arg_ref);
        uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
        CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelInfo_set_announcement_message(uint32_t this_ptr, uint32_t val) {
-       LDKChannelInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelAnnouncement val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = ChannelAnnouncement_clone(&val_conv);
-       ChannelInfo_set_announcement_message(&this_ptr_conv, val_conv);
-}
-
-static inline uint64_t ChannelInfo_clone_ptr(LDKChannelInfo *NONNULL_PTR arg) {
-       LDKChannelInfo ret_var = ChannelInfo_clone(arg);
+static inline uint64_t BuiltCommitmentTransaction_clone_ptr(LDKBuiltCommitmentTransaction *NONNULL_PTR arg) {
+       LDKBuiltCommitmentTransaction ret_var = BuiltCommitmentTransaction_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -32609,21 +30011,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_ChannelInfo_clone_ptr(uint32_t arg) {
-       LDKChannelInfo arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_clone_ptr(uint32_t arg) {
+       LDKBuiltCommitmentTransaction arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelInfo_clone_ptr(&arg_conv);
+       int64_t ret_val = BuiltCommitmentTransaction_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_clone(uint32_t orig) {
-       LDKChannelInfo orig_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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelInfo ret_var = ChannelInfo_clone(&orig_conv);
+       LDKBuiltCommitmentTransaction ret_var = BuiltCommitmentTransaction_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -32635,97 +30037,270 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_clone(uint32_t o
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelInfo_write(uint32_t obj) {
-       LDKChannelInfo obj_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_write(uint32_t obj) {
+       LDKBuiltCommitmentTransaction obj_conv;
        obj_conv.inner = (void*)(obj & (~1));
        obj_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ChannelInfo_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       LDKCVec_u8Z ret_var = BuiltCommitmentTransaction_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_read(int8_tArray ser) {
+uint32_t  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_read(int8_tArray ser) {
        LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ChannelInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelInfoDecodeErrorZ), "LDKCResult_ChannelInfoDecodeErrorZ");
-       *ret_conv = ChannelInfo_read(ser_ref);
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ), "LDKCResult_BuiltCommitmentTransactionDecodeErrorZ");
+       *ret_conv = BuiltCommitmentTransaction_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_RoutingFees_free(uint32_t this_obj) {
-       LDKRoutingFees this_obj_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_get_sighash_all(uint32_t this_arg, int8_tArray funding_redeemscript, int64_t channel_value_satoshis) {
+       LDKBuiltCommitmentTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKu8slice funding_redeemscript_ref;
+       funding_redeemscript_ref.datalen = funding_redeemscript->arr_len;
+       funding_redeemscript_ref.data = funding_redeemscript->elems;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, BuiltCommitmentTransaction_get_sighash_all(&this_arg_conv, funding_redeemscript_ref, channel_value_satoshis).data, 32);
+       return ret_arr;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_sign(uint32_t this_arg, int8_tArray funding_key, int8_tArray funding_redeemscript, int64_t channel_value_satoshis) {
+       LDKBuiltCommitmentTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       unsigned char funding_key_arr[32];
+       CHECK(funding_key->arr_len == 32);
+       memcpy(funding_key_arr, funding_key->elems, 32);
+       unsigned char (*funding_key_ref)[32] = &funding_key_arr;
+       LDKu8slice funding_redeemscript_ref;
+       funding_redeemscript_ref.datalen = funding_redeemscript->arr_len;
+       funding_redeemscript_ref.data = funding_redeemscript->elems;
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, BuiltCommitmentTransaction_sign(&this_arg_conv, funding_key_ref, funding_redeemscript_ref, channel_value_satoshis).compact_form, 64);
+       return ret_arr;
+}
+
+void  __attribute__((visibility("default"))) TS_ClosingTransaction_free(uint32_t this_obj) {
+       LDKClosingTransaction this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       RoutingFees_free(this_obj_conv);
+       ClosingTransaction_free(this_obj_conv);
 }
 
-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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = RoutingFees_get_base_msat(&this_ptr_conv);
+static inline uint64_t ClosingTransaction_clone_ptr(LDKClosingTransaction *NONNULL_PTR arg) {
+       LDKClosingTransaction ret_var = ClosingTransaction_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_ClosingTransaction_clone_ptr(uint32_t arg) {
+       LDKClosingTransaction arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ClosingTransaction_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_RoutingFees_set_base_msat(uint32_t this_ptr, int32_t val) {
-       LDKRoutingFees this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       RoutingFees_set_base_msat(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_ClosingTransaction_clone(uint32_t orig) {
+       LDKClosingTransaction orig_conv;
+       orig_conv.inner = (void*)(orig & (~1));
+       orig_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKClosingTransaction ret_var = ClosingTransaction_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+int64_t  __attribute__((visibility("default"))) TS_ClosingTransaction_hash(uint32_t o) {
+       LDKClosingTransaction o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       int64_t ret_val = ClosingTransaction_hash(&o_conv);
+       return ret_val;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ClosingTransaction_new(int64_t to_holder_value_sat, int64_t to_counterparty_value_sat, int8_tArray to_holder_script, int8_tArray to_counterparty_script, uint32_t funding_outpoint) {
+       LDKCVec_u8Z to_holder_script_ref;
+       to_holder_script_ref.datalen = to_holder_script->arr_len;
+       to_holder_script_ref.data = MALLOC(to_holder_script_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(to_holder_script_ref.data, to_holder_script->elems, to_holder_script_ref.datalen);
+       LDKCVec_u8Z to_counterparty_script_ref;
+       to_counterparty_script_ref.datalen = to_counterparty_script->arr_len;
+       to_counterparty_script_ref.data = MALLOC(to_counterparty_script_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(to_counterparty_script_ref.data, to_counterparty_script->elems, to_counterparty_script_ref.datalen);
+       LDKOutPoint funding_outpoint_conv;
+       funding_outpoint_conv.inner = (void*)(funding_outpoint & (~1));
+       funding_outpoint_conv.is_owned = (funding_outpoint & 1) || (funding_outpoint == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_outpoint_conv);
+       funding_outpoint_conv = OutPoint_clone(&funding_outpoint_conv);
+       LDKClosingTransaction ret_var = ClosingTransaction_new(to_holder_value_sat, to_counterparty_value_sat, to_holder_script_ref, to_counterparty_script_ref, funding_outpoint_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ClosingTransaction_trust(uint32_t this_arg) {
+       LDKClosingTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKTrustedClosingTransaction ret_var = ClosingTransaction_trust(&this_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ClosingTransaction_verify(uint32_t this_arg, uint32_t funding_outpoint) {
+       LDKClosingTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKOutPoint funding_outpoint_conv;
+       funding_outpoint_conv.inner = (void*)(funding_outpoint & (~1));
+       funding_outpoint_conv.is_owned = (funding_outpoint & 1) || (funding_outpoint == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_outpoint_conv);
+       funding_outpoint_conv = OutPoint_clone(&funding_outpoint_conv);
+       LDKCResult_TrustedClosingTransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TrustedClosingTransactionNoneZ), "LDKCResult_TrustedClosingTransactionNoneZ");
+       *ret_conv = ClosingTransaction_verify(&this_arg_conv, funding_outpoint_conv);
+       return (uint64_t)ret_conv;
+}
+
+int64_t  __attribute__((visibility("default"))) TS_ClosingTransaction_to_holder_value_sat(uint32_t this_arg) {
+       LDKClosingTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int64_t ret_val = ClosingTransaction_to_holder_value_sat(&this_arg_conv);
+       return ret_val;
+}
+
+int64_t  __attribute__((visibility("default"))) TS_ClosingTransaction_to_counterparty_value_sat(uint32_t this_arg) {
+       LDKClosingTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int64_t ret_val = ClosingTransaction_to_counterparty_value_sat(&this_arg_conv);
+       return ret_val;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_ClosingTransaction_to_holder_script(uint32_t this_arg) {
+       LDKClosingTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKu8slice ret_var = ClosingTransaction_to_holder_script(&this_arg_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       return ret_arr;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_ClosingTransaction_to_counterparty_script(uint32_t this_arg) {
+       LDKClosingTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKu8slice ret_var = ClosingTransaction_to_counterparty_script(&this_arg_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       return ret_arr;
+}
+
+void  __attribute__((visibility("default"))) TS_TrustedClosingTransaction_free(uint32_t this_obj) {
+       LDKTrustedClosingTransaction this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       TrustedClosingTransaction_free(this_obj_conv);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_RoutingFees_get_proportional_millionths(uint32_t this_ptr) {
-       LDKRoutingFees this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = RoutingFees_get_proportional_millionths(&this_ptr_conv);
-       return ret_val;
+int8_tArray  __attribute__((visibility("default"))) TS_TrustedClosingTransaction_built_transaction(uint32_t this_arg) {
+       LDKTrustedClosingTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKTransaction ret_var = TrustedClosingTransaction_built_transaction(&this_arg_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       Transaction_free(ret_var);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_RoutingFees_set_proportional_millionths(uint32_t this_ptr, int32_t val) {
-       LDKRoutingFees this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       RoutingFees_set_proportional_millionths(&this_ptr_conv, val);
+int8_tArray  __attribute__((visibility("default"))) TS_TrustedClosingTransaction_get_sighash_all(uint32_t this_arg, int8_tArray funding_redeemscript, int64_t channel_value_satoshis) {
+       LDKTrustedClosingTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKu8slice funding_redeemscript_ref;
+       funding_redeemscript_ref.datalen = funding_redeemscript->arr_len;
+       funding_redeemscript_ref.data = funding_redeemscript->elems;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, TrustedClosingTransaction_get_sighash_all(&this_arg_conv, funding_redeemscript_ref, channel_value_satoshis).data, 32);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RoutingFees_new(int32_t base_msat_arg, int32_t proportional_millionths_arg) {
-       LDKRoutingFees ret_var = RoutingFees_new(base_msat_arg, proportional_millionths_arg);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_TrustedClosingTransaction_sign(uint32_t this_arg, int8_tArray funding_key, int8_tArray funding_redeemscript, int64_t channel_value_satoshis) {
+       LDKTrustedClosingTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       unsigned char funding_key_arr[32];
+       CHECK(funding_key->arr_len == 32);
+       memcpy(funding_key_arr, funding_key->elems, 32);
+       unsigned char (*funding_key_ref)[32] = &funding_key_arr;
+       LDKu8slice funding_redeemscript_ref;
+       funding_redeemscript_ref.datalen = funding_redeemscript->arr_len;
+       funding_redeemscript_ref.data = funding_redeemscript->elems;
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, TrustedClosingTransaction_sign(&this_arg_conv, funding_key_ref, funding_redeemscript_ref, channel_value_satoshis).compact_form, 64);
+       return ret_arr;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_RoutingFees_eq(uint32_t a, uint32_t b) {
-       LDKRoutingFees a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKRoutingFees b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = RoutingFees_eq(&a_conv, &b_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_CommitmentTransaction_free(uint32_t this_obj) {
+       LDKCommitmentTransaction this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       CommitmentTransaction_free(this_obj_conv);
 }
 
-static inline uint64_t RoutingFees_clone_ptr(LDKRoutingFees *NONNULL_PTR arg) {
-       LDKRoutingFees ret_var = RoutingFees_clone(arg);
+static inline uint64_t CommitmentTransaction_clone_ptr(LDKCommitmentTransaction *NONNULL_PTR arg) {
+       LDKCommitmentTransaction ret_var = CommitmentTransaction_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -32736,21 +30311,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_RoutingFees_clone_ptr(uint32_t arg) {
-       LDKRoutingFees arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_clone_ptr(uint32_t arg) {
+       LDKCommitmentTransaction arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = RoutingFees_clone_ptr(&arg_conv);
+       int64_t ret_val = CommitmentTransaction_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RoutingFees_clone(uint32_t orig) {
-       LDKRoutingFees orig_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_clone(uint32_t orig) {
+       LDKCommitmentTransaction orig_conv;
        orig_conv.inner = (void*)(orig & (~1));
        orig_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKRoutingFees ret_var = RoutingFees_clone(&orig_conv);
+       LDKCommitmentTransaction ret_var = CommitmentTransaction_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -32762,50 +30337,69 @@ uint32_t  __attribute__((visibility("default"))) TS_RoutingFees_clone(uint32_t o
        return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_RoutingFees_hash(uint32_t o) {
-       LDKRoutingFees o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = RoutingFees_hash(&o_conv);
-       return ret_val;
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_RoutingFees_write(uint32_t obj) {
-       LDKRoutingFees obj_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_CommitmentTransaction_write(uint32_t obj) {
+       LDKCommitmentTransaction obj_conv;
        obj_conv.inner = (void*)(obj & (~1));
        obj_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = RoutingFees_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       LDKCVec_u8Z ret_var = CommitmentTransaction_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RoutingFees_read(int8_tArray ser) {
+uint32_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_read(int8_tArray ser) {
        LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_RoutingFeesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RoutingFeesDecodeErrorZ), "LDKCResult_RoutingFeesDecodeErrorZ");
-       *ret_conv = RoutingFees_read(ser_ref);
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_CommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ), "LDKCResult_CommitmentTransactionDecodeErrorZ");
+       *ret_conv = CommitmentTransaction_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_free(uint32_t this_obj) {
-       LDKNodeAnnouncementInfo this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       NodeAnnouncementInfo_free(this_obj_conv);
+int64_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_commitment_number(uint32_t this_arg) {
+       LDKCommitmentTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int64_t ret_val = CommitmentTransaction_commitment_number(&this_arg_conv);
+       return ret_val;
 }
 
-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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNodeFeatures ret_var = NodeAnnouncementInfo_get_features(&this_ptr_conv);
+int64_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_to_broadcaster_value_sat(uint32_t this_arg) {
+       LDKCommitmentTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int64_t ret_val = CommitmentTransaction_to_broadcaster_value_sat(&this_arg_conv);
+       return ret_val;
+}
+
+int64_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_to_countersignatory_value_sat(uint32_t this_arg) {
+       LDKCommitmentTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int64_t ret_val = CommitmentTransaction_to_countersignatory_value_sat(&this_arg_conv);
+       return ret_val;
+}
+
+int32_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_feerate_per_kw(uint32_t this_arg) {
+       LDKCommitmentTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int32_t ret_val = CommitmentTransaction_feerate_per_kw(&this_arg_conv);
+       return ret_val;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_trust(uint32_t this_arg) {
+       LDKCommitmentTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKTrustedCommitmentTransaction ret_var = CommitmentTransaction_trust(&this_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -32817,165 +30411,52 @@ uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_get_fea
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_set_features(uint32_t this_ptr, uint32_t val) {
-       LDKNodeAnnouncementInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNodeFeatures val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = NodeFeatures_clone(&val_conv);
-       NodeAnnouncementInfo_set_features(&this_ptr_conv, val_conv);
-}
-
-int32_t  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_get_last_update(uint32_t this_ptr) {
-       LDKNodeAnnouncementInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = NodeAnnouncementInfo_get_last_update(&this_ptr_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_set_last_update(uint32_t this_ptr, int32_t val) {
-       LDKNodeAnnouncementInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       NodeAnnouncementInfo_set_last_update(&this_ptr_conv, val);
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_get_rgb(uint32_t this_ptr) {
-       LDKNodeAnnouncementInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(3, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *NodeAnnouncementInfo_get_rgb(&this_ptr_conv), 3);
-       return ret_arr;
-}
-
-void  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_set_rgb(uint32_t this_ptr, int8_tArray val) {
-       LDKNodeAnnouncementInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThreeBytes val_ref;
-       CHECK(*((uint32_t*)val) == 3);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 3);
-       NodeAnnouncementInfo_set_rgb(&this_ptr_conv, val_ref);
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_get_alias(uint32_t this_ptr) {
-       LDKNodeAnnouncementInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *NodeAnnouncementInfo_get_alias(&this_ptr_conv), 32);
-       return ret_arr;
-}
-
-void  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_set_alias(uint32_t this_ptr, int8_tArray val) {
-       LDKNodeAnnouncementInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       NodeAnnouncementInfo_set_alias(&this_ptr_conv, val_ref);
-}
-
-void  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_set_addresses(uint32_t this_ptr, uint32_tArray val) {
-       LDKNodeAnnouncementInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_NetAddressZ val_constr;
-       val_constr.datalen = *((uint32_t*)val);
-       if (val_constr.datalen > 0)
-               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKNetAddress), "LDKCVec_NetAddressZ Elements");
-       else
-               val_constr.data = NULL;
-       uint32_t* val_vals = (uint32_t*)(val + 4);
-       for (size_t m = 0; m < val_constr.datalen; m++) {
-               uint32_t val_conv_12 = val_vals[m];
-               void* val_conv_12_ptr = (void*)(((uint64_t)val_conv_12) & ~1);
-               CHECK_ACCESS(val_conv_12_ptr);
-               LDKNetAddress val_conv_12_conv = *(LDKNetAddress*)(val_conv_12_ptr);
-               val_conv_12_conv = NetAddress_clone((LDKNetAddress*)(((uint64_t)val_conv_12) & ~1));
-               val_constr.data[m] = val_conv_12_conv;
-       }
-       NodeAnnouncementInfo_set_addresses(&this_ptr_conv, val_constr);
+uint32_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_verify(uint32_t this_arg, uint32_t channel_parameters, uint32_t broadcaster_keys, uint32_t countersignatory_keys) {
+       LDKCommitmentTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKDirectedChannelTransactionParameters channel_parameters_conv;
+       channel_parameters_conv.inner = (void*)(channel_parameters & (~1));
+       channel_parameters_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_parameters_conv);
+       LDKChannelPublicKeys broadcaster_keys_conv;
+       broadcaster_keys_conv.inner = (void*)(broadcaster_keys & (~1));
+       broadcaster_keys_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(broadcaster_keys_conv);
+       LDKChannelPublicKeys countersignatory_keys_conv;
+       countersignatory_keys_conv.inner = (void*)(countersignatory_keys & (~1));
+       countersignatory_keys_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(countersignatory_keys_conv);
+       LDKCResult_TrustedCommitmentTransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ), "LDKCResult_TrustedCommitmentTransactionNoneZ");
+       *ret_conv = CommitmentTransaction_verify(&this_arg_conv, &channel_parameters_conv, &broadcaster_keys_conv, &countersignatory_keys_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_get_announcement_message(uint32_t this_ptr) {
-       LDKNodeAnnouncementInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNodeAnnouncement ret_var = NodeAnnouncementInfo_get_announcement_message(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_TrustedCommitmentTransaction_free(uint32_t this_obj) {
+       LDKTrustedCommitmentTransaction this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       TrustedCommitmentTransaction_free(this_obj_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_set_announcement_message(uint32_t this_ptr, uint32_t val) {
-       LDKNodeAnnouncementInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNodeAnnouncement val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = NodeAnnouncement_clone(&val_conv);
-       NodeAnnouncementInfo_set_announcement_message(&this_ptr_conv, val_conv);
+int8_tArray  __attribute__((visibility("default"))) TS_TrustedCommitmentTransaction_txid(uint32_t this_arg) {
+       LDKTrustedCommitmentTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, TrustedCommitmentTransaction_txid(&this_arg_conv).data, 32);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_new(uint32_t features_arg, int32_t last_update_arg, int8_tArray rgb_arg, int8_tArray alias_arg, uint32_tArray addresses_arg, uint32_t announcement_message_arg) {
-       LDKNodeFeatures features_arg_conv;
-       features_arg_conv.inner = (void*)(features_arg & (~1));
-       features_arg_conv.is_owned = (features_arg & 1) || (features_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(features_arg_conv);
-       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);
-       LDKThirtyTwoBytes alias_arg_ref;
-       CHECK(*((uint32_t*)alias_arg) == 32);
-       memcpy(alias_arg_ref.data, (uint8_t*)(alias_arg + 4), 32);
-       LDKCVec_NetAddressZ addresses_arg_constr;
-       addresses_arg_constr.datalen = *((uint32_t*)addresses_arg);
-       if (addresses_arg_constr.datalen > 0)
-               addresses_arg_constr.data = MALLOC(addresses_arg_constr.datalen * sizeof(LDKNetAddress), "LDKCVec_NetAddressZ Elements");
-       else
-               addresses_arg_constr.data = NULL;
-       uint32_t* addresses_arg_vals = (uint32_t*)(addresses_arg + 4);
-       for (size_t m = 0; m < addresses_arg_constr.datalen; m++) {
-               uint32_t addresses_arg_conv_12 = addresses_arg_vals[m];
-               void* addresses_arg_conv_12_ptr = (void*)(((uint64_t)addresses_arg_conv_12) & ~1);
-               CHECK_ACCESS(addresses_arg_conv_12_ptr);
-               LDKNetAddress addresses_arg_conv_12_conv = *(LDKNetAddress*)(addresses_arg_conv_12_ptr);
-               addresses_arg_constr.data[m] = addresses_arg_conv_12_conv;
-       }
-       LDKNodeAnnouncement announcement_message_arg_conv;
-       announcement_message_arg_conv.inner = (void*)(announcement_message_arg & (~1));
-       announcement_message_arg_conv.is_owned = (announcement_message_arg & 1) || (announcement_message_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(announcement_message_arg_conv);
-       announcement_message_arg_conv = NodeAnnouncement_clone(&announcement_message_arg_conv);
-       LDKNodeAnnouncementInfo ret_var = NodeAnnouncementInfo_new(features_arg_conv, last_update_arg, rgb_arg_ref, alias_arg_ref, addresses_arg_constr, announcement_message_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_TrustedCommitmentTransaction_built_transaction(uint32_t this_arg) {
+       LDKTrustedCommitmentTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKBuiltCommitmentTransaction ret_var = TrustedCommitmentTransaction_built_transaction(&this_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -32987,33 +30468,12 @@ uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_new(uin
        return ret_ref;
 }
 
-static inline uint64_t NodeAnnouncementInfo_clone_ptr(LDKNodeAnnouncementInfo *NONNULL_PTR arg) {
-       LDKNodeAnnouncementInfo ret_var = NodeAnnouncementInfo_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_clone_ptr(uint32_t arg) {
-       LDKNodeAnnouncementInfo arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = NodeAnnouncementInfo_clone_ptr(&arg_conv);
-       return ret_val;
-}
-
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKNodeAnnouncementInfo ret_var = NodeAnnouncementInfo_clone(&orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_TrustedCommitmentTransaction_keys(uint32_t this_arg) {
+       LDKTrustedCommitmentTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKTxCreationKeys ret_var = TrustedCommitmentTransaction_keys(&this_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -33025,141 +30485,136 @@ uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_clone(u
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_write(uint32_t obj) {
-       LDKNodeAnnouncementInfo obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = NodeAnnouncementInfo_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+jboolean  __attribute__((visibility("default"))) TS_TrustedCommitmentTransaction_opt_anchors(uint32_t this_arg) {
+       LDKTrustedCommitmentTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       jboolean ret_val = TrustedCommitmentTransaction_opt_anchors(&this_arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_NodeAnnouncementInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ), "LDKCResult_NodeAnnouncementInfoDecodeErrorZ");
-       *ret_conv = NodeAnnouncementInfo_read(ser_ref);
+uint32_t  __attribute__((visibility("default"))) TS_TrustedCommitmentTransaction_get_htlc_sigs(uint32_t this_arg, int8_tArray htlc_base_key, uint32_t channel_parameters) {
+       LDKTrustedCommitmentTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       unsigned char htlc_base_key_arr[32];
+       CHECK(htlc_base_key->arr_len == 32);
+       memcpy(htlc_base_key_arr, htlc_base_key->elems, 32);
+       unsigned char (*htlc_base_key_ref)[32] = &htlc_base_key_arr;
+       LDKDirectedChannelTransactionParameters channel_parameters_conv;
+       channel_parameters_conv.inner = (void*)(channel_parameters & (~1));
+       channel_parameters_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_parameters_conv);
+       LDKCResult_CVec_SignatureZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_SignatureZNoneZ), "LDKCResult_CVec_SignatureZNoneZ");
+       *ret_conv = TrustedCommitmentTransaction_get_htlc_sigs(&this_arg_conv, htlc_base_key_ref, &channel_parameters_conv);
        return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_NodeInfo_free(uint32_t this_obj) {
-       LDKNodeInfo this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       NodeInfo_free(this_obj_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(broadcaster_payment_basepoint->arr_len == 33);
+       memcpy(broadcaster_payment_basepoint_ref.compressed_form, broadcaster_payment_basepoint->elems, 33);
+       LDKPublicKey countersignatory_payment_basepoint_ref;
+       CHECK(countersignatory_payment_basepoint->arr_len == 33);
+       memcpy(countersignatory_payment_basepoint_ref.compressed_form, countersignatory_payment_basepoint->elems, 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;
 }
 
-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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_u64Z val_constr;
-       val_constr.datalen = *((uint32_t*)val);
-       if (val_constr.datalen > 0)
-               val_constr.data = MALLOC(val_constr.datalen * sizeof(int64_t), "LDKCVec_u64Z Elements");
-       else
-               val_constr.data = NULL;
-       int64_t* val_vals = (int64_t*)(val + 4);
-       for (size_t i = 0; i < val_constr.datalen; i++) {
-               int64_t val_conv_8 = val_vals[i];
-               val_constr.data[i] = val_conv_8;
-       }
-       NodeInfo_set_channels(&this_ptr_conv, val_constr);
+jboolean  __attribute__((visibility("default"))) TS_InitFeatures_eq(uint32_t a, uint32_t b) {
+       LDKInitFeatures a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       LDKInitFeatures b_conv;
+       b_conv.inner = (void*)(b & (~1));
+       b_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
+       jboolean ret_val = InitFeatures_eq(&a_conv, &b_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NodeInfo_get_lowest_inbound_channel_fees(uint32_t this_ptr) {
-       LDKNodeInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKRoutingFees ret_var = NodeInfo_get_lowest_inbound_channel_fees(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
-       }
-       return ret_ref;
+jboolean  __attribute__((visibility("default"))) TS_NodeFeatures_eq(uint32_t a, uint32_t b) {
+       LDKNodeFeatures a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       LDKNodeFeatures b_conv;
+       b_conv.inner = (void*)(b & (~1));
+       b_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
+       jboolean ret_val = NodeFeatures_eq(&a_conv, &b_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_NodeInfo_set_lowest_inbound_channel_fees(uint32_t this_ptr, uint32_t val) {
-       LDKNodeInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKRoutingFees val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = RoutingFees_clone(&val_conv);
-       NodeInfo_set_lowest_inbound_channel_fees(&this_ptr_conv, val_conv);
+jboolean  __attribute__((visibility("default"))) TS_ChannelFeatures_eq(uint32_t a, uint32_t b) {
+       LDKChannelFeatures a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       LDKChannelFeatures b_conv;
+       b_conv.inner = (void*)(b & (~1));
+       b_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
+       jboolean ret_val = ChannelFeatures_eq(&a_conv, &b_conv);
+       return ret_val;
+}
+
+jboolean  __attribute__((visibility("default"))) TS_InvoiceFeatures_eq(uint32_t a, uint32_t b) {
+       LDKInvoiceFeatures a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       LDKInvoiceFeatures b_conv;
+       b_conv.inner = (void*)(b & (~1));
+       b_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
+       jboolean ret_val = InvoiceFeatures_eq(&a_conv, &b_conv);
+       return ret_val;
+}
+
+jboolean  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_eq(uint32_t a, uint32_t b) {
+       LDKChannelTypeFeatures a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       LDKChannelTypeFeatures b_conv;
+       b_conv.inner = (void*)(b & (~1));
+       b_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
+       jboolean ret_val = ChannelTypeFeatures_eq(&a_conv, &b_conv);
+       return ret_val;
+}
+
+static inline uint64_t InitFeatures_clone_ptr(LDKInitFeatures *NONNULL_PTR arg) {
+       LDKInitFeatures ret_var = InitFeatures_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_NodeInfo_get_announcement_info(uint32_t this_ptr) {
-       LDKNodeInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNodeAnnouncementInfo ret_var = NodeInfo_get_announcement_info(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
-       }
        return ret_ref;
 }
-
-void  __attribute__((visibility("default"))) TS_NodeInfo_set_announcement_info(uint32_t this_ptr, uint32_t val) {
-       LDKNodeInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNodeAnnouncementInfo val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = NodeAnnouncementInfo_clone(&val_conv);
-       NodeInfo_set_announcement_info(&this_ptr_conv, val_conv);
+int64_t  __attribute__((visibility("default"))) TS_InitFeatures_clone_ptr(uint32_t arg) {
+       LDKInitFeatures arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = InitFeatures_clone_ptr(&arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NodeInfo_new(int64_tArray channels_arg, uint32_t lowest_inbound_channel_fees_arg, uint32_t announcement_info_arg) {
-       LDKCVec_u64Z channels_arg_constr;
-       channels_arg_constr.datalen = *((uint32_t*)channels_arg);
-       if (channels_arg_constr.datalen > 0)
-               channels_arg_constr.data = MALLOC(channels_arg_constr.datalen * sizeof(int64_t), "LDKCVec_u64Z Elements");
-       else
-               channels_arg_constr.data = NULL;
-       int64_t* channels_arg_vals = (int64_t*)(channels_arg + 4);
-       for (size_t i = 0; i < channels_arg_constr.datalen; i++) {
-               int64_t channels_arg_conv_8 = channels_arg_vals[i];
-               channels_arg_constr.data[i] = channels_arg_conv_8;
-       }
-       LDKRoutingFees lowest_inbound_channel_fees_arg_conv;
-       lowest_inbound_channel_fees_arg_conv.inner = (void*)(lowest_inbound_channel_fees_arg & (~1));
-       lowest_inbound_channel_fees_arg_conv.is_owned = (lowest_inbound_channel_fees_arg & 1) || (lowest_inbound_channel_fees_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(lowest_inbound_channel_fees_arg_conv);
-       lowest_inbound_channel_fees_arg_conv = RoutingFees_clone(&lowest_inbound_channel_fees_arg_conv);
-       LDKNodeAnnouncementInfo announcement_info_arg_conv;
-       announcement_info_arg_conv.inner = (void*)(announcement_info_arg & (~1));
-       announcement_info_arg_conv.is_owned = (announcement_info_arg & 1) || (announcement_info_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(announcement_info_arg_conv);
-       announcement_info_arg_conv = NodeAnnouncementInfo_clone(&announcement_info_arg_conv);
-       LDKNodeInfo ret_var = NodeInfo_new(channels_arg_constr, lowest_inbound_channel_fees_arg_conv, announcement_info_arg_conv);
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKInitFeatures ret_var = InitFeatures_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -33171,8 +30626,8 @@ uint32_t  __attribute__((visibility("default"))) TS_NodeInfo_new(int64_tArray ch
        return ret_ref;
 }
 
-static inline uint64_t NodeInfo_clone_ptr(LDKNodeInfo *NONNULL_PTR arg) {
-       LDKNodeInfo ret_var = NodeInfo_clone(arg);
+static inline uint64_t NodeFeatures_clone_ptr(LDKNodeFeatures *NONNULL_PTR arg) {
+       LDKNodeFeatures ret_var = NodeFeatures_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -33183,21 +30638,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_NodeInfo_clone_ptr(uint32_t arg) {
-       LDKNodeInfo arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_NodeFeatures_clone_ptr(uint32_t arg) {
+       LDKNodeFeatures arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = NodeInfo_clone_ptr(&arg_conv);
+       int64_t ret_val = NodeFeatures_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NodeInfo_clone(uint32_t orig) {
-       LDKNodeInfo orig_conv;
+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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKNodeInfo ret_var = NodeInfo_clone(&orig_conv);
+       LDKNodeFeatures ret_var = NodeFeatures_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -33209,53 +30664,33 @@ uint32_t  __attribute__((visibility("default"))) TS_NodeInfo_clone(uint32_t orig
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_NodeInfo_write(uint32_t obj) {
-       LDKNodeInfo obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = NodeInfo_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NodeInfo_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_NodeInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeInfoDecodeErrorZ), "LDKCResult_NodeInfoDecodeErrorZ");
-       *ret_conv = NodeInfo_read(ser_ref);
-       return (uint64_t)ret_conv;
+static inline uint64_t ChannelFeatures_clone_ptr(LDKChannelFeatures *NONNULL_PTR arg) {
+       LDKChannelFeatures ret_var = ChannelFeatures_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-int8_tArray  __attribute__((visibility("default"))) TS_NetworkGraph_write(uint32_t obj) {
-       LDKNetworkGraph obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = NetworkGraph_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+       return ret_ref;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_NetworkGraphDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetworkGraphDecodeErrorZ), "LDKCResult_NetworkGraphDecodeErrorZ");
-       *ret_conv = NetworkGraph_read(ser_ref);
-       return (uint64_t)ret_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelFeatures_clone_ptr(uint32_t arg) {
+       LDKChannelFeatures arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ChannelFeatures_clone_ptr(&arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_new(int8_tArray genesis_hash) {
-       LDKThirtyTwoBytes genesis_hash_ref;
-       CHECK(*((uint32_t*)genesis_hash) == 32);
-       memcpy(genesis_hash_ref.data, (uint8_t*)(genesis_hash + 4), 32);
-       LDKNetworkGraph ret_var = NetworkGraph_new(genesis_hash_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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKChannelFeatures ret_var = ChannelFeatures_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -33267,12 +30702,33 @@ uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_new(int8_tArray
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_read_only(uint32_t this_arg) {
-       LDKNetworkGraph this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKReadOnlyNetworkGraph ret_var = NetworkGraph_read_only(&this_arg_conv);
+static inline uint64_t InvoiceFeatures_clone_ptr(LDKInvoiceFeatures *NONNULL_PTR arg) {
+       LDKInvoiceFeatures ret_var = InvoiceFeatures_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_InvoiceFeatures_clone_ptr(uint32_t arg) {
+       LDKInvoiceFeatures arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = InvoiceFeatures_clone_ptr(&arg_conv);
+       return ret_val;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_InvoiceFeatures_clone(uint32_t orig) {
+       LDKInvoiceFeatures orig_conv;
+       orig_conv.inner = (void*)(orig & (~1));
+       orig_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKInvoiceFeatures ret_var = InvoiceFeatures_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -33280,184 +30736,90 @@ uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_read_only(uint3
        ret_ref = (uint64_t)ret_var.inner;
        if (ret_var.is_owned) {
                ret_ref |= 1;
-       }
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_update_node_from_announcement(uint32_t this_arg, uint32_t msg) {
-       LDKNetworkGraph this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKNodeAnnouncement msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
-       *ret_conv = NetworkGraph_update_node_from_announcement(&this_arg_conv, &msg_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_update_node_from_unsigned_announcement(uint32_t this_arg, uint32_t msg) {
-       LDKNetworkGraph this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKUnsignedNodeAnnouncement msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
-       *ret_conv = NetworkGraph_update_node_from_unsigned_announcement(&this_arg_conv, &msg_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_update_channel_from_announcement(uint32_t this_arg, uint32_t msg, uint32_t chain_access) {
-       LDKNetworkGraph this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKChannelAnnouncement msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       void* chain_access_ptr = (void*)(((uint64_t)chain_access) & ~1);
-       CHECK_ACCESS(chain_access_ptr);
-       LDKCOption_AccessZ chain_access_conv = *(LDKCOption_AccessZ*)(chain_access_ptr);
-       // Warning: we may need a move here but no clone is available for LDKCOption_AccessZ
-       if (chain_access_conv.tag == LDKCOption_AccessZ_Some) {
-               // Manually implement clone for Java trait instances
-       }
-       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
-       *ret_conv = NetworkGraph_update_channel_from_announcement(&this_arg_conv, &msg_conv, chain_access_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_update_channel_from_unsigned_announcement(uint32_t this_arg, uint32_t msg, uint32_t chain_access) {
-       LDKNetworkGraph this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKUnsignedChannelAnnouncement msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       void* chain_access_ptr = (void*)(((uint64_t)chain_access) & ~1);
-       CHECK_ACCESS(chain_access_ptr);
-       LDKCOption_AccessZ chain_access_conv = *(LDKCOption_AccessZ*)(chain_access_ptr);
-       // Warning: we may need a move here but no clone is available for LDKCOption_AccessZ
-       if (chain_access_conv.tag == LDKCOption_AccessZ_Some) {
-               // Manually implement clone for Java trait instances
-       }
-       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
-       *ret_conv = NetworkGraph_update_channel_from_unsigned_announcement(&this_arg_conv, &msg_conv, chain_access_conv);
-       return (uint64_t)ret_conv;
-}
-
-void  __attribute__((visibility("default"))) TS_NetworkGraph_close_channel_from_update(uint32_t this_arg, int64_t short_channel_id, jboolean is_permanent) {
-       LDKNetworkGraph this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       NetworkGraph_close_channel_from_update(&this_arg_conv, short_channel_id, is_permanent);
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_NetworkGraph_fail_node(uint32_t this_arg, int8_tArray _node_id, jboolean is_permanent) {
-       LDKNetworkGraph this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKPublicKey _node_id_ref;
-       CHECK(*((uint32_t*)_node_id) == 33);
-       memcpy(_node_id_ref.compressed_form, (uint8_t*)(_node_id + 4), 33);
-       NetworkGraph_fail_node(&this_arg_conv, _node_id_ref, is_permanent);
+static inline uint64_t ChannelTypeFeatures_clone_ptr(LDKChannelTypeFeatures *NONNULL_PTR arg) {
+       LDKChannelTypeFeatures ret_var = ChannelTypeFeatures_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-void  __attribute__((visibility("default"))) TS_NetworkGraph_remove_stale_channels_with_time(uint32_t this_arg, int64_t current_time_unix) {
-       LDKNetworkGraph this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       NetworkGraph_remove_stale_channels_with_time(&this_arg_conv, current_time_unix);
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_clone_ptr(uint32_t arg) {
+       LDKChannelTypeFeatures arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ChannelTypeFeatures_clone_ptr(&arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_update_channel(uint32_t this_arg, uint32_t msg) {
-       LDKNetworkGraph this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKChannelUpdate msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
-       *ret_conv = NetworkGraph_update_channel(&this_arg_conv, &msg_conv);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_clone(uint32_t orig) {
+       LDKChannelTypeFeatures orig_conv;
+       orig_conv.inner = (void*)(orig & (~1));
+       orig_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKChannelTypeFeatures ret_var = ChannelTypeFeatures_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_update_channel_unsigned(uint32_t this_arg, uint32_t msg) {
-       LDKNetworkGraph this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKUnsignedChannelUpdate msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
-       *ret_conv = NetworkGraph_update_channel_unsigned(&this_arg_conv, &msg_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_InitFeatures_free(uint32_t this_obj) {
+       LDKInitFeatures this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       InitFeatures_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ReadOnlyNetworkGraph_get_addresses(uint32_t this_arg, int8_tArray pubkey) {
-       LDKReadOnlyNetworkGraph this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKPublicKey pubkey_ref;
-       CHECK(*((uint32_t*)pubkey) == 33);
-       memcpy(pubkey_ref.compressed_form, (uint8_t*)(pubkey + 4), 33);
-       LDKCOption_CVec_NetAddressZZ *ret_copy = MALLOC(sizeof(LDKCOption_CVec_NetAddressZZ), "LDKCOption_CVec_NetAddressZZ");
-       *ret_copy = ReadOnlyNetworkGraph_get_addresses(&this_arg_conv, pubkey_ref);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_NodeFeatures_free(uint32_t this_obj) {
+       LDKNodeFeatures this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       NodeFeatures_free(this_obj_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHop_free(uint32_t this_obj) {
-       LDKRouteHop this_obj_conv;
+void  __attribute__((visibility("default"))) TS_ChannelFeatures_free(uint32_t this_obj) {
+       LDKChannelFeatures this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       RouteHop_free(this_obj_conv);
+       ChannelFeatures_free(this_obj_conv);
 }
 
-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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), RouteHop_get_pubkey(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_InvoiceFeatures_free(uint32_t this_obj) {
+       LDKInvoiceFeatures this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       InvoiceFeatures_free(this_obj_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHop_set_pubkey(uint32_t this_ptr, int8_tArray val) {
-       LDKRouteHop this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       RouteHop_set_pubkey(&this_ptr_conv, val_ref);
+void  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_free(uint32_t this_obj) {
+       LDKChannelTypeFeatures this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       ChannelTypeFeatures_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RouteHop_get_node_features(uint32_t this_ptr) {
-       LDKRouteHop this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNodeFeatures ret_var = RouteHop_get_node_features(&this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_InitFeatures_empty() {
+       LDKInitFeatures ret_var = InitFeatures_empty();
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -33469,42 +30831,8 @@ uint32_t  __attribute__((visibility("default"))) TS_RouteHop_get_node_features(u
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHop_set_node_features(uint32_t this_ptr, uint32_t val) {
-       LDKRouteHop this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNodeFeatures val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = NodeFeatures_clone(&val_conv);
-       RouteHop_set_node_features(&this_ptr_conv, val_conv);
-}
-
-int64_t  __attribute__((visibility("default"))) TS_RouteHop_get_short_channel_id(uint32_t this_ptr) {
-       LDKRouteHop this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = RouteHop_get_short_channel_id(&this_ptr_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_RouteHop_set_short_channel_id(uint32_t this_ptr, int64_t val) {
-       LDKRouteHop this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       RouteHop_set_short_channel_id(&this_ptr_conv, val);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_RouteHop_get_channel_features(uint32_t this_ptr) {
-       LDKRouteHop this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelFeatures ret_var = RouteHop_get_channel_features(&this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_InitFeatures_known() {
+       LDKInitFeatures ret_var = InitFeatures_known();
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -33516,68 +30844,52 @@ uint32_t  __attribute__((visibility("default"))) TS_RouteHop_get_channel_feature
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHop_set_channel_features(uint32_t this_ptr, uint32_t val) {
-       LDKRouteHop this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelFeatures val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = ChannelFeatures_clone(&val_conv);
-       RouteHop_set_channel_features(&this_ptr_conv, val_conv);
-}
-
-int64_t  __attribute__((visibility("default"))) TS_RouteHop_get_fee_msat(uint32_t this_ptr) {
-       LDKRouteHop this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = RouteHop_get_fee_msat(&this_ptr_conv);
+jboolean  __attribute__((visibility("default"))) TS_InitFeatures_requires_unknown_bits(uint32_t this_arg) {
+       LDKInitFeatures this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       jboolean ret_val = InitFeatures_requires_unknown_bits(&this_arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHop_set_fee_msat(uint32_t this_ptr, int64_t val) {
-       LDKRouteHop this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       RouteHop_set_fee_msat(&this_ptr_conv, val);
-}
-
-int32_t  __attribute__((visibility("default"))) TS_RouteHop_get_cltv_expiry_delta(uint32_t this_ptr) {
-       LDKRouteHop this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = RouteHop_get_cltv_expiry_delta(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_NodeFeatures_empty() {
+       LDKNodeFeatures ret_var = NodeFeatures_empty();
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHop_set_cltv_expiry_delta(uint32_t this_ptr, int32_t val) {
-       LDKRouteHop this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       RouteHop_set_cltv_expiry_delta(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_NodeFeatures_known() {
+       LDKNodeFeatures ret_var = NodeFeatures_known();
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RouteHop_new(int8_tArray pubkey_arg, uint32_t node_features_arg, int64_t short_channel_id_arg, uint32_t channel_features_arg, int64_t fee_msat_arg, int32_t cltv_expiry_delta_arg) {
-       LDKPublicKey pubkey_arg_ref;
-       CHECK(*((uint32_t*)pubkey_arg) == 33);
-       memcpy(pubkey_arg_ref.compressed_form, (uint8_t*)(pubkey_arg + 4), 33);
-       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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(node_features_arg_conv);
-       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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_features_arg_conv);
-       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);
+jboolean  __attribute__((visibility("default"))) TS_NodeFeatures_requires_unknown_bits(uint32_t this_arg) {
+       LDKNodeFeatures this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       jboolean ret_val = NodeFeatures_requires_unknown_bits(&this_arg_conv);
+       return ret_val;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelFeatures_empty() {
+       LDKChannelFeatures ret_var = ChannelFeatures_empty();
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -33589,33 +30901,8 @@ uint32_t  __attribute__((visibility("default"))) TS_RouteHop_new(int8_tArray pub
        return ret_ref;
 }
 
-static inline uint64_t RouteHop_clone_ptr(LDKRouteHop *NONNULL_PTR arg) {
-       LDKRouteHop ret_var = RouteHop_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_RouteHop_clone_ptr(uint32_t arg) {
-       LDKRouteHop arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = RouteHop_clone_ptr(&arg_conv);
-       return ret_val;
-}
-
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKRouteHop ret_var = RouteHop_clone(&orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelFeatures_known() {
+       LDKChannelFeatures ret_var = ChannelFeatures_known();
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -33627,193 +30914,52 @@ uint32_t  __attribute__((visibility("default"))) TS_RouteHop_clone(uint32_t orig
        return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_RouteHop_hash(uint32_t o) {
-       LDKRouteHop o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = RouteHop_hash(&o_conv);
-       return ret_val;
-}
-
-jboolean  __attribute__((visibility("default"))) TS_RouteHop_eq(uint32_t a, uint32_t b) {
-       LDKRouteHop a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKRouteHop b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = RouteHop_eq(&a_conv, &b_conv);
+jboolean  __attribute__((visibility("default"))) TS_ChannelFeatures_requires_unknown_bits(uint32_t this_arg) {
+       LDKChannelFeatures this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       jboolean ret_val = ChannelFeatures_requires_unknown_bits(&this_arg_conv);
        return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_RouteHop_write(uint32_t obj) {
-       LDKRouteHop obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = RouteHop_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_RouteHop_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_RouteHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHopDecodeErrorZ), "LDKCResult_RouteHopDecodeErrorZ");
-       *ret_conv = RouteHop_read(ser_ref);
-       return (uint64_t)ret_conv;
-}
-
-void  __attribute__((visibility("default"))) TS_Route_free(uint32_t this_obj) {
-       LDKRoute this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       Route_free(this_obj_conv);
-}
-
-ptrArray  __attribute__((visibility("default"))) TS_Route_get_paths(uint32_t this_ptr) {
-       LDKRoute this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_CVec_RouteHopZZ ret_var = Route_get_paths(&this_ptr_conv);
-       ptrArray ret_arr = NULL;
-       ret_arr = init_arr(ret_var.datalen, sizeof(uint32_t), "Native ptrArray Bytes");
-       uint32_tArray *ret_arr_ptr = (uint32_tArray*)(ret_arr + 4);
-       for (size_t m = 0; m < ret_var.datalen; m++) {
-               LDKCVec_RouteHopZ ret_conv_12_var = ret_var.data[m];
-               uint32_tArray ret_conv_12_arr = NULL;
-               ret_conv_12_arr = init_arr(ret_conv_12_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
-               uint32_t *ret_conv_12_arr_ptr = (uint32_t*)(ret_conv_12_arr + 4);
-               for (size_t k = 0; k < ret_conv_12_var.datalen; k++) {
-                       LDKRouteHop ret_conv_12_conv_10_var = ret_conv_12_var.data[k];
-                       uint64_t ret_conv_12_conv_10_ref = 0;
-                       CHECK((((uint64_t)ret_conv_12_conv_10_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&ret_conv_12_conv_10_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_12_conv_10_var);
-                       ret_conv_12_conv_10_ref = (uint64_t)ret_conv_12_conv_10_var.inner;
-                       if (ret_conv_12_conv_10_var.is_owned) {
-                               ret_conv_12_conv_10_ref |= 1;
-                       }
-                       ret_conv_12_arr_ptr[k] = ret_conv_12_conv_10_ref;
-               }
-               
-               FREE(ret_conv_12_var.data);
-               ret_arr_ptr[m] = ret_conv_12_arr;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
-}
-
-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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_CVec_RouteHopZZ val_constr;
-       val_constr.datalen = *((uint32_t*)val);
-       if (val_constr.datalen > 0)
-               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKCVec_RouteHopZ), "LDKCVec_CVec_RouteHopZZ Elements");
-       else
-               val_constr.data = NULL;
-       uint32_tArray* val_vals = (uint32_tArray*)(val + 4);
-       for (size_t m = 0; m < val_constr.datalen; m++) {
-               uint32_tArray val_conv_12 = val_vals[m];
-               LDKCVec_RouteHopZ val_conv_12_constr;
-               val_conv_12_constr.datalen = *((uint32_t*)val_conv_12);
-               if (val_conv_12_constr.datalen > 0)
-                       val_conv_12_constr.data = MALLOC(val_conv_12_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements");
-               else
-                       val_conv_12_constr.data = NULL;
-               uint32_t* val_conv_12_vals = (uint32_t*)(val_conv_12 + 4);
-               for (size_t k = 0; k < val_conv_12_constr.datalen; k++) {
-                       uint32_t val_conv_12_conv_10 = val_conv_12_vals[k];
-                       LDKRouteHop val_conv_12_conv_10_conv;
-                       val_conv_12_conv_10_conv.inner = (void*)(val_conv_12_conv_10 & (~1));
-                       val_conv_12_conv_10_conv.is_owned = (val_conv_12_conv_10 & 1) || (val_conv_12_conv_10 == 0);
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv_12_conv_10_conv);
-                       val_conv_12_conv_10_conv = RouteHop_clone(&val_conv_12_conv_10_conv);
-                       val_conv_12_constr.data[k] = val_conv_12_conv_10_conv;
-               }
-               val_constr.data[m] = val_conv_12_constr;
+uint32_t  __attribute__((visibility("default"))) TS_InvoiceFeatures_empty() {
+       LDKInvoiceFeatures ret_var = InvoiceFeatures_empty();
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       Route_set_paths(&this_ptr_conv, val_constr);
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Route_get_payee(uint32_t this_ptr) {
-       LDKRoute this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPayee ret_var = Route_get_payee(&this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_InvoiceFeatures_known() {
+       LDKInvoiceFeatures ret_var = InvoiceFeatures_known();
        uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
        CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_Route_set_payee(uint32_t this_ptr, uint32_t val) {
-       LDKRoute this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPayee val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = Payee_clone(&val_conv);
-       Route_set_payee(&this_ptr_conv, val_conv);
+jboolean  __attribute__((visibility("default"))) TS_InvoiceFeatures_requires_unknown_bits(uint32_t this_arg) {
+       LDKInvoiceFeatures this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       jboolean ret_val = InvoiceFeatures_requires_unknown_bits(&this_arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Route_new(ptrArray paths_arg, uint32_t payee_arg) {
-       LDKCVec_CVec_RouteHopZZ paths_arg_constr;
-       paths_arg_constr.datalen = *((uint32_t*)paths_arg);
-       if (paths_arg_constr.datalen > 0)
-               paths_arg_constr.data = MALLOC(paths_arg_constr.datalen * sizeof(LDKCVec_RouteHopZ), "LDKCVec_CVec_RouteHopZZ Elements");
-       else
-               paths_arg_constr.data = NULL;
-       uint32_tArray* paths_arg_vals = (uint32_tArray*)(paths_arg + 4);
-       for (size_t m = 0; m < paths_arg_constr.datalen; m++) {
-               uint32_tArray paths_arg_conv_12 = paths_arg_vals[m];
-               LDKCVec_RouteHopZ paths_arg_conv_12_constr;
-               paths_arg_conv_12_constr.datalen = *((uint32_t*)paths_arg_conv_12);
-               if (paths_arg_conv_12_constr.datalen > 0)
-                       paths_arg_conv_12_constr.data = MALLOC(paths_arg_conv_12_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements");
-               else
-                       paths_arg_conv_12_constr.data = NULL;
-               uint32_t* paths_arg_conv_12_vals = (uint32_t*)(paths_arg_conv_12 + 4);
-               for (size_t k = 0; k < paths_arg_conv_12_constr.datalen; k++) {
-                       uint32_t paths_arg_conv_12_conv_10 = paths_arg_conv_12_vals[k];
-                       LDKRouteHop paths_arg_conv_12_conv_10_conv;
-                       paths_arg_conv_12_conv_10_conv.inner = (void*)(paths_arg_conv_12_conv_10 & (~1));
-                       paths_arg_conv_12_conv_10_conv.is_owned = (paths_arg_conv_12_conv_10 & 1) || (paths_arg_conv_12_conv_10 == 0);
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(paths_arg_conv_12_conv_10_conv);
-                       paths_arg_conv_12_conv_10_conv = RouteHop_clone(&paths_arg_conv_12_conv_10_conv);
-                       paths_arg_conv_12_constr.data[k] = paths_arg_conv_12_conv_10_conv;
-               }
-               paths_arg_constr.data[m] = paths_arg_conv_12_constr;
-       }
-       LDKPayee payee_arg_conv;
-       payee_arg_conv.inner = (void*)(payee_arg & (~1));
-       payee_arg_conv.is_owned = (payee_arg & 1) || (payee_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(payee_arg_conv);
-       payee_arg_conv = Payee_clone(&payee_arg_conv);
-       LDKRoute ret_var = Route_new(paths_arg_constr, payee_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_empty() {
+       LDKChannelTypeFeatures ret_var = ChannelTypeFeatures_empty();
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -33824,34 +30970,9 @@ uint32_t  __attribute__((visibility("default"))) TS_Route_new(ptrArray paths_arg
        }
        return ret_ref;
 }
-
-static inline uint64_t Route_clone_ptr(LDKRoute *NONNULL_PTR arg) {
-       LDKRoute ret_var = Route_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_Route_clone_ptr(uint32_t arg) {
-       LDKRoute arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = Route_clone_ptr(&arg_conv);
-       return ret_val;
-}
-
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKRoute ret_var = Route_clone(&orig_conv);
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_known() {
+       LDKChannelTypeFeatures ret_var = ChannelTypeFeatures_known();
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -33863,81 +30984,155 @@ uint32_t  __attribute__((visibility("default"))) TS_Route_clone(uint32_t orig) {
        return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_Route_hash(uint32_t o) {
-       LDKRoute o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = Route_hash(&o_conv);
+jboolean  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_requires_unknown_bits(uint32_t this_arg) {
+       LDKChannelTypeFeatures this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       jboolean ret_val = ChannelTypeFeatures_requires_unknown_bits(&this_arg_conv);
        return ret_val;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_Route_eq(uint32_t a, uint32_t b) {
-       LDKRoute a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKRoute b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = Route_eq(&a_conv, &b_conv);
-       return ret_val;
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = InitFeatures_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_Route_get_total_fees(uint32_t this_arg) {
-       LDKRoute this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = Route_get_total_fees(&this_arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_InitFeatures_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_InitFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitFeaturesDecodeErrorZ), "LDKCResult_InitFeaturesDecodeErrorZ");
+       *ret_conv = InitFeatures_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_Route_get_total_amount(uint32_t this_arg) {
-       LDKRoute this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = Route_get_total_amount(&this_arg_conv);
-       return ret_val;
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ChannelFeatures_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_Route_write(uint32_t obj) {
-       LDKRoute obj_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelFeatures_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ChannelFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ), "LDKCResult_ChannelFeaturesDecodeErrorZ");
+       *ret_conv = ChannelFeatures_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = Route_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       LDKCVec_u8Z ret_var = NodeFeatures_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Route_read(int8_tArray ser) {
+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_RouteDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteDecodeErrorZ), "LDKCResult_RouteDecodeErrorZ");
-       *ret_conv = Route_read(ser_ref);
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_NodeFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeFeaturesDecodeErrorZ), "LDKCResult_NodeFeaturesDecodeErrorZ");
+       *ret_conv = NodeFeatures_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteParameters_free(uint32_t this_obj) {
-       LDKRouteParameters this_obj_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_InvoiceFeatures_write(uint32_t obj) {
+       LDKInvoiceFeatures obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = InvoiceFeatures_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_InvoiceFeatures_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_InvoiceFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ), "LDKCResult_InvoiceFeaturesDecodeErrorZ");
+       *ret_conv = InvoiceFeatures_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_write(uint32_t obj) {
+       LDKChannelTypeFeatures obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ChannelTypeFeatures_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ChannelTypeFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ), "LDKCResult_ChannelTypeFeaturesDecodeErrorZ");
+       *ret_conv = ChannelTypeFeatures_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_ShutdownScript_free(uint32_t this_obj) {
+       LDKShutdownScript this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       RouteParameters_free(this_obj_conv);
+       ShutdownScript_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RouteParameters_get_payee(uint32_t this_ptr) {
-       LDKRouteParameters this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPayee ret_var = RouteParameters_get_payee(&this_ptr_conv);
+static inline uint64_t ShutdownScript_clone_ptr(LDKShutdownScript *NONNULL_PTR arg) {
+       LDKShutdownScript ret_var = ShutdownScript_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_ShutdownScript_clone_ptr(uint32_t arg) {
+       LDKShutdownScript arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ShutdownScript_clone_ptr(&arg_conv);
+       return ret_val;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ShutdownScript_clone(uint32_t orig) {
+       LDKShutdownScript orig_conv;
+       orig_conv.inner = (void*)(orig & (~1));
+       orig_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKShutdownScript ret_var = ShutdownScript_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -33949,60 +31144,43 @@ uint32_t  __attribute__((visibility("default"))) TS_RouteParameters_get_payee(ui
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteParameters_set_payee(uint32_t this_ptr, uint32_t val) {
-       LDKRouteParameters this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPayee val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = Payee_clone(&val_conv);
-       RouteParameters_set_payee(&this_ptr_conv, val_conv);
-}
-
-int64_t  __attribute__((visibility("default"))) TS_RouteParameters_get_final_value_msat(uint32_t this_ptr) {
-       LDKRouteParameters this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = RouteParameters_get_final_value_msat(&this_ptr_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_RouteParameters_set_final_value_msat(uint32_t this_ptr, int64_t val) {
-       LDKRouteParameters this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       RouteParameters_set_final_value_msat(&this_ptr_conv, val);
+void  __attribute__((visibility("default"))) TS_InvalidShutdownScript_free(uint32_t this_obj) {
+       LDKInvalidShutdownScript this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       InvalidShutdownScript_free(this_obj_conv);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_RouteParameters_get_final_cltv_expiry_delta(uint32_t this_ptr) {
-       LDKRouteParameters this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_InvalidShutdownScript_get_script(uint32_t this_ptr) {
+       LDKInvalidShutdownScript this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = RouteParameters_get_final_cltv_expiry_delta(&this_ptr_conv);
-       return ret_val;
+       LDKu8slice ret_var = InvalidShutdownScript_get_script(&this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteParameters_set_final_cltv_expiry_delta(uint32_t this_ptr, int32_t val) {
-       LDKRouteParameters this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_InvalidShutdownScript_set_script(uint32_t this_ptr, int8_tArray val) {
+       LDKInvalidShutdownScript this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       RouteParameters_set_final_cltv_expiry_delta(&this_ptr_conv, val);
+       LDKCVec_u8Z val_ref;
+       val_ref.datalen = val->arr_len;
+       val_ref.data = MALLOC(val_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(val_ref.data, val->elems, val_ref.datalen);
+       InvalidShutdownScript_set_script(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RouteParameters_new(uint32_t payee_arg, int64_t final_value_msat_arg, int32_t final_cltv_expiry_delta_arg) {
-       LDKPayee payee_arg_conv;
-       payee_arg_conv.inner = (void*)(payee_arg & (~1));
-       payee_arg_conv.is_owned = (payee_arg & 1) || (payee_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(payee_arg_conv);
-       payee_arg_conv = Payee_clone(&payee_arg_conv);
-       LDKRouteParameters ret_var = RouteParameters_new(payee_arg_conv, final_value_msat_arg, final_cltv_expiry_delta_arg);
+uint32_t  __attribute__((visibility("default"))) TS_InvalidShutdownScript_new(int8_tArray script_arg) {
+       LDKCVec_u8Z script_arg_ref;
+       script_arg_ref.datalen = script_arg->arr_len;
+       script_arg_ref.data = MALLOC(script_arg_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(script_arg_ref.data, script_arg->elems, script_arg_ref.datalen);
+       LDKInvalidShutdownScript ret_var = InvalidShutdownScript_new(script_arg_ref);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -34014,8 +31192,8 @@ uint32_t  __attribute__((visibility("default"))) TS_RouteParameters_new(uint32_t
        return ret_ref;
 }
 
-static inline uint64_t RouteParameters_clone_ptr(LDKRouteParameters *NONNULL_PTR arg) {
-       LDKRouteParameters ret_var = RouteParameters_clone(arg);
+static inline uint64_t InvalidShutdownScript_clone_ptr(LDKInvalidShutdownScript *NONNULL_PTR arg) {
+       LDKInvalidShutdownScript ret_var = InvalidShutdownScript_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -34026,21 +31204,59 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_RouteParameters_clone_ptr(uint32_t arg) {
-       LDKRouteParameters arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_InvalidShutdownScript_clone_ptr(uint32_t arg) {
+       LDKInvalidShutdownScript arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = RouteParameters_clone_ptr(&arg_conv);
+       int64_t ret_val = InvalidShutdownScript_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RouteParameters_clone(uint32_t orig) {
-       LDKRouteParameters orig_conv;
+uint32_t  __attribute__((visibility("default"))) TS_InvalidShutdownScript_clone(uint32_t orig) {
+       LDKInvalidShutdownScript orig_conv;
        orig_conv.inner = (void*)(orig & (~1));
        orig_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKRouteParameters ret_var = RouteParameters_clone(&orig_conv);
+       LDKInvalidShutdownScript ret_var = InvalidShutdownScript_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_ShutdownScript_write(uint32_t obj) {
+       LDKShutdownScript obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ShutdownScript_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ShutdownScript_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ShutdownScriptDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptDecodeErrorZ), "LDKCResult_ShutdownScriptDecodeErrorZ");
+       *ret_conv = ShutdownScript_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ShutdownScript_new_p2wpkh(int8_tArray pubkey_hash) {
+       unsigned char pubkey_hash_arr[20];
+       CHECK(pubkey_hash->arr_len == 20);
+       memcpy(pubkey_hash_arr, pubkey_hash->elems, 20);
+       unsigned char (*pubkey_hash_ref)[20] = &pubkey_hash_arr;
+       LDKShutdownScript ret_var = ShutdownScript_new_p2wpkh(pubkey_hash_ref);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -34052,204 +31268,118 @@ uint32_t  __attribute__((visibility("default"))) TS_RouteParameters_clone(uint32
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_RouteParameters_write(uint32_t obj) {
-       LDKRouteParameters obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = RouteParameters_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_ShutdownScript_new_p2wsh(int8_tArray script_hash) {
+       unsigned char script_hash_arr[32];
+       CHECK(script_hash->arr_len == 32);
+       memcpy(script_hash_arr, script_hash->elems, 32);
+       unsigned char (*script_hash_ref)[32] = &script_hash_arr;
+       LDKShutdownScript ret_var = ShutdownScript_new_p2wsh(script_hash_ref);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RouteParameters_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_RouteParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteParametersDecodeErrorZ), "LDKCResult_RouteParametersDecodeErrorZ");
-       *ret_conv = RouteParameters_read(ser_ref);
+uint32_t  __attribute__((visibility("default"))) TS_ShutdownScript_new_witness_program(int8_t version, int8_tArray program) {
+       LDKu8slice program_ref;
+       program_ref.datalen = program->arr_len;
+       program_ref.data = program->elems;
+       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ), "LDKCResult_ShutdownScriptInvalidShutdownScriptZ");
+       *ret_conv = ShutdownScript_new_witness_program(version, program_ref);
        return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_Payee_free(uint32_t this_obj) {
-       LDKPayee this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       Payee_free(this_obj_conv);
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_Payee_get_pubkey(uint32_t this_ptr) {
-       LDKPayee this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), Payee_get_pubkey(&this_ptr_conv).compressed_form, 33);
+int8_tArray  __attribute__((visibility("default"))) TS_ShutdownScript_into_inner(uint32_t this_arg) {
+       LDKShutdownScript this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       this_arg_conv = ShutdownScript_clone(&this_arg_conv);
+       LDKCVec_u8Z ret_var = ShutdownScript_into_inner(this_arg_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_Payee_set_pubkey(uint32_t this_ptr, int8_tArray val) {
-       LDKPayee this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       Payee_set_pubkey(&this_ptr_conv, val_ref);
+int8_tArray  __attribute__((visibility("default"))) TS_ShutdownScript_as_legacy_pubkey(uint32_t this_arg) {
+       LDKShutdownScript this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, ShutdownScript_as_legacy_pubkey(&this_arg_conv).compressed_form, 33);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Payee_get_features(uint32_t this_ptr) {
-       LDKPayee this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKInvoiceFeatures ret_var = Payee_get_features(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
-       }
-       return ret_ref;
+jboolean  __attribute__((visibility("default"))) TS_ShutdownScript_is_compatible(uint32_t this_arg, uint32_t features) {
+       LDKShutdownScript this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKInitFeatures features_conv;
+       features_conv.inner = (void*)(features & (~1));
+       features_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(features_conv);
+       jboolean ret_val = ShutdownScript_is_compatible(&this_arg_conv, &features_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_Payee_set_features(uint32_t this_ptr, uint32_t val) {
-       LDKPayee this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKInvoiceFeatures val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = InvoiceFeatures_clone(&val_conv);
-       Payee_set_features(&this_ptr_conv, val_conv);
+void  __attribute__((visibility("default"))) TS_CustomMessageReader_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKCustomMessageReader this_ptr_conv = *(LDKCustomMessageReader*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       CustomMessageReader_free(this_ptr_conv);
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_Payee_get_route_hints(uint32_t this_ptr) {
-       LDKPayee this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_RouteHintZ ret_var = Payee_get_route_hints(&this_ptr_conv);
-       uint32_tArray ret_arr = NULL;
-       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++) {
-               LDKRouteHint ret_conv_11_var = ret_var.data[l];
-               uint64_t ret_conv_11_ref = 0;
-               CHECK((((uint64_t)ret_conv_11_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_conv_11_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_11_var);
-               ret_conv_11_ref = (uint64_t)ret_conv_11_var.inner;
-               if (ret_conv_11_var.is_owned) {
-                       ret_conv_11_ref |= 1;
-               }
-               ret_arr_ptr[l] = ret_conv_11_ref;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+static inline uint64_t Type_clone_ptr(LDKType *NONNULL_PTR arg) {
+       LDKType* ret_ret = MALLOC(sizeof(LDKType), "LDKType");
+       *ret_ret = Type_clone(arg);
+       return (uint64_t)ret_ret;
 }
-
-void  __attribute__((visibility("default"))) TS_Payee_set_route_hints(uint32_t this_ptr, uint32_tArray val) {
-       LDKPayee this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_RouteHintZ val_constr;
-       val_constr.datalen = *((uint32_t*)val);
-       if (val_constr.datalen > 0)
-               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKRouteHint), "LDKCVec_RouteHintZ Elements");
-       else
-               val_constr.data = NULL;
-       uint32_t* val_vals = (uint32_t*)(val + 4);
-       for (size_t l = 0; l < val_constr.datalen; l++) {
-               uint32_t val_conv_11 = val_vals[l];
-               LDKRouteHint val_conv_11_conv;
-               val_conv_11_conv.inner = (void*)(val_conv_11 & (~1));
-               val_conv_11_conv.is_owned = (val_conv_11 & 1) || (val_conv_11 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv_11_conv);
-               val_conv_11_conv = RouteHint_clone(&val_conv_11_conv);
-               val_constr.data[l] = val_conv_11_conv;
-       }
-       Payee_set_route_hints(&this_ptr_conv, val_constr);
+int64_t  __attribute__((visibility("default"))) TS_Type_clone_ptr(uint32_t arg) {
+       void* arg_ptr = (void*)(((uint64_t)arg) & ~1);
+       if (!(arg & 1)) { CHECK_ACCESS(arg_ptr); }
+       LDKType* arg_conv = (LDKType*)arg_ptr;
+       int64_t ret_val = Type_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Payee_get_expiry_time(uint32_t this_ptr) {
-       LDKPayee this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
-       *ret_copy = Payee_get_expiry_time(&this_ptr_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_Type_clone(uint32_t orig) {
+       void* orig_ptr = (void*)(((uint64_t)orig) & ~1);
+       if (!(orig & 1)) { CHECK_ACCESS(orig_ptr); }
+       LDKType* orig_conv = (LDKType*)orig_ptr;
+       LDKType* ret_ret = MALLOC(sizeof(LDKType), "LDKType");
+       *ret_ret = Type_clone(orig_conv);
+       return (uint64_t)ret_ret;
 }
 
-void  __attribute__((visibility("default"))) TS_Payee_set_expiry_time(uint32_t this_ptr, uint32_t val) {
-       LDKPayee this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKCOption_u64Z val_conv = *(LDKCOption_u64Z*)(val_ptr);
-       val_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)val) & ~1));
-       Payee_set_expiry_time(&this_ptr_conv, val_conv);
+void  __attribute__((visibility("default"))) TS_Type_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKType this_ptr_conv = *(LDKType*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       Type_free(this_ptr_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Payee_new(int8_tArray pubkey_arg, uint32_t features_arg, uint32_tArray route_hints_arg, uint32_t expiry_time_arg) {
-       LDKPublicKey pubkey_arg_ref;
-       CHECK(*((uint32_t*)pubkey_arg) == 33);
-       memcpy(pubkey_arg_ref.compressed_form, (uint8_t*)(pubkey_arg + 4), 33);
-       LDKInvoiceFeatures features_arg_conv;
-       features_arg_conv.inner = (void*)(features_arg & (~1));
-       features_arg_conv.is_owned = (features_arg & 1) || (features_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(features_arg_conv);
-       features_arg_conv = InvoiceFeatures_clone(&features_arg_conv);
-       LDKCVec_RouteHintZ route_hints_arg_constr;
-       route_hints_arg_constr.datalen = *((uint32_t*)route_hints_arg);
-       if (route_hints_arg_constr.datalen > 0)
-               route_hints_arg_constr.data = MALLOC(route_hints_arg_constr.datalen * sizeof(LDKRouteHint), "LDKCVec_RouteHintZ Elements");
-       else
-               route_hints_arg_constr.data = NULL;
-       uint32_t* route_hints_arg_vals = (uint32_t*)(route_hints_arg + 4);
-       for (size_t l = 0; l < route_hints_arg_constr.datalen; l++) {
-               uint32_t route_hints_arg_conv_11 = route_hints_arg_vals[l];
-               LDKRouteHint route_hints_arg_conv_11_conv;
-               route_hints_arg_conv_11_conv.inner = (void*)(route_hints_arg_conv_11 & (~1));
-               route_hints_arg_conv_11_conv.is_owned = (route_hints_arg_conv_11 & 1) || (route_hints_arg_conv_11 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(route_hints_arg_conv_11_conv);
-               route_hints_arg_conv_11_conv = RouteHint_clone(&route_hints_arg_conv_11_conv);
-               route_hints_arg_constr.data[l] = route_hints_arg_conv_11_conv;
-       }
-       void* expiry_time_arg_ptr = (void*)(((uint64_t)expiry_time_arg) & ~1);
-       CHECK_ACCESS(expiry_time_arg_ptr);
-       LDKCOption_u64Z expiry_time_arg_conv = *(LDKCOption_u64Z*)(expiry_time_arg_ptr);
-       expiry_time_arg_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)expiry_time_arg) & ~1));
-       LDKPayee ret_var = Payee_new(pubkey_arg_ref, features_arg_conv, route_hints_arg_constr, expiry_time_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_NodeId_free(uint32_t this_obj) {
+       LDKNodeId this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       NodeId_free(this_obj_conv);
 }
 
-static inline uint64_t Payee_clone_ptr(LDKPayee *NONNULL_PTR arg) {
-       LDKPayee ret_var = Payee_clone(arg);
+static inline uint64_t NodeId_clone_ptr(LDKNodeId *NONNULL_PTR arg) {
+       LDKNodeId ret_var = NodeId_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -34260,21 +31390,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_Payee_clone_ptr(uint32_t arg) {
-       LDKPayee arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_NodeId_clone_ptr(uint32_t arg) {
+       LDKNodeId arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = Payee_clone_ptr(&arg_conv);
+       int64_t ret_val = NodeId_clone_ptr(&arg_conv);
        return ret_val;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_Payee_clone(uint32_t orig) {
-       LDKPayee orig_conv;
+
+uint32_t  __attribute__((visibility("default"))) TS_NodeId_clone(uint32_t orig) {
+       LDKNodeId orig_conv;
        orig_conv.inner = (void*)(orig & (~1));
        orig_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKPayee ret_var = Payee_clone(&orig_conv);
+       LDKNodeId ret_var = NodeId_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -34286,70 +31416,98 @@ uint32_t  __attribute__((visibility("default"))) TS_Payee_clone(uint32_t orig) {
        return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_Payee_hash(uint32_t o) {
-       LDKPayee o_conv;
+uint32_t  __attribute__((visibility("default"))) TS_NodeId_from_pubkey(int8_tArray pubkey) {
+       LDKPublicKey pubkey_ref;
+       CHECK(pubkey->arr_len == 33);
+       memcpy(pubkey_ref.compressed_form, pubkey->elems, 33);
+       LDKNodeId ret_var = NodeId_from_pubkey(pubkey_ref);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_NodeId_as_slice(uint32_t this_arg) {
+       LDKNodeId this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKu8slice ret_var = NodeId_as_slice(&this_arg_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       return ret_arr;
+}
+
+int64_t  __attribute__((visibility("default"))) TS_NodeId_hash(uint32_t o) {
+       LDKNodeId o_conv;
        o_conv.inner = (void*)(o & (~1));
        o_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = Payee_hash(&o_conv);
-       return ret_val;
-}
-
-jboolean  __attribute__((visibility("default"))) TS_Payee_eq(uint32_t a, uint32_t b) {
-       LDKPayee a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKPayee b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = Payee_eq(&a_conv, &b_conv);
+       int64_t ret_val = NodeId_hash(&o_conv);
        return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_Payee_write(uint32_t obj) {
-       LDKPayee obj_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_NodeId_write(uint32_t obj) {
+       LDKNodeId obj_conv;
        obj_conv.inner = (void*)(obj & (~1));
        obj_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = Payee_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       LDKCVec_u8Z ret_var = NodeId_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Payee_read(int8_tArray ser) {
+uint32_t  __attribute__((visibility("default"))) TS_NodeId_read(int8_tArray ser) {
        LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_PayeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeeDecodeErrorZ), "LDKCResult_PayeeDecodeErrorZ");
-       *ret_conv = Payee_read(ser_ref);
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_NodeIdDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeIdDecodeErrorZ), "LDKCResult_NodeIdDecodeErrorZ");
+       *ret_conv = NodeId_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Payee_from_node_id(int8_tArray pubkey) {
-       LDKPublicKey pubkey_ref;
-       CHECK(*((uint32_t*)pubkey) == 33);
-       memcpy(pubkey_ref.compressed_form, (uint8_t*)(pubkey + 4), 33);
-       LDKPayee ret_var = Payee_from_node_id(pubkey_ref);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
+void  __attribute__((visibility("default"))) TS_NetworkGraph_free(uint32_t this_obj) {
+       LDKNetworkGraph this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       NetworkGraph_free(this_obj_conv);
+}
+
+static inline uint64_t NetworkGraph_clone_ptr(LDKNetworkGraph *NONNULL_PTR arg) {
+       LDKNetworkGraph ret_var = NetworkGraph_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
        return ret_ref;
 }
+int64_t  __attribute__((visibility("default"))) TS_NetworkGraph_clone_ptr(uint32_t arg) {
+       LDKNetworkGraph arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = NetworkGraph_clone_ptr(&arg_conv);
+       return ret_val;
+}
 
-uint32_t  __attribute__((visibility("default"))) TS_Payee_for_keysend(int8_tArray pubkey) {
-       LDKPublicKey pubkey_ref;
-       CHECK(*((uint32_t*)pubkey) == 33);
-       memcpy(pubkey_ref.compressed_form, (uint8_t*)(pubkey + 4), 33);
-       LDKPayee ret_var = Payee_for_keysend(pubkey_ref);
+uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_clone(uint32_t orig) {
+       LDKNetworkGraph orig_conv;
+       orig_conv.inner = (void*)(orig & (~1));
+       orig_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKNetworkGraph ret_var = NetworkGraph_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -34361,120 +31519,124 @@ uint32_t  __attribute__((visibility("default"))) TS_Payee_for_keysend(int8_tArra
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHint_free(uint32_t this_obj) {
-       LDKRouteHint this_obj_conv;
+void  __attribute__((visibility("default"))) TS_ReadOnlyNetworkGraph_free(uint32_t this_obj) {
+       LDKReadOnlyNetworkGraph this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       RouteHint_free(this_obj_conv);
+       ReadOnlyNetworkGraph_free(this_obj_conv);
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_RouteHint_get_a(uint32_t this_ptr) {
-       LDKRouteHint this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_RouteHintHopZ ret_var = RouteHint_get_a(&this_ptr_conv);
-       uint32_tArray ret_arr = NULL;
-       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 o = 0; o < ret_var.datalen; o++) {
-               LDKRouteHintHop ret_conv_14_var = ret_var.data[o];
-               uint64_t ret_conv_14_ref = 0;
-               CHECK((((uint64_t)ret_conv_14_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_conv_14_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_14_var);
-               ret_conv_14_ref = (uint64_t)ret_conv_14_var.inner;
-               if (ret_conv_14_var.is_owned) {
-                       ret_conv_14_ref |= 1;
-               }
-               ret_arr_ptr[o] = ret_conv_14_ref;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_NetworkUpdate_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKNetworkUpdate this_ptr_conv = *(LDKNetworkUpdate*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       NetworkUpdate_free(this_ptr_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHint_set_a(uint32_t this_ptr, uint32_tArray val) {
-       LDKRouteHint this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_RouteHintHopZ val_constr;
-       val_constr.datalen = *((uint32_t*)val);
-       if (val_constr.datalen > 0)
-               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKRouteHintHop), "LDKCVec_RouteHintHopZ Elements");
-       else
-               val_constr.data = NULL;
-       uint32_t* val_vals = (uint32_t*)(val + 4);
-       for (size_t o = 0; o < val_constr.datalen; o++) {
-               uint32_t val_conv_14 = val_vals[o];
-               LDKRouteHintHop val_conv_14_conv;
-               val_conv_14_conv.inner = (void*)(val_conv_14 & (~1));
-               val_conv_14_conv.is_owned = (val_conv_14 & 1) || (val_conv_14 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv_14_conv);
-               val_conv_14_conv = RouteHintHop_clone(&val_conv_14_conv);
-               val_constr.data[o] = val_conv_14_conv;
-       }
-       RouteHint_set_a(&this_ptr_conv, val_constr);
+static inline uint64_t NetworkUpdate_clone_ptr(LDKNetworkUpdate *NONNULL_PTR arg) {
+       LDKNetworkUpdate *ret_copy = MALLOC(sizeof(LDKNetworkUpdate), "LDKNetworkUpdate");
+       *ret_copy = NetworkUpdate_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_NetworkUpdate_clone_ptr(uint32_t arg) {
+       LDKNetworkUpdate* arg_conv = (LDKNetworkUpdate*)arg;
+       int64_t ret_val = NetworkUpdate_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RouteHint_new(uint32_tArray a_arg) {
-       LDKCVec_RouteHintHopZ a_arg_constr;
-       a_arg_constr.datalen = *((uint32_t*)a_arg);
-       if (a_arg_constr.datalen > 0)
-               a_arg_constr.data = MALLOC(a_arg_constr.datalen * sizeof(LDKRouteHintHop), "LDKCVec_RouteHintHopZ Elements");
-       else
-               a_arg_constr.data = NULL;
-       uint32_t* a_arg_vals = (uint32_t*)(a_arg + 4);
-       for (size_t o = 0; o < a_arg_constr.datalen; o++) {
-               uint32_t a_arg_conv_14 = a_arg_vals[o];
-               LDKRouteHintHop a_arg_conv_14_conv;
-               a_arg_conv_14_conv.inner = (void*)(a_arg_conv_14 & (~1));
-               a_arg_conv_14_conv.is_owned = (a_arg_conv_14 & 1) || (a_arg_conv_14 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(a_arg_conv_14_conv);
-               a_arg_conv_14_conv = RouteHintHop_clone(&a_arg_conv_14_conv);
-               a_arg_constr.data[o] = a_arg_conv_14_conv;
-       }
-       LDKRouteHint ret_var = RouteHint_new(a_arg_constr);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
+uint32_t  __attribute__((visibility("default"))) TS_NetworkUpdate_clone(uint32_t orig) {
+       LDKNetworkUpdate* orig_conv = (LDKNetworkUpdate*)orig;
+       LDKNetworkUpdate *ret_copy = MALLOC(sizeof(LDKNetworkUpdate), "LDKNetworkUpdate");
+       *ret_copy = NetworkUpdate_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-static inline uint64_t RouteHint_clone_ptr(LDKRouteHint *NONNULL_PTR arg) {
-       LDKRouteHint ret_var = RouteHint_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_NetworkUpdate_channel_update_message(uint32_t msg) {
+       LDKChannelUpdate msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = ChannelUpdate_clone(&msg_conv);
+       LDKNetworkUpdate *ret_copy = MALLOC(sizeof(LDKNetworkUpdate), "LDKNetworkUpdate");
+       *ret_copy = NetworkUpdate_channel_update_message(msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_NetworkUpdate_channel_closed(int64_t short_channel_id, jboolean is_permanent) {
+       LDKNetworkUpdate *ret_copy = MALLOC(sizeof(LDKNetworkUpdate), "LDKNetworkUpdate");
+       *ret_copy = NetworkUpdate_channel_closed(short_channel_id, is_permanent);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
+
+uint32_t  __attribute__((visibility("default"))) TS_NetworkUpdate_node_failure(int8_tArray node_id, jboolean is_permanent) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKNetworkUpdate *ret_copy = MALLOC(sizeof(LDKNetworkUpdate), "LDKNetworkUpdate");
+       *ret_copy = NetworkUpdate_node_failure(node_id_ref, is_permanent);
+       uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_RouteHint_clone_ptr(uint32_t arg) {
-       LDKRouteHint arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = RouteHint_clone_ptr(&arg_conv);
-       return ret_val;
+
+int8_tArray  __attribute__((visibility("default"))) TS_NetworkUpdate_write(uint32_t obj) {
+       LDKNetworkUpdate* obj_conv = (LDKNetworkUpdate*)obj;
+       LDKCVec_u8Z ret_var = NetworkUpdate_write(obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_NetworkUpdate_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_COption_NetworkUpdateZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_NetworkUpdateZDecodeErrorZ), "LDKCResult_COption_NetworkUpdateZDecodeErrorZ");
+       *ret_conv = NetworkUpdate_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_NetGraphMsgHandler_as_EventHandler(uint32_t this_arg) {
+       LDKNetGraphMsgHandler this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKEventHandler* ret_ret = MALLOC(sizeof(LDKEventHandler), "LDKEventHandler");
+       *ret_ret = NetGraphMsgHandler_as_EventHandler(&this_arg_conv);
+       return (uint64_t)ret_ret;
+}
+
+void  __attribute__((visibility("default"))) TS_NetGraphMsgHandler_free(uint32_t this_obj) {
+       LDKNetGraphMsgHandler this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       NetGraphMsgHandler_free(this_obj_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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKRouteHint ret_var = RouteHint_clone(&orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_NetGraphMsgHandler_new(uint32_t network_graph, uint32_t chain_access, uint32_t logger) {
+       LDKNetworkGraph network_graph_conv;
+       network_graph_conv.inner = (void*)(network_graph & (~1));
+       network_graph_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(network_graph_conv);
+       void* chain_access_ptr = (void*)(((uint64_t)chain_access) & ~1);
+       CHECK_ACCESS(chain_access_ptr);
+       LDKCOption_AccessZ chain_access_conv = *(LDKCOption_AccessZ*)(chain_access_ptr);
+       // Warning: we may need a move here but no clone is available for LDKCOption_AccessZ
+       if (chain_access_conv.tag == LDKCOption_AccessZ_Some) {
+               // Manually implement clone for Java trait instances
+       }
+       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
+       CHECK_ACCESS(logger_ptr);
+       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
+       LDKNetGraphMsgHandler ret_var = NetGraphMsgHandler_new(&network_graph_conv, chain_access_conv, logger_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -34486,155 +31648,130 @@ uint32_t  __attribute__((visibility("default"))) TS_RouteHint_clone(uint32_t ori
        return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_RouteHint_hash(uint32_t o) {
-       LDKRouteHint o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = RouteHint_hash(&o_conv);
-       return ret_val;
-}
-
-jboolean  __attribute__((visibility("default"))) TS_RouteHint_eq(uint32_t a, uint32_t b) {
-       LDKRouteHint a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKRouteHint b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = RouteHint_eq(&a_conv, &b_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_NetGraphMsgHandler_add_chain_access(uint32_t this_arg, uint32_t chain_access) {
+       LDKNetGraphMsgHandler this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       void* chain_access_ptr = (void*)(((uint64_t)chain_access) & ~1);
+       CHECK_ACCESS(chain_access_ptr);
+       LDKCOption_AccessZ chain_access_conv = *(LDKCOption_AccessZ*)(chain_access_ptr);
+       // Warning: we may need a move here but no clone is available for LDKCOption_AccessZ
+       if (chain_access_conv.tag == LDKCOption_AccessZ_Some) {
+               // Manually implement clone for Java trait instances
+       }
+       NetGraphMsgHandler_add_chain_access(&this_arg_conv, chain_access_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_RouteHint_write(uint32_t obj) {
-       LDKRouteHint obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = RouteHint_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_NetGraphMsgHandler_as_RoutingMessageHandler(uint32_t this_arg) {
+       LDKNetGraphMsgHandler this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKRoutingMessageHandler* ret_ret = MALLOC(sizeof(LDKRoutingMessageHandler), "LDKRoutingMessageHandler");
+       *ret_ret = NetGraphMsgHandler_as_RoutingMessageHandler(&this_arg_conv);
+       return (uint64_t)ret_ret;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RouteHint_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_RouteHintDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintDecodeErrorZ), "LDKCResult_RouteHintDecodeErrorZ");
-       *ret_conv = RouteHint_read(ser_ref);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_NetGraphMsgHandler_as_MessageSendEventsProvider(uint32_t this_arg) {
+       LDKNetGraphMsgHandler this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKMessageSendEventsProvider* ret_ret = MALLOC(sizeof(LDKMessageSendEventsProvider), "LDKMessageSendEventsProvider");
+       *ret_ret = NetGraphMsgHandler_as_MessageSendEventsProvider(&this_arg_conv);
+       return (uint64_t)ret_ret;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHintHop_free(uint32_t this_obj) {
-       LDKRouteHintHop this_obj_conv;
+void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_free(uint32_t this_obj) {
+       LDKDirectionalChannelInfo this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       RouteHintHop_free(this_obj_conv);
+       DirectionalChannelInfo_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_RouteHintHop_get_src_node_id(uint32_t this_ptr) {
-       LDKRouteHintHop this_ptr_conv;
+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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), RouteHintHop_get_src_node_id(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       int32_t ret_val = DirectionalChannelInfo_get_last_update(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHintHop_set_src_node_id(uint32_t this_ptr, int8_tArray val) {
-       LDKRouteHintHop this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_set_last_update(uint32_t this_ptr, int32_t val) {
+       LDKDirectionalChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       RouteHintHop_set_src_node_id(&this_ptr_conv, val_ref);
+       DirectionalChannelInfo_set_last_update(&this_ptr_conv, val);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_RouteHintHop_get_short_channel_id(uint32_t this_ptr) {
-       LDKRouteHintHop this_ptr_conv;
+jboolean  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_get_enabled(uint32_t this_ptr) {
+       LDKDirectionalChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = RouteHintHop_get_short_channel_id(&this_ptr_conv);
+       jboolean ret_val = DirectionalChannelInfo_get_enabled(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHintHop_set_short_channel_id(uint32_t this_ptr, int64_t val) {
-       LDKRouteHintHop this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_set_enabled(uint32_t this_ptr, jboolean val) {
+       LDKDirectionalChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       RouteHintHop_set_short_channel_id(&this_ptr_conv, val);
+       DirectionalChannelInfo_set_enabled(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RouteHintHop_get_fees(uint32_t this_ptr) {
-       LDKRouteHintHop this_ptr_conv;
+int16_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_get_cltv_expiry_delta(uint32_t this_ptr) {
+       LDKDirectionalChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKRoutingFees ret_var = RouteHintHop_get_fees(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       int16_t ret_val = DirectionalChannelInfo_get_cltv_expiry_delta(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHintHop_set_fees(uint32_t this_ptr, uint32_t val) {
-       LDKRouteHintHop this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_set_cltv_expiry_delta(uint32_t this_ptr, int16_t val) {
+       LDKDirectionalChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKRoutingFees val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = RoutingFees_clone(&val_conv);
-       RouteHintHop_set_fees(&this_ptr_conv, val_conv);
+       DirectionalChannelInfo_set_cltv_expiry_delta(&this_ptr_conv, val);
 }
 
-int16_t  __attribute__((visibility("default"))) TS_RouteHintHop_get_cltv_expiry_delta(uint32_t this_ptr) {
-       LDKRouteHintHop this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_get_htlc_minimum_msat(uint32_t this_ptr) {
+       LDKDirectionalChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = RouteHintHop_get_cltv_expiry_delta(&this_ptr_conv);
+       int64_t ret_val = DirectionalChannelInfo_get_htlc_minimum_msat(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHintHop_set_cltv_expiry_delta(uint32_t this_ptr, int16_t val) {
-       LDKRouteHintHop this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_set_htlc_minimum_msat(uint32_t this_ptr, int64_t val) {
+       LDKDirectionalChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       RouteHintHop_set_cltv_expiry_delta(&this_ptr_conv, val);
+       DirectionalChannelInfo_set_htlc_minimum_msat(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RouteHintHop_get_htlc_minimum_msat(uint32_t this_ptr) {
-       LDKRouteHintHop this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_get_htlc_maximum_msat(uint32_t this_ptr) {
+       LDKDirectionalChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
        LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
-       *ret_copy = RouteHintHop_get_htlc_minimum_msat(&this_ptr_conv);
+       *ret_copy = DirectionalChannelInfo_get_htlc_maximum_msat(&this_ptr_conv);
        uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHintHop_set_htlc_minimum_msat(uint32_t this_ptr, uint32_t val) {
-       LDKRouteHintHop this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_set_htlc_maximum_msat(uint32_t this_ptr, uint32_t val) {
+       LDKDirectionalChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
@@ -34642,50 +31779,87 @@ void  __attribute__((visibility("default"))) TS_RouteHintHop_set_htlc_minimum_ms
        CHECK_ACCESS(val_ptr);
        LDKCOption_u64Z val_conv = *(LDKCOption_u64Z*)(val_ptr);
        val_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)val) & ~1));
-       RouteHintHop_set_htlc_minimum_msat(&this_ptr_conv, val_conv);
+       DirectionalChannelInfo_set_htlc_maximum_msat(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RouteHintHop_get_htlc_maximum_msat(uint32_t this_ptr) {
-       LDKRouteHintHop this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_get_fees(uint32_t this_ptr) {
+       LDKDirectionalChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
-       *ret_copy = RouteHintHop_get_htlc_maximum_msat(&this_ptr_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
+       LDKRoutingFees ret_var = DirectionalChannelInfo_get_fees(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHintHop_set_htlc_maximum_msat(uint32_t this_ptr, uint32_t val) {
-       LDKRouteHintHop this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_set_fees(uint32_t this_ptr, uint32_t val) {
+       LDKDirectionalChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKCOption_u64Z val_conv = *(LDKCOption_u64Z*)(val_ptr);
-       val_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)val) & ~1));
-       RouteHintHop_set_htlc_maximum_msat(&this_ptr_conv, val_conv);
+       LDKRoutingFees val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = RoutingFees_clone(&val_conv);
+       DirectionalChannelInfo_set_fees(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RouteHintHop_new(int8_tArray src_node_id_arg, int64_t short_channel_id_arg, uint32_t fees_arg, int16_t cltv_expiry_delta_arg, uint32_t htlc_minimum_msat_arg, uint32_t htlc_maximum_msat_arg) {
-       LDKPublicKey src_node_id_arg_ref;
-       CHECK(*((uint32_t*)src_node_id_arg) == 33);
-       memcpy(src_node_id_arg_ref.compressed_form, (uint8_t*)(src_node_id_arg + 4), 33);
-       LDKRoutingFees fees_arg_conv;
-       fees_arg_conv.inner = (void*)(fees_arg & (~1));
-       fees_arg_conv.is_owned = (fees_arg & 1) || (fees_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(fees_arg_conv);
-       fees_arg_conv = RoutingFees_clone(&fees_arg_conv);
-       void* htlc_minimum_msat_arg_ptr = (void*)(((uint64_t)htlc_minimum_msat_arg) & ~1);
-       CHECK_ACCESS(htlc_minimum_msat_arg_ptr);
-       LDKCOption_u64Z htlc_minimum_msat_arg_conv = *(LDKCOption_u64Z*)(htlc_minimum_msat_arg_ptr);
-       htlc_minimum_msat_arg_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)htlc_minimum_msat_arg) & ~1));
+uint32_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_get_last_update_message(uint32_t this_ptr) {
+       LDKDirectionalChannelInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKChannelUpdate ret_var = DirectionalChannelInfo_get_last_update_message(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       if ((uint64_t)ret_var.inner > 4096) {
+               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+               ret_ref = (uint64_t)ret_var.inner;
+               if (ret_var.is_owned) {
+                       ret_ref |= 1;
+               }
+       }
+       return ret_ref;
+}
+
+void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_set_last_update_message(uint32_t this_ptr, uint32_t val) {
+       LDKDirectionalChannelInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKChannelUpdate val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = ChannelUpdate_clone(&val_conv);
+       DirectionalChannelInfo_set_last_update_message(&this_ptr_conv, val_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_new(int32_t last_update_arg, jboolean enabled_arg, int16_t cltv_expiry_delta_arg, int64_t htlc_minimum_msat_arg, uint32_t htlc_maximum_msat_arg, uint32_t fees_arg, uint32_t last_update_message_arg) {
        void* htlc_maximum_msat_arg_ptr = (void*)(((uint64_t)htlc_maximum_msat_arg) & ~1);
        CHECK_ACCESS(htlc_maximum_msat_arg_ptr);
        LDKCOption_u64Z htlc_maximum_msat_arg_conv = *(LDKCOption_u64Z*)(htlc_maximum_msat_arg_ptr);
        htlc_maximum_msat_arg_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)htlc_maximum_msat_arg) & ~1));
-       LDKRouteHintHop ret_var = RouteHintHop_new(src_node_id_arg_ref, short_channel_id_arg, fees_arg_conv, cltv_expiry_delta_arg, htlc_minimum_msat_arg_conv, htlc_maximum_msat_arg_conv);
+       LDKRoutingFees fees_arg_conv;
+       fees_arg_conv.inner = (void*)(fees_arg & (~1));
+       fees_arg_conv.is_owned = (fees_arg & 1) || (fees_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(fees_arg_conv);
+       fees_arg_conv = RoutingFees_clone(&fees_arg_conv);
+       LDKChannelUpdate last_update_message_arg_conv;
+       last_update_message_arg_conv.inner = (void*)(last_update_message_arg & (~1));
+       last_update_message_arg_conv.is_owned = (last_update_message_arg & 1) || (last_update_message_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(last_update_message_arg_conv);
+       last_update_message_arg_conv = ChannelUpdate_clone(&last_update_message_arg_conv);
+       LDKDirectionalChannelInfo ret_var = DirectionalChannelInfo_new(last_update_arg, enabled_arg, cltv_expiry_delta_arg, htlc_minimum_msat_arg, htlc_maximum_msat_arg_conv, fees_arg_conv, last_update_message_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -34697,8 +31871,8 @@ uint32_t  __attribute__((visibility("default"))) TS_RouteHintHop_new(int8_tArray
        return ret_ref;
 }
 
-static inline uint64_t RouteHintHop_clone_ptr(LDKRouteHintHop *NONNULL_PTR arg) {
-       LDKRouteHintHop ret_var = RouteHintHop_clone(arg);
+static inline uint64_t DirectionalChannelInfo_clone_ptr(LDKDirectionalChannelInfo *NONNULL_PTR arg) {
+       LDKDirectionalChannelInfo ret_var = DirectionalChannelInfo_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -34709,21 +31883,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_RouteHintHop_clone_ptr(uint32_t arg) {
-       LDKRouteHintHop arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_clone_ptr(uint32_t arg) {
+       LDKDirectionalChannelInfo arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = RouteHintHop_clone_ptr(&arg_conv);
+       int64_t ret_val = DirectionalChannelInfo_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RouteHintHop_clone(uint32_t orig) {
-       LDKRouteHintHop orig_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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKRouteHintHop ret_var = RouteHintHop_clone(&orig_conv);
+       LDKDirectionalChannelInfo ret_var = DirectionalChannelInfo_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -34735,123 +31909,41 @@ uint32_t  __attribute__((visibility("default"))) TS_RouteHintHop_clone(uint32_t
        return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_RouteHintHop_hash(uint32_t o) {
-       LDKRouteHintHop o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = RouteHintHop_hash(&o_conv);
-       return ret_val;
-}
-
-jboolean  __attribute__((visibility("default"))) TS_RouteHintHop_eq(uint32_t a, uint32_t b) {
-       LDKRouteHintHop a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKRouteHintHop b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = RouteHintHop_eq(&a_conv, &b_conv);
-       return ret_val;
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_RouteHintHop_write(uint32_t obj) {
-       LDKRouteHintHop obj_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_write(uint32_t obj) {
+       LDKDirectionalChannelInfo obj_conv;
        obj_conv.inner = (void*)(obj & (~1));
        obj_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = RouteHintHop_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       LDKCVec_u8Z ret_var = DirectionalChannelInfo_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RouteHintHop_read(int8_tArray ser) {
+uint32_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_read(int8_tArray ser) {
        LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_RouteHintHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintHopDecodeErrorZ), "LDKCResult_RouteHintHopDecodeErrorZ");
-       *ret_conv = RouteHintHop_read(ser_ref);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_find_route(int8_tArray our_node_pubkey, uint32_t params, uint32_t network, uint32_tArray first_hops, uint32_t logger, uint32_t scorer) {
-       LDKPublicKey our_node_pubkey_ref;
-       CHECK(*((uint32_t*)our_node_pubkey) == 33);
-       memcpy(our_node_pubkey_ref.compressed_form, (uint8_t*)(our_node_pubkey + 4), 33);
-       LDKRouteParameters params_conv;
-       params_conv.inner = (void*)(params & (~1));
-       params_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(params_conv);
-       LDKNetworkGraph network_conv;
-       network_conv.inner = (void*)(network & (~1));
-       network_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(network_conv);
-       LDKCVec_ChannelDetailsZ first_hops_constr;
-       LDKCVec_ChannelDetailsZ *first_hops_ptr = NULL;
-       if (first_hops != 0) {
-               first_hops_constr.datalen = *((uint32_t*)first_hops);
-               if (first_hops_constr.datalen > 0)
-                       first_hops_constr.data = MALLOC(first_hops_constr.datalen * sizeof(LDKChannelDetails), "LDKCVec_ChannelDetailsZ Elements");
-               else
-                       first_hops_constr.data = NULL;
-               uint32_t* first_hops_vals = (uint32_t*)(first_hops + 4);
-               for (size_t q = 0; q < first_hops_constr.datalen; q++) {
-                       uint32_t first_hops_conv_16 = first_hops_vals[q];
-                       LDKChannelDetails first_hops_conv_16_conv;
-                       first_hops_conv_16_conv.inner = (void*)(first_hops_conv_16 & (~1));
-                       first_hops_conv_16_conv.is_owned = (first_hops_conv_16 & 1) || (first_hops_conv_16 == 0);
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(first_hops_conv_16_conv);
-                       first_hops_constr.data[q] = first_hops_conv_16_conv;
-               }
-               first_hops_ptr = &first_hops_constr;
-       }
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       CHECK_ACCESS(logger_ptr);
-       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
-       void* scorer_ptr = (void*)(((uint64_t)scorer) & ~1);
-       if (!(scorer & 1)) { CHECK_ACCESS(scorer_ptr); }
-       LDKScore* scorer_conv = (LDKScore*)scorer_ptr;
-       LDKCResult_RouteLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteLightningErrorZ), "LDKCResult_RouteLightningErrorZ");
-       *ret_conv = find_route(our_node_pubkey_ref, &params_conv, &network_conv, first_hops_ptr, logger_conv, scorer_conv);
-       if (first_hops_ptr != NULL) { FREE(first_hops_constr.data); }
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_DirectionalChannelInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DirectionalChannelInfoDecodeErrorZ), "LDKCResult_DirectionalChannelInfoDecodeErrorZ");
+       *ret_conv = DirectionalChannelInfo_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_Score_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKScore this_ptr_conv = *(LDKScore*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       Score_free(this_ptr_conv);
-}
-
-void  __attribute__((visibility("default"))) TS_LockableScore_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKLockableScore this_ptr_conv = *(LDKLockableScore*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       LockableScore_free(this_ptr_conv);
-}
-
-void  __attribute__((visibility("default"))) TS_MultiThreadedLockableScore_free(uint32_t this_obj) {
-       LDKMultiThreadedLockableScore this_obj_conv;
+void  __attribute__((visibility("default"))) TS_ChannelInfo_free(uint32_t this_obj) {
+       LDKChannelInfo this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       MultiThreadedLockableScore_free(this_obj_conv);
+       ChannelInfo_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MultiThreadedLockableScore_new(uint32_t score) {
-       void* score_ptr = (void*)(((uint64_t)score) & ~1);
-       CHECK_ACCESS(score_ptr);
-       LDKScore score_conv = *(LDKScore*)(score_ptr);
-       LDKMultiThreadedLockableScore ret_var = MultiThreadedLockableScore_new(score_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_features(uint32_t this_ptr) {
+       LDKChannelInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKChannelFeatures ret_var = ChannelInfo_get_features(&this_ptr_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -34863,109 +31955,225 @@ uint32_t  __attribute__((visibility("default"))) TS_MultiThreadedLockableScore_n
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_Scorer_free(uint32_t this_obj) {
-       LDKScorer this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       Scorer_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_ChannelInfo_set_features(uint32_t this_ptr, uint32_t val) {
+       LDKChannelInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKChannelFeatures val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = ChannelFeatures_clone(&val_conv);
+       ChannelInfo_set_features(&this_ptr_conv, val_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_ScoringParameters_free(uint32_t this_obj) {
-       LDKScoringParameters this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ScoringParameters_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_node_one(uint32_t this_ptr) {
+       LDKChannelInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKNodeId ret_var = ChannelInfo_get_node_one(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ScoringParameters_get_base_penalty_msat(uint32_t this_ptr) {
-       LDKScoringParameters this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelInfo_set_node_one(uint32_t this_ptr, uint32_t val) {
+       LDKChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ScoringParameters_get_base_penalty_msat(&this_ptr_conv);
-       return ret_val;
+       LDKNodeId val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = NodeId_clone(&val_conv);
+       ChannelInfo_set_node_one(&this_ptr_conv, val_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_ScoringParameters_set_base_penalty_msat(uint32_t this_ptr, int64_t val) {
-       LDKScoringParameters this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_one_to_two(uint32_t this_ptr) {
+       LDKChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ScoringParameters_set_base_penalty_msat(&this_ptr_conv, val);
+       LDKDirectionalChannelInfo ret_var = ChannelInfo_get_one_to_two(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       if ((uint64_t)ret_var.inner > 4096) {
+               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+               ret_ref = (uint64_t)ret_var.inner;
+               if (ret_var.is_owned) {
+                       ret_ref |= 1;
+               }
+       }
+       return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ScoringParameters_get_failure_penalty_msat(uint32_t this_ptr) {
-       LDKScoringParameters this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelInfo_set_one_to_two(uint32_t this_ptr, uint32_t val) {
+       LDKChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ScoringParameters_get_failure_penalty_msat(&this_ptr_conv);
-       return ret_val;
+       LDKDirectionalChannelInfo val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = DirectionalChannelInfo_clone(&val_conv);
+       ChannelInfo_set_one_to_two(&this_ptr_conv, val_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_ScoringParameters_set_failure_penalty_msat(uint32_t this_ptr, int64_t val) {
-       LDKScoringParameters this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_node_two(uint32_t this_ptr) {
+       LDKChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ScoringParameters_set_failure_penalty_msat(&this_ptr_conv, val);
+       LDKNodeId ret_var = ChannelInfo_get_node_two(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int16_t  __attribute__((visibility("default"))) TS_ScoringParameters_get_overuse_penalty_start_1024th(uint32_t this_ptr) {
-       LDKScoringParameters this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelInfo_set_node_two(uint32_t this_ptr, uint32_t val) {
+       LDKChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = ScoringParameters_get_overuse_penalty_start_1024th(&this_ptr_conv);
-       return ret_val;
+       LDKNodeId val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = NodeId_clone(&val_conv);
+       ChannelInfo_set_node_two(&this_ptr_conv, val_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_two_to_one(uint32_t this_ptr) {
+       LDKChannelInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKDirectionalChannelInfo ret_var = ChannelInfo_get_two_to_one(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       if ((uint64_t)ret_var.inner > 4096) {
+               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+               ret_ref = (uint64_t)ret_var.inner;
+               if (ret_var.is_owned) {
+                       ret_ref |= 1;
+               }
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ScoringParameters_set_overuse_penalty_start_1024th(uint32_t this_ptr, int16_t val) {
-       LDKScoringParameters this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelInfo_set_two_to_one(uint32_t this_ptr, uint32_t val) {
+       LDKChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ScoringParameters_set_overuse_penalty_start_1024th(&this_ptr_conv, val);
+       LDKDirectionalChannelInfo val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = DirectionalChannelInfo_clone(&val_conv);
+       ChannelInfo_set_two_to_one(&this_ptr_conv, val_conv);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ScoringParameters_get_overuse_penalty_msat_per_1024th(uint32_t this_ptr) {
-       LDKScoringParameters this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_capacity_sats(uint32_t this_ptr) {
+       LDKChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ScoringParameters_get_overuse_penalty_msat_per_1024th(&this_ptr_conv);
-       return ret_val;
+       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
+       *ret_copy = ChannelInfo_get_capacity_sats(&this_ptr_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ScoringParameters_set_overuse_penalty_msat_per_1024th(uint32_t this_ptr, int64_t val) {
-       LDKScoringParameters this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelInfo_set_capacity_sats(uint32_t this_ptr, uint32_t val) {
+       LDKChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ScoringParameters_set_overuse_penalty_msat_per_1024th(&this_ptr_conv, val);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKCOption_u64Z val_conv = *(LDKCOption_u64Z*)(val_ptr);
+       val_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)val) & ~1));
+       ChannelInfo_set_capacity_sats(&this_ptr_conv, val_conv);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ScoringParameters_get_failure_penalty_half_life(uint32_t this_ptr) {
-       LDKScoringParameters this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_announcement_message(uint32_t this_ptr) {
+       LDKChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ScoringParameters_get_failure_penalty_half_life(&this_ptr_conv);
-       return ret_val;
+       LDKChannelAnnouncement ret_var = ChannelInfo_get_announcement_message(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       if ((uint64_t)ret_var.inner > 4096) {
+               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+               ret_ref = (uint64_t)ret_var.inner;
+               if (ret_var.is_owned) {
+                       ret_ref |= 1;
+               }
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ScoringParameters_set_failure_penalty_half_life(uint32_t this_ptr, int64_t val) {
-       LDKScoringParameters this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelInfo_set_announcement_message(uint32_t this_ptr, uint32_t val) {
+       LDKChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ScoringParameters_set_failure_penalty_half_life(&this_ptr_conv, val);
+       LDKChannelAnnouncement val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = ChannelAnnouncement_clone(&val_conv);
+       ChannelInfo_set_announcement_message(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ScoringParameters_new(int64_t base_penalty_msat_arg, int64_t failure_penalty_msat_arg, int16_t overuse_penalty_start_1024th_arg, int64_t overuse_penalty_msat_per_1024th_arg, int64_t failure_penalty_half_life_arg) {
-       LDKScoringParameters ret_var = ScoringParameters_new(base_penalty_msat_arg, failure_penalty_msat_arg, overuse_penalty_start_1024th_arg, overuse_penalty_msat_per_1024th_arg, failure_penalty_half_life_arg);
+static inline uint64_t ChannelInfo_clone_ptr(LDKChannelInfo *NONNULL_PTR arg) {
+       LDKChannelInfo ret_var = ChannelInfo_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_ChannelInfo_clone_ptr(uint32_t arg) {
+       LDKChannelInfo arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ChannelInfo_clone_ptr(&arg_conv);
+       return ret_val;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_clone(uint32_t orig) {
+       LDKChannelInfo orig_conv;
+       orig_conv.inner = (void*)(orig & (~1));
+       orig_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKChannelInfo ret_var = ChannelInfo_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -34977,60 +32185,71 @@ uint32_t  __attribute__((visibility("default"))) TS_ScoringParameters_new(int64_
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ScoringParameters_write(uint32_t obj) {
-       LDKScoringParameters obj_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelInfo_write(uint32_t obj) {
+       LDKChannelInfo obj_conv;
        obj_conv.inner = (void*)(obj & (~1));
        obj_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ScoringParameters_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       LDKCVec_u8Z ret_var = ChannelInfo_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ScoringParameters_read(int8_tArray ser) {
+uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_read(int8_tArray ser) {
        LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ScoringParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ScoringParametersDecodeErrorZ), "LDKCResult_ScoringParametersDecodeErrorZ");
-       *ret_conv = ScoringParameters_read(ser_ref);
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ChannelInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelInfoDecodeErrorZ), "LDKCResult_ChannelInfoDecodeErrorZ");
+       *ret_conv = ChannelInfo_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Scorer_new(uint32_t params) {
-       LDKScoringParameters params_conv;
-       params_conv.inner = (void*)(params & (~1));
-       params_conv.is_owned = (params & 1) || (params == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(params_conv);
-       // Warning: we need a move here but no clone is available for LDKScoringParameters
-       LDKScorer ret_var = Scorer_new(params_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_RoutingFees_free(uint32_t this_obj) {
+       LDKRoutingFees this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       RoutingFees_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Scorer_default() {
-       LDKScorer ret_var = Scorer_default();
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = RoutingFees_get_base_msat(&this_ptr_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ScoringParameters_default() {
-       LDKScoringParameters ret_var = ScoringParameters_default();
+void  __attribute__((visibility("default"))) TS_RoutingFees_set_base_msat(uint32_t this_ptr, int32_t val) {
+       LDKRoutingFees this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       RoutingFees_set_base_msat(&this_ptr_conv, val);
+}
+
+int32_t  __attribute__((visibility("default"))) TS_RoutingFees_get_proportional_millionths(uint32_t this_ptr) {
+       LDKRoutingFees this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = RoutingFees_get_proportional_millionths(&this_ptr_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_RoutingFees_set_proportional_millionths(uint32_t this_ptr, int32_t val) {
+       LDKRoutingFees this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       RoutingFees_set_proportional_millionths(&this_ptr_conv, val);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_RoutingFees_new(int32_t base_msat_arg, int32_t proportional_millionths_arg) {
+       LDKRoutingFees ret_var = RoutingFees_new(base_msat_arg, proportional_millionths_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -35042,48 +32261,46 @@ uint32_t  __attribute__((visibility("default"))) TS_ScoringParameters_default()
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Scorer_as_Score(uint32_t this_arg) {
-       LDKScorer this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKScore* ret_ret = MALLOC(sizeof(LDKScore), "LDKScore");
-       *ret_ret = Scorer_as_Score(&this_arg_conv);
-       return (uint64_t)ret_ret;
+jboolean  __attribute__((visibility("default"))) TS_RoutingFees_eq(uint32_t a, uint32_t b) {
+       LDKRoutingFees a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       LDKRoutingFees b_conv;
+       b_conv.inner = (void*)(b & (~1));
+       b_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
+       jboolean ret_val = RoutingFees_eq(&a_conv, &b_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_Scorer_write(uint32_t obj) {
-       LDKScorer obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = Scorer_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+static inline uint64_t RoutingFees_clone_ptr(LDKRoutingFees *NONNULL_PTR arg) {
+       LDKRoutingFees ret_var = RoutingFees_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_Scorer_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ScorerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ScorerDecodeErrorZ), "LDKCResult_ScorerDecodeErrorZ");
-       *ret_conv = Scorer_read(ser_ref);
-       return (uint64_t)ret_conv;
+       return ret_ref;
 }
-
-void  __attribute__((visibility("default"))) TS_FilesystemPersister_free(uint32_t this_obj) {
-       LDKFilesystemPersister this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       FilesystemPersister_free(this_obj_conv);
+int64_t  __attribute__((visibility("default"))) TS_RoutingFees_clone_ptr(uint32_t arg) {
+       LDKRoutingFees arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = RoutingFees_clone_ptr(&arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_FilesystemPersister_new(jstring path_to_channel_data) {
-       LDKStr path_to_channel_data_conv = str_ref_to_owned_c(path_to_channel_data);
-       LDKFilesystemPersister ret_var = FilesystemPersister_new(path_to_channel_data_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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKRoutingFees ret_var = RoutingFees_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -35095,95 +32312,50 @@ uint32_t  __attribute__((visibility("default"))) TS_FilesystemPersister_new(jstr
        return ret_ref;
 }
 
-jstring  __attribute__((visibility("default"))) TS_FilesystemPersister_get_data_dir(uint32_t this_arg) {
-       LDKFilesystemPersister this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKStr ret_str = FilesystemPersister_get_data_dir(&this_arg_conv);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_FilesystemPersister_persist_manager(jstring data_dir, uint32_t manager) {
-       LDKStr data_dir_conv = str_ref_to_owned_c(data_dir);
-       LDKChannelManager manager_conv;
-       manager_conv.inner = (void*)(manager & (~1));
-       manager_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(manager_conv);
-       LDKCResult_NoneErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneErrorZ), "LDKCResult_NoneErrorZ");
-       *ret_conv = FilesystemPersister_persist_manager(data_dir_conv, &manager_conv);
-       return (uint64_t)ret_conv;
+int64_t  __attribute__((visibility("default"))) TS_RoutingFees_hash(uint32_t o) {
+       LDKRoutingFees o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       int64_t ret_val = RoutingFees_hash(&o_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_FilesystemPersister_read_channelmonitors(uint32_t this_arg, uint32_t keys_manager) {
-       LDKFilesystemPersister this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       void* keys_manager_ptr = (void*)(((uint64_t)keys_manager) & ~1);
-       CHECK_ACCESS(keys_manager_ptr);
-       LDKKeysInterface keys_manager_conv = *(LDKKeysInterface*)(keys_manager_ptr);
-       LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ), "LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ");
-       *ret_conv = FilesystemPersister_read_channelmonitors(&this_arg_conv, keys_manager_conv);
-       return (uint64_t)ret_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_RoutingFees_write(uint32_t obj) {
+       LDKRoutingFees obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = RoutingFees_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_FilesystemPersister_as_Persist(uint32_t this_arg) {
-       LDKFilesystemPersister this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKPersist* ret_ret = MALLOC(sizeof(LDKPersist), "LDKPersist");
-       *ret_ret = FilesystemPersister_as_Persist(&this_arg_conv);
-       return (uint64_t)ret_ret;
+uint32_t  __attribute__((visibility("default"))) TS_RoutingFees_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_RoutingFeesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RoutingFeesDecodeErrorZ), "LDKCResult_RoutingFeesDecodeErrorZ");
+       *ret_conv = RoutingFees_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_BackgroundProcessor_free(uint32_t this_obj) {
-       LDKBackgroundProcessor this_obj_conv;
+void  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_free(uint32_t this_obj) {
+       LDKNodeAnnouncementInfo this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       BackgroundProcessor_free(this_obj_conv);
-}
-
-void  __attribute__((visibility("default"))) TS_ChannelManagerPersister_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKChannelManagerPersister this_ptr_conv = *(LDKChannelManagerPersister*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       ChannelManagerPersister_free(this_ptr_conv);
+       NodeAnnouncementInfo_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_BackgroundProcessor_start(uint32_t persister, uint32_t event_handler, uint32_t chain_monitor, uint32_t channel_manager, uint32_t net_graph_msg_handler, uint32_t peer_manager, uint32_t logger) {
-       void* persister_ptr = (void*)(((uint64_t)persister) & ~1);
-       CHECK_ACCESS(persister_ptr);
-       LDKChannelManagerPersister persister_conv = *(LDKChannelManagerPersister*)(persister_ptr);
-       void* event_handler_ptr = (void*)(((uint64_t)event_handler) & ~1);
-       CHECK_ACCESS(event_handler_ptr);
-       LDKEventHandler event_handler_conv = *(LDKEventHandler*)(event_handler_ptr);
-       LDKChainMonitor chain_monitor_conv;
-       chain_monitor_conv.inner = (void*)(chain_monitor & (~1));
-       chain_monitor_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(chain_monitor_conv);
-       LDKChannelManager channel_manager_conv;
-       channel_manager_conv.inner = (void*)(channel_manager & (~1));
-       channel_manager_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_manager_conv);
-       LDKNetGraphMsgHandler net_graph_msg_handler_conv;
-       net_graph_msg_handler_conv.inner = (void*)(net_graph_msg_handler & (~1));
-       net_graph_msg_handler_conv.is_owned = (net_graph_msg_handler & 1) || (net_graph_msg_handler == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(net_graph_msg_handler_conv);
-       LDKPeerManager peer_manager_conv;
-       peer_manager_conv.inner = (void*)(peer_manager & (~1));
-       peer_manager_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(peer_manager_conv);
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       CHECK_ACCESS(logger_ptr);
-       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
-       LDKBackgroundProcessor ret_var = BackgroundProcessor_start(persister_conv, event_handler_conv, &chain_monitor_conv, &channel_manager_conv, net_graph_msg_handler_conv, &peer_manager_conv, logger_conv);
+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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKNodeFeatures ret_var = NodeAnnouncementInfo_get_features(&this_ptr_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -35195,80 +32367,165 @@ uint32_t  __attribute__((visibility("default"))) TS_BackgroundProcessor_start(ui
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_BackgroundProcessor_join(uint32_t this_arg) {
-       LDKBackgroundProcessor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       // Warning: we need a move here but no clone is available for LDKBackgroundProcessor
-       LDKCResult_NoneErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneErrorZ), "LDKCResult_NoneErrorZ");
-       *ret_conv = BackgroundProcessor_join(this_arg_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_set_features(uint32_t this_ptr, uint32_t val) {
+       LDKNodeAnnouncementInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKNodeFeatures val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = NodeFeatures_clone(&val_conv);
+       NodeAnnouncementInfo_set_features(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_BackgroundProcessor_stop(uint32_t this_arg) {
-       LDKBackgroundProcessor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       // Warning: we need a move here but no clone is available for LDKBackgroundProcessor
-       LDKCResult_NoneErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneErrorZ), "LDKCResult_NoneErrorZ");
-       *ret_conv = BackgroundProcessor_stop(this_arg_conv);
-       return (uint64_t)ret_conv;
+int32_t  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_get_last_update(uint32_t this_ptr) {
+       LDKNodeAnnouncementInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = NodeAnnouncementInfo_get_last_update(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_check_platform() {
-       check_platform();
+void  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_set_last_update(uint32_t this_ptr, int32_t val) {
+       LDKNodeAnnouncementInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       NodeAnnouncementInfo_set_last_update(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_Invoice_free(uint32_t this_obj) {
-       LDKInvoice this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       Invoice_free(this_obj_conv);
+int8_tArray  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_get_rgb(uint32_t this_ptr) {
+       LDKNodeAnnouncementInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(3);
+       memcpy(ret_arr->elems, *NodeAnnouncementInfo_get_rgb(&this_ptr_conv), 3);
+       return ret_arr;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_Invoice_eq(uint32_t a, uint32_t b) {
-       LDKInvoice a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKInvoice b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = Invoice_eq(&a_conv, &b_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_set_rgb(uint32_t this_ptr, int8_tArray val) {
+       LDKNodeAnnouncementInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKThreeBytes val_ref;
+       CHECK(val->arr_len == 3);
+       memcpy(val_ref.data, val->elems, 3);
+       NodeAnnouncementInfo_set_rgb(&this_ptr_conv, val_ref);
 }
 
-static inline uint64_t Invoice_clone_ptr(LDKInvoice *NONNULL_PTR arg) {
-       LDKInvoice ret_var = Invoice_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
+int8_tArray  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_get_alias(uint32_t this_ptr) {
+       LDKNodeAnnouncementInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *NodeAnnouncementInfo_get_alias(&this_ptr_conv), 32);
+       return ret_arr;
+}
+
+void  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_set_alias(uint32_t this_ptr, int8_tArray val) {
+       LDKNodeAnnouncementInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       NodeAnnouncementInfo_set_alias(&this_ptr_conv, val_ref);
+}
+
+void  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_set_addresses(uint32_t this_ptr, uint32_tArray val) {
+       LDKNodeAnnouncementInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCVec_NetAddressZ val_constr;
+       val_constr.datalen = val->arr_len;
+       if (val_constr.datalen > 0)
+               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKNetAddress), "LDKCVec_NetAddressZ Elements");
+       else
+               val_constr.data = NULL;
+       uint32_t* val_vals = val->elems;
+       for (size_t m = 0; m < val_constr.datalen; m++) {
+               uint32_t val_conv_12 = val_vals[m];
+               void* val_conv_12_ptr = (void*)(((uint64_t)val_conv_12) & ~1);
+               CHECK_ACCESS(val_conv_12_ptr);
+               LDKNetAddress val_conv_12_conv = *(LDKNetAddress*)(val_conv_12_ptr);
+               val_conv_12_conv = NetAddress_clone((LDKNetAddress*)(((uint64_t)val_conv_12) & ~1));
+               val_constr.data[m] = val_conv_12_conv;
+       }
+       NodeAnnouncementInfo_set_addresses(&this_ptr_conv, val_constr);
 }
+
+uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_get_announcement_message(uint32_t this_ptr) {
+       LDKNodeAnnouncementInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKNodeAnnouncement ret_var = NodeAnnouncementInfo_get_announcement_message(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       if ((uint64_t)ret_var.inner > 4096) {
+               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+               ret_ref = (uint64_t)ret_var.inner;
+               if (ret_var.is_owned) {
+                       ret_ref |= 1;
+               }
+       }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_Invoice_clone_ptr(uint32_t arg) {
-       LDKInvoice arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = Invoice_clone_ptr(&arg_conv);
-       return ret_val;
+
+void  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_set_announcement_message(uint32_t this_ptr, uint32_t val) {
+       LDKNodeAnnouncementInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKNodeAnnouncement val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = NodeAnnouncement_clone(&val_conv);
+       NodeAnnouncementInfo_set_announcement_message(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Invoice_clone(uint32_t orig) {
-       LDKInvoice orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKInvoice ret_var = Invoice_clone(&orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_new(uint32_t features_arg, int32_t last_update_arg, int8_tArray rgb_arg, int8_tArray alias_arg, uint32_tArray addresses_arg, uint32_t announcement_message_arg) {
+       LDKNodeFeatures features_arg_conv;
+       features_arg_conv.inner = (void*)(features_arg & (~1));
+       features_arg_conv.is_owned = (features_arg & 1) || (features_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(features_arg_conv);
+       features_arg_conv = NodeFeatures_clone(&features_arg_conv);
+       LDKThreeBytes rgb_arg_ref;
+       CHECK(rgb_arg->arr_len == 3);
+       memcpy(rgb_arg_ref.data, rgb_arg->elems, 3);
+       LDKThirtyTwoBytes alias_arg_ref;
+       CHECK(alias_arg->arr_len == 32);
+       memcpy(alias_arg_ref.data, alias_arg->elems, 32);
+       LDKCVec_NetAddressZ addresses_arg_constr;
+       addresses_arg_constr.datalen = addresses_arg->arr_len;
+       if (addresses_arg_constr.datalen > 0)
+               addresses_arg_constr.data = MALLOC(addresses_arg_constr.datalen * sizeof(LDKNetAddress), "LDKCVec_NetAddressZ Elements");
+       else
+               addresses_arg_constr.data = NULL;
+       uint32_t* addresses_arg_vals = addresses_arg->elems;
+       for (size_t m = 0; m < addresses_arg_constr.datalen; m++) {
+               uint32_t addresses_arg_conv_12 = addresses_arg_vals[m];
+               void* addresses_arg_conv_12_ptr = (void*)(((uint64_t)addresses_arg_conv_12) & ~1);
+               CHECK_ACCESS(addresses_arg_conv_12_ptr);
+               LDKNetAddress addresses_arg_conv_12_conv = *(LDKNetAddress*)(addresses_arg_conv_12_ptr);
+               addresses_arg_constr.data[m] = addresses_arg_conv_12_conv;
+       }
+       LDKNodeAnnouncement announcement_message_arg_conv;
+       announcement_message_arg_conv.inner = (void*)(announcement_message_arg & (~1));
+       announcement_message_arg_conv.is_owned = (announcement_message_arg & 1) || (announcement_message_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(announcement_message_arg_conv);
+       announcement_message_arg_conv = NodeAnnouncement_clone(&announcement_message_arg_conv);
+       LDKNodeAnnouncementInfo ret_var = NodeAnnouncementInfo_new(features_arg_conv, last_update_arg, rgb_arg_ref, alias_arg_ref, addresses_arg_constr, announcement_message_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -35280,29 +32537,8 @@ uint32_t  __attribute__((visibility("default"))) TS_Invoice_clone(uint32_t orig)
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_SignedRawInvoice_free(uint32_t this_obj) {
-       LDKSignedRawInvoice this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       SignedRawInvoice_free(this_obj_conv);
-}
-
-jboolean  __attribute__((visibility("default"))) TS_SignedRawInvoice_eq(uint32_t a, uint32_t b) {
-       LDKSignedRawInvoice a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKSignedRawInvoice b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = SignedRawInvoice_eq(&a_conv, &b_conv);
-       return ret_val;
-}
-
-static inline uint64_t SignedRawInvoice_clone_ptr(LDKSignedRawInvoice *NONNULL_PTR arg) {
-       LDKSignedRawInvoice ret_var = SignedRawInvoice_clone(arg);
+static inline uint64_t NodeAnnouncementInfo_clone_ptr(LDKNodeAnnouncementInfo *NONNULL_PTR arg) {
+       LDKNodeAnnouncementInfo ret_var = NodeAnnouncementInfo_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -35313,21 +32549,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_SignedRawInvoice_clone_ptr(uint32_t arg) {
-       LDKSignedRawInvoice arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_clone_ptr(uint32_t arg) {
+       LDKNodeAnnouncementInfo arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = SignedRawInvoice_clone_ptr(&arg_conv);
+       int64_t ret_val = NodeAnnouncementInfo_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SignedRawInvoice_clone(uint32_t orig) {
-       LDKSignedRawInvoice orig_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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKSignedRawInvoice ret_var = SignedRawInvoice_clone(&orig_conv);
+       LDKNodeAnnouncementInfo ret_var = NodeAnnouncementInfo_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -35339,173 +32575,141 @@ uint32_t  __attribute__((visibility("default"))) TS_SignedRawInvoice_clone(uint3
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_RawInvoice_free(uint32_t this_obj) {
-       LDKRawInvoice this_obj_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_write(uint32_t obj) {
+       LDKNodeAnnouncementInfo obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = NodeAnnouncementInfo_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_NodeAnnouncementInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ), "LDKCResult_NodeAnnouncementInfoDecodeErrorZ");
+       *ret_conv = NodeAnnouncementInfo_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_NodeInfo_free(uint32_t this_obj) {
+       LDKNodeInfo this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       RawInvoice_free(this_obj_conv);
+       NodeInfo_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RawInvoice_get_data(uint32_t this_ptr) {
-       LDKRawInvoice this_ptr_conv;
+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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCVec_u64Z val_constr;
+       val_constr.datalen = val->arr_len;
+       if (val_constr.datalen > 0)
+               val_constr.data = MALLOC(val_constr.datalen * sizeof(int64_t), "LDKCVec_u64Z Elements");
+       else
+               val_constr.data = NULL;
+       int64_t* val_vals = val->elems;
+       for (size_t i = 0; i < val_constr.datalen; i++) {
+               int64_t val_conv_8 = val_vals[i];
+               val_constr.data[i] = val_conv_8;
+       }
+       NodeInfo_set_channels(&this_ptr_conv, val_constr);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_NodeInfo_get_lowest_inbound_channel_fees(uint32_t this_ptr) {
+       LDKNodeInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKRawDataPart ret_var = RawInvoice_get_data(&this_ptr_conv);
+       LDKRoutingFees ret_var = NodeInfo_get_lowest_inbound_channel_fees(&this_ptr_conv);
        uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       if ((uint64_t)ret_var.inner > 4096) {
+               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
        CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
+               ret_ref = (uint64_t)ret_var.inner;
+               if (ret_var.is_owned) {
+                       ret_ref |= 1;
+               }
        }
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_RawInvoice_set_data(uint32_t this_ptr, uint32_t val) {
-       LDKRawInvoice this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_NodeInfo_set_lowest_inbound_channel_fees(uint32_t this_ptr, uint32_t val) {
+       LDKNodeInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKRawDataPart val_conv;
+       LDKRoutingFees val_conv;
        val_conv.inner = (void*)(val & (~1));
        val_conv.is_owned = (val & 1) || (val == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = RawDataPart_clone(&val_conv);
-       RawInvoice_set_data(&this_ptr_conv, val_conv);
-}
-
-jboolean  __attribute__((visibility("default"))) TS_RawInvoice_eq(uint32_t a, uint32_t b) {
-       LDKRawInvoice a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKRawInvoice b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = RawInvoice_eq(&a_conv, &b_conv);
-       return ret_val;
-}
-
-static inline uint64_t RawInvoice_clone_ptr(LDKRawInvoice *NONNULL_PTR arg) {
-       LDKRawInvoice ret_var = RawInvoice_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_RawInvoice_clone_ptr(uint32_t arg) {
-       LDKRawInvoice arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = RawInvoice_clone_ptr(&arg_conv);
-       return ret_val;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_RawInvoice_clone(uint32_t orig) {
-       LDKRawInvoice orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKRawInvoice ret_var = RawInvoice_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
-}
-
-void  __attribute__((visibility("default"))) TS_RawDataPart_free(uint32_t this_obj) {
-       LDKRawDataPart this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       RawDataPart_free(this_obj_conv);
+       val_conv = RoutingFees_clone(&val_conv);
+       NodeInfo_set_lowest_inbound_channel_fees(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RawDataPart_get_timestamp(uint32_t this_ptr) {
-       LDKRawDataPart this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_NodeInfo_get_announcement_info(uint32_t this_ptr) {
+       LDKNodeInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPositiveTimestamp ret_var = RawDataPart_get_timestamp(&this_ptr_conv);
+       LDKNodeAnnouncementInfo ret_var = NodeInfo_get_announcement_info(&this_ptr_conv);
        uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       if ((uint64_t)ret_var.inner > 4096) {
+               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
        CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
+               ret_ref = (uint64_t)ret_var.inner;
+               if (ret_var.is_owned) {
+                       ret_ref |= 1;
+               }
        }
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_RawDataPart_set_timestamp(uint32_t this_ptr, uint32_t val) {
-       LDKRawDataPart this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_NodeInfo_set_announcement_info(uint32_t this_ptr, uint32_t val) {
+       LDKNodeInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPositiveTimestamp val_conv;
+       LDKNodeAnnouncementInfo val_conv;
        val_conv.inner = (void*)(val & (~1));
        val_conv.is_owned = (val & 1) || (val == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = PositiveTimestamp_clone(&val_conv);
-       RawDataPart_set_timestamp(&this_ptr_conv, val_conv);
-}
-
-jboolean  __attribute__((visibility("default"))) TS_RawDataPart_eq(uint32_t a, uint32_t b) {
-       LDKRawDataPart a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKRawDataPart b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = RawDataPart_eq(&a_conv, &b_conv);
-       return ret_val;
-}
-
-static inline uint64_t RawDataPart_clone_ptr(LDKRawDataPart *NONNULL_PTR arg) {
-       LDKRawDataPart ret_var = RawDataPart_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_RawDataPart_clone_ptr(uint32_t arg) {
-       LDKRawDataPart arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = RawDataPart_clone_ptr(&arg_conv);
-       return ret_val;
+       val_conv = NodeAnnouncementInfo_clone(&val_conv);
+       NodeInfo_set_announcement_info(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RawDataPart_clone(uint32_t orig) {
-       LDKRawDataPart orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKRawDataPart ret_var = RawDataPart_clone(&orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_NodeInfo_new(int64_tArray channels_arg, uint32_t lowest_inbound_channel_fees_arg, uint32_t announcement_info_arg) {
+       LDKCVec_u64Z channels_arg_constr;
+       channels_arg_constr.datalen = channels_arg->arr_len;
+       if (channels_arg_constr.datalen > 0)
+               channels_arg_constr.data = MALLOC(channels_arg_constr.datalen * sizeof(int64_t), "LDKCVec_u64Z Elements");
+       else
+               channels_arg_constr.data = NULL;
+       int64_t* channels_arg_vals = channels_arg->elems;
+       for (size_t i = 0; i < channels_arg_constr.datalen; i++) {
+               int64_t channels_arg_conv_8 = channels_arg_vals[i];
+               channels_arg_constr.data[i] = channels_arg_conv_8;
+       }
+       LDKRoutingFees lowest_inbound_channel_fees_arg_conv;
+       lowest_inbound_channel_fees_arg_conv.inner = (void*)(lowest_inbound_channel_fees_arg & (~1));
+       lowest_inbound_channel_fees_arg_conv.is_owned = (lowest_inbound_channel_fees_arg & 1) || (lowest_inbound_channel_fees_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(lowest_inbound_channel_fees_arg_conv);
+       lowest_inbound_channel_fees_arg_conv = RoutingFees_clone(&lowest_inbound_channel_fees_arg_conv);
+       LDKNodeAnnouncementInfo announcement_info_arg_conv;
+       announcement_info_arg_conv.inner = (void*)(announcement_info_arg & (~1));
+       announcement_info_arg_conv.is_owned = (announcement_info_arg & 1) || (announcement_info_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(announcement_info_arg_conv);
+       announcement_info_arg_conv = NodeAnnouncementInfo_clone(&announcement_info_arg_conv);
+       LDKNodeInfo ret_var = NodeInfo_new(channels_arg_constr, lowest_inbound_channel_fees_arg_conv, announcement_info_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -35517,29 +32721,8 @@ uint32_t  __attribute__((visibility("default"))) TS_RawDataPart_clone(uint32_t o
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_PositiveTimestamp_free(uint32_t this_obj) {
-       LDKPositiveTimestamp this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       PositiveTimestamp_free(this_obj_conv);
-}
-
-jboolean  __attribute__((visibility("default"))) TS_PositiveTimestamp_eq(uint32_t a, uint32_t b) {
-       LDKPositiveTimestamp a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKPositiveTimestamp b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = PositiveTimestamp_eq(&a_conv, &b_conv);
-       return ret_val;
-}
-
-static inline uint64_t PositiveTimestamp_clone_ptr(LDKPositiveTimestamp *NONNULL_PTR arg) {
-       LDKPositiveTimestamp ret_var = PositiveTimestamp_clone(arg);
+static inline uint64_t NodeInfo_clone_ptr(LDKNodeInfo *NONNULL_PTR arg) {
+       LDKNodeInfo ret_var = NodeInfo_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -35550,21 +32733,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_PositiveTimestamp_clone_ptr(uint32_t arg) {
-       LDKPositiveTimestamp arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_NodeInfo_clone_ptr(uint32_t arg) {
+       LDKNodeInfo arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = PositiveTimestamp_clone_ptr(&arg_conv);
+       int64_t ret_val = NodeInfo_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PositiveTimestamp_clone(uint32_t orig) {
-       LDKPositiveTimestamp orig_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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKPositiveTimestamp ret_var = PositiveTimestamp_clone(&orig_conv);
+       LDKNodeInfo ret_var = NodeInfo_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -35576,297 +32759,255 @@ uint32_t  __attribute__((visibility("default"))) TS_PositiveTimestamp_clone(uint
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SiPrefix_clone(uint32_t orig) {
-       LDKSiPrefix* orig_conv = (LDKSiPrefix*)(orig & ~1);
-       uint32_t ret_conv = LDKSiPrefix_to_js(SiPrefix_clone(orig_conv));
-       return ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_SiPrefix_milli() {
-       uint32_t ret_conv = LDKSiPrefix_to_js(SiPrefix_milli());
-       return ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_SiPrefix_micro() {
-       uint32_t ret_conv = LDKSiPrefix_to_js(SiPrefix_micro());
-       return ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_SiPrefix_nano() {
-       uint32_t ret_conv = LDKSiPrefix_to_js(SiPrefix_nano());
-       return ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_SiPrefix_pico() {
-       uint32_t ret_conv = LDKSiPrefix_to_js(SiPrefix_pico());
-       return ret_conv;
-}
-
-jboolean  __attribute__((visibility("default"))) TS_SiPrefix_eq(uint32_t a, uint32_t b) {
-       LDKSiPrefix* a_conv = (LDKSiPrefix*)(a & ~1);
-       LDKSiPrefix* b_conv = (LDKSiPrefix*)(b & ~1);
-       jboolean ret_val = SiPrefix_eq(a_conv, b_conv);
-       return ret_val;
-}
-
-int64_t  __attribute__((visibility("default"))) TS_SiPrefix_multiplier(uint32_t this_arg) {
-       LDKSiPrefix* this_arg_conv = (LDKSiPrefix*)(this_arg & ~1);
-       int64_t ret_val = SiPrefix_multiplier(this_arg_conv);
-       return ret_val;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_Currency_clone(uint32_t orig) {
-       LDKCurrency* orig_conv = (LDKCurrency*)(orig & ~1);
-       uint32_t ret_conv = LDKCurrency_to_js(Currency_clone(orig_conv));
-       return ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_Currency_bitcoin() {
-       uint32_t ret_conv = LDKCurrency_to_js(Currency_bitcoin());
-       return ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_Currency_bitcoin_testnet() {
-       uint32_t ret_conv = LDKCurrency_to_js(Currency_bitcoin_testnet());
-       return ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_Currency_regtest() {
-       uint32_t ret_conv = LDKCurrency_to_js(Currency_regtest());
-       return ret_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_NodeInfo_write(uint32_t obj) {
+       LDKNodeInfo obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = NodeInfo_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Currency_simnet() {
-       uint32_t ret_conv = LDKCurrency_to_js(Currency_simnet());
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_NodeInfo_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_NodeInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeInfoDecodeErrorZ), "LDKCResult_NodeInfoDecodeErrorZ");
+       *ret_conv = NodeInfo_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Currency_signet() {
-       uint32_t ret_conv = LDKCurrency_to_js(Currency_signet());
-       return ret_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_NetworkGraph_write(uint32_t obj) {
+       LDKNetworkGraph obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = NetworkGraph_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_Currency_hash(uint32_t o) {
-       LDKCurrency* o_conv = (LDKCurrency*)(o & ~1);
-       int64_t ret_val = Currency_hash(o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_NetworkGraphDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetworkGraphDecodeErrorZ), "LDKCResult_NetworkGraphDecodeErrorZ");
+       *ret_conv = NetworkGraph_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_Currency_eq(uint32_t a, uint32_t b) {
-       LDKCurrency* a_conv = (LDKCurrency*)(a & ~1);
-       LDKCurrency* b_conv = (LDKCurrency*)(b & ~1);
-       jboolean ret_val = Currency_eq(a_conv, b_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_new(int8_tArray genesis_hash) {
+       LDKThirtyTwoBytes genesis_hash_ref;
+       CHECK(genesis_hash->arr_len == 32);
+       memcpy(genesis_hash_ref.data, genesis_hash->elems, 32);
+       LDKNetworkGraph ret_var = NetworkGraph_new(genesis_hash_ref);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_Sha256_free(uint32_t this_obj) {
-       LDKSha256 this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       Sha256_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_read_only(uint32_t this_arg) {
+       LDKNetworkGraph this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKReadOnlyNetworkGraph ret_var = NetworkGraph_read_only(&this_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-static inline uint64_t Sha256_clone_ptr(LDKSha256 *NONNULL_PTR arg) {
-       LDKSha256 ret_var = Sha256_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_update_node_from_announcement(uint32_t this_arg, uint32_t msg) {
+       LDKNetworkGraph this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKNodeAnnouncement msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
+       *ret_conv = NetworkGraph_update_node_from_announcement(&this_arg_conv, &msg_conv);
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_Sha256_clone_ptr(uint32_t arg) {
-       LDKSha256 arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = Sha256_clone_ptr(&arg_conv);
-       return ret_val;
+
+uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_update_node_from_unsigned_announcement(uint32_t this_arg, uint32_t msg) {
+       LDKNetworkGraph this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKUnsignedNodeAnnouncement msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
+       *ret_conv = NetworkGraph_update_node_from_unsigned_announcement(&this_arg_conv, &msg_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Sha256_clone(uint32_t orig) {
-       LDKSha256 orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKSha256 ret_var = Sha256_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_update_channel_from_announcement(uint32_t this_arg, uint32_t msg, uint32_t chain_access) {
+       LDKNetworkGraph this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKChannelAnnouncement msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       void* chain_access_ptr = (void*)(((uint64_t)chain_access) & ~1);
+       CHECK_ACCESS(chain_access_ptr);
+       LDKCOption_AccessZ chain_access_conv = *(LDKCOption_AccessZ*)(chain_access_ptr);
+       // Warning: we may need a move here but no clone is available for LDKCOption_AccessZ
+       if (chain_access_conv.tag == LDKCOption_AccessZ_Some) {
+               // Manually implement clone for Java trait instances
        }
-       return ret_ref;
+       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
+       *ret_conv = NetworkGraph_update_channel_from_announcement(&this_arg_conv, &msg_conv, chain_access_conv);
+       return (uint64_t)ret_conv;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_Sha256_hash(uint32_t o) {
-       LDKSha256 o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = Sha256_hash(&o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_update_channel_from_unsigned_announcement(uint32_t this_arg, uint32_t msg, uint32_t chain_access) {
+       LDKNetworkGraph this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKUnsignedChannelAnnouncement msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       void* chain_access_ptr = (void*)(((uint64_t)chain_access) & ~1);
+       CHECK_ACCESS(chain_access_ptr);
+       LDKCOption_AccessZ chain_access_conv = *(LDKCOption_AccessZ*)(chain_access_ptr);
+       // Warning: we may need a move here but no clone is available for LDKCOption_AccessZ
+       if (chain_access_conv.tag == LDKCOption_AccessZ_Some) {
+               // Manually implement clone for Java trait instances
+       }
+       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
+       *ret_conv = NetworkGraph_update_channel_from_unsigned_announcement(&this_arg_conv, &msg_conv, chain_access_conv);
+       return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_Sha256_eq(uint32_t a, uint32_t b) {
-       LDKSha256 a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKSha256 b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = Sha256_eq(&a_conv, &b_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_NetworkGraph_close_channel_from_update(uint32_t this_arg, int64_t short_channel_id, jboolean is_permanent) {
+       LDKNetworkGraph this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       NetworkGraph_close_channel_from_update(&this_arg_conv, short_channel_id, is_permanent);
 }
 
-void  __attribute__((visibility("default"))) TS_Description_free(uint32_t this_obj) {
-       LDKDescription this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       Description_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_NetworkGraph_fail_node(uint32_t this_arg, int8_tArray _node_id, jboolean is_permanent) {
+       LDKNetworkGraph this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKPublicKey _node_id_ref;
+       CHECK(_node_id->arr_len == 33);
+       memcpy(_node_id_ref.compressed_form, _node_id->elems, 33);
+       NetworkGraph_fail_node(&this_arg_conv, _node_id_ref, is_permanent);
 }
 
-static inline uint64_t Description_clone_ptr(LDKDescription *NONNULL_PTR arg) {
-       LDKDescription ret_var = Description_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_Description_clone_ptr(uint32_t arg) {
-       LDKDescription arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = Description_clone_ptr(&arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_NetworkGraph_remove_stale_channels_with_time(uint32_t this_arg, int64_t current_time_unix) {
+       LDKNetworkGraph this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       NetworkGraph_remove_stale_channels_with_time(&this_arg_conv, current_time_unix);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Description_clone(uint32_t orig) {
-       LDKDescription orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKDescription ret_var = Description_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_update_channel(uint32_t this_arg, uint32_t msg) {
+       LDKNetworkGraph this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKChannelUpdate msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
+       *ret_conv = NetworkGraph_update_channel(&this_arg_conv, &msg_conv);
+       return (uint64_t)ret_conv;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_Description_hash(uint32_t o) {
-       LDKDescription o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = Description_hash(&o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_update_channel_unsigned(uint32_t this_arg, uint32_t msg) {
+       LDKNetworkGraph this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKUnsignedChannelUpdate msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
+       *ret_conv = NetworkGraph_update_channel_unsigned(&this_arg_conv, &msg_conv);
+       return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_Description_eq(uint32_t a, uint32_t b) {
-       LDKDescription a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKDescription b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = Description_eq(&a_conv, &b_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_ReadOnlyNetworkGraph_get_addresses(uint32_t this_arg, int8_tArray pubkey) {
+       LDKReadOnlyNetworkGraph this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKPublicKey pubkey_ref;
+       CHECK(pubkey->arr_len == 33);
+       memcpy(pubkey_ref.compressed_form, pubkey->elems, 33);
+       LDKCOption_CVec_NetAddressZZ *ret_copy = MALLOC(sizeof(LDKCOption_CVec_NetAddressZZ), "LDKCOption_CVec_NetAddressZZ");
+       *ret_copy = ReadOnlyNetworkGraph_get_addresses(&this_arg_conv, pubkey_ref);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_PayeePubKey_free(uint32_t this_obj) {
-       LDKPayeePubKey this_obj_conv;
+void  __attribute__((visibility("default"))) TS_RouteHop_free(uint32_t this_obj) {
+       LDKRouteHop this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       PayeePubKey_free(this_obj_conv);
+       RouteHop_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_PayeePubKey_get_a(uint32_t this_ptr) {
-       LDKPayeePubKey this_ptr_conv;
+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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), PayeePubKey_get_a(&this_ptr_conv).compressed_form, 33);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, RouteHop_get_pubkey(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_PayeePubKey_set_a(uint32_t this_ptr, int8_tArray val) {
-       LDKPayeePubKey this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_RouteHop_set_pubkey(uint32_t this_ptr, int8_tArray val) {
+       LDKRouteHop this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
        LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       PayeePubKey_set_a(&this_ptr_conv, val_ref);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_PayeePubKey_new(int8_tArray a_arg) {
-       LDKPublicKey a_arg_ref;
-       CHECK(*((uint32_t*)a_arg) == 33);
-       memcpy(a_arg_ref.compressed_form, (uint8_t*)(a_arg + 4), 33);
-       LDKPayeePubKey ret_var = PayeePubKey_new(a_arg_ref);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
-}
-
-static inline uint64_t PayeePubKey_clone_ptr(LDKPayeePubKey *NONNULL_PTR arg) {
-       LDKPayeePubKey ret_var = PayeePubKey_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_PayeePubKey_clone_ptr(uint32_t arg) {
-       LDKPayeePubKey arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = PayeePubKey_clone_ptr(&arg_conv);
-       return ret_val;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       RouteHop_set_pubkey(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PayeePubKey_clone(uint32_t orig) {
-       LDKPayeePubKey orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKPayeePubKey ret_var = PayeePubKey_clone(&orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_RouteHop_get_node_features(uint32_t this_ptr) {
+       LDKRouteHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKNodeFeatures ret_var = RouteHop_get_node_features(&this_ptr_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -35878,63 +33019,42 @@ uint32_t  __attribute__((visibility("default"))) TS_PayeePubKey_clone(uint32_t o
        return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_PayeePubKey_hash(uint32_t o) {
-       LDKPayeePubKey o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = PayeePubKey_hash(&o_conv);
-       return ret_val;
-}
-
-jboolean  __attribute__((visibility("default"))) TS_PayeePubKey_eq(uint32_t a, uint32_t b) {
-       LDKPayeePubKey a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKPayeePubKey b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = PayeePubKey_eq(&a_conv, &b_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_ExpiryTime_free(uint32_t this_obj) {
-       LDKExpiryTime this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ExpiryTime_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_RouteHop_set_node_features(uint32_t this_ptr, uint32_t val) {
+       LDKRouteHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKNodeFeatures val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = NodeFeatures_clone(&val_conv);
+       RouteHop_set_node_features(&this_ptr_conv, val_conv);
 }
 
-static inline uint64_t ExpiryTime_clone_ptr(LDKExpiryTime *NONNULL_PTR arg) {
-       LDKExpiryTime ret_var = ExpiryTime_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_ExpiryTime_clone_ptr(uint32_t arg) {
-       LDKExpiryTime arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ExpiryTime_clone_ptr(&arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_RouteHop_get_short_channel_id(uint32_t this_ptr) {
+       LDKRouteHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = RouteHop_get_short_channel_id(&this_ptr_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ExpiryTime_clone(uint32_t orig) {
-       LDKExpiryTime orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKExpiryTime ret_var = ExpiryTime_clone(&orig_conv);
+void  __attribute__((visibility("default"))) TS_RouteHop_set_short_channel_id(uint32_t this_ptr, int64_t val) {
+       LDKRouteHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       RouteHop_set_short_channel_id(&this_ptr_conv, val);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_RouteHop_get_channel_features(uint32_t this_ptr) {
+       LDKRouteHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKChannelFeatures ret_var = RouteHop_get_channel_features(&this_ptr_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -35946,55 +33066,68 @@ uint32_t  __attribute__((visibility("default"))) TS_ExpiryTime_clone(uint32_t or
        return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ExpiryTime_hash(uint32_t o) {
-       LDKExpiryTime o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = ExpiryTime_hash(&o_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_RouteHop_set_channel_features(uint32_t this_ptr, uint32_t val) {
+       LDKRouteHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKChannelFeatures val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = ChannelFeatures_clone(&val_conv);
+       RouteHop_set_channel_features(&this_ptr_conv, val_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ExpiryTime_eq(uint32_t a, uint32_t b) {
-       LDKExpiryTime a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKExpiryTime b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = ExpiryTime_eq(&a_conv, &b_conv);
+int64_t  __attribute__((visibility("default"))) TS_RouteHop_get_fee_msat(uint32_t this_ptr) {
+       LDKRouteHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = RouteHop_get_fee_msat(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_MinFinalCltvExpiry_free(uint32_t this_obj) {
-       LDKMinFinalCltvExpiry this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       MinFinalCltvExpiry_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_RouteHop_set_fee_msat(uint32_t this_ptr, int64_t val) {
+       LDKRouteHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       RouteHop_set_fee_msat(&this_ptr_conv, val);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_MinFinalCltvExpiry_get_a(uint32_t this_ptr) {
-       LDKMinFinalCltvExpiry this_ptr_conv;
+int32_t  __attribute__((visibility("default"))) TS_RouteHop_get_cltv_expiry_delta(uint32_t this_ptr) {
+       LDKRouteHop this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = MinFinalCltvExpiry_get_a(&this_ptr_conv);
+       int32_t ret_val = RouteHop_get_cltv_expiry_delta(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_MinFinalCltvExpiry_set_a(uint32_t this_ptr, int64_t val) {
-       LDKMinFinalCltvExpiry this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_RouteHop_set_cltv_expiry_delta(uint32_t this_ptr, int32_t val) {
+       LDKRouteHop this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       MinFinalCltvExpiry_set_a(&this_ptr_conv, val);
+       RouteHop_set_cltv_expiry_delta(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MinFinalCltvExpiry_new(int64_t a_arg) {
-       LDKMinFinalCltvExpiry ret_var = MinFinalCltvExpiry_new(a_arg);
+uint32_t  __attribute__((visibility("default"))) TS_RouteHop_new(int8_tArray pubkey_arg, uint32_t node_features_arg, int64_t short_channel_id_arg, uint32_t channel_features_arg, int64_t fee_msat_arg, int32_t cltv_expiry_delta_arg) {
+       LDKPublicKey pubkey_arg_ref;
+       CHECK(pubkey_arg->arr_len == 33);
+       memcpy(pubkey_arg_ref.compressed_form, pubkey_arg->elems, 33);
+       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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(node_features_arg_conv);
+       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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_features_arg_conv);
+       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);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -36006,8 +33139,8 @@ uint32_t  __attribute__((visibility("default"))) TS_MinFinalCltvExpiry_new(int64
        return ret_ref;
 }
 
-static inline uint64_t MinFinalCltvExpiry_clone_ptr(LDKMinFinalCltvExpiry *NONNULL_PTR arg) {
-       LDKMinFinalCltvExpiry ret_var = MinFinalCltvExpiry_clone(arg);
+static inline uint64_t RouteHop_clone_ptr(LDKRouteHop *NONNULL_PTR arg) {
+       LDKRouteHop ret_var = RouteHop_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -36018,21 +33151,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_MinFinalCltvExpiry_clone_ptr(uint32_t arg) {
-       LDKMinFinalCltvExpiry arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_RouteHop_clone_ptr(uint32_t arg) {
+       LDKRouteHop arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = MinFinalCltvExpiry_clone_ptr(&arg_conv);
+       int64_t ret_val = RouteHop_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MinFinalCltvExpiry_clone(uint32_t orig) {
-       LDKMinFinalCltvExpiry 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKMinFinalCltvExpiry ret_var = MinFinalCltvExpiry_clone(&orig_conv);
+       LDKRouteHop ret_var = RouteHop_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -36044,137 +33177,193 @@ uint32_t  __attribute__((visibility("default"))) TS_MinFinalCltvExpiry_clone(uin
        return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_MinFinalCltvExpiry_hash(uint32_t o) {
-       LDKMinFinalCltvExpiry o_conv;
+int64_t  __attribute__((visibility("default"))) TS_RouteHop_hash(uint32_t o) {
+       LDKRouteHop o_conv;
        o_conv.inner = (void*)(o & (~1));
        o_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = MinFinalCltvExpiry_hash(&o_conv);
+       int64_t ret_val = RouteHop_hash(&o_conv);
        return ret_val;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_MinFinalCltvExpiry_eq(uint32_t a, uint32_t b) {
-       LDKMinFinalCltvExpiry a_conv;
+jboolean  __attribute__((visibility("default"))) TS_RouteHop_eq(uint32_t a, uint32_t b) {
+       LDKRouteHop a_conv;
        a_conv.inner = (void*)(a & (~1));
        a_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKMinFinalCltvExpiry b_conv;
+       LDKRouteHop b_conv;
        b_conv.inner = (void*)(b & (~1));
        b_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = MinFinalCltvExpiry_eq(&a_conv, &b_conv);
+       jboolean ret_val = RouteHop_eq(&a_conv, &b_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_Fallback_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKFallback this_ptr_conv = *(LDKFallback*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       Fallback_free(this_ptr_conv);
+int8_tArray  __attribute__((visibility("default"))) TS_RouteHop_write(uint32_t obj) {
+       LDKRouteHop obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = RouteHop_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-static inline uint64_t Fallback_clone_ptr(LDKFallback *NONNULL_PTR arg) {
-       LDKFallback *ret_copy = MALLOC(sizeof(LDKFallback), "LDKFallback");
-       *ret_copy = Fallback_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_Fallback_clone_ptr(uint32_t arg) {
-       LDKFallback* arg_conv = (LDKFallback*)arg;
-       int64_t ret_val = Fallback_clone_ptr(arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_RouteHop_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_RouteHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHopDecodeErrorZ), "LDKCResult_RouteHopDecodeErrorZ");
+       *ret_conv = RouteHop_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Fallback_clone(uint32_t orig) {
-       LDKFallback* orig_conv = (LDKFallback*)orig;
-       LDKFallback *ret_copy = MALLOC(sizeof(LDKFallback), "LDKFallback");
-       *ret_copy = Fallback_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_Route_free(uint32_t this_obj) {
+       LDKRoute this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       Route_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Fallback_seg_wit_program(int8_t version, int8_tArray program) {
+ptrArray  __attribute__((visibility("default"))) TS_Route_get_paths(uint32_t this_ptr) {
+       LDKRoute this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCVec_CVec_RouteHopZZ ret_var = Route_get_paths(&this_ptr_conv);
+       ptrArray ret_arr = NULL;
+       ret_arr = init_ptrArray(ret_var.datalen);
+       uint32_tArray *ret_arr_ptr = (uint32_tArray*)(ret_arr + 4);
+       for (size_t m = 0; m < ret_var.datalen; m++) {
+               LDKCVec_RouteHopZ ret_conv_12_var = ret_var.data[m];
+               uint32_tArray ret_conv_12_arr = NULL;
+               ret_conv_12_arr = init_uint32_tArray(ret_conv_12_var.datalen);
+               uint32_t *ret_conv_12_arr_ptr = (uint32_t*)(ret_conv_12_arr + 4);
+               for (size_t k = 0; k < ret_conv_12_var.datalen; k++) {
+                       LDKRouteHop ret_conv_12_conv_10_var = ret_conv_12_var.data[k];
+                       uint64_t ret_conv_12_conv_10_ref = 0;
+                       CHECK((((uint64_t)ret_conv_12_conv_10_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&ret_conv_12_conv_10_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_12_conv_10_var);
+                       ret_conv_12_conv_10_ref = (uint64_t)ret_conv_12_conv_10_var.inner;
+                       if (ret_conv_12_conv_10_var.is_owned) {
+                               ret_conv_12_conv_10_ref |= 1;
+                       }
+                       ret_conv_12_arr_ptr[k] = ret_conv_12_conv_10_ref;
+               }
+               
+               FREE(ret_conv_12_var.data);
+               ret_arr_ptr[m] = ret_conv_12_arr;
+       }
        
-       LDKCVec_u8Z program_ref;
-       program_ref.datalen = *((uint32_t*)program);
-       program_ref.data = MALLOC(program_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(program_ref.data, (uint8_t*)(program + 4), program_ref.datalen);
-       LDKFallback *ret_copy = MALLOC(sizeof(LDKFallback), "LDKFallback");
-       *ret_copy = Fallback_seg_wit_program((LDKu5){ ._0 = version }, program_ref);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Fallback_pub_key_hash(int8_tArray a) {
-       LDKTwentyBytes a_ref;
-       CHECK(*((uint32_t*)a) == 20);
-       memcpy(a_ref.data, (uint8_t*)(a + 4), 20);
-       LDKFallback *ret_copy = MALLOC(sizeof(LDKFallback), "LDKFallback");
-       *ret_copy = Fallback_pub_key_hash(a_ref);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCVec_CVec_RouteHopZZ val_constr;
+       val_constr.datalen = val->arr_len;
+       if (val_constr.datalen > 0)
+               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKCVec_RouteHopZ), "LDKCVec_CVec_RouteHopZZ Elements");
+       else
+               val_constr.data = NULL;
+       uint32_tArray* val_vals = (void*) val->elems;
+       for (size_t m = 0; m < val_constr.datalen; m++) {
+               uint32_tArray val_conv_12 = val_vals[m];
+               LDKCVec_RouteHopZ val_conv_12_constr;
+               val_conv_12_constr.datalen = val_conv_12->arr_len;
+               if (val_conv_12_constr.datalen > 0)
+                       val_conv_12_constr.data = MALLOC(val_conv_12_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements");
+               else
+                       val_conv_12_constr.data = NULL;
+               uint32_t* val_conv_12_vals = val_conv_12->elems;
+               for (size_t k = 0; k < val_conv_12_constr.datalen; k++) {
+                       uint32_t val_conv_12_conv_10 = val_conv_12_vals[k];
+                       LDKRouteHop val_conv_12_conv_10_conv;
+                       val_conv_12_conv_10_conv.inner = (void*)(val_conv_12_conv_10 & (~1));
+                       val_conv_12_conv_10_conv.is_owned = (val_conv_12_conv_10 & 1) || (val_conv_12_conv_10 == 0);
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv_12_conv_10_conv);
+                       val_conv_12_conv_10_conv = RouteHop_clone(&val_conv_12_conv_10_conv);
+                       val_conv_12_constr.data[k] = val_conv_12_conv_10_conv;
+               }
+               val_constr.data[m] = val_conv_12_constr;
+       }
+       Route_set_paths(&this_ptr_conv, val_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Fallback_script_hash(int8_tArray a) {
-       LDKTwentyBytes a_ref;
-       CHECK(*((uint32_t*)a) == 20);
-       memcpy(a_ref.data, (uint8_t*)(a + 4), 20);
-       LDKFallback *ret_copy = MALLOC(sizeof(LDKFallback), "LDKFallback");
-       *ret_copy = Fallback_script_hash(a_ref);
-       uint64_t ret_ref = (uint64_t)ret_copy;
+uint32_t  __attribute__((visibility("default"))) TS_Route_get_payee(uint32_t this_ptr) {
+       LDKRoute this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPayee ret_var = Route_get_payee(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       if ((uint64_t)ret_var.inner > 4096) {
+               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+               ret_ref = (uint64_t)ret_var.inner;
+               if (ret_var.is_owned) {
+                       ret_ref |= 1;
+               }
+       }
        return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_Fallback_hash(uint32_t o) {
-       LDKFallback* o_conv = (LDKFallback*)o;
-       int64_t ret_val = Fallback_hash(o_conv);
-       return ret_val;
-}
-
-jboolean  __attribute__((visibility("default"))) TS_Fallback_eq(uint32_t a, uint32_t b) {
-       LDKFallback* a_conv = (LDKFallback*)a;
-       LDKFallback* b_conv = (LDKFallback*)b;
-       jboolean ret_val = Fallback_eq(a_conv, b_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_InvoiceSignature_free(uint32_t this_obj) {
-       LDKInvoiceSignature this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       InvoiceSignature_free(this_obj_conv);
-}
-
-static inline uint64_t InvoiceSignature_clone_ptr(LDKInvoiceSignature *NONNULL_PTR arg) {
-       LDKInvoiceSignature ret_var = InvoiceSignature_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_InvoiceSignature_clone_ptr(uint32_t arg) {
-       LDKInvoiceSignature arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = InvoiceSignature_clone_ptr(&arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_Route_set_payee(uint32_t this_ptr, uint32_t val) {
+       LDKRoute this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPayee val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = Payee_clone(&val_conv);
+       Route_set_payee(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InvoiceSignature_clone(uint32_t orig) {
-       LDKInvoiceSignature orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKInvoiceSignature ret_var = InvoiceSignature_clone(&orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_Route_new(ptrArray paths_arg, uint32_t payee_arg) {
+       LDKCVec_CVec_RouteHopZZ paths_arg_constr;
+       paths_arg_constr.datalen = paths_arg->arr_len;
+       if (paths_arg_constr.datalen > 0)
+               paths_arg_constr.data = MALLOC(paths_arg_constr.datalen * sizeof(LDKCVec_RouteHopZ), "LDKCVec_CVec_RouteHopZZ Elements");
+       else
+               paths_arg_constr.data = NULL;
+       uint32_tArray* paths_arg_vals = (void*) paths_arg->elems;
+       for (size_t m = 0; m < paths_arg_constr.datalen; m++) {
+               uint32_tArray paths_arg_conv_12 = paths_arg_vals[m];
+               LDKCVec_RouteHopZ paths_arg_conv_12_constr;
+               paths_arg_conv_12_constr.datalen = paths_arg_conv_12->arr_len;
+               if (paths_arg_conv_12_constr.datalen > 0)
+                       paths_arg_conv_12_constr.data = MALLOC(paths_arg_conv_12_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements");
+               else
+                       paths_arg_conv_12_constr.data = NULL;
+               uint32_t* paths_arg_conv_12_vals = paths_arg_conv_12->elems;
+               for (size_t k = 0; k < paths_arg_conv_12_constr.datalen; k++) {
+                       uint32_t paths_arg_conv_12_conv_10 = paths_arg_conv_12_vals[k];
+                       LDKRouteHop paths_arg_conv_12_conv_10_conv;
+                       paths_arg_conv_12_conv_10_conv.inner = (void*)(paths_arg_conv_12_conv_10 & (~1));
+                       paths_arg_conv_12_conv_10_conv.is_owned = (paths_arg_conv_12_conv_10 & 1) || (paths_arg_conv_12_conv_10 == 0);
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(paths_arg_conv_12_conv_10_conv);
+                       paths_arg_conv_12_conv_10_conv = RouteHop_clone(&paths_arg_conv_12_conv_10_conv);
+                       paths_arg_conv_12_constr.data[k] = paths_arg_conv_12_conv_10_conv;
+               }
+               paths_arg_constr.data[m] = paths_arg_conv_12_constr;
+       }
+       LDKPayee payee_arg_conv;
+       payee_arg_conv.inner = (void*)(payee_arg & (~1));
+       payee_arg_conv.is_owned = (payee_arg & 1) || (payee_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(payee_arg_conv);
+       payee_arg_conv = Payee_clone(&payee_arg_conv);
+       LDKRoute ret_var = Route_new(paths_arg_constr, payee_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -36186,29 +33375,8 @@ uint32_t  __attribute__((visibility("default"))) TS_InvoiceSignature_clone(uint3
        return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_InvoiceSignature_eq(uint32_t a, uint32_t b) {
-       LDKInvoiceSignature a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKInvoiceSignature b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = InvoiceSignature_eq(&a_conv, &b_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_PrivateRoute_free(uint32_t this_obj) {
-       LDKPrivateRoute this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       PrivateRoute_free(this_obj_conv);
-}
-
-static inline uint64_t PrivateRoute_clone_ptr(LDKPrivateRoute *NONNULL_PTR arg) {
-       LDKPrivateRoute ret_var = PrivateRoute_clone(arg);
+static inline uint64_t Route_clone_ptr(LDKRoute *NONNULL_PTR arg) {
+       LDKRoute ret_var = Route_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -36219,21 +33387,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_PrivateRoute_clone_ptr(uint32_t arg) {
-       LDKPrivateRoute arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_Route_clone_ptr(uint32_t arg) {
+       LDKRoute arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = PrivateRoute_clone_ptr(&arg_conv);
+       int64_t ret_val = Route_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PrivateRoute_clone(uint32_t orig) {
-       LDKPrivateRoute orig_conv;
+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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKPrivateRoute ret_var = PrivateRoute_clone(&orig_conv);
+       LDKRoute ret_var = Route_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -36245,72 +33413,81 @@ uint32_t  __attribute__((visibility("default"))) TS_PrivateRoute_clone(uint32_t
        return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_PrivateRoute_hash(uint32_t o) {
-       LDKPrivateRoute o_conv;
+int64_t  __attribute__((visibility("default"))) TS_Route_hash(uint32_t o) {
+       LDKRoute o_conv;
        o_conv.inner = (void*)(o & (~1));
        o_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = PrivateRoute_hash(&o_conv);
+       int64_t ret_val = Route_hash(&o_conv);
        return ret_val;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_PrivateRoute_eq(uint32_t a, uint32_t b) {
-       LDKPrivateRoute a_conv;
+jboolean  __attribute__((visibility("default"))) TS_Route_eq(uint32_t a, uint32_t b) {
+       LDKRoute a_conv;
        a_conv.inner = (void*)(a & (~1));
        a_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKPrivateRoute b_conv;
+       LDKRoute b_conv;
        b_conv.inner = (void*)(b & (~1));
        b_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = PrivateRoute_eq(&a_conv, &b_conv);
+       jboolean ret_val = Route_eq(&a_conv, &b_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SignedRawInvoice_into_parts(uint32_t this_arg) {
-       LDKSignedRawInvoice this_arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_Route_get_total_fees(uint32_t this_arg) {
+       LDKRoute this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
+       this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       this_arg_conv = SignedRawInvoice_clone(&this_arg_conv);
-       LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* ret_conv = MALLOC(sizeof(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ), "LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ");
-       *ret_conv = SignedRawInvoice_into_parts(this_arg_conv);
-       return ((uint64_t)ret_conv);
+       int64_t ret_val = Route_get_total_fees(&this_arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SignedRawInvoice_raw_invoice(uint32_t this_arg) {
-       LDKSignedRawInvoice this_arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_Route_get_total_amount(uint32_t this_arg) {
+       LDKRoute this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKRawInvoice ret_var = SignedRawInvoice_raw_invoice(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       int64_t ret_val = Route_get_total_amount(&this_arg_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_SignedRawInvoice_hash(uint32_t this_arg) {
-       LDKSignedRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *SignedRawInvoice_hash(&this_arg_conv), 32);
+int8_tArray  __attribute__((visibility("default"))) TS_Route_write(uint32_t obj) {
+       LDKRoute obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = Route_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SignedRawInvoice_signature(uint32_t this_arg) {
-       LDKSignedRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKInvoiceSignature ret_var = SignedRawInvoice_signature(&this_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_Route_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_RouteDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteDecodeErrorZ), "LDKCResult_RouteDecodeErrorZ");
+       *ret_conv = Route_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_RouteParameters_free(uint32_t this_obj) {
+       LDKRouteParameters this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       RouteParameters_free(this_obj_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_RouteParameters_get_payee(uint32_t this_ptr) {
+       LDKRouteParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPayee ret_var = RouteParameters_get_payee(&this_ptr_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -36322,165 +33499,165 @@ uint32_t  __attribute__((visibility("default"))) TS_SignedRawInvoice_signature(u
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SignedRawInvoice_recover_payee_pub_key(uint32_t this_arg) {
-       LDKSignedRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCResult_PayeePubKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeePubKeyErrorZ), "LDKCResult_PayeePubKeyErrorZ");
-       *ret_conv = SignedRawInvoice_recover_payee_pub_key(&this_arg_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_RouteParameters_set_payee(uint32_t this_ptr, uint32_t val) {
+       LDKRouteParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPayee val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = Payee_clone(&val_conv);
+       RouteParameters_set_payee(&this_ptr_conv, val_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_SignedRawInvoice_check_signature(uint32_t this_arg) {
-       LDKSignedRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       jboolean ret_val = SignedRawInvoice_check_signature(&this_arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_RouteParameters_get_final_value_msat(uint32_t this_ptr) {
+       LDKRouteParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = RouteParameters_get_final_value_msat(&this_ptr_conv);
        return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_RawInvoice_hash(uint32_t this_arg) {
-       LDKRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), RawInvoice_hash(&this_arg_conv).data, 32);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_RouteParameters_set_final_value_msat(uint32_t this_ptr, int64_t val) {
+       LDKRouteParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       RouteParameters_set_final_value_msat(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RawInvoice_payment_hash(uint32_t this_arg) {
-       LDKRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKSha256 ret_var = RawInvoice_payment_hash(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
-       }
-       return ret_ref;
+int32_t  __attribute__((visibility("default"))) TS_RouteParameters_get_final_cltv_expiry_delta(uint32_t this_ptr) {
+       LDKRouteParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = RouteParameters_get_final_cltv_expiry_delta(&this_ptr_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RawInvoice_description(uint32_t this_arg) {
-       LDKRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKDescription ret_var = RawInvoice_description(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_RouteParameters_set_final_cltv_expiry_delta(uint32_t this_ptr, int32_t val) {
+       LDKRouteParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       RouteParameters_set_final_cltv_expiry_delta(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RawInvoice_payee_pub_key(uint32_t this_arg) {
-       LDKRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKPayeePubKey ret_var = RawInvoice_payee_pub_key(&this_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_RouteParameters_new(uint32_t payee_arg, int64_t final_value_msat_arg, int32_t final_cltv_expiry_delta_arg) {
+       LDKPayee payee_arg_conv;
+       payee_arg_conv.inner = (void*)(payee_arg & (~1));
+       payee_arg_conv.is_owned = (payee_arg & 1) || (payee_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(payee_arg_conv);
+       payee_arg_conv = Payee_clone(&payee_arg_conv);
+       LDKRouteParameters ret_var = RouteParameters_new(payee_arg_conv, final_value_msat_arg, final_cltv_expiry_delta_arg);
        uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
        CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RawInvoice_description_hash(uint32_t this_arg) {
-       LDKRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKSha256 ret_var = RawInvoice_description_hash(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
-       }
+static inline uint64_t RouteParameters_clone_ptr(LDKRouteParameters *NONNULL_PTR arg) {
+       LDKRouteParameters ret_var = RouteParameters_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
        return ret_ref;
 }
+int64_t  __attribute__((visibility("default"))) TS_RouteParameters_clone_ptr(uint32_t arg) {
+       LDKRouteParameters arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = RouteParameters_clone_ptr(&arg_conv);
+       return ret_val;
+}
 
-uint32_t  __attribute__((visibility("default"))) TS_RawInvoice_expiry_time(uint32_t this_arg) {
-       LDKRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKExpiryTime ret_var = RawInvoice_expiry_time(&this_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_RouteParameters_clone(uint32_t orig) {
+       LDKRouteParameters orig_conv;
+       orig_conv.inner = (void*)(orig & (~1));
+       orig_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKRouteParameters ret_var = RouteParameters_clone(&orig_conv);
        uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
        CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RawInvoice_min_final_cltv_expiry(uint32_t this_arg) {
-       LDKRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKMinFinalCltvExpiry ret_var = RawInvoice_min_final_cltv_expiry(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_RouteParameters_write(uint32_t obj) {
+       LDKRouteParameters obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = RouteParameters_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_RouteParameters_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_RouteParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteParametersDecodeErrorZ), "LDKCResult_RouteParametersDecodeErrorZ");
+       *ret_conv = RouteParameters_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_Payee_free(uint32_t this_obj) {
+       LDKPayee this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       Payee_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_RawInvoice_payment_secret(uint32_t this_arg) {
-       LDKRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), RawInvoice_payment_secret(&this_arg_conv).data, 32);
+int8_tArray  __attribute__((visibility("default"))) TS_Payee_get_pubkey(uint32_t this_ptr) {
+       LDKPayee this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, Payee_get_pubkey(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RawInvoice_features(uint32_t this_arg) {
-       LDKRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKInvoiceFeatures ret_var = RawInvoice_features(&this_arg_conv);
+void  __attribute__((visibility("default"))) TS_Payee_set_pubkey(uint32_t this_ptr, int8_tArray val) {
+       LDKPayee this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       Payee_set_pubkey(&this_ptr_conv, val_ref);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_Payee_get_features(uint32_t this_ptr) {
+       LDKPayee this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKInvoiceFeatures ret_var = Payee_get_features(&this_ptr_conv);
        uint64_t ret_ref = 0;
        if ((uint64_t)ret_var.inner > 4096) {
                CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
@@ -36494,89 +33671,160 @@ uint32_t  __attribute__((visibility("default"))) TS_RawInvoice_features(uint32_t
        return ret_ref;
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_RawInvoice_private_routes(uint32_t this_arg) {
-       LDKRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCVec_PrivateRouteZ ret_var = RawInvoice_private_routes(&this_arg_conv);
+void  __attribute__((visibility("default"))) TS_Payee_set_features(uint32_t this_ptr, uint32_t val) {
+       LDKPayee this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKInvoiceFeatures val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = InvoiceFeatures_clone(&val_conv);
+       Payee_set_features(&this_ptr_conv, val_conv);
+}
+
+uint32_tArray  __attribute__((visibility("default"))) TS_Payee_get_route_hints(uint32_t this_ptr) {
+       LDKPayee this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCVec_RouteHintZ ret_var = Payee_get_route_hints(&this_ptr_conv);
        uint32_tArray ret_arr = NULL;
-       ret_arr = init_arr(ret_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
+       ret_arr = init_uint32_tArray(ret_var.datalen);
        uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
-       for (size_t o = 0; o < ret_var.datalen; o++) {
-               LDKPrivateRoute ret_conv_14_var = ret_var.data[o];
-               uint64_t ret_conv_14_ref = 0;
-               CHECK((((uint64_t)ret_conv_14_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_conv_14_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_14_var);
-               ret_conv_14_ref = (uint64_t)ret_conv_14_var.inner;
-               if (ret_conv_14_var.is_owned) {
-                       ret_conv_14_ref |= 1;
+       for (size_t l = 0; l < ret_var.datalen; l++) {
+               LDKRouteHint ret_conv_11_var = ret_var.data[l];
+               uint64_t ret_conv_11_ref = 0;
+               CHECK((((uint64_t)ret_conv_11_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_conv_11_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_11_var);
+               ret_conv_11_ref = (uint64_t)ret_conv_11_var.inner;
+               if (ret_conv_11_var.is_owned) {
+                       ret_conv_11_ref |= 1;
                }
-               ret_arr_ptr[o] = ret_conv_14_ref;
+               ret_arr_ptr[l] = ret_conv_11_ref;
        }
        
        FREE(ret_var.data);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RawInvoice_amount_pico_btc(uint32_t this_arg) {
-       LDKRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+void  __attribute__((visibility("default"))) TS_Payee_set_route_hints(uint32_t this_ptr, uint32_tArray val) {
+       LDKPayee this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCVec_RouteHintZ val_constr;
+       val_constr.datalen = val->arr_len;
+       if (val_constr.datalen > 0)
+               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKRouteHint), "LDKCVec_RouteHintZ Elements");
+       else
+               val_constr.data = NULL;
+       uint32_t* val_vals = val->elems;
+       for (size_t l = 0; l < val_constr.datalen; l++) {
+               uint32_t val_conv_11 = val_vals[l];
+               LDKRouteHint val_conv_11_conv;
+               val_conv_11_conv.inner = (void*)(val_conv_11 & (~1));
+               val_conv_11_conv.is_owned = (val_conv_11 & 1) || (val_conv_11 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv_11_conv);
+               val_conv_11_conv = RouteHint_clone(&val_conv_11_conv);
+               val_constr.data[l] = val_conv_11_conv;
+       }
+       Payee_set_route_hints(&this_ptr_conv, val_constr);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_Payee_get_expiry_time(uint32_t this_ptr) {
+       LDKPayee this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
        LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
-       *ret_copy = RawInvoice_amount_pico_btc(&this_arg_conv);
+       *ret_copy = Payee_get_expiry_time(&this_ptr_conv);
        uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RawInvoice_currency(uint32_t this_arg) {
-       LDKRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       uint32_t ret_conv = LDKCurrency_to_js(RawInvoice_currency(&this_arg_conv));
-       return ret_conv;
+void  __attribute__((visibility("default"))) TS_Payee_set_expiry_time(uint32_t this_ptr, uint32_t val) {
+       LDKPayee this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKCOption_u64Z val_conv = *(LDKCOption_u64Z*)(val_ptr);
+       val_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)val) & ~1));
+       Payee_set_expiry_time(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PositiveTimestamp_from_unix_timestamp(int64_t unix_seconds) {
-       LDKCResult_PositiveTimestampCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PositiveTimestampCreationErrorZ), "LDKCResult_PositiveTimestampCreationErrorZ");
-       *ret_conv = PositiveTimestamp_from_unix_timestamp(unix_seconds);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_Payee_new(int8_tArray pubkey_arg, uint32_t features_arg, uint32_tArray route_hints_arg, uint32_t expiry_time_arg) {
+       LDKPublicKey pubkey_arg_ref;
+       CHECK(pubkey_arg->arr_len == 33);
+       memcpy(pubkey_arg_ref.compressed_form, pubkey_arg->elems, 33);
+       LDKInvoiceFeatures features_arg_conv;
+       features_arg_conv.inner = (void*)(features_arg & (~1));
+       features_arg_conv.is_owned = (features_arg & 1) || (features_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(features_arg_conv);
+       features_arg_conv = InvoiceFeatures_clone(&features_arg_conv);
+       LDKCVec_RouteHintZ route_hints_arg_constr;
+       route_hints_arg_constr.datalen = route_hints_arg->arr_len;
+       if (route_hints_arg_constr.datalen > 0)
+               route_hints_arg_constr.data = MALLOC(route_hints_arg_constr.datalen * sizeof(LDKRouteHint), "LDKCVec_RouteHintZ Elements");
+       else
+               route_hints_arg_constr.data = NULL;
+       uint32_t* route_hints_arg_vals = route_hints_arg->elems;
+       for (size_t l = 0; l < route_hints_arg_constr.datalen; l++) {
+               uint32_t route_hints_arg_conv_11 = route_hints_arg_vals[l];
+               LDKRouteHint route_hints_arg_conv_11_conv;
+               route_hints_arg_conv_11_conv.inner = (void*)(route_hints_arg_conv_11 & (~1));
+               route_hints_arg_conv_11_conv.is_owned = (route_hints_arg_conv_11 & 1) || (route_hints_arg_conv_11 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(route_hints_arg_conv_11_conv);
+               route_hints_arg_conv_11_conv = RouteHint_clone(&route_hints_arg_conv_11_conv);
+               route_hints_arg_constr.data[l] = route_hints_arg_conv_11_conv;
+       }
+       void* expiry_time_arg_ptr = (void*)(((uint64_t)expiry_time_arg) & ~1);
+       CHECK_ACCESS(expiry_time_arg_ptr);
+       LDKCOption_u64Z expiry_time_arg_conv = *(LDKCOption_u64Z*)(expiry_time_arg_ptr);
+       expiry_time_arg_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)expiry_time_arg) & ~1));
+       LDKPayee ret_var = Payee_new(pubkey_arg_ref, features_arg_conv, route_hints_arg_constr, expiry_time_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PositiveTimestamp_from_system_time(int64_t time) {
-       LDKCResult_PositiveTimestampCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PositiveTimestampCreationErrorZ), "LDKCResult_PositiveTimestampCreationErrorZ");
-       *ret_conv = PositiveTimestamp_from_system_time(time);
-       return (uint64_t)ret_conv;
+static inline uint64_t Payee_clone_ptr(LDKPayee *NONNULL_PTR arg) {
+       LDKPayee ret_var = Payee_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-int64_t  __attribute__((visibility("default"))) TS_PositiveTimestamp_as_unix_timestamp(uint32_t this_arg) {
-       LDKPositiveTimestamp this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = PositiveTimestamp_as_unix_timestamp(&this_arg_conv);
-       return ret_val;
+       return ret_ref;
 }
-
-int64_t  __attribute__((visibility("default"))) TS_PositiveTimestamp_as_time(uint32_t this_arg) {
-       LDKPositiveTimestamp this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = PositiveTimestamp_as_time(&this_arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_Payee_clone_ptr(uint32_t arg) {
+       LDKPayee arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = Payee_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Invoice_into_signed_raw(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       this_arg_conv = Invoice_clone(&this_arg_conv);
-       LDKSignedRawInvoice ret_var = Invoice_into_signed_raw(this_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_Payee_clone(uint32_t orig) {
+       LDKPayee orig_conv;
+       orig_conv.inner = (void*)(orig & (~1));
+       orig_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKPayee ret_var = Payee_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -36588,133 +33836,100 @@ uint32_t  __attribute__((visibility("default"))) TS_Invoice_into_signed_raw(uint
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Invoice_check_signature(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCResult_NoneSemanticErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneSemanticErrorZ), "LDKCResult_NoneSemanticErrorZ");
-       *ret_conv = Invoice_check_signature(&this_arg_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_Invoice_from_signed(uint32_t signed_invoice) {
-       LDKSignedRawInvoice signed_invoice_conv;
-       signed_invoice_conv.inner = (void*)(signed_invoice & (~1));
-       signed_invoice_conv.is_owned = (signed_invoice & 1) || (signed_invoice == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(signed_invoice_conv);
-       signed_invoice_conv = SignedRawInvoice_clone(&signed_invoice_conv);
-       LDKCResult_InvoiceSemanticErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceSemanticErrorZ), "LDKCResult_InvoiceSemanticErrorZ");
-       *ret_conv = Invoice_from_signed(signed_invoice_conv);
-       return (uint64_t)ret_conv;
-}
-
-int64_t  __attribute__((visibility("default"))) TS_Invoice_timestamp(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = Invoice_timestamp(&this_arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_Payee_hash(uint32_t o) {
+       LDKPayee o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       int64_t ret_val = Payee_hash(&o_conv);
        return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_Invoice_payment_hash(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *Invoice_payment_hash(&this_arg_conv), 32);
-       return ret_arr;
+jboolean  __attribute__((visibility("default"))) TS_Payee_eq(uint32_t a, uint32_t b) {
+       LDKPayee a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       LDKPayee b_conv;
+       b_conv.inner = (void*)(b & (~1));
+       b_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
+       jboolean ret_val = Payee_eq(&a_conv, &b_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_Invoice_payee_pub_key(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), Invoice_payee_pub_key(&this_arg_conv).compressed_form, 33);
+int8_tArray  __attribute__((visibility("default"))) TS_Payee_write(uint32_t obj) {
+       LDKPayee obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = Payee_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_Invoice_payment_secret(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *Invoice_payment_secret(&this_arg_conv), 32);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_Payee_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_PayeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeeDecodeErrorZ), "LDKCResult_PayeeDecodeErrorZ");
+       *ret_conv = Payee_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Invoice_features(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKInvoiceFeatures ret_var = Invoice_features(&this_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_Payee_from_node_id(int8_tArray pubkey) {
+       LDKPublicKey pubkey_ref;
+       CHECK(pubkey->arr_len == 33);
+       memcpy(pubkey_ref.compressed_form, pubkey->elems, 33);
+       LDKPayee ret_var = Payee_from_node_id(pubkey_ref);
        uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
        CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_Invoice_recover_payee_pub_key(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), Invoice_recover_payee_pub_key(&this_arg_conv).compressed_form, 33);
-       return ret_arr;
-}
-
-int64_t  __attribute__((visibility("default"))) TS_Invoice_expiry_time(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = Invoice_expiry_time(&this_arg_conv);
-       return ret_val;
-}
-
-jboolean  __attribute__((visibility("default"))) TS_Invoice_is_expired(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       jboolean ret_val = Invoice_is_expired(&this_arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_Payee_for_keysend(int8_tArray pubkey) {
+       LDKPublicKey pubkey_ref;
+       CHECK(pubkey->arr_len == 33);
+       memcpy(pubkey_ref.compressed_form, pubkey->elems, 33);
+       LDKPayee ret_var = Payee_for_keysend(pubkey_ref);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_Invoice_min_final_cltv_expiry(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = Invoice_min_final_cltv_expiry(&this_arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_RouteHint_free(uint32_t this_obj) {
+       LDKRouteHint this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       RouteHint_free(this_obj_conv);
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_Invoice_private_routes(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCVec_PrivateRouteZ ret_var = Invoice_private_routes(&this_arg_conv);
+uint32_tArray  __attribute__((visibility("default"))) TS_RouteHint_get_a(uint32_t this_ptr) {
+       LDKRouteHint this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCVec_RouteHintHopZ ret_var = RouteHint_get_a(&this_ptr_conv);
        uint32_tArray ret_arr = NULL;
-       ret_arr = init_arr(ret_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
+       ret_arr = init_uint32_tArray(ret_var.datalen);
        uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
        for (size_t o = 0; o < ret_var.datalen; o++) {
-               LDKPrivateRoute ret_conv_14_var = ret_var.data[o];
+               LDKRouteHintHop ret_conv_14_var = ret_var.data[o];
                uint64_t ret_conv_14_ref = 0;
                CHECK((((uint64_t)ret_conv_14_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
                CHECK((((uint64_t)&ret_conv_14_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -36730,119 +33945,86 @@ uint32_tArray  __attribute__((visibility("default"))) TS_Invoice_private_routes(
        return ret_arr;
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_Invoice_route_hints(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCVec_RouteHintZ ret_var = Invoice_route_hints(&this_arg_conv);
-       uint32_tArray ret_arr = NULL;
-       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++) {
-               LDKRouteHint ret_conv_11_var = ret_var.data[l];
-               uint64_t ret_conv_11_ref = 0;
-               CHECK((((uint64_t)ret_conv_11_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_conv_11_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_11_var);
-               ret_conv_11_ref = (uint64_t)ret_conv_11_var.inner;
-               if (ret_conv_11_var.is_owned) {
-                       ret_conv_11_ref |= 1;
-               }
-               ret_arr_ptr[l] = ret_conv_11_ref;
+void  __attribute__((visibility("default"))) TS_RouteHint_set_a(uint32_t this_ptr, uint32_tArray val) {
+       LDKRouteHint this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCVec_RouteHintHopZ val_constr;
+       val_constr.datalen = val->arr_len;
+       if (val_constr.datalen > 0)
+               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKRouteHintHop), "LDKCVec_RouteHintHopZ Elements");
+       else
+               val_constr.data = NULL;
+       uint32_t* val_vals = val->elems;
+       for (size_t o = 0; o < val_constr.datalen; o++) {
+               uint32_t val_conv_14 = val_vals[o];
+               LDKRouteHintHop val_conv_14_conv;
+               val_conv_14_conv.inner = (void*)(val_conv_14 & (~1));
+               val_conv_14_conv.is_owned = (val_conv_14 & 1) || (val_conv_14 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv_14_conv);
+               val_conv_14_conv = RouteHintHop_clone(&val_conv_14_conv);
+               val_constr.data[o] = val_conv_14_conv;
        }
-       
-       FREE(ret_var.data);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_Invoice_currency(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       uint32_t ret_conv = LDKCurrency_to_js(Invoice_currency(&this_arg_conv));
-       return ret_conv;
+       RouteHint_set_a(&this_ptr_conv, val_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Invoice_amount_milli_satoshis(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
-       *ret_copy = Invoice_amount_milli_satoshis(&this_arg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
+uint32_t  __attribute__((visibility("default"))) TS_RouteHint_new(uint32_tArray a_arg) {
+       LDKCVec_RouteHintHopZ a_arg_constr;
+       a_arg_constr.datalen = a_arg->arr_len;
+       if (a_arg_constr.datalen > 0)
+               a_arg_constr.data = MALLOC(a_arg_constr.datalen * sizeof(LDKRouteHintHop), "LDKCVec_RouteHintHopZ Elements");
+       else
+               a_arg_constr.data = NULL;
+       uint32_t* a_arg_vals = a_arg->elems;
+       for (size_t o = 0; o < a_arg_constr.datalen; o++) {
+               uint32_t a_arg_conv_14 = a_arg_vals[o];
+               LDKRouteHintHop a_arg_conv_14_conv;
+               a_arg_conv_14_conv.inner = (void*)(a_arg_conv_14 & (~1));
+               a_arg_conv_14_conv.is_owned = (a_arg_conv_14 & 1) || (a_arg_conv_14 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(a_arg_conv_14_conv);
+               a_arg_conv_14_conv = RouteHintHop_clone(&a_arg_conv_14_conv);
+               a_arg_constr.data[o] = a_arg_conv_14_conv;
+       }
+       LDKRouteHint ret_var = RouteHint_new(a_arg_constr);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Description_new(jstring description) {
-       LDKStr description_conv = str_ref_to_owned_c(description);
-       LDKCResult_DescriptionCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DescriptionCreationErrorZ), "LDKCResult_DescriptionCreationErrorZ");
-       *ret_conv = Description_new(description_conv);
-       return (uint64_t)ret_conv;
-}
-
-jstring  __attribute__((visibility("default"))) TS_Description_into_inner(uint32_t this_arg) {
-       LDKDescription this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       this_arg_conv = Description_clone(&this_arg_conv);
-       LDKStr ret_str = Description_into_inner(this_arg_conv);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ExpiryTime_from_seconds(int64_t seconds) {
-       LDKCResult_ExpiryTimeCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ExpiryTimeCreationErrorZ), "LDKCResult_ExpiryTimeCreationErrorZ");
-       *ret_conv = ExpiryTime_from_seconds(seconds);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ExpiryTime_from_duration(int64_t duration) {
-       LDKCResult_ExpiryTimeCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ExpiryTimeCreationErrorZ), "LDKCResult_ExpiryTimeCreationErrorZ");
-       *ret_conv = ExpiryTime_from_duration(duration);
-       return (uint64_t)ret_conv;
+static inline uint64_t RouteHint_clone_ptr(LDKRouteHint *NONNULL_PTR arg) {
+       LDKRouteHint ret_var = RouteHint_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-int64_t  __attribute__((visibility("default"))) TS_ExpiryTime_as_seconds(uint32_t this_arg) {
-       LDKExpiryTime this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = ExpiryTime_as_seconds(&this_arg_conv);
-       return ret_val;
+       return ret_ref;
 }
-
-int64_t  __attribute__((visibility("default"))) TS_ExpiryTime_as_duration(uint32_t this_arg) {
-       LDKExpiryTime this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = ExpiryTime_as_duration(&this_arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_RouteHint_clone_ptr(uint32_t arg) {
+       LDKRouteHint arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = RouteHint_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PrivateRoute_new(uint32_t hops) {
-       LDKRouteHint hops_conv;
-       hops_conv.inner = (void*)(hops & (~1));
-       hops_conv.is_owned = (hops & 1) || (hops == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(hops_conv);
-       hops_conv = RouteHint_clone(&hops_conv);
-       LDKCResult_PrivateRouteCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PrivateRouteCreationErrorZ), "LDKCResult_PrivateRouteCreationErrorZ");
-       *ret_conv = PrivateRoute_new(hops_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_PrivateRoute_into_inner(uint32_t this_arg) {
-       LDKPrivateRoute this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       this_arg_conv = PrivateRoute_clone(&this_arg_conv);
-       LDKRouteHint ret_var = PrivateRoute_into_inner(this_arg_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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKRouteHint ret_var = RouteHint_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -36854,235 +34036,372 @@ uint32_t  __attribute__((visibility("default"))) TS_PrivateRoute_into_inner(uint
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CreationError_clone(uint32_t orig) {
-       LDKCreationError* orig_conv = (LDKCreationError*)(orig & ~1);
-       uint32_t ret_conv = LDKCreationError_to_js(CreationError_clone(orig_conv));
-       return ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CreationError_description_too_long() {
-       uint32_t ret_conv = LDKCreationError_to_js(CreationError_description_too_long());
-       return ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CreationError_route_too_long() {
-       uint32_t ret_conv = LDKCreationError_to_js(CreationError_route_too_long());
-       return ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CreationError_timestamp_out_of_bounds() {
-       uint32_t ret_conv = LDKCreationError_to_js(CreationError_timestamp_out_of_bounds());
-       return ret_conv;
+int64_t  __attribute__((visibility("default"))) TS_RouteHint_hash(uint32_t o) {
+       LDKRouteHint o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       int64_t ret_val = RouteHint_hash(&o_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CreationError_expiry_time_out_of_bounds() {
-       uint32_t ret_conv = LDKCreationError_to_js(CreationError_expiry_time_out_of_bounds());
-       return ret_conv;
+jboolean  __attribute__((visibility("default"))) TS_RouteHint_eq(uint32_t a, uint32_t b) {
+       LDKRouteHint a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       LDKRouteHint b_conv;
+       b_conv.inner = (void*)(b & (~1));
+       b_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
+       jboolean ret_val = RouteHint_eq(&a_conv, &b_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CreationError_invalid_amount() {
-       uint32_t ret_conv = LDKCreationError_to_js(CreationError_invalid_amount());
-       return ret_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_RouteHint_write(uint32_t obj) {
+       LDKRouteHint obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = RouteHint_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CreationError_eq(uint32_t a, uint32_t b) {
-       LDKCreationError* a_conv = (LDKCreationError*)(a & ~1);
-       LDKCreationError* b_conv = (LDKCreationError*)(b & ~1);
-       jboolean ret_val = CreationError_eq(a_conv, b_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_RouteHint_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_RouteHintDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintDecodeErrorZ), "LDKCResult_RouteHintDecodeErrorZ");
+       *ret_conv = RouteHint_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-jstring  __attribute__((visibility("default"))) TS_CreationError_to_str(uint32_t o) {
-       LDKCreationError* o_conv = (LDKCreationError*)(o & ~1);
-       LDKStr ret_str = CreationError_to_str(o_conv);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
+void  __attribute__((visibility("default"))) TS_RouteHintHop_free(uint32_t this_obj) {
+       LDKRouteHintHop this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       RouteHintHop_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SemanticError_clone(uint32_t orig) {
-       LDKSemanticError* orig_conv = (LDKSemanticError*)(orig & ~1);
-       uint32_t ret_conv = LDKSemanticError_to_js(SemanticError_clone(orig_conv));
-       return ret_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_RouteHintHop_get_src_node_id(uint32_t this_ptr) {
+       LDKRouteHintHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, RouteHintHop_get_src_node_id(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SemanticError_no_payment_hash() {
-       uint32_t ret_conv = LDKSemanticError_to_js(SemanticError_no_payment_hash());
-       return ret_conv;
+void  __attribute__((visibility("default"))) TS_RouteHintHop_set_src_node_id(uint32_t this_ptr, int8_tArray val) {
+       LDKRouteHintHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       RouteHintHop_set_src_node_id(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SemanticError_multiple_payment_hashes() {
-       uint32_t ret_conv = LDKSemanticError_to_js(SemanticError_multiple_payment_hashes());
-       return ret_conv;
+int64_t  __attribute__((visibility("default"))) TS_RouteHintHop_get_short_channel_id(uint32_t this_ptr) {
+       LDKRouteHintHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = RouteHintHop_get_short_channel_id(&this_ptr_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SemanticError_no_description() {
-       uint32_t ret_conv = LDKSemanticError_to_js(SemanticError_no_description());
-       return ret_conv;
+void  __attribute__((visibility("default"))) TS_RouteHintHop_set_short_channel_id(uint32_t this_ptr, int64_t val) {
+       LDKRouteHintHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       RouteHintHop_set_short_channel_id(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SemanticError_multiple_descriptions() {
-       uint32_t ret_conv = LDKSemanticError_to_js(SemanticError_multiple_descriptions());
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_RouteHintHop_get_fees(uint32_t this_ptr) {
+       LDKRouteHintHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKRoutingFees ret_var = RouteHintHop_get_fees(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SemanticError_no_payment_secret() {
-       uint32_t ret_conv = LDKSemanticError_to_js(SemanticError_no_payment_secret());
-       return ret_conv;
+void  __attribute__((visibility("default"))) TS_RouteHintHop_set_fees(uint32_t this_ptr, uint32_t val) {
+       LDKRouteHintHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKRoutingFees val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = RoutingFees_clone(&val_conv);
+       RouteHintHop_set_fees(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SemanticError_multiple_payment_secrets() {
-       uint32_t ret_conv = LDKSemanticError_to_js(SemanticError_multiple_payment_secrets());
-       return ret_conv;
+int16_t  __attribute__((visibility("default"))) TS_RouteHintHop_get_cltv_expiry_delta(uint32_t this_ptr) {
+       LDKRouteHintHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int16_t ret_val = RouteHintHop_get_cltv_expiry_delta(&this_ptr_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SemanticError_invalid_features() {
-       uint32_t ret_conv = LDKSemanticError_to_js(SemanticError_invalid_features());
-       return ret_conv;
+void  __attribute__((visibility("default"))) TS_RouteHintHop_set_cltv_expiry_delta(uint32_t this_ptr, int16_t val) {
+       LDKRouteHintHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       RouteHintHop_set_cltv_expiry_delta(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SemanticError_invalid_recovery_id() {
-       uint32_t ret_conv = LDKSemanticError_to_js(SemanticError_invalid_recovery_id());
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_RouteHintHop_get_htlc_minimum_msat(uint32_t this_ptr) {
+       LDKRouteHintHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
+       *ret_copy = RouteHintHop_get_htlc_minimum_msat(&this_ptr_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SemanticError_invalid_signature() {
-       uint32_t ret_conv = LDKSemanticError_to_js(SemanticError_invalid_signature());
-       return ret_conv;
+void  __attribute__((visibility("default"))) TS_RouteHintHop_set_htlc_minimum_msat(uint32_t this_ptr, uint32_t val) {
+       LDKRouteHintHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKCOption_u64Z val_conv = *(LDKCOption_u64Z*)(val_ptr);
+       val_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)val) & ~1));
+       RouteHintHop_set_htlc_minimum_msat(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SemanticError_imprecise_amount() {
-       uint32_t ret_conv = LDKSemanticError_to_js(SemanticError_imprecise_amount());
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_RouteHintHop_get_htlc_maximum_msat(uint32_t this_ptr) {
+       LDKRouteHintHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
+       *ret_copy = RouteHintHop_get_htlc_maximum_msat(&this_ptr_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_SemanticError_eq(uint32_t a, uint32_t b) {
-       LDKSemanticError* a_conv = (LDKSemanticError*)(a & ~1);
-       LDKSemanticError* b_conv = (LDKSemanticError*)(b & ~1);
-       jboolean ret_val = SemanticError_eq(a_conv, b_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_RouteHintHop_set_htlc_maximum_msat(uint32_t this_ptr, uint32_t val) {
+       LDKRouteHintHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKCOption_u64Z val_conv = *(LDKCOption_u64Z*)(val_ptr);
+       val_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)val) & ~1));
+       RouteHintHop_set_htlc_maximum_msat(&this_ptr_conv, val_conv);
 }
 
-jstring  __attribute__((visibility("default"))) TS_SemanticError_to_str(uint32_t o) {
-       LDKSemanticError* o_conv = (LDKSemanticError*)(o & ~1);
-       LDKStr ret_str = SemanticError_to_str(o_conv);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_RouteHintHop_new(int8_tArray src_node_id_arg, int64_t short_channel_id_arg, uint32_t fees_arg, int16_t cltv_expiry_delta_arg, uint32_t htlc_minimum_msat_arg, uint32_t htlc_maximum_msat_arg) {
+       LDKPublicKey src_node_id_arg_ref;
+       CHECK(src_node_id_arg->arr_len == 33);
+       memcpy(src_node_id_arg_ref.compressed_form, src_node_id_arg->elems, 33);
+       LDKRoutingFees fees_arg_conv;
+       fees_arg_conv.inner = (void*)(fees_arg & (~1));
+       fees_arg_conv.is_owned = (fees_arg & 1) || (fees_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(fees_arg_conv);
+       fees_arg_conv = RoutingFees_clone(&fees_arg_conv);
+       void* htlc_minimum_msat_arg_ptr = (void*)(((uint64_t)htlc_minimum_msat_arg) & ~1);
+       CHECK_ACCESS(htlc_minimum_msat_arg_ptr);
+       LDKCOption_u64Z htlc_minimum_msat_arg_conv = *(LDKCOption_u64Z*)(htlc_minimum_msat_arg_ptr);
+       htlc_minimum_msat_arg_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)htlc_minimum_msat_arg) & ~1));
+       void* htlc_maximum_msat_arg_ptr = (void*)(((uint64_t)htlc_maximum_msat_arg) & ~1);
+       CHECK_ACCESS(htlc_maximum_msat_arg_ptr);
+       LDKCOption_u64Z htlc_maximum_msat_arg_conv = *(LDKCOption_u64Z*)(htlc_maximum_msat_arg_ptr);
+       htlc_maximum_msat_arg_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)htlc_maximum_msat_arg) & ~1));
+       LDKRouteHintHop ret_var = RouteHintHop_new(src_node_id_arg_ref, short_channel_id_arg, fees_arg_conv, cltv_expiry_delta_arg, htlc_minimum_msat_arg_conv, htlc_maximum_msat_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_SignOrCreationError_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKSignOrCreationError this_ptr_conv = *(LDKSignOrCreationError*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       SignOrCreationError_free(this_ptr_conv);
+static inline uint64_t RouteHintHop_clone_ptr(LDKRouteHintHop *NONNULL_PTR arg) {
+       LDKRouteHintHop ret_var = RouteHintHop_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-static inline uint64_t SignOrCreationError_clone_ptr(LDKSignOrCreationError *NONNULL_PTR arg) {
-       LDKSignOrCreationError *ret_copy = MALLOC(sizeof(LDKSignOrCreationError), "LDKSignOrCreationError");
-       *ret_copy = SignOrCreationError_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_SignOrCreationError_clone_ptr(uint32_t arg) {
-       LDKSignOrCreationError* arg_conv = (LDKSignOrCreationError*)arg;
-       int64_t ret_val = SignOrCreationError_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_RouteHintHop_clone_ptr(uint32_t arg) {
+       LDKRouteHintHop arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = RouteHintHop_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SignOrCreationError_clone(uint32_t orig) {
-       LDKSignOrCreationError* orig_conv = (LDKSignOrCreationError*)orig;
-       LDKSignOrCreationError *ret_copy = MALLOC(sizeof(LDKSignOrCreationError), "LDKSignOrCreationError");
-       *ret_copy = SignOrCreationError_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
+uint32_t  __attribute__((visibility("default"))) TS_RouteHintHop_clone(uint32_t orig) {
+       LDKRouteHintHop orig_conv;
+       orig_conv.inner = (void*)(orig & (~1));
+       orig_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKRouteHintHop ret_var = RouteHintHop_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SignOrCreationError_sign_error() {
-       LDKSignOrCreationError *ret_copy = MALLOC(sizeof(LDKSignOrCreationError), "LDKSignOrCreationError");
-       *ret_copy = SignOrCreationError_sign_error();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+int64_t  __attribute__((visibility("default"))) TS_RouteHintHop_hash(uint32_t o) {
+       LDKRouteHintHop o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       int64_t ret_val = RouteHintHop_hash(&o_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SignOrCreationError_creation_error(uint32_t a) {
-       LDKCreationError a_conv = LDKCreationError_from_js(a);
-       LDKSignOrCreationError *ret_copy = MALLOC(sizeof(LDKSignOrCreationError), "LDKSignOrCreationError");
-       *ret_copy = SignOrCreationError_creation_error(a_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+jboolean  __attribute__((visibility("default"))) TS_RouteHintHop_eq(uint32_t a, uint32_t b) {
+       LDKRouteHintHop a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       LDKRouteHintHop b_conv;
+       b_conv.inner = (void*)(b & (~1));
+       b_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
+       jboolean ret_val = RouteHintHop_eq(&a_conv, &b_conv);
+       return ret_val;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_SignOrCreationError_eq(uint32_t a, uint32_t b) {
-       LDKSignOrCreationError* a_conv = (LDKSignOrCreationError*)a;
-       LDKSignOrCreationError* b_conv = (LDKSignOrCreationError*)b;
-       jboolean ret_val = SignOrCreationError_eq(a_conv, b_conv);
-       return ret_val;
+int8_tArray  __attribute__((visibility("default"))) TS_RouteHintHop_write(uint32_t obj) {
+       LDKRouteHintHop obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = RouteHintHop_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-jstring  __attribute__((visibility("default"))) TS_SignOrCreationError_to_str(uint32_t o) {
-       LDKSignOrCreationError* o_conv = (LDKSignOrCreationError*)o;
-       LDKStr ret_str = SignOrCreationError_to_str(o_conv);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_RouteHintHop_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_RouteHintHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintHopDecodeErrorZ), "LDKCResult_RouteHintHopDecodeErrorZ");
+       *ret_conv = RouteHintHop_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_InvoicePayer_free(uint32_t this_obj) {
-       LDKInvoicePayer this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       InvoicePayer_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_find_route(int8_tArray our_node_pubkey, uint32_t params, uint32_t network, uint32_tArray first_hops, uint32_t logger, uint32_t scorer) {
+       LDKPublicKey our_node_pubkey_ref;
+       CHECK(our_node_pubkey->arr_len == 33);
+       memcpy(our_node_pubkey_ref.compressed_form, our_node_pubkey->elems, 33);
+       LDKRouteParameters params_conv;
+       params_conv.inner = (void*)(params & (~1));
+       params_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(params_conv);
+       LDKNetworkGraph network_conv;
+       network_conv.inner = (void*)(network & (~1));
+       network_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(network_conv);
+       LDKCVec_ChannelDetailsZ first_hops_constr;
+       LDKCVec_ChannelDetailsZ *first_hops_ptr = NULL;
+       if (first_hops != 0) {
+               first_hops_constr.datalen = first_hops->arr_len;
+               if (first_hops_constr.datalen > 0)
+                       first_hops_constr.data = MALLOC(first_hops_constr.datalen * sizeof(LDKChannelDetails), "LDKCVec_ChannelDetailsZ Elements");
+               else
+                       first_hops_constr.data = NULL;
+               uint32_t* first_hops_vals = first_hops->elems;
+               for (size_t q = 0; q < first_hops_constr.datalen; q++) {
+                       uint32_t first_hops_conv_16 = first_hops_vals[q];
+                       LDKChannelDetails first_hops_conv_16_conv;
+                       first_hops_conv_16_conv.inner = (void*)(first_hops_conv_16 & (~1));
+                       first_hops_conv_16_conv.is_owned = (first_hops_conv_16 & 1) || (first_hops_conv_16 == 0);
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(first_hops_conv_16_conv);
+                       first_hops_constr.data[q] = first_hops_conv_16_conv;
+               }
+               first_hops_ptr = &first_hops_constr;
+       }
+       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
+       CHECK_ACCESS(logger_ptr);
+       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
+       void* scorer_ptr = (void*)(((uint64_t)scorer) & ~1);
+       if (!(scorer & 1)) { CHECK_ACCESS(scorer_ptr); }
+       LDKScore* scorer_conv = (LDKScore*)scorer_ptr;
+       LDKCResult_RouteLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteLightningErrorZ), "LDKCResult_RouteLightningErrorZ");
+       *ret_conv = find_route(our_node_pubkey_ref, &params_conv, &network_conv, first_hops_ptr, logger_conv, scorer_conv);
+       if (first_hops_ptr != NULL) { FREE(first_hops_constr.data); }
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_Payer_free(uint32_t this_ptr) {
+void  __attribute__((visibility("default"))) TS_Score_free(uint32_t this_ptr) {
        if ((this_ptr & 1) != 0) return;
        void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
        CHECK_ACCESS(this_ptr_ptr);
-       LDKPayer this_ptr_conv = *(LDKPayer*)(this_ptr_ptr);
+       LDKScore this_ptr_conv = *(LDKScore*)(this_ptr_ptr);
        FREE((void*)this_ptr);
-       Payer_free(this_ptr_conv);
+       Score_free(this_ptr_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_Router_free(uint32_t this_ptr) {
+void  __attribute__((visibility("default"))) TS_LockableScore_free(uint32_t this_ptr) {
        if ((this_ptr & 1) != 0) return;
        void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
        CHECK_ACCESS(this_ptr_ptr);
-       LDKRouter this_ptr_conv = *(LDKRouter*)(this_ptr_ptr);
+       LDKLockableScore this_ptr_conv = *(LDKLockableScore*)(this_ptr_ptr);
        FREE((void*)this_ptr);
-       Router_free(this_ptr_conv);
+       LockableScore_free(this_ptr_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_RetryAttempts_free(uint32_t this_obj) {
-       LDKRetryAttempts this_obj_conv;
+void  __attribute__((visibility("default"))) TS_MultiThreadedLockableScore_free(uint32_t this_obj) {
+       LDKMultiThreadedLockableScore this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       RetryAttempts_free(this_obj_conv);
-}
-
-int64_t  __attribute__((visibility("default"))) TS_RetryAttempts_get_a(uint32_t this_ptr) {
-       LDKRetryAttempts this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = RetryAttempts_get_a(&this_ptr_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_RetryAttempts_set_a(uint32_t this_ptr, int64_t val) {
-       LDKRetryAttempts this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       RetryAttempts_set_a(&this_ptr_conv, val);
+       MultiThreadedLockableScore_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RetryAttempts_new(int64_t a_arg) {
-       LDKRetryAttempts ret_var = RetryAttempts_new(a_arg);
+uint32_t  __attribute__((visibility("default"))) TS_MultiThreadedLockableScore_new(uint32_t score) {
+       void* score_ptr = (void*)(((uint64_t)score) & ~1);
+       CHECK_ACCESS(score_ptr);
+       LDKScore score_conv = *(LDKScore*)(score_ptr);
+       LDKMultiThreadedLockableScore ret_var = MultiThreadedLockableScore_new(score_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -37094,149 +34413,101 @@ uint32_t  __attribute__((visibility("default"))) TS_RetryAttempts_new(int64_t a_
        return ret_ref;
 }
 
-static inline uint64_t RetryAttempts_clone_ptr(LDKRetryAttempts *NONNULL_PTR arg) {
-       LDKRetryAttempts ret_var = RetryAttempts_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_ScoringParameters_free(uint32_t this_obj) {
+       LDKScoringParameters this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       ScoringParameters_free(this_obj_conv);
 }
-int64_t  __attribute__((visibility("default"))) TS_RetryAttempts_clone_ptr(uint32_t arg) {
-       LDKRetryAttempts arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = RetryAttempts_clone_ptr(&arg_conv);
+
+int64_t  __attribute__((visibility("default"))) TS_ScoringParameters_get_base_penalty_msat(uint32_t this_ptr) {
+       LDKScoringParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = ScoringParameters_get_base_penalty_msat(&this_ptr_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RetryAttempts_clone(uint32_t orig) {
-       LDKRetryAttempts orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKRetryAttempts ret_var = RetryAttempts_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_ScoringParameters_set_base_penalty_msat(uint32_t this_ptr, int64_t val) {
+       LDKScoringParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ScoringParameters_set_base_penalty_msat(&this_ptr_conv, val);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_RetryAttempts_eq(uint32_t a, uint32_t b) {
-       LDKRetryAttempts a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKRetryAttempts b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = RetryAttempts_eq(&a_conv, &b_conv);
+int64_t  __attribute__((visibility("default"))) TS_ScoringParameters_get_failure_penalty_msat(uint32_t this_ptr) {
+       LDKScoringParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = ScoringParameters_get_failure_penalty_msat(&this_ptr_conv);
        return ret_val;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_RetryAttempts_hash(uint32_t o) {
-       LDKRetryAttempts o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = RetryAttempts_hash(&o_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_ScoringParameters_set_failure_penalty_msat(uint32_t this_ptr, int64_t val) {
+       LDKScoringParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ScoringParameters_set_failure_penalty_msat(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_PaymentError_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKPaymentError this_ptr_conv = *(LDKPaymentError*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       PaymentError_free(this_ptr_conv);
+int16_t  __attribute__((visibility("default"))) TS_ScoringParameters_get_overuse_penalty_start_1024th(uint32_t this_ptr) {
+       LDKScoringParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int16_t ret_val = ScoringParameters_get_overuse_penalty_start_1024th(&this_ptr_conv);
+       return ret_val;
 }
 
-static inline uint64_t PaymentError_clone_ptr(LDKPaymentError *NONNULL_PTR arg) {
-       LDKPaymentError *ret_copy = MALLOC(sizeof(LDKPaymentError), "LDKPaymentError");
-       *ret_copy = PaymentError_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_PaymentError_clone_ptr(uint32_t arg) {
-       LDKPaymentError* arg_conv = (LDKPaymentError*)arg;
-       int64_t ret_val = PaymentError_clone_ptr(arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_ScoringParameters_set_overuse_penalty_start_1024th(uint32_t this_ptr, int16_t val) {
+       LDKScoringParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ScoringParameters_set_overuse_penalty_start_1024th(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PaymentError_clone(uint32_t orig) {
-       LDKPaymentError* orig_conv = (LDKPaymentError*)orig;
-       LDKPaymentError *ret_copy = MALLOC(sizeof(LDKPaymentError), "LDKPaymentError");
-       *ret_copy = PaymentError_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+int64_t  __attribute__((visibility("default"))) TS_ScoringParameters_get_overuse_penalty_msat_per_1024th(uint32_t this_ptr) {
+       LDKScoringParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = ScoringParameters_get_overuse_penalty_msat_per_1024th(&this_ptr_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PaymentError_invoice(jstring a) {
-       LDKStr a_conv = str_ref_to_owned_c(a);
-       LDKPaymentError *ret_copy = MALLOC(sizeof(LDKPaymentError), "LDKPaymentError");
-       *ret_copy = PaymentError_invoice(a_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_ScoringParameters_set_overuse_penalty_msat_per_1024th(uint32_t this_ptr, int64_t val) {
+       LDKScoringParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ScoringParameters_set_overuse_penalty_msat_per_1024th(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PaymentError_routing(uint32_t a) {
-       LDKLightningError a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = (a & 1) || (a == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       a_conv = LightningError_clone(&a_conv);
-       LDKPaymentError *ret_copy = MALLOC(sizeof(LDKPaymentError), "LDKPaymentError");
-       *ret_copy = PaymentError_routing(a_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+int64_t  __attribute__((visibility("default"))) TS_ScoringParameters_get_failure_penalty_half_life(uint32_t this_ptr) {
+       LDKScoringParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = ScoringParameters_get_failure_penalty_half_life(&this_ptr_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PaymentError_sending(uint32_t a) {
-       void* a_ptr = (void*)(((uint64_t)a) & ~1);
-       CHECK_ACCESS(a_ptr);
-       LDKPaymentSendFailure a_conv = *(LDKPaymentSendFailure*)(a_ptr);
-       a_conv = PaymentSendFailure_clone((LDKPaymentSendFailure*)(((uint64_t)a) & ~1));
-       LDKPaymentError *ret_copy = MALLOC(sizeof(LDKPaymentError), "LDKPaymentError");
-       *ret_copy = PaymentError_sending(a_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_ScoringParameters_set_failure_penalty_half_life(uint32_t this_ptr, int64_t val) {
+       LDKScoringParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ScoringParameters_set_failure_penalty_half_life(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InvoicePayer_new(uint32_t payer, uint32_t router, uint32_t scorer, uint32_t logger, uint32_t event_handler, uint32_t retry_attempts) {
-       void* payer_ptr = (void*)(((uint64_t)payer) & ~1);
-       CHECK_ACCESS(payer_ptr);
-       LDKPayer payer_conv = *(LDKPayer*)(payer_ptr);
-       void* router_ptr = (void*)(((uint64_t)router) & ~1);
-       CHECK_ACCESS(router_ptr);
-       LDKRouter router_conv = *(LDKRouter*)(router_ptr);
-       LDKMultiThreadedLockableScore scorer_conv;
-       scorer_conv.inner = (void*)(scorer & (~1));
-       scorer_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(scorer_conv);
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       CHECK_ACCESS(logger_ptr);
-       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
-       void* event_handler_ptr = (void*)(((uint64_t)event_handler) & ~1);
-       CHECK_ACCESS(event_handler_ptr);
-       LDKEventHandler event_handler_conv = *(LDKEventHandler*)(event_handler_ptr);
-       LDKRetryAttempts retry_attempts_conv;
-       retry_attempts_conv.inner = (void*)(retry_attempts & (~1));
-       retry_attempts_conv.is_owned = (retry_attempts & 1) || (retry_attempts == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(retry_attempts_conv);
-       retry_attempts_conv = RetryAttempts_clone(&retry_attempts_conv);
-       LDKInvoicePayer ret_var = InvoicePayer_new(payer_conv, router_conv, &scorer_conv, logger_conv, event_handler_conv, retry_attempts_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ScoringParameters_new(int64_t base_penalty_msat_arg, int64_t failure_penalty_msat_arg, int16_t overuse_penalty_start_1024th_arg, int64_t overuse_penalty_msat_per_1024th_arg, int64_t failure_penalty_half_life_arg) {
+       LDKScoringParameters ret_var = ScoringParameters_new(base_penalty_msat_arg, failure_penalty_msat_arg, overuse_penalty_start_1024th_arg, overuse_penalty_msat_per_1024th_arg, failure_penalty_half_life_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -37248,108 +34519,29 @@ uint32_t  __attribute__((visibility("default"))) TS_InvoicePayer_new(uint32_t pa
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InvoicePayer_pay_invoice(uint32_t this_arg, uint32_t invoice) {
-       LDKInvoicePayer this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKInvoice invoice_conv;
-       invoice_conv.inner = (void*)(invoice & (~1));
-       invoice_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(invoice_conv);
-       LDKCResult_PaymentIdPaymentErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentErrorZ), "LDKCResult_PaymentIdPaymentErrorZ");
-       *ret_conv = InvoicePayer_pay_invoice(&this_arg_conv, &invoice_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_InvoicePayer_pay_zero_value_invoice(uint32_t this_arg, uint32_t invoice, int64_t amount_msats) {
-       LDKInvoicePayer this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKInvoice invoice_conv;
-       invoice_conv.inner = (void*)(invoice & (~1));
-       invoice_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(invoice_conv);
-       LDKCResult_PaymentIdPaymentErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentErrorZ), "LDKCResult_PaymentIdPaymentErrorZ");
-       *ret_conv = InvoicePayer_pay_zero_value_invoice(&this_arg_conv, &invoice_conv, amount_msats);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_InvoicePayer_pay_pubkey(uint32_t this_arg, int8_tArray pubkey, int8_tArray payment_preimage, int64_t amount_msats, int32_t final_cltv_expiry_delta) {
-       LDKInvoicePayer this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKPublicKey pubkey_ref;
-       CHECK(*((uint32_t*)pubkey) == 33);
-       memcpy(pubkey_ref.compressed_form, (uint8_t*)(pubkey + 4), 33);
-       LDKThirtyTwoBytes payment_preimage_ref;
-       CHECK(*((uint32_t*)payment_preimage) == 32);
-       memcpy(payment_preimage_ref.data, (uint8_t*)(payment_preimage + 4), 32);
-       LDKCResult_PaymentIdPaymentErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentErrorZ), "LDKCResult_PaymentIdPaymentErrorZ");
-       *ret_conv = InvoicePayer_pay_pubkey(&this_arg_conv, pubkey_ref, payment_preimage_ref, amount_msats, final_cltv_expiry_delta);
-       return (uint64_t)ret_conv;
-}
-
-void  __attribute__((visibility("default"))) TS_InvoicePayer_remove_cached_payment(uint32_t this_arg, int8_tArray payment_hash) {
-       LDKInvoicePayer this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       unsigned char payment_hash_arr[32];
-       CHECK(*((uint32_t*)payment_hash) == 32);
-       memcpy(payment_hash_arr, (uint8_t*)(payment_hash + 4), 32);
-       unsigned char (*payment_hash_ref)[32] = &payment_hash_arr;
-       InvoicePayer_remove_cached_payment(&this_arg_conv, payment_hash_ref);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_InvoicePayer_as_EventHandler(uint32_t this_arg) {
-       LDKInvoicePayer this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKEventHandler* ret_ret = MALLOC(sizeof(LDKEventHandler), "LDKEventHandler");
-       *ret_ret = InvoicePayer_as_EventHandler(&this_arg_conv);
-       return (uint64_t)ret_ret;
+int8_tArray  __attribute__((visibility("default"))) TS_ScoringParameters_write(uint32_t obj) {
+       LDKScoringParameters obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ScoringParameters_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_create_invoice_from_channelmanager(uint32_t channelmanager, uint32_t keys_manager, uint32_t network, uint32_t amt_msat, jstring description) {
-       LDKChannelManager channelmanager_conv;
-       channelmanager_conv.inner = (void*)(channelmanager & (~1));
-       channelmanager_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(channelmanager_conv);
-       void* keys_manager_ptr = (void*)(((uint64_t)keys_manager) & ~1);
-       CHECK_ACCESS(keys_manager_ptr);
-       LDKKeysInterface keys_manager_conv = *(LDKKeysInterface*)(keys_manager_ptr);
-       LDKCurrency network_conv = LDKCurrency_from_js(network);
-       void* amt_msat_ptr = (void*)(((uint64_t)amt_msat) & ~1);
-       CHECK_ACCESS(amt_msat_ptr);
-       LDKCOption_u64Z amt_msat_conv = *(LDKCOption_u64Z*)(amt_msat_ptr);
-       amt_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)amt_msat) & ~1));
-       LDKStr description_conv = str_ref_to_owned_c(description);
-       LDKCResult_InvoiceSignOrCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceSignOrCreationErrorZ), "LDKCResult_InvoiceSignOrCreationErrorZ");
-       *ret_conv = create_invoice_from_channelmanager(&channelmanager_conv, keys_manager_conv, network_conv, amt_msat_conv, description_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ScoringParameters_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ScoringParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ScoringParametersDecodeErrorZ), "LDKCResult_ScoringParametersDecodeErrorZ");
+       *ret_conv = ScoringParameters_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_DefaultRouter_free(uint32_t this_obj) {
-       LDKDefaultRouter this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       DefaultRouter_free(this_obj_conv);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_DefaultRouter_new(uint32_t network_graph, uint32_t logger) {
-       LDKNetworkGraph network_graph_conv;
-       network_graph_conv.inner = (void*)(network_graph & (~1));
-       network_graph_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(network_graph_conv);
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       CHECK_ACCESS(logger_ptr);
-       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
-       LDKDefaultRouter ret_var = DefaultRouter_new(&network_graph_conv, logger_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ScoringParameters_default() {
+       LDKScoringParameters ret_var = ScoringParameters_default();
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -37361,82 +34553,3 @@ uint32_t  __attribute__((visibility("default"))) TS_DefaultRouter_new(uint32_t n
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_DefaultRouter_as_Router(uint32_t this_arg) {
-       LDKDefaultRouter this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKRouter* ret_ret = MALLOC(sizeof(LDKRouter), "LDKRouter");
-       *ret_ret = DefaultRouter_as_Router(&this_arg_conv);
-       return (uint64_t)ret_ret;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_as_Payer(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKPayer* ret_ret = MALLOC(sizeof(LDKPayer), "LDKPayer");
-       *ret_ret = ChannelManager_as_Payer(&this_arg_conv);
-       return (uint64_t)ret_ret;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_SiPrefix_from_str(jstring s) {
-       LDKStr s_conv = str_ref_to_owned_c(s);
-       LDKCResult_SiPrefixNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SiPrefixNoneZ), "LDKCResult_SiPrefixNoneZ");
-       *ret_conv = SiPrefix_from_str(s_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_Invoice_from_str(jstring s) {
-       LDKStr s_conv = str_ref_to_owned_c(s);
-       LDKCResult_InvoiceNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceNoneZ), "LDKCResult_InvoiceNoneZ");
-       *ret_conv = Invoice_from_str(s_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_SignedRawInvoice_from_str(jstring s) {
-       LDKStr s_conv = str_ref_to_owned_c(s);
-       LDKCResult_SignedRawInvoiceNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignedRawInvoiceNoneZ), "LDKCResult_SignedRawInvoiceNoneZ");
-       *ret_conv = SignedRawInvoice_from_str(s_conv);
-       return (uint64_t)ret_conv;
-}
-
-jstring  __attribute__((visibility("default"))) TS_Invoice_to_str(uint32_t o) {
-       LDKInvoice o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       LDKStr ret_str = Invoice_to_str(&o_conv);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
-}
-
-jstring  __attribute__((visibility("default"))) TS_SignedRawInvoice_to_str(uint32_t o) {
-       LDKSignedRawInvoice o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       LDKStr ret_str = SignedRawInvoice_to_str(&o_conv);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
-}
-
-jstring  __attribute__((visibility("default"))) TS_Currency_to_str(uint32_t o) {
-       LDKCurrency* o_conv = (LDKCurrency*)(o & ~1);
-       LDKStr ret_str = Currency_to_str(o_conv);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
-}
-
-jstring  __attribute__((visibility("default"))) TS_SiPrefix_to_str(uint32_t o) {
-       LDKSiPrefix* o_conv = (LDKSiPrefix*)(o & ~1);
-       LDKStr ret_str = SiPrefix_to_str(o_conv);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
-}
-
index 0540b49d122d3841f2357e3c4c9a20d9d09bc6c9..203ac06fcc3d4350fa9825e52cda8366feebab81 100644 (file)
@@ -29,32 +29,37 @@ _Static_assert(offsetof(LDKCVec_u8Z, datalen) == offsetof(LDKu8slice, datalen),
 
 _Static_assert(sizeof(void*) == 4, "Pointers mut be 32 bits");
 
-typedef uint32_t int64_tArray;
-typedef uint32_t int8_tArray;
-typedef uint32_t uint32_tArray;
-typedef uint32_t ptrArray;
-typedef uint32_t jstring;
-
-static inline uint32_t init_arr(size_t arr_len, size_t elem_size, const char *type_desc) {
-       uint32_t *elems = (uint32_t*)MALLOC(arr_len * elem_size + 4, type_desc);
-       elems[0] = arr_len;
-       return (uint32_t)elems;
-}
+#define DECL_ARR_TYPE(ty, name) \
+       struct name##array { \
+               uint32_t arr_len; \
+               ty elems[]; \
+       }; \
+       typedef struct name##array * name##Array; \
+       static inline name##Array init_##name##Array(size_t arr_len) { \
+               name##Array arr = (name##Array)MALLOC(arr_len * sizeof(ty) + sizeof(uint32_t), "##name array init"); \
+               arr->arr_len = arr_len; \
+               return arr; \
+       }
+
+DECL_ARR_TYPE(int64_t, int64_t);
+DECL_ARR_TYPE(int8_t, int8_t);
+DECL_ARR_TYPE(uint32_t, uint32_t);
+DECL_ARR_TYPE(void*, ptr);
+DECL_ARR_TYPE(char, char);
+typedef charArray jstring;
 
 static inline jstring str_ref_to_ts(const char* chars, size_t len) {
-       char* err_buf = MALLOC(len + 4, "str conv buf");
-       *((uint32_t*)err_buf) = len;
-       memcpy(err_buf + 4, chars, len);
-       return (uint32_t) err_buf;
-}
-static inline LDKStr str_ref_to_owned_c(jstring str) {
-       uint32_t *str_len = (uint32_t*)str;
-       char* newchars = MALLOC(*str_len + 1, "String chars");
-       memcpy(newchars, (const char*)(str + 4), *str_len);
-       newchars[*str_len] = 0;
-       LDKStr res= {
+       charArray arr = init_charArray(len);
+       memcpy(arr->elems, chars, len);
+       return arr;
+}
+static inline LDKStr str_ref_to_owned_c(const jstring str) {
+       char* newchars = MALLOC(str->arr_len + 1, "String chars");
+       memcpy(newchars, str->elems, str->arr_len);
+       newchars[str->arr_len] = 0;
+       LDKStr res = {
                .chars = newchars,
-               .len = *str_len,
+               .len = str->arr_len,
                .chars_is_owned = true
        };
        return res;
@@ -127,92 +132,6 @@ static inline int32_t LDKConfirmationTarget_to_js(LDKConfirmationTarget val) {
                default: abort();
        }
 }
-static inline LDKCreationError LDKCreationError_from_js(int32_t ord) {
-       switch (ord) {
-               case 0: return LDKCreationError_DescriptionTooLong;
-               case 1: return LDKCreationError_RouteTooLong;
-               case 2: return LDKCreationError_TimestampOutOfBounds;
-               case 3: return LDKCreationError_ExpiryTimeOutOfBounds;
-               case 4: return LDKCreationError_InvalidAmount;
-       }
-       abort();
-}
-static inline int32_t LDKCreationError_to_js(LDKCreationError val) {
-       switch (val) {
-               case LDKCreationError_DescriptionTooLong: return 0;
-               case LDKCreationError_RouteTooLong: return 1;
-               case LDKCreationError_TimestampOutOfBounds: return 2;
-               case LDKCreationError_ExpiryTimeOutOfBounds: return 3;
-               case LDKCreationError_InvalidAmount: return 4;
-               default: abort();
-       }
-}
-static inline LDKCurrency LDKCurrency_from_js(int32_t ord) {
-       switch (ord) {
-               case 0: return LDKCurrency_Bitcoin;
-               case 1: return LDKCurrency_BitcoinTestnet;
-               case 2: return LDKCurrency_Regtest;
-               case 3: return LDKCurrency_Simnet;
-               case 4: return LDKCurrency_Signet;
-       }
-       abort();
-}
-static inline int32_t LDKCurrency_to_js(LDKCurrency val) {
-       switch (val) {
-               case LDKCurrency_Bitcoin: return 0;
-               case LDKCurrency_BitcoinTestnet: return 1;
-               case LDKCurrency_Regtest: return 2;
-               case LDKCurrency_Simnet: return 3;
-               case LDKCurrency_Signet: return 4;
-               default: abort();
-       }
-}
-static inline LDKIOError LDKIOError_from_js(int32_t ord) {
-       switch (ord) {
-               case 0: return LDKIOError_NotFound;
-               case 1: return LDKIOError_PermissionDenied;
-               case 2: return LDKIOError_ConnectionRefused;
-               case 3: return LDKIOError_ConnectionReset;
-               case 4: return LDKIOError_ConnectionAborted;
-               case 5: return LDKIOError_NotConnected;
-               case 6: return LDKIOError_AddrInUse;
-               case 7: return LDKIOError_AddrNotAvailable;
-               case 8: return LDKIOError_BrokenPipe;
-               case 9: return LDKIOError_AlreadyExists;
-               case 10: return LDKIOError_WouldBlock;
-               case 11: return LDKIOError_InvalidInput;
-               case 12: return LDKIOError_InvalidData;
-               case 13: return LDKIOError_TimedOut;
-               case 14: return LDKIOError_WriteZero;
-               case 15: return LDKIOError_Interrupted;
-               case 16: return LDKIOError_Other;
-               case 17: return LDKIOError_UnexpectedEof;
-       }
-       abort();
-}
-static inline int32_t LDKIOError_to_js(LDKIOError val) {
-       switch (val) {
-               case LDKIOError_NotFound: return 0;
-               case LDKIOError_PermissionDenied: return 1;
-               case LDKIOError_ConnectionRefused: return 2;
-               case LDKIOError_ConnectionReset: return 3;
-               case LDKIOError_ConnectionAborted: return 4;
-               case LDKIOError_NotConnected: return 5;
-               case LDKIOError_AddrInUse: return 6;
-               case LDKIOError_AddrNotAvailable: return 7;
-               case LDKIOError_BrokenPipe: return 8;
-               case LDKIOError_AlreadyExists: return 9;
-               case LDKIOError_WouldBlock: return 10;
-               case LDKIOError_InvalidInput: return 11;
-               case LDKIOError_InvalidData: return 12;
-               case LDKIOError_TimedOut: return 13;
-               case LDKIOError_WriteZero: return 14;
-               case LDKIOError_Interrupted: return 15;
-               case LDKIOError_Other: return 16;
-               case LDKIOError_UnexpectedEof: return 17;
-               default: abort();
-       }
-}
 static inline LDKLevel LDKLevel_from_js(int32_t ord) {
        switch (ord) {
                case 0: return LDKLevel_Gossip;
@@ -281,54 +200,6 @@ static inline int32_t LDKSecp256k1Error_to_js(LDKSecp256k1Error val) {
                default: abort();
        }
 }
-static inline LDKSemanticError LDKSemanticError_from_js(int32_t ord) {
-       switch (ord) {
-               case 0: return LDKSemanticError_NoPaymentHash;
-               case 1: return LDKSemanticError_MultiplePaymentHashes;
-               case 2: return LDKSemanticError_NoDescription;
-               case 3: return LDKSemanticError_MultipleDescriptions;
-               case 4: return LDKSemanticError_NoPaymentSecret;
-               case 5: return LDKSemanticError_MultiplePaymentSecrets;
-               case 6: return LDKSemanticError_InvalidFeatures;
-               case 7: return LDKSemanticError_InvalidRecoveryId;
-               case 8: return LDKSemanticError_InvalidSignature;
-               case 9: return LDKSemanticError_ImpreciseAmount;
-       }
-       abort();
-}
-static inline int32_t LDKSemanticError_to_js(LDKSemanticError val) {
-       switch (val) {
-               case LDKSemanticError_NoPaymentHash: return 0;
-               case LDKSemanticError_MultiplePaymentHashes: return 1;
-               case LDKSemanticError_NoDescription: return 2;
-               case LDKSemanticError_MultipleDescriptions: return 3;
-               case LDKSemanticError_NoPaymentSecret: return 4;
-               case LDKSemanticError_MultiplePaymentSecrets: return 5;
-               case LDKSemanticError_InvalidFeatures: return 6;
-               case LDKSemanticError_InvalidRecoveryId: return 7;
-               case LDKSemanticError_InvalidSignature: return 8;
-               case LDKSemanticError_ImpreciseAmount: return 9;
-               default: abort();
-       }
-}
-static inline LDKSiPrefix LDKSiPrefix_from_js(int32_t ord) {
-       switch (ord) {
-               case 0: return LDKSiPrefix_Milli;
-               case 1: return LDKSiPrefix_Micro;
-               case 2: return LDKSiPrefix_Nano;
-               case 3: return LDKSiPrefix_Pico;
-       }
-       abort();
-}
-static inline int32_t LDKSiPrefix_to_js(LDKSiPrefix val) {
-       switch (val) {
-               case LDKSiPrefix_Milli: return 0;
-               case LDKSiPrefix_Micro: return 1;
-               case LDKSiPrefix_Nano: return 2;
-               case LDKSiPrefix_Pico: return 3;
-               default: abort();
-       }
-}
 static inline LDKCVec_u8Z CVec_u8Z_clone(const LDKCVec_u8Z *orig) {
        LDKCVec_u8Z ret = { .data = MALLOC(sizeof(int8_t) * orig->datalen, "LDKCVec_u8Z clone bytes"), .datalen = orig->datalen };
        memcpy(ret.data, orig->data, sizeof(int8_t) * ret.datalen);
@@ -337,8 +208,8 @@ static inline LDKCVec_u8Z CVec_u8Z_clone(const LDKCVec_u8Z *orig) {
 struct LDKCVec_u8Z TxOut_get_script_pubkey (struct LDKTxOut* thing) {  return CVec_u8Z_clone(&thing->script_pubkey);}int8_tArray  __attribute__((visibility("default"))) TS_TxOut_get_script_pubkey(uint32_t thing) {
        LDKTxOut* thing_conv = (LDKTxOut*)(thing & ~1);
        LDKCVec_u8Z ret_var = TxOut_get_script_pubkey(thing_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
@@ -349,1981 +220,775 @@ uint64_t TxOut_get_value (struct LDKTxOut* thing) {    return thing->value;}int64_t
        return ret_val;
 }
 
-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;
-}
-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;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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;
+static inline struct LDKChannelConfig CResult_ChannelConfigDecodeErrorZ_get_ok(LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ChannelConfig_clone(&*owner->contents.result);
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKCOption_u32Z_ref_from_ptr(uint32_t ptr) {
-       LDKCOption_u32Z *obj = (LDKCOption_u32Z*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKCOption_u32Z_Some: {
-                       return 0 /* LDKCOption_u32Z - Some */; (void) obj->some;
-               }
-               case LDKCOption_u32Z_None: {
-                       return 0 /* LDKCOption_u32Z - None */;
-               }
-               default: abort();
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelConfigDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ChannelConfigDecodeErrorZ* owner_conv = (LDKCResult_ChannelConfigDecodeErrorZ*)(owner & ~1);
+       LDKChannelConfig ret_var = CResult_ChannelConfigDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_TrustedClosingTransactionNoneZ_get_ok(uint32_t arg) {
-       LDKCResult_TrustedClosingTransactionNoneZ *val = (LDKCResult_TrustedClosingTransactionNoneZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKTrustedClosingTransaction res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-void  __attribute__((visibility("default"))) TS_LDKCResult_TrustedClosingTransactionNoneZ_get_err(uint32_t arg) {
-       LDKCResult_TrustedClosingTransactionNoneZ *val = (LDKCResult_TrustedClosingTransactionNoneZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       return *val->contents.err;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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;
-}
-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 = NULL;
-       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 res_conv_12_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-               memcpy((uint8_t*)(res_conv_12_arr + 4), res_var.data[m].compact_form, 64);
-               res_arr_ptr[m] = res_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;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ShutdownScriptDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_ShutdownScriptDecodeErrorZ *val = (LDKCResult_ShutdownScriptDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKShutdownScript res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ShutdownScriptDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_ShutdownScriptDecodeErrorZ *val = (LDKCResult_ShutdownScriptDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ShutdownScriptInvalidShutdownScriptZ_get_ok(uint32_t arg) {
-       LDKCResult_ShutdownScriptInvalidShutdownScriptZ *val = (LDKCResult_ShutdownScriptInvalidShutdownScriptZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKShutdownScript res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ShutdownScriptInvalidShutdownScriptZ_get_err(uint32_t arg) {
-       LDKCResult_ShutdownScriptInvalidShutdownScriptZ *val = (LDKCResult_ShutdownScriptInvalidShutdownScriptZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKInvalidShutdownScript err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-void  __attribute__((visibility("default"))) TS_LDKCResult_NoneErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_NoneErrorZ *val = (LDKCResult_NoneErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       return *val->contents.result;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_NoneErrorZ_get_err(uint32_t arg) {
-       LDKCResult_NoneErrorZ *val = (LDKCResult_NoneErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint32_t err_conv = LDKIOError_to_js((*val->contents.err));
-       return err_conv;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_RouteHopDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_RouteHopDecodeErrorZ *val = (LDKCResult_RouteHopDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKRouteHop res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_RouteHopDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_RouteHopDecodeErrorZ *val = (LDKCResult_RouteHopDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
+
+static inline struct LDKDecodeError CResult_ChannelConfigDecodeErrorZ_get_err(LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-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]);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelConfigDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ChannelConfigDecodeErrorZ* owner_conv = (LDKCResult_ChannelConfigDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ChannelConfigDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret;
+       return ret_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]);
+
+static inline struct LDKOutPoint CResult_OutPointDecodeErrorZ_get_ok(LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return OutPoint_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_OutPointDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_OutPointDecodeErrorZ* owner_conv = (LDKCResult_OutPointDecodeErrorZ*)(owner & ~1);
+       LDKOutPoint ret_var = CResult_OutPointDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret;
+       return ret_ref;
 }
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_RouteParametersDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_RouteParametersDecodeErrorZ *val = (LDKCResult_RouteParametersDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKRouteParameters res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_RouteParametersDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_RouteParametersDecodeErrorZ *val = (LDKCResult_RouteParametersDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
+
+static inline struct LDKDecodeError CResult_OutPointDecodeErrorZ_get_err(LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-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]);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_OutPointDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_OutPointDecodeErrorZ* owner_conv = (LDKCResult_OutPointDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_OutPointDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret;
+       return ret_ref;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKCOption_u64Z_ref_from_ptr(uint32_t ptr) {
-       LDKCOption_u64Z *obj = (LDKCOption_u64Z*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKCOption_u64Z_Some: {
-                       return 0 /* LDKCOption_u64Z - Some */; (void) obj->some;
-               }
-               case LDKCOption_u64Z_None: {
-                       return 0 /* LDKCOption_u64Z - None */;
-               }
-               default: abort();
-       }
+
+static inline struct LDKSecretKey CResult_SecretKeyErrorZ_get_ok(LDKCResult_SecretKeyErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
 }
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PayeeDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_PayeeDecodeErrorZ *val = (LDKCResult_PayeeDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKPayee res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PayeeDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_PayeeDecodeErrorZ *val = (LDKCResult_PayeeDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_CResult_SecretKeyErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_SecretKeyErrorZ* owner_conv = (LDKCResult_SecretKeyErrorZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, CResult_SecretKeyErrorZ_get_ok(owner_conv).bytes, 32);
+       return ret_arr;
 }
-static inline LDKCVec_RouteHintHopZ CVec_RouteHintHopZ_clone(const LDKCVec_RouteHintHopZ *orig) {
-       LDKCVec_RouteHintHopZ ret = { .data = MALLOC(sizeof(LDKRouteHintHop) * orig->datalen, "LDKCVec_RouteHintHopZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = RouteHintHop_clone(&orig->data[i]);
+
+static inline enum LDKSecp256k1Error CResult_SecretKeyErrorZ_get_err(LDKCResult_SecretKeyErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_SecretKeyErrorZ_get_err(uint32_t owner) {
+       LDKCResult_SecretKeyErrorZ* owner_conv = (LDKCResult_SecretKeyErrorZ*)(owner & ~1);
+       uint32_t ret_conv = LDKSecp256k1Error_to_js(CResult_SecretKeyErrorZ_get_err(owner_conv));
+       return ret_conv;
+}
+
+static inline struct LDKPublicKey CResult_PublicKeyErrorZ_get_ok(LDKCResult_PublicKeyErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
+}
+int8_tArray  __attribute__((visibility("default"))) TS_CResult_PublicKeyErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_PublicKeyErrorZ* owner_conv = (LDKCResult_PublicKeyErrorZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, CResult_PublicKeyErrorZ_get_ok(owner_conv).compressed_form, 33);
+       return ret_arr;
+}
+
+static inline enum LDKSecp256k1Error CResult_PublicKeyErrorZ_get_err(LDKCResult_PublicKeyErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PublicKeyErrorZ_get_err(uint32_t owner) {
+       LDKCResult_PublicKeyErrorZ* owner_conv = (LDKCResult_PublicKeyErrorZ*)(owner & ~1);
+       uint32_t ret_conv = LDKSecp256k1Error_to_js(CResult_PublicKeyErrorZ_get_err(owner_conv));
+       return ret_conv;
+}
+
+static inline struct LDKTxCreationKeys CResult_TxCreationKeysDecodeErrorZ_get_ok(LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return TxCreationKeys_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_TxCreationKeysDecodeErrorZ* owner_conv = (LDKCResult_TxCreationKeysDecodeErrorZ*)(owner & ~1);
+       LDKTxCreationKeys ret_var = CResult_TxCreationKeysDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret;
+       return ret_ref;
 }
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_RouteHintDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_RouteHintDecodeErrorZ *val = (LDKCResult_RouteHintDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKRouteHint res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_RouteHintDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_RouteHintDecodeErrorZ *val = (LDKCResult_RouteHintDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_RouteHintHopDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_RouteHintHopDecodeErrorZ *val = (LDKCResult_RouteHintHopDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKRouteHintHop res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_RouteHintHopDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_RouteHintHopDecodeErrorZ *val = (LDKCResult_RouteHintHopDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
+
+static inline struct LDKDecodeError CResult_TxCreationKeysDecodeErrorZ_get_err(LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-static inline LDKCVec_ChannelDetailsZ CVec_ChannelDetailsZ_clone(const LDKCVec_ChannelDetailsZ *orig) {
-       LDKCVec_ChannelDetailsZ ret = { .data = MALLOC(sizeof(LDKChannelDetails) * orig->datalen, "LDKCVec_ChannelDetailsZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = ChannelDetails_clone(&orig->data[i]);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_TxCreationKeysDecodeErrorZ* owner_conv = (LDKCResult_TxCreationKeysDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_TxCreationKeysDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret;
+       return ret_ref;
 }
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_TxOutAccessErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_TxOutAccessErrorZ *val = (LDKCResult_TxOutAccessErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       uint64_t res_ref = ((uint64_t)&(*val->contents.result)) | 1;
-       return (uint64_t)res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_TxOutAccessErrorZ_get_err(uint32_t arg) {
-       LDKCResult_TxOutAccessErrorZ *val = (LDKCResult_TxOutAccessErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint32_t err_conv = LDKAccessError_to_js((*val->contents.err));
-       return err_conv;
-}
-static inline uintptr_t C2Tuple_usizeTransactionZ_get_a(LDKC2Tuple_usizeTransactionZ *NONNULL_PTR tuple){
-       return tuple->a;
-}
-int64_t  __attribute__((visibility("default"))) TS_C2Tuple_usizeTransactionZ_get_a(uint32_t tuple) {
-       LDKC2Tuple_usizeTransactionZ* tuple_conv = (LDKC2Tuple_usizeTransactionZ*)(tuple & ~1);
-       int64_t ret_val = C2Tuple_usizeTransactionZ_get_a(tuple_conv);
-       return ret_val;
-}
-
-static inline struct LDKTransaction C2Tuple_usizeTransactionZ_get_b(LDKC2Tuple_usizeTransactionZ *NONNULL_PTR tuple){
-       return tuple->b;
-}
-int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_usizeTransactionZ_get_b(uint32_t tuple) {
-       LDKC2Tuple_usizeTransactionZ* tuple_conv = (LDKC2Tuple_usizeTransactionZ*)(tuple & ~1);
-       LDKTransaction ret_var = C2Tuple_usizeTransactionZ_get_b(tuple_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       Transaction_free(ret_var);
-       return ret_arr;
+
+static inline struct LDKChannelPublicKeys CResult_ChannelPublicKeysDecodeErrorZ_get_ok(LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ChannelPublicKeys_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelPublicKeysDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ChannelPublicKeysDecodeErrorZ* owner_conv = (LDKCResult_ChannelPublicKeysDecodeErrorZ*)(owner & ~1);
+       LDKChannelPublicKeys ret_var = CResult_ChannelPublicKeysDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-static inline LDKCVec_C2Tuple_usizeTransactionZZ CVec_C2Tuple_usizeTransactionZZ_clone(const LDKCVec_C2Tuple_usizeTransactionZZ *orig) {
-       LDKCVec_C2Tuple_usizeTransactionZZ ret = { .data = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ) * orig->datalen, "LDKCVec_C2Tuple_usizeTransactionZZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = C2Tuple_usizeTransactionZ_clone(&orig->data[i]);
+static inline struct LDKDecodeError CResult_ChannelPublicKeysDecodeErrorZ_get_err(LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelPublicKeysDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ChannelPublicKeysDecodeErrorZ* owner_conv = (LDKCResult_ChannelPublicKeysDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ChannelPublicKeysDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret;
+       return ret_ref;
 }
-static inline LDKCVec_TxidZ CVec_ThirtyTwoBytesZ_clone(const LDKCVec_TxidZ *orig) {
-       LDKCVec_TxidZ ret = { .data = MALLOC(sizeof(LDKThirtyTwoBytes) * orig->datalen, "LDKCVec_TxidZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = ThirtyTwoBytes_clone(&orig->data[i]);
+
+static inline struct LDKTxCreationKeys CResult_TxCreationKeysErrorZ_get_ok(LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return TxCreationKeys_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_TxCreationKeysErrorZ* owner_conv = (LDKCResult_TxCreationKeysErrorZ*)(owner & ~1);
+       LDKTxCreationKeys ret_var = CResult_TxCreationKeysErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret;
+       return ret_ref;
 }
-void  __attribute__((visibility("default"))) TS_LDKCResult_NoneChannelMonitorUpdateErrZ_get_ok(uint32_t arg) {
-       LDKCResult_NoneChannelMonitorUpdateErrZ *val = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       return *val->contents.result;
+
+static inline enum LDKSecp256k1Error CResult_TxCreationKeysErrorZ_get_err(LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
 }
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_NoneChannelMonitorUpdateErrZ_get_err(uint32_t arg) {
-       LDKCResult_NoneChannelMonitorUpdateErrZ *val = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint32_t err_conv = LDKChannelMonitorUpdateErr_to_js((*val->contents.err));
-       return err_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysErrorZ_get_err(uint32_t owner) {
+       LDKCResult_TxCreationKeysErrorZ* owner_conv = (LDKCResult_TxCreationKeysErrorZ*)(owner & ~1);
+       uint32_t ret_conv = LDKSecp256k1Error_to_js(CResult_TxCreationKeysErrorZ_get_err(owner_conv));
+       return ret_conv;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKMonitorEvent_ref_from_ptr(uint32_t ptr) {
-       LDKMonitorEvent *obj = (LDKMonitorEvent*)(ptr & ~1);
+
+uint32_t __attribute__((visibility("default"))) TS_LDKCOption_u32Z_ref_from_ptr(uint32_t ptr) {
+       LDKCOption_u32Z *obj = (LDKCOption_u32Z*)(ptr & ~1);
        switch(obj->tag) {
-               case LDKMonitorEvent_HTLCEvent: {
-                       LDKHTLCUpdate htlc_event_var = obj->htlc_event;
-                       uint64_t htlc_event_ref = 0;
-                       CHECK((((uint64_t)htlc_event_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&htlc_event_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_event_var);
-                       htlc_event_ref = (uint64_t)htlc_event_var.inner & ~1;
-                       return 0 /* LDKMonitorEvent - HTLCEvent */; (void) htlc_event_ref;
-               }
-               case LDKMonitorEvent_CommitmentTxConfirmed: {
-                       LDKOutPoint commitment_tx_confirmed_var = obj->commitment_tx_confirmed;
-                       uint64_t commitment_tx_confirmed_ref = 0;
-                       CHECK((((uint64_t)commitment_tx_confirmed_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&commitment_tx_confirmed_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_tx_confirmed_var);
-                       commitment_tx_confirmed_ref = (uint64_t)commitment_tx_confirmed_var.inner & ~1;
-                       return 0 /* LDKMonitorEvent - CommitmentTxConfirmed */; (void) commitment_tx_confirmed_ref;
-               }
-               case LDKMonitorEvent_UpdateCompleted: {
-                       LDKOutPoint funding_txo_var = obj->update_completed.funding_txo;
-                       uint64_t funding_txo_ref = 0;
-                       CHECK((((uint64_t)funding_txo_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&funding_txo_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_var);
-                       funding_txo_ref = (uint64_t)funding_txo_var.inner & ~1;
-                       return 0 /* LDKMonitorEvent - UpdateCompleted */; (void) funding_txo_ref; (void) obj->update_completed.monitor_update_id;
+               case LDKCOption_u32Z_Some: {
+                       return 0 /* LDKCOption_u32Z - Some */; (void) obj->some;
                }
-               case LDKMonitorEvent_UpdateFailed: {
-                       LDKOutPoint update_failed_var = obj->update_failed;
-                       uint64_t update_failed_ref = 0;
-                       CHECK((((uint64_t)update_failed_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&update_failed_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_failed_var);
-                       update_failed_ref = (uint64_t)update_failed_var.inner & ~1;
-                       return 0 /* LDKMonitorEvent - UpdateFailed */; (void) update_failed_ref;
+               case LDKCOption_u32Z_None: {
+                       return 0 /* LDKCOption_u32Z - None */;
                }
                default: abort();
        }
 }
-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;
+static inline struct LDKHTLCOutputInCommitment CResult_HTLCOutputInCommitmentDecodeErrorZ_get_ok(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return HTLCOutputInCommitment_clone(&*owner->contents.result);
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKCOption_C2Tuple_usizeTransactionZZ_ref_from_ptr(uint32_t ptr) {
-       LDKCOption_C2Tuple_usizeTransactionZZ *obj = (LDKCOption_C2Tuple_usizeTransactionZZ*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKCOption_C2Tuple_usizeTransactionZZ_Some: {
-                       LDKC2Tuple_usizeTransactionZ* some_conv = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ), "LDKC2Tuple_usizeTransactionZ");
-                       *some_conv = obj->some;
-                       *some_conv = C2Tuple_usizeTransactionZ_clone(some_conv);
-                       return 0 /* LDKCOption_C2Tuple_usizeTransactionZZ - Some */; (void) ((uint64_t)some_conv);
-               }
-               case LDKCOption_C2Tuple_usizeTransactionZZ_None: {
-                       return 0 /* LDKCOption_C2Tuple_usizeTransactionZZ - None */;
-               }
-               default: abort();
+uint32_t  __attribute__((visibility("default"))) TS_CResult_HTLCOutputInCommitmentDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* owner_conv = (LDKCResult_HTLCOutputInCommitmentDecodeErrorZ*)(owner & ~1);
+       LDKHTLCOutputInCommitment ret_var = CResult_HTLCOutputInCommitmentDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKClosureReason_ref_from_ptr(uint32_t ptr) {
-       LDKClosureReason *obj = (LDKClosureReason*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKClosureReason_CounterpartyForceClosed: {
-                       LDKStr peer_msg_str = obj->counterparty_force_closed.peer_msg;
-                       jstring peer_msg_conv = str_ref_to_ts(peer_msg_str.chars, peer_msg_str.len);
-                       return 0 /* LDKClosureReason - CounterpartyForceClosed */; (void) peer_msg_conv;
-               }
-               case LDKClosureReason_HolderForceClosed: {
-                       return 0 /* LDKClosureReason - HolderForceClosed */;
-               }
-               case LDKClosureReason_CooperativeClosure: {
-                       return 0 /* LDKClosureReason - CooperativeClosure */;
-               }
-               case LDKClosureReason_CommitmentTxConfirmed: {
-                       return 0 /* LDKClosureReason - CommitmentTxConfirmed */;
-               }
-               case LDKClosureReason_FundingTimedOut: {
-                       return 0 /* LDKClosureReason - FundingTimedOut */;
-               }
-               case LDKClosureReason_ProcessingError: {
-                       LDKStr err_str = obj->processing_error.err;
-                       jstring err_conv = str_ref_to_ts(err_str.chars, err_str.len);
-                       return 0 /* LDKClosureReason - ProcessingError */; (void) err_conv;
-               }
-               case LDKClosureReason_DisconnectedPeer: {
-                       return 0 /* LDKClosureReason - DisconnectedPeer */;
-               }
-               case LDKClosureReason_OutdatedChannelManager: {
-                       return 0 /* LDKClosureReason - OutdatedChannelManager */;
-               }
-               default: abort();
+
+static inline struct LDKDecodeError CResult_HTLCOutputInCommitmentDecodeErrorZ_get_err(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_HTLCOutputInCommitmentDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* owner_conv = (LDKCResult_HTLCOutputInCommitmentDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_HTLCOutputInCommitmentDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKCOption_ClosureReasonZ_ref_from_ptr(uint32_t ptr) {
-       LDKCOption_ClosureReasonZ *obj = (LDKCOption_ClosureReasonZ*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKCOption_ClosureReasonZ_Some: {
-                       uint64_t some_ref = ((uint64_t)&obj->some) | 1;
-                       return 0 /* LDKCOption_ClosureReasonZ - Some */; (void) some_ref;
-               }
-               case LDKCOption_ClosureReasonZ_None: {
-                       return 0 /* LDKCOption_ClosureReasonZ - None */;
-               }
-               default: abort();
+
+static inline struct LDKCounterpartyChannelTransactionParameters CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_ok(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return CounterpartyChannelTransactionParameters_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* owner_conv = (LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ*)(owner & ~1);
+       LDKCounterpartyChannelTransactionParameters ret_var = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_COption_ClosureReasonZDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_COption_ClosureReasonZDecodeErrorZ *val = (LDKCResult_COption_ClosureReasonZDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       uint64_t res_ref = ((uint64_t)&(*val->contents.result)) | 1;
-       return res_ref;
+
+static inline struct LDKDecodeError CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_err(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_COption_ClosureReasonZDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_COption_ClosureReasonZDecodeErrorZ *val = (LDKCResult_COption_ClosureReasonZDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* owner_conv = (LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKNetworkUpdate_ref_from_ptr(uint32_t ptr) {
-       LDKNetworkUpdate *obj = (LDKNetworkUpdate*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKNetworkUpdate_ChannelUpdateMessage: {
-                       LDKChannelUpdate msg_var = obj->channel_update_message.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKNetworkUpdate - ChannelUpdateMessage */; (void) msg_ref;
-               }
-               case LDKNetworkUpdate_ChannelClosed: {
-                       return 0 /* LDKNetworkUpdate - ChannelClosed */; (void) obj->channel_closed.short_channel_id; (void) obj->channel_closed.is_permanent;
-               }
-               case LDKNetworkUpdate_NodeFailure: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->node_failure.node_id.compressed_form, 33);
-                       return 0 /* LDKNetworkUpdate - NodeFailure */; (void) node_id_arr; (void) obj->node_failure.is_permanent;
-               }
-               default: abort();
+
+static inline struct LDKChannelTransactionParameters CResult_ChannelTransactionParametersDecodeErrorZ_get_ok(LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ChannelTransactionParameters_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelTransactionParametersDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ChannelTransactionParametersDecodeErrorZ* owner_conv = (LDKCResult_ChannelTransactionParametersDecodeErrorZ*)(owner & ~1);
+       LDKChannelTransactionParameters ret_var = CResult_ChannelTransactionParametersDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKCOption_NetworkUpdateZ_ref_from_ptr(uint32_t ptr) {
-       LDKCOption_NetworkUpdateZ *obj = (LDKCOption_NetworkUpdateZ*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKCOption_NetworkUpdateZ_Some: {
-                       uint64_t some_ref = ((uint64_t)&obj->some) | 1;
-                       return 0 /* LDKCOption_NetworkUpdateZ - Some */; (void) some_ref;
-               }
-               case LDKCOption_NetworkUpdateZ_None: {
-                       return 0 /* LDKCOption_NetworkUpdateZ - None */;
-               }
-               default: abort();
+
+static inline struct LDKDecodeError CResult_ChannelTransactionParametersDecodeErrorZ_get_err(LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelTransactionParametersDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ChannelTransactionParametersDecodeErrorZ* owner_conv = (LDKCResult_ChannelTransactionParametersDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ChannelTransactionParametersDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKSpendableOutputDescriptor_ref_from_ptr(uint32_t ptr) {
-       LDKSpendableOutputDescriptor *obj = (LDKSpendableOutputDescriptor*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKSpendableOutputDescriptor_StaticOutput: {
-                       LDKOutPoint outpoint_var = obj->static_output.outpoint;
-                       uint64_t outpoint_ref = 0;
-                       CHECK((((uint64_t)outpoint_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&outpoint_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(outpoint_var);
-                       outpoint_ref = (uint64_t)outpoint_var.inner & ~1;
-                       uint64_t output_ref = ((uint64_t)&obj->static_output.output) | 1;
-                       return 0 /* LDKSpendableOutputDescriptor - StaticOutput */; (void) outpoint_ref; (void) (uint64_t)output_ref;
-               }
-               case LDKSpendableOutputDescriptor_DelayedPaymentOutput: {
-                       LDKDelayedPaymentOutputDescriptor delayed_payment_output_var = obj->delayed_payment_output;
-                       uint64_t delayed_payment_output_ref = 0;
-                       CHECK((((uint64_t)delayed_payment_output_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&delayed_payment_output_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(delayed_payment_output_var);
-                       delayed_payment_output_ref = (uint64_t)delayed_payment_output_var.inner & ~1;
-                       return 0 /* LDKSpendableOutputDescriptor - DelayedPaymentOutput */; (void) delayed_payment_output_ref;
-               }
-               case LDKSpendableOutputDescriptor_StaticPaymentOutput: {
-                       LDKStaticPaymentOutputDescriptor static_payment_output_var = obj->static_payment_output;
-                       uint64_t static_payment_output_ref = 0;
-                       CHECK((((uint64_t)static_payment_output_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&static_payment_output_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(static_payment_output_var);
-                       static_payment_output_ref = (uint64_t)static_payment_output_var.inner & ~1;
-                       return 0 /* LDKSpendableOutputDescriptor - StaticPaymentOutput */; (void) static_payment_output_ref;
-               }
-               default: abort();
+
+static inline struct LDKHolderCommitmentTransaction CResult_HolderCommitmentTransactionDecodeErrorZ_get_ok(LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return HolderCommitmentTransaction_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_HolderCommitmentTransactionDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_HolderCommitmentTransactionDecodeErrorZ* owner_conv = (LDKCResult_HolderCommitmentTransactionDecodeErrorZ*)(owner & ~1);
+       LDKHolderCommitmentTransaction ret_var = CResult_HolderCommitmentTransactionDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-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]);
+
+static inline struct LDKDecodeError CResult_HolderCommitmentTransactionDecodeErrorZ_get_err(LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_HolderCommitmentTransactionDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_HolderCommitmentTransactionDecodeErrorZ* owner_conv = (LDKCResult_HolderCommitmentTransactionDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_HolderCommitmentTransactionDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret;
+       return ret_ref;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKPaymentPurpose_ref_from_ptr(uint32_t ptr) {
-       LDKPaymentPurpose *obj = (LDKPaymentPurpose*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKPaymentPurpose_InvoicePayment: {
-                       int8_tArray payment_preimage_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(payment_preimage_arr + 4), obj->invoice_payment.payment_preimage.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->invoice_payment.payment_secret.data, 32);
-                       return 0 /* LDKPaymentPurpose - InvoicePayment */; (void) payment_preimage_arr; (void) payment_secret_arr;
-               }
-               case LDKPaymentPurpose_SpontaneousPayment: {
-                       int8_tArray spontaneous_payment_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(spontaneous_payment_arr + 4), obj->spontaneous_payment.data, 32);
-                       return 0 /* LDKPaymentPurpose - SpontaneousPayment */; (void) spontaneous_payment_arr;
-               }
-               default: abort();
+
+static inline struct LDKBuiltCommitmentTransaction CResult_BuiltCommitmentTransactionDecodeErrorZ_get_ok(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return BuiltCommitmentTransaction_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_BuiltCommitmentTransactionDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* owner_conv = (LDKCResult_BuiltCommitmentTransactionDecodeErrorZ*)(owner & ~1);
+       LDKBuiltCommitmentTransaction ret_var = CResult_BuiltCommitmentTransactionDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKEvent_ref_from_ptr(uint32_t ptr) {
-       LDKEvent *obj = (LDKEvent*)(ptr & ~1);
-       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_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);
-                       uint64_t purpose_ref = ((uint64_t)&obj->payment_received.purpose) | 1;
-                       return 0 /* LDKEvent - PaymentReceived */; (void) payment_hash_arr; (void) obj->payment_received.amt; (void) purpose_ref;
-               }
-               case LDKEvent_PaymentSent: {
-                       int8_tArray payment_id_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(payment_id_arr + 4), obj->payment_sent.payment_id.data, 32);
-                       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);
-                       int8_tArray payment_hash_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(payment_hash_arr + 4), obj->payment_sent.payment_hash.data, 32);
-                       uint64_t fee_paid_msat_ref = ((uint64_t)&obj->payment_sent.fee_paid_msat) | 1;
-                       return 0 /* LDKEvent - PaymentSent */; (void) payment_id_arr; (void) payment_preimage_arr; (void) payment_hash_arr; (void) fee_paid_msat_ref;
-               }
-               case LDKEvent_PaymentPathFailed: {
-                       int8_tArray payment_id_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(payment_id_arr + 4), obj->payment_path_failed.payment_id.data, 32);
-                       int8_tArray payment_hash_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(payment_hash_arr + 4), obj->payment_path_failed.payment_hash.data, 32);
-                       uint64_t network_update_ref = ((uint64_t)&obj->payment_path_failed.network_update) | 1;
-                       LDKCVec_RouteHopZ path_var = obj->payment_path_failed.path;
-                       uint32_tArray path_arr = NULL;
-                       path_arr = init_arr(path_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
-                       uint32_t *path_arr_ptr = (uint32_t*)(path_arr + 4);
-                       for (size_t k = 0; k < path_var.datalen; k++) {
-                               LDKRouteHop path_conv_10_var = path_var.data[k];
-                               uint64_t path_conv_10_ref = 0;
-                               CHECK((((uint64_t)path_conv_10_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                               CHECK((((uint64_t)&path_conv_10_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_var);
-                               path_conv_10_ref = (uint64_t)path_conv_10_var.inner & ~1;
-                               path_arr_ptr[k] = path_conv_10_ref;
-                       }
-                       
-                       uint64_t short_channel_id_ref = ((uint64_t)&obj->payment_path_failed.short_channel_id) | 1;
-                       LDKRouteParameters retry_var = obj->payment_path_failed.retry;
-                       uint64_t retry_ref = 0;
-                       if ((uint64_t)retry_var.inner > 4096) {
-                               CHECK((((uint64_t)retry_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                               CHECK((((uint64_t)&retry_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(retry_var);
-                               retry_ref = (uint64_t)retry_var.inner & ~1;
-                       }
-                       return 0 /* LDKEvent - PaymentPathFailed */; (void) payment_id_arr; (void) payment_hash_arr; (void) obj->payment_path_failed.rejected_by_dest; (void) network_update_ref; (void) obj->payment_path_failed.all_paths_failed; (void) path_arr; (void) short_channel_id_ref; (void) retry_ref;
-               }
-               case LDKEvent_PaymentFailed: {
-                       int8_tArray payment_id_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(payment_id_arr + 4), obj->payment_failed.payment_id.data, 32);
-                       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_id_arr; (void) payment_hash_arr;
-               }
-               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 = NULL;
-                       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++) {
-                               uint64_t outputs_conv_27_ref = ((uint64_t)&outputs_var.data[b]) | 1;
-                               outputs_arr_ptr[b] = outputs_conv_27_ref;
-                       }
-                       
-                       return 0 /* LDKEvent - SpendableOutputs */; (void) outputs_arr;
-               }
-               case LDKEvent_PaymentForwarded: {
-                       uint64_t fee_earned_msat_ref = ((uint64_t)&obj->payment_forwarded.fee_earned_msat) | 1;
-                       return 0 /* LDKEvent - PaymentForwarded */; (void) fee_earned_msat_ref; (void) obj->payment_forwarded.claim_from_onchain_tx;
-               }
-               case LDKEvent_ChannelClosed: {
-                       int8_tArray channel_id_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(channel_id_arr + 4), obj->channel_closed.channel_id.data, 32);
-                       uint64_t reason_ref = ((uint64_t)&obj->channel_closed.reason) | 1;
-                       return 0 /* LDKEvent - ChannelClosed */; (void) channel_id_arr; (void) obj->channel_closed.user_channel_id; (void) reason_ref;
-               }
-               case LDKEvent_DiscardFunding: {
-                       int8_tArray channel_id_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(channel_id_arr + 4), obj->discard_funding.channel_id.data, 32);
-                       LDKTransaction transaction_var = obj->discard_funding.transaction;
-                       int8_tArray transaction_arr = init_arr(transaction_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(transaction_arr + 4), transaction_var.data, transaction_var.datalen);
-                       return 0 /* LDKEvent - DiscardFunding */; (void) channel_id_arr; (void) transaction_arr;
-               }
-               case LDKEvent_PaymentPathSuccessful: {
-                       int8_tArray payment_id_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(payment_id_arr + 4), obj->payment_path_successful.payment_id.data, 32);
-                       int8_tArray payment_hash_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(payment_hash_arr + 4), obj->payment_path_successful.payment_hash.data, 32);
-                       LDKCVec_RouteHopZ path_var = obj->payment_path_successful.path;
-                       uint32_tArray path_arr = NULL;
-                       path_arr = init_arr(path_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
-                       uint32_t *path_arr_ptr = (uint32_t*)(path_arr + 4);
-                       for (size_t k = 0; k < path_var.datalen; k++) {
-                               LDKRouteHop path_conv_10_var = path_var.data[k];
-                               uint64_t path_conv_10_ref = 0;
-                               CHECK((((uint64_t)path_conv_10_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                               CHECK((((uint64_t)&path_conv_10_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_var);
-                               path_conv_10_ref = (uint64_t)path_conv_10_var.inner & ~1;
-                               path_arr_ptr[k] = path_conv_10_ref;
-                       }
-                       
-                       return 0 /* LDKEvent - PaymentPathSuccessful */; (void) payment_id_arr; (void) payment_hash_arr; (void) path_arr;
-               }
-               default: abort();
+
+static inline struct LDKDecodeError CResult_BuiltCommitmentTransactionDecodeErrorZ_get_err(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_BuiltCommitmentTransactionDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* owner_conv = (LDKCResult_BuiltCommitmentTransactionDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_BuiltCommitmentTransactionDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKCOption_EventZ_ref_from_ptr(uint32_t ptr) {
-       LDKCOption_EventZ *obj = (LDKCOption_EventZ*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKCOption_EventZ_Some: {
-                       uint64_t some_ref = ((uint64_t)&obj->some) | 1;
-                       return 0 /* LDKCOption_EventZ - Some */; (void) some_ref;
-               }
-               case LDKCOption_EventZ_None: {
-                       return 0 /* LDKCOption_EventZ - None */;
-               }
-               default: abort();
+
+static inline struct LDKTrustedClosingTransaction *CResult_TrustedClosingTransactionNoneZ_get_ok(LDKCResult_TrustedClosingTransactionNoneZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return &*owner->contents.result;
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_TrustedClosingTransactionNoneZ_get_ok(uint32_t owner) {
+       LDKCResult_TrustedClosingTransactionNoneZ* owner_conv = (LDKCResult_TrustedClosingTransactionNoneZ*)(owner & ~1);
+       LDKTrustedClosingTransaction ret_var = *CResult_TrustedClosingTransactionNoneZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner & ~1;
+       return ret_ref;
+}
+
+static inline void CResult_TrustedClosingTransactionNoneZ_get_err(LDKCResult_TrustedClosingTransactionNoneZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
+}
+void  __attribute__((visibility("default"))) TS_CResult_TrustedClosingTransactionNoneZ_get_err(uint32_t owner) {
+       LDKCResult_TrustedClosingTransactionNoneZ* owner_conv = (LDKCResult_TrustedClosingTransactionNoneZ*)(owner & ~1);
+       CResult_TrustedClosingTransactionNoneZ_get_err(owner_conv);
+}
+
+static inline struct LDKCommitmentTransaction CResult_CommitmentTransactionDecodeErrorZ_get_ok(LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return CommitmentTransaction_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_CommitmentTransactionDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_CommitmentTransactionDecodeErrorZ* owner_conv = (LDKCResult_CommitmentTransactionDecodeErrorZ*)(owner & ~1);
+       LDKCommitmentTransaction ret_var = CResult_CommitmentTransactionDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_COption_EventZDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_COption_EventZDecodeErrorZ *val = (LDKCResult_COption_EventZDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       uint64_t res_ref = ((uint64_t)&(*val->contents.result)) | 1;
-       return res_ref;
+
+static inline struct LDKDecodeError CResult_CommitmentTransactionDecodeErrorZ_get_err(LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_COption_EventZDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_COption_EventZDecodeErrorZ *val = (LDKCResult_COption_EventZDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_CommitmentTransactionDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_CommitmentTransactionDecodeErrorZ* owner_conv = (LDKCResult_CommitmentTransactionDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_CommitmentTransactionDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKErrorAction_ref_from_ptr(uint32_t ptr) {
-       LDKErrorAction *obj = (LDKErrorAction*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKErrorAction_DisconnectPeer: {
-                       LDKErrorMessage msg_var = obj->disconnect_peer.msg;
-                       uint64_t msg_ref = 0;
-                       if ((uint64_t)msg_var.inner > 4096) {
-                               CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                               CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                               msg_ref = (uint64_t)msg_var.inner & ~1;
-                       }
-                       return 0 /* LDKErrorAction - DisconnectPeer */; (void) msg_ref;
-               }
-               case LDKErrorAction_IgnoreError: {
-                       return 0 /* LDKErrorAction - IgnoreError */;
-               }
-               case LDKErrorAction_IgnoreAndLog: {
-                       uint32_t ignore_and_log_conv = LDKLevel_to_js(obj->ignore_and_log);
-                       return 0 /* LDKErrorAction - IgnoreAndLog */; (void) ignore_and_log_conv;
-               }
-               case LDKErrorAction_IgnoreDuplicateGossip: {
-                       return 0 /* LDKErrorAction - IgnoreDuplicateGossip */;
-               }
-               case LDKErrorAction_SendErrorMessage: {
-                       LDKErrorMessage msg_var = obj->send_error_message.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKErrorAction - SendErrorMessage */; (void) msg_ref;
-               }
-               default: abort();
+
+static inline struct LDKTrustedCommitmentTransaction *CResult_TrustedCommitmentTransactionNoneZ_get_ok(LDKCResult_TrustedCommitmentTransactionNoneZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return &*owner->contents.result;
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_TrustedCommitmentTransactionNoneZ_get_ok(uint32_t owner) {
+       LDKCResult_TrustedCommitmentTransactionNoneZ* owner_conv = (LDKCResult_TrustedCommitmentTransactionNoneZ*)(owner & ~1);
+       LDKTrustedCommitmentTransaction ret_var = *CResult_TrustedCommitmentTransactionNoneZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner & ~1;
+       return ret_ref;
+}
+
+static inline void CResult_TrustedCommitmentTransactionNoneZ_get_err(LDKCResult_TrustedCommitmentTransactionNoneZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
+}
+void  __attribute__((visibility("default"))) TS_CResult_TrustedCommitmentTransactionNoneZ_get_err(uint32_t owner) {
+       LDKCResult_TrustedCommitmentTransactionNoneZ* owner_conv = (LDKCResult_TrustedCommitmentTransactionNoneZ*)(owner & ~1);
+       CResult_TrustedCommitmentTransactionNoneZ_get_err(owner_conv);
+}
+
+static inline struct LDKCVec_SignatureZ CResult_CVec_SignatureZNoneZ_get_ok(LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
+}
+ptrArray  __attribute__((visibility("default"))) TS_CResult_CVec_SignatureZNoneZ_get_ok(uint32_t owner) {
+       LDKCResult_CVec_SignatureZNoneZ* owner_conv = (LDKCResult_CVec_SignatureZNoneZ*)(owner & ~1);
+       LDKCVec_SignatureZ ret_var = CResult_CVec_SignatureZNoneZ_get_ok(owner_conv);
+       ptrArray ret_arr = NULL;
+       ret_arr = init_ptrArray(ret_var.datalen);
+       int8_tArray *ret_arr_ptr = (int8_tArray*)(ret_arr + 4);
+       for (size_t m = 0; m < ret_var.datalen; m++) {
+               int8_tArray ret_conv_12_arr = init_int8_tArray(64);
+               memcpy(ret_conv_12_arr->elems, ret_var.data[m].compact_form, 64);
+               ret_arr_ptr[m] = ret_conv_12_arr;
        }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKMessageSendEvent_ref_from_ptr(uint32_t ptr) {
-       LDKMessageSendEvent *obj = (LDKMessageSendEvent*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKMessageSendEvent_SendAcceptChannel: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->send_accept_channel.node_id.compressed_form, 33);
-                       LDKAcceptChannel msg_var = obj->send_accept_channel.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - SendAcceptChannel */; (void) node_id_arr; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_SendOpenChannel: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->send_open_channel.node_id.compressed_form, 33);
-                       LDKOpenChannel msg_var = obj->send_open_channel.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - SendOpenChannel */; (void) node_id_arr; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_SendFundingCreated: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->send_funding_created.node_id.compressed_form, 33);
-                       LDKFundingCreated msg_var = obj->send_funding_created.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - SendFundingCreated */; (void) node_id_arr; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_SendFundingSigned: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->send_funding_signed.node_id.compressed_form, 33);
-                       LDKFundingSigned msg_var = obj->send_funding_signed.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - SendFundingSigned */; (void) node_id_arr; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_SendFundingLocked: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->send_funding_locked.node_id.compressed_form, 33);
-                       LDKFundingLocked msg_var = obj->send_funding_locked.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - SendFundingLocked */; (void) node_id_arr; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_SendAnnouncementSignatures: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->send_announcement_signatures.node_id.compressed_form, 33);
-                       LDKAnnouncementSignatures msg_var = obj->send_announcement_signatures.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - SendAnnouncementSignatures */; (void) node_id_arr; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_UpdateHTLCs: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->update_htl_cs.node_id.compressed_form, 33);
-                       LDKCommitmentUpdate updates_var = obj->update_htl_cs.updates;
-                       uint64_t updates_ref = 0;
-                       CHECK((((uint64_t)updates_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&updates_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(updates_var);
-                       updates_ref = (uint64_t)updates_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - UpdateHTLCs */; (void) node_id_arr; (void) updates_ref;
-               }
-               case LDKMessageSendEvent_SendRevokeAndACK: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->send_revoke_and_ack.node_id.compressed_form, 33);
-                       LDKRevokeAndACK msg_var = obj->send_revoke_and_ack.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - SendRevokeAndACK */; (void) node_id_arr; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_SendClosingSigned: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->send_closing_signed.node_id.compressed_form, 33);
-                       LDKClosingSigned msg_var = obj->send_closing_signed.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - SendClosingSigned */; (void) node_id_arr; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_SendShutdown: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->send_shutdown.node_id.compressed_form, 33);
-                       LDKShutdown msg_var = obj->send_shutdown.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - SendShutdown */; (void) node_id_arr; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_SendChannelReestablish: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->send_channel_reestablish.node_id.compressed_form, 33);
-                       LDKChannelReestablish msg_var = obj->send_channel_reestablish.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - SendChannelReestablish */; (void) node_id_arr; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_BroadcastChannelAnnouncement: {
-                       LDKChannelAnnouncement msg_var = obj->broadcast_channel_announcement.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       LDKChannelUpdate update_msg_var = obj->broadcast_channel_announcement.update_msg;
-                       uint64_t update_msg_ref = 0;
-                       CHECK((((uint64_t)update_msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&update_msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_msg_var);
-                       update_msg_ref = (uint64_t)update_msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - BroadcastChannelAnnouncement */; (void) msg_ref; (void) update_msg_ref;
-               }
-               case LDKMessageSendEvent_BroadcastNodeAnnouncement: {
-                       LDKNodeAnnouncement msg_var = obj->broadcast_node_announcement.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - BroadcastNodeAnnouncement */; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_BroadcastChannelUpdate: {
-                       LDKChannelUpdate msg_var = obj->broadcast_channel_update.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - BroadcastChannelUpdate */; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_SendChannelUpdate: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->send_channel_update.node_id.compressed_form, 33);
-                       LDKChannelUpdate msg_var = obj->send_channel_update.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - SendChannelUpdate */; (void) node_id_arr; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_HandleError: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->handle_error.node_id.compressed_form, 33);
-                       uint64_t action_ref = ((uint64_t)&obj->handle_error.action) | 1;
-                       return 0 /* LDKMessageSendEvent - HandleError */; (void) node_id_arr; (void) action_ref;
-               }
-               case LDKMessageSendEvent_SendChannelRangeQuery: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->send_channel_range_query.node_id.compressed_form, 33);
-                       LDKQueryChannelRange msg_var = obj->send_channel_range_query.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - SendChannelRangeQuery */; (void) node_id_arr; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_SendShortIdsQuery: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->send_short_ids_query.node_id.compressed_form, 33);
-                       LDKQueryShortChannelIds msg_var = obj->send_short_ids_query.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - SendShortIdsQuery */; (void) node_id_arr; (void) msg_ref;
-               }
-               case LDKMessageSendEvent_SendReplyChannelRange: {
-                       int8_tArray node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(node_id_arr + 4), obj->send_reply_channel_range.node_id.compressed_form, 33);
-                       LDKReplyChannelRange msg_var = obj->send_reply_channel_range.msg;
-                       uint64_t msg_ref = 0;
-                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-                       msg_ref = (uint64_t)msg_var.inner & ~1;
-                       return 0 /* LDKMessageSendEvent - SendReplyChannelRange */; (void) node_id_arr; (void) msg_ref;
-               }
-               default: abort();
-       }
+
+static inline void CResult_CVec_SignatureZNoneZ_get_err(LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
 }
-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]);
+void  __attribute__((visibility("default"))) TS_CResult_CVec_SignatureZNoneZ_get_err(uint32_t owner) {
+       LDKCResult_CVec_SignatureZNoneZ* owner_conv = (LDKCResult_CVec_SignatureZNoneZ*)(owner & ~1);
+       CResult_CVec_SignatureZNoneZ_get_err(owner_conv);
+}
+
+static inline struct LDKShutdownScript CResult_ShutdownScriptDecodeErrorZ_get_ok(LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ShutdownScript_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ShutdownScriptDecodeErrorZ* owner_conv = (LDKCResult_ShutdownScriptDecodeErrorZ*)(owner & ~1);
+       LDKShutdownScript ret_var = CResult_ShutdownScriptDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret;
+       return ret_ref;
 }
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ScoringParametersDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_ScoringParametersDecodeErrorZ *val = (LDKCResult_ScoringParametersDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKScoringParameters res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ScoringParametersDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_ScoringParametersDecodeErrorZ *val = (LDKCResult_ScoringParametersDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ScorerDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_ScorerDecodeErrorZ *val = (LDKCResult_ScorerDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKScorer res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ScorerDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_ScorerDecodeErrorZ *val = (LDKCResult_ScorerDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_InvoiceFeaturesDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_InvoiceFeaturesDecodeErrorZ *val = (LDKCResult_InvoiceFeaturesDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKInvoiceFeatures res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_InvoiceFeaturesDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_InvoiceFeaturesDecodeErrorZ *val = (LDKCResult_InvoiceFeaturesDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ChannelTypeFeaturesDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_ChannelTypeFeaturesDecodeErrorZ *val = (LDKCResult_ChannelTypeFeaturesDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKChannelTypeFeatures res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ChannelTypeFeaturesDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_ChannelTypeFeaturesDecodeErrorZ *val = (LDKCResult_ChannelTypeFeaturesDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *val = (LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKDelayedPaymentOutputDescriptor res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *val = (LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *val = (LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKStaticPaymentOutputDescriptor res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *val = (LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_SpendableOutputDescriptorDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_SpendableOutputDescriptorDecodeErrorZ *val = (LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       uint64_t res_ref = ((uint64_t)&(*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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-void  __attribute__((visibility("default"))) TS_LDKCResult_NoneNoneZ_get_ok(uint32_t arg) {
-       LDKCResult_NoneNoneZ *val = (LDKCResult_NoneNoneZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       return *val->contents.result;
-}
-void  __attribute__((visibility("default"))) TS_LDKCResult_NoneNoneZ_get_err(uint32_t arg) {
-       LDKCResult_NoneNoneZ *val = (LDKCResult_NoneNoneZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       return *val->contents.err;
-}
-static inline struct LDKSignature C2Tuple_SignatureCVec_SignatureZZ_get_a(LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR tuple){
-       return tuple->a;
-}
-int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_SignatureCVec_SignatureZZ_get_a(uint32_t tuple) {
-       LDKC2Tuple_SignatureCVec_SignatureZZ* tuple_conv = (LDKC2Tuple_SignatureCVec_SignatureZZ*)(tuple & ~1);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), C2Tuple_SignatureCVec_SignatureZZ_get_a(tuple_conv).compact_form, 64);
-       return ret_arr;
-}
-
-static inline struct LDKCVec_SignatureZ C2Tuple_SignatureCVec_SignatureZZ_get_b(LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR tuple){
-       return tuple->b;
-}
-ptrArray  __attribute__((visibility("default"))) TS_C2Tuple_SignatureCVec_SignatureZZ_get_b(uint32_t tuple) {
-       LDKC2Tuple_SignatureCVec_SignatureZZ* tuple_conv = (LDKC2Tuple_SignatureCVec_SignatureZZ*)(tuple & ~1);
-       LDKCVec_SignatureZ ret_var = C2Tuple_SignatureCVec_SignatureZZ_get_b(tuple_conv);
-       ptrArray ret_arr = NULL;
-       ret_arr = init_arr(ret_var.datalen, sizeof(uint32_t), "Native ptrArray Bytes");
-       int8_tArray *ret_arr_ptr = (int8_tArray*)(ret_arr + 4);
-       for (size_t m = 0; m < ret_var.datalen; m++) {
-               int8_tArray ret_conv_12_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-               memcpy((uint8_t*)(ret_conv_12_arr + 4), ret_var.data[m].compact_form, 64);
-               ret_arr_ptr[m] = ret_conv_12_arr;
+
+static inline struct LDKDecodeError CResult_ShutdownScriptDecodeErrorZ_get_err(LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ShutdownScriptDecodeErrorZ* owner_conv = (LDKCResult_ShutdownScriptDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ShutdownScriptDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_ok(uint32_t arg) {
-       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *val = (LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKC2Tuple_SignatureCVec_SignatureZZ* res_conv = MALLOC(sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ), "LDKC2Tuple_SignatureCVec_SignatureZZ");
-       *res_conv = (*val->contents.result);
-       *res_conv = C2Tuple_SignatureCVec_SignatureZZ_clone(res_conv);
-       return ((uint64_t)res_conv);
+static inline struct LDKShutdownScript CResult_ShutdownScriptInvalidShutdownScriptZ_get_ok(LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ShutdownScript_clone(&*owner->contents.result);
 }
-void  __attribute__((visibility("default"))) TS_LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_err(uint32_t arg) {
-       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *val = (LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       return *val->contents.err;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptInvalidShutdownScriptZ_get_ok(uint32_t owner) {
+       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* owner_conv = (LDKCResult_ShutdownScriptInvalidShutdownScriptZ*)(owner & ~1);
+       LDKShutdownScript ret_var = CResult_ShutdownScriptInvalidShutdownScriptZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-int8_tArray  __attribute__((visibility("default"))) TS_LDKCResult_SignatureNoneZ_get_ok(uint32_t arg) {
-       LDKCResult_SignatureNoneZ *val = (LDKCResult_SignatureNoneZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       int8_tArray res_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(res_arr + 4), (*val->contents.result).compact_form, 64);
-       return res_arr;
+
+static inline struct LDKInvalidShutdownScript CResult_ShutdownScriptInvalidShutdownScriptZ_get_err(LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return InvalidShutdownScript_clone(&*owner->contents.err);
 }
-void  __attribute__((visibility("default"))) TS_LDKCResult_SignatureNoneZ_get_err(uint32_t arg) {
-       LDKCResult_SignatureNoneZ *val = (LDKCResult_SignatureNoneZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       return *val->contents.err;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptInvalidShutdownScriptZ_get_err(uint32_t owner) {
+       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* owner_conv = (LDKCResult_ShutdownScriptInvalidShutdownScriptZ*)(owner & ~1);
+       LDKInvalidShutdownScript ret_var = CResult_ShutdownScriptInvalidShutdownScriptZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-typedef struct LDKBaseSign_JCalls {
+
+typedef struct LDKType_JCalls {
        atomic_size_t refcnt;
-       uint32_t get_per_commitment_point_meth;
-       uint32_t release_commitment_secret_meth;
-       uint32_t validate_holder_commitment_meth;
-       uint32_t channel_keys_id_meth;
-       uint32_t sign_counterparty_commitment_meth;
-       uint32_t validate_counterparty_revocation_meth;
-       uint32_t sign_holder_commitment_and_htlcs_meth;
-       uint32_t sign_justice_revoked_output_meth;
-       uint32_t sign_justice_revoked_htlc_meth;
-       uint32_t sign_counterparty_htlc_transaction_meth;
-       uint32_t sign_closing_transaction_meth;
-       uint32_t sign_channel_announcement_meth;
-       uint32_t ready_channel_meth;
-} LDKBaseSign_JCalls;
-static void LDKBaseSign_JCalls_free(void* this_arg) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
+       uint32_t type_id_meth;
+       uint32_t debug_str_meth;
+       uint32_t write_meth;
+} LDKType_JCalls;
+static void LDKType_JCalls_free(void* this_arg) {
+       LDKType_JCalls *j_calls = (LDKType_JCalls*) this_arg;
        if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->get_per_commitment_point_meth);
-               js_free(j_calls->release_commitment_secret_meth);
-               js_free(j_calls->validate_holder_commitment_meth);
-               js_free(j_calls->channel_keys_id_meth);
-               js_free(j_calls->sign_counterparty_commitment_meth);
-               js_free(j_calls->validate_counterparty_revocation_meth);
-               js_free(j_calls->sign_holder_commitment_and_htlcs_meth);
-               js_free(j_calls->sign_justice_revoked_output_meth);
-               js_free(j_calls->sign_justice_revoked_htlc_meth);
-               js_free(j_calls->sign_counterparty_htlc_transaction_meth);
-               js_free(j_calls->sign_closing_transaction_meth);
-               js_free(j_calls->sign_channel_announcement_meth);
-               js_free(j_calls->ready_channel_meth);
+               js_free_function_ptr(j_calls->type_id_meth);
+               js_free_function_ptr(j_calls->debug_str_meth);
+               js_free_function_ptr(j_calls->write_meth);
                FREE(j_calls);
        }
 }
-LDKPublicKey get_per_commitment_point_LDKBaseSign_jcall(const void* this_arg, uint64_t idx) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
-       int8_tArray ret = js_invoke_function_1(j_calls->get_per_commitment_point_meth, idx);
-       LDKPublicKey ret_ref;
-       CHECK(*((uint32_t*)ret) == 33);
-       memcpy(ret_ref.compressed_form, (uint8_t*)(ret + 4), 33);
-       return ret_ref;
-}
-LDKThirtyTwoBytes release_commitment_secret_LDKBaseSign_jcall(const void* this_arg, uint64_t idx) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
-       int8_tArray ret = js_invoke_function_1(j_calls->release_commitment_secret_meth, idx);
-       LDKThirtyTwoBytes ret_ref;
-       CHECK(*((uint32_t*)ret) == 32);
-       memcpy(ret_ref.data, (uint8_t*)(ret + 4), 32);
-       return ret_ref;
+uint16_t type_id_LDKType_jcall(const void* this_arg) {
+       LDKType_JCalls *j_calls = (LDKType_JCalls*) this_arg;
+       return js_invoke_function_0(j_calls->type_id_meth);
 }
-LDKCResult_NoneNoneZ validate_holder_commitment_LDKBaseSign_jcall(const void* this_arg, const LDKHolderCommitmentTransaction * holder_tx) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
-       LDKHolderCommitmentTransaction holder_tx_var = *holder_tx;
-       uint64_t holder_tx_ref = 0;
-       holder_tx_var = HolderCommitmentTransaction_clone(holder_tx);
-       CHECK((((uint64_t)holder_tx_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&holder_tx_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(holder_tx_var);
-       holder_tx_ref = (uint64_t)holder_tx_var.inner;
-       if (holder_tx_var.is_owned) {
-               holder_tx_ref |= 1;
-       }
-       uint32_t ret = js_invoke_function_1(j_calls->validate_holder_commitment_meth, holder_tx_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_NoneNoneZ ret_conv = *(LDKCResult_NoneNoneZ*)(ret_ptr);
-       FREE((void*)ret);
+LDKStr debug_str_LDKType_jcall(const void* this_arg) {
+       LDKType_JCalls *j_calls = (LDKType_JCalls*) this_arg;
+       jstring ret = (jstring)js_invoke_function_0(j_calls->debug_str_meth);
+       LDKStr ret_conv = str_ref_to_owned_c(ret);
        return ret_conv;
 }
-LDKThirtyTwoBytes channel_keys_id_LDKBaseSign_jcall(const void* this_arg) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
-       int8_tArray ret = js_invoke_function_0(j_calls->channel_keys_id_meth);
-       LDKThirtyTwoBytes ret_ref;
-       CHECK(*((uint32_t*)ret) == 32);
-       memcpy(ret_ref.data, (uint8_t*)(ret + 4), 32);
+LDKCVec_u8Z write_LDKType_jcall(const void* this_arg) {
+       LDKType_JCalls *j_calls = (LDKType_JCalls*) this_arg;
+       int8_tArray ret = (int8_tArray)js_invoke_function_0(j_calls->write_meth);
+       LDKCVec_u8Z ret_ref;
+       ret_ref.datalen = ret->arr_len;
+       ret_ref.data = MALLOC(ret_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(ret_ref.data, ret->elems, ret_ref.datalen);
        return ret_ref;
 }
-LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_counterparty_commitment_LDKBaseSign_jcall(const void* this_arg, const LDKCommitmentTransaction * commitment_tx) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
-       LDKCommitmentTransaction commitment_tx_var = *commitment_tx;
-       uint64_t commitment_tx_ref = 0;
-       commitment_tx_var = CommitmentTransaction_clone(commitment_tx);
-       CHECK((((uint64_t)commitment_tx_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&commitment_tx_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_tx_var);
-       commitment_tx_ref = (uint64_t)commitment_tx_var.inner;
-       if (commitment_tx_var.is_owned) {
-               commitment_tx_ref |= 1;
-       }
-       uint32_t ret = js_invoke_function_1(j_calls->sign_counterparty_commitment_meth, commitment_tx_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret_conv = *(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+static void LDKType_JCalls_cloned(LDKType* new_obj) {
+       LDKType_JCalls *j_calls = (LDKType_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
-LDKCResult_NoneNoneZ validate_counterparty_revocation_LDKBaseSign_jcall(const void* this_arg, uint64_t idx, const uint8_t (* secret)[32]) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
-       int8_tArray secret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(secret_arr + 4), *secret, 32);
-       uint32_t ret = js_invoke_function_2(j_calls->validate_counterparty_revocation_meth, idx, secret_arr);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_NoneNoneZ ret_conv = *(LDKCResult_NoneNoneZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+static inline LDKType LDKType_init (/*TODO: JS Object Reference */void* o) {
+       LDKType_JCalls *calls = MALLOC(sizeof(LDKType_JCalls), "LDKType_JCalls");
+       atomic_init(&calls->refcnt, 1);
+       //TODO: Assign calls->o from o
+
+       LDKType ret = {
+               .this_arg = (void*) calls,
+               .type_id = type_id_LDKType_jcall,
+               .debug_str = debug_str_LDKType_jcall,
+               .write = write_LDKType_jcall,
+               .cloned = LDKType_JCalls_cloned,
+               .free = LDKType_JCalls_free,
+       };
+       return ret;
 }
-LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_holder_commitment_and_htlcs_LDKBaseSign_jcall(const void* this_arg, const LDKHolderCommitmentTransaction * commitment_tx) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
-       LDKHolderCommitmentTransaction commitment_tx_var = *commitment_tx;
-       uint64_t commitment_tx_ref = 0;
-       commitment_tx_var = HolderCommitmentTransaction_clone(commitment_tx);
-       CHECK((((uint64_t)commitment_tx_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&commitment_tx_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_tx_var);
-       commitment_tx_ref = (uint64_t)commitment_tx_var.inner;
-       if (commitment_tx_var.is_owned) {
-               commitment_tx_ref |= 1;
-       }
-       uint32_t ret = js_invoke_function_1(j_calls->sign_holder_commitment_and_htlcs_meth, commitment_tx_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret_conv = *(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+long  __attribute__((visibility("default"))) TS_LDKType_new(/*TODO: JS Object Reference */void* o) {
+       LDKType *res_ptr = MALLOC(sizeof(LDKType), "LDKType");
+       *res_ptr = LDKType_init(o);
+       return (long)res_ptr;
 }
-LDKCResult_SignatureNoneZ sign_justice_revoked_output_LDKBaseSign_jcall(const void* this_arg, LDKTransaction justice_tx, uintptr_t input, uint64_t amount, const uint8_t (* per_commitment_key)[32]) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
-       LDKTransaction justice_tx_var = justice_tx;
-       int8_tArray justice_tx_arr = init_arr(justice_tx_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(justice_tx_arr + 4), justice_tx_var.data, justice_tx_var.datalen);
-       Transaction_free(justice_tx_var);
-       int8_tArray per_commitment_key_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(per_commitment_key_arr + 4), *per_commitment_key, 32);
-       uint32_t ret = js_invoke_function_4(j_calls->sign_justice_revoked_output_meth, justice_tx_arr, input, amount, per_commitment_key_arr);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_SignatureNoneZ ret_conv = *(LDKCResult_SignatureNoneZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
-}
-LDKCResult_SignatureNoneZ sign_justice_revoked_htlc_LDKBaseSign_jcall(const void* this_arg, LDKTransaction justice_tx, uintptr_t input, uint64_t amount, const uint8_t (* per_commitment_key)[32], const LDKHTLCOutputInCommitment * htlc) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
-       LDKTransaction justice_tx_var = justice_tx;
-       int8_tArray justice_tx_arr = init_arr(justice_tx_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(justice_tx_arr + 4), justice_tx_var.data, justice_tx_var.datalen);
-       Transaction_free(justice_tx_var);
-       int8_tArray per_commitment_key_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(per_commitment_key_arr + 4), *per_commitment_key, 32);
-       LDKHTLCOutputInCommitment htlc_var = *htlc;
-       uint64_t htlc_ref = 0;
-       htlc_var = HTLCOutputInCommitment_clone(htlc);
-       CHECK((((uint64_t)htlc_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&htlc_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_var);
-       htlc_ref = (uint64_t)htlc_var.inner;
-       if (htlc_var.is_owned) {
-               htlc_ref |= 1;
-       }
-       uint32_t ret = js_invoke_function_5(j_calls->sign_justice_revoked_htlc_meth, justice_tx_arr, input, amount, per_commitment_key_arr, htlc_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_SignatureNoneZ ret_conv = *(LDKCResult_SignatureNoneZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
-}
-LDKCResult_SignatureNoneZ sign_counterparty_htlc_transaction_LDKBaseSign_jcall(const void* this_arg, LDKTransaction htlc_tx, uintptr_t input, uint64_t amount, LDKPublicKey per_commitment_point, const LDKHTLCOutputInCommitment * htlc) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
-       LDKTransaction htlc_tx_var = htlc_tx;
-       int8_tArray htlc_tx_arr = init_arr(htlc_tx_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(htlc_tx_arr + 4), htlc_tx_var.data, htlc_tx_var.datalen);
-       Transaction_free(htlc_tx_var);
-       int8_tArray per_commitment_point_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(per_commitment_point_arr + 4), per_commitment_point.compressed_form, 33);
-       LDKHTLCOutputInCommitment htlc_var = *htlc;
-       uint64_t htlc_ref = 0;
-       htlc_var = HTLCOutputInCommitment_clone(htlc);
-       CHECK((((uint64_t)htlc_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&htlc_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_var);
-       htlc_ref = (uint64_t)htlc_var.inner;
-       if (htlc_var.is_owned) {
-               htlc_ref |= 1;
-       }
-       uint32_t ret = js_invoke_function_5(j_calls->sign_counterparty_htlc_transaction_meth, htlc_tx_arr, input, amount, per_commitment_point_arr, htlc_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_SignatureNoneZ ret_conv = *(LDKCResult_SignatureNoneZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
-}
-LDKCResult_SignatureNoneZ sign_closing_transaction_LDKBaseSign_jcall(const void* this_arg, const LDKClosingTransaction * closing_tx) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
-       LDKClosingTransaction closing_tx_var = *closing_tx;
-       uint64_t closing_tx_ref = 0;
-       closing_tx_var = ClosingTransaction_clone(closing_tx);
-       CHECK((((uint64_t)closing_tx_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&closing_tx_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(closing_tx_var);
-       closing_tx_ref = (uint64_t)closing_tx_var.inner;
-       if (closing_tx_var.is_owned) {
-               closing_tx_ref |= 1;
-       }
-       uint32_t ret = js_invoke_function_1(j_calls->sign_closing_transaction_meth, closing_tx_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_SignatureNoneZ ret_conv = *(LDKCResult_SignatureNoneZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
-}
-LDKCResult_SignatureNoneZ sign_channel_announcement_LDKBaseSign_jcall(const void* this_arg, const LDKUnsignedChannelAnnouncement * msg) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
-       LDKUnsignedChannelAnnouncement msg_var = *msg;
-       uint64_t msg_ref = 0;
-       msg_var = UnsignedChannelAnnouncement_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
-       }
-       uint32_t ret = js_invoke_function_1(j_calls->sign_channel_announcement_meth, msg_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_SignatureNoneZ ret_conv = *(LDKCResult_SignatureNoneZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
-}
-void ready_channel_LDKBaseSign_jcall(void* this_arg, const LDKChannelTransactionParameters * channel_parameters) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
-       LDKChannelTransactionParameters channel_parameters_var = *channel_parameters;
-       uint64_t channel_parameters_ref = 0;
-       channel_parameters_var = ChannelTransactionParameters_clone(channel_parameters);
-       CHECK((((uint64_t)channel_parameters_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&channel_parameters_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_parameters_var);
-       channel_parameters_ref = (uint64_t)channel_parameters_var.inner;
-       if (channel_parameters_var.is_owned) {
-               channel_parameters_ref |= 1;
-       }
-       js_invoke_function_1(j_calls->ready_channel_meth, channel_parameters_ref);
-}
-static void LDKBaseSign_JCalls_cloned(LDKBaseSign* new_obj) {
-       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
-}
-static inline LDKBaseSign LDKBaseSign_init (/*TODO: JS Object Reference */void* o, uint32_t pubkeys) {
-       LDKBaseSign_JCalls *calls = MALLOC(sizeof(LDKBaseSign_JCalls), "LDKBaseSign_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
-
-       LDKChannelPublicKeys pubkeys_conv;
-       pubkeys_conv.inner = (void*)(pubkeys & (~1));
-       pubkeys_conv.is_owned = (pubkeys & 1) || (pubkeys == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(pubkeys_conv);
-
-       LDKBaseSign ret = {
-               .this_arg = (void*) calls,
-               .get_per_commitment_point = get_per_commitment_point_LDKBaseSign_jcall,
-               .release_commitment_secret = release_commitment_secret_LDKBaseSign_jcall,
-               .validate_holder_commitment = validate_holder_commitment_LDKBaseSign_jcall,
-               .channel_keys_id = channel_keys_id_LDKBaseSign_jcall,
-               .sign_counterparty_commitment = sign_counterparty_commitment_LDKBaseSign_jcall,
-               .validate_counterparty_revocation = validate_counterparty_revocation_LDKBaseSign_jcall,
-               .sign_holder_commitment_and_htlcs = sign_holder_commitment_and_htlcs_LDKBaseSign_jcall,
-               .sign_justice_revoked_output = sign_justice_revoked_output_LDKBaseSign_jcall,
-               .sign_justice_revoked_htlc = sign_justice_revoked_htlc_LDKBaseSign_jcall,
-               .sign_counterparty_htlc_transaction = sign_counterparty_htlc_transaction_LDKBaseSign_jcall,
-               .sign_closing_transaction = sign_closing_transaction_LDKBaseSign_jcall,
-               .sign_channel_announcement = sign_channel_announcement_LDKBaseSign_jcall,
-               .ready_channel = ready_channel_LDKBaseSign_jcall,
-               .free = LDKBaseSign_JCalls_free,
-               .pubkeys = pubkeys_conv,
-               .set_pubkeys = NULL,
-       };
-       return ret;
-}
-long  __attribute__((visibility("default"))) TS_LDKBaseSign_new(/*TODO: JS Object Reference */void* o, uint32_t pubkeys) {
-       LDKBaseSign *res_ptr = MALLOC(sizeof(LDKBaseSign), "LDKBaseSign");
-       *res_ptr = LDKBaseSign_init(o, pubkeys);
-       return (long)res_ptr;
-}
-int8_tArray  __attribute__((visibility("default"))) TS_BaseSign_get_per_commitment_point(uint32_t this_arg, int64_t idx) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), (this_arg_conv->get_per_commitment_point)(this_arg_conv->this_arg, idx).compressed_form, 33);
-       return ret_arr;
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_BaseSign_release_commitment_secret(uint32_t this_arg, int64_t idx) {
+int16_t  __attribute__((visibility("default"))) TS_Type_type_id(uint32_t this_arg) {
        void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
        if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), (this_arg_conv->release_commitment_secret)(this_arg_conv->this_arg, idx).data, 32);
-       return ret_arr;
+       LDKType* this_arg_conv = (LDKType*)this_arg_ptr;
+       int16_t ret_val = (this_arg_conv->type_id)(this_arg_conv->this_arg);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_BaseSign_validate_holder_commitment(uint32_t this_arg, uint32_t holder_tx) {
+jstring  __attribute__((visibility("default"))) TS_Type_debug_str(uint32_t this_arg) {
        void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
        if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
-       LDKHolderCommitmentTransaction holder_tx_conv;
-       holder_tx_conv.inner = (void*)(holder_tx & (~1));
-       holder_tx_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(holder_tx_conv);
-       LDKCResult_NoneNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneNoneZ), "LDKCResult_NoneNoneZ");
-       *ret_conv = (this_arg_conv->validate_holder_commitment)(this_arg_conv->this_arg, &holder_tx_conv);
-       return (uint64_t)ret_conv;
+       LDKType* this_arg_conv = (LDKType*)this_arg_ptr;
+       LDKStr ret_str = (this_arg_conv->debug_str)(this_arg_conv->this_arg);
+       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
+       Str_free(ret_str);
+       return ret_conv;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_BaseSign_channel_keys_id(uint32_t this_arg) {
+int8_tArray  __attribute__((visibility("default"))) TS_Type_write(uint32_t this_arg) {
        void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
        if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), (this_arg_conv->channel_keys_id)(this_arg_conv->this_arg).data, 32);
+       LDKType* this_arg_conv = (LDKType*)this_arg_ptr;
+       LDKCVec_u8Z ret_var = (this_arg_conv->write)(this_arg_conv->this_arg);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_BaseSign_sign_counterparty_commitment(uint32_t this_arg, uint32_t commitment_tx) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
-       LDKCommitmentTransaction commitment_tx_conv;
-       commitment_tx_conv.inner = (void*)(commitment_tx & (~1));
-       commitment_tx_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_tx_conv);
-       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ), "LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ");
-       *ret_conv = (this_arg_conv->sign_counterparty_commitment)(this_arg_conv->this_arg, &commitment_tx_conv);
-       return (uint64_t)ret_conv;
+uint32_t __attribute__((visibility("default"))) TS_LDKCOption_TypeZ_ref_from_ptr(uint32_t ptr) {
+       LDKCOption_TypeZ *obj = (LDKCOption_TypeZ*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKCOption_TypeZ_Some: {
+                       LDKType* some_ret = MALLOC(sizeof(LDKType), "LDKType");
+                       *some_ret = Type_clone(&obj->some);
+                       return 0 /* LDKCOption_TypeZ - Some */; (void) (uint64_t)some_ret;
+               }
+               case LDKCOption_TypeZ_None: {
+                       return 0 /* LDKCOption_TypeZ - None */;
+               }
+               default: abort();
+       }
+}
+static inline struct LDKCOption_TypeZ CResult_COption_TypeZDecodeErrorZ_get_ok(LDKCResult_COption_TypeZDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return COption_TypeZ_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_TypeZDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_COption_TypeZDecodeErrorZ* owner_conv = (LDKCResult_COption_TypeZDecodeErrorZ*)(owner & ~1);
+       LDKCOption_TypeZ *ret_copy = MALLOC(sizeof(LDKCOption_TypeZ), "LDKCOption_TypeZ");
+       *ret_copy = CResult_COption_TypeZDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_BaseSign_validate_counterparty_revocation(uint32_t this_arg, int64_t idx, int8_tArray secret) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
-       unsigned char secret_arr[32];
-       CHECK(*((uint32_t*)secret) == 32);
-       memcpy(secret_arr, (uint8_t*)(secret + 4), 32);
-       unsigned char (*secret_ref)[32] = &secret_arr;
-       LDKCResult_NoneNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneNoneZ), "LDKCResult_NoneNoneZ");
-       *ret_conv = (this_arg_conv->validate_counterparty_revocation)(this_arg_conv->this_arg, idx, secret_ref);
-       return (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_COption_TypeZDecodeErrorZ_get_err(LDKCResult_COption_TypeZDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_TypeZDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_COption_TypeZDecodeErrorZ* owner_conv = (LDKCResult_COption_TypeZDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_COption_TypeZDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_BaseSign_sign_holder_commitment_and_htlcs(uint32_t this_arg, uint32_t commitment_tx) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
-       LDKHolderCommitmentTransaction commitment_tx_conv;
-       commitment_tx_conv.inner = (void*)(commitment_tx & (~1));
-       commitment_tx_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_tx_conv);
-       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ), "LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ");
-       *ret_conv = (this_arg_conv->sign_holder_commitment_and_htlcs)(this_arg_conv->this_arg, &commitment_tx_conv);
-       return (uint64_t)ret_conv;
+static inline struct LDKStr CResult_StringErrorZ_get_ok(LDKCResult_StringErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
+}
+jstring  __attribute__((visibility("default"))) TS_CResult_StringErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_StringErrorZ* owner_conv = (LDKCResult_StringErrorZ*)(owner & ~1);
+       LDKStr ret_str = CResult_StringErrorZ_get_ok(owner_conv);
+       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
+       Str_free(ret_str);
+       return ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_BaseSign_sign_justice_revoked_output(uint32_t this_arg, int8_tArray justice_tx, int64_t input, int64_t amount, int8_tArray per_commitment_key) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
-       LDKTransaction justice_tx_ref;
-       justice_tx_ref.datalen = *((uint32_t*)justice_tx);
-       justice_tx_ref.data = MALLOC(justice_tx_ref.datalen, "LDKTransaction Bytes");
-       memcpy(justice_tx_ref.data, (uint8_t*)(justice_tx + 4), justice_tx_ref.datalen);
-       justice_tx_ref.data_is_owned = true;
-       unsigned char per_commitment_key_arr[32];
-       CHECK(*((uint32_t*)per_commitment_key) == 32);
-       memcpy(per_commitment_key_arr, (uint8_t*)(per_commitment_key + 4), 32);
-       unsigned char (*per_commitment_key_ref)[32] = &per_commitment_key_arr;
-       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
-       *ret_conv = (this_arg_conv->sign_justice_revoked_output)(this_arg_conv->this_arg, justice_tx_ref, input, amount, per_commitment_key_ref);
-       return (uint64_t)ret_conv;
+static inline enum LDKSecp256k1Error CResult_StringErrorZ_get_err(LDKCResult_StringErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_StringErrorZ_get_err(uint32_t owner) {
+       LDKCResult_StringErrorZ* owner_conv = (LDKCResult_StringErrorZ*)(owner & ~1);
+       uint32_t ret_conv = LDKSecp256k1Error_to_js(CResult_StringErrorZ_get_err(owner_conv));
+       return ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_BaseSign_sign_justice_revoked_htlc(uint32_t this_arg, int8_tArray justice_tx, int64_t input, int64_t amount, int8_tArray per_commitment_key, uint32_t htlc) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
-       LDKTransaction justice_tx_ref;
-       justice_tx_ref.datalen = *((uint32_t*)justice_tx);
-       justice_tx_ref.data = MALLOC(justice_tx_ref.datalen, "LDKTransaction Bytes");
-       memcpy(justice_tx_ref.data, (uint8_t*)(justice_tx + 4), justice_tx_ref.datalen);
-       justice_tx_ref.data_is_owned = true;
-       unsigned char per_commitment_key_arr[32];
-       CHECK(*((uint32_t*)per_commitment_key) == 32);
-       memcpy(per_commitment_key_arr, (uint8_t*)(per_commitment_key + 4), 32);
-       unsigned char (*per_commitment_key_ref)[32] = &per_commitment_key_arr;
-       LDKHTLCOutputInCommitment htlc_conv;
-       htlc_conv.inner = (void*)(htlc & (~1));
-       htlc_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_conv);
-       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
-       *ret_conv = (this_arg_conv->sign_justice_revoked_htlc)(this_arg_conv->this_arg, justice_tx_ref, input, amount, per_commitment_key_ref, &htlc_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_BaseSign_sign_counterparty_htlc_transaction(uint32_t this_arg, int8_tArray htlc_tx, int64_t input, int64_t amount, int8_tArray per_commitment_point, uint32_t htlc) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
-       LDKTransaction htlc_tx_ref;
-       htlc_tx_ref.datalen = *((uint32_t*)htlc_tx);
-       htlc_tx_ref.data = MALLOC(htlc_tx_ref.datalen, "LDKTransaction Bytes");
-       memcpy(htlc_tx_ref.data, (uint8_t*)(htlc_tx + 4), htlc_tx_ref.datalen);
-       htlc_tx_ref.data_is_owned = true;
-       LDKPublicKey per_commitment_point_ref;
-       CHECK(*((uint32_t*)per_commitment_point) == 33);
-       memcpy(per_commitment_point_ref.compressed_form, (uint8_t*)(per_commitment_point + 4), 33);
-       LDKHTLCOutputInCommitment htlc_conv;
-       htlc_conv.inner = (void*)(htlc & (~1));
-       htlc_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_conv);
-       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
-       *ret_conv = (this_arg_conv->sign_counterparty_htlc_transaction)(this_arg_conv->this_arg, htlc_tx_ref, input, amount, per_commitment_point_ref, &htlc_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_BaseSign_sign_closing_transaction(uint32_t this_arg, uint32_t closing_tx) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
-       LDKClosingTransaction closing_tx_conv;
-       closing_tx_conv.inner = (void*)(closing_tx & (~1));
-       closing_tx_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(closing_tx_conv);
-       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
-       *ret_conv = (this_arg_conv->sign_closing_transaction)(this_arg_conv->this_arg, &closing_tx_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_BaseSign_sign_channel_announcement(uint32_t this_arg, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
-       LDKUnsignedChannelAnnouncement msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
-       *ret_conv = (this_arg_conv->sign_channel_announcement)(this_arg_conv->this_arg, &msg_conv);
-       return (uint64_t)ret_conv;
+static inline struct LDKChannelMonitorUpdate CResult_ChannelMonitorUpdateDecodeErrorZ_get_ok(LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ChannelMonitorUpdate_clone(&*owner->contents.result);
 }
-
-void  __attribute__((visibility("default"))) TS_BaseSign_ready_channel(uint32_t this_arg, uint32_t channel_parameters) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
-       LDKChannelTransactionParameters channel_parameters_conv;
-       channel_parameters_conv.inner = (void*)(channel_parameters & (~1));
-       channel_parameters_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_parameters_conv);
-       (this_arg_conv->ready_channel)(this_arg_conv->this_arg, &channel_parameters_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelMonitorUpdateDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ChannelMonitorUpdateDecodeErrorZ* owner_conv = (LDKCResult_ChannelMonitorUpdateDecodeErrorZ*)(owner & ~1);
+       LDKChannelMonitorUpdate ret_var = CResult_ChannelMonitorUpdateDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-LDKChannelPublicKeys LDKBaseSign_set_get_pubkeys(LDKBaseSign* this_arg) {
-       if (this_arg->set_pubkeys != NULL)
-               this_arg->set_pubkeys(this_arg);
-       return this_arg->pubkeys;
+static inline struct LDKDecodeError CResult_ChannelMonitorUpdateDecodeErrorZ_get_err(LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-uint32_t  __attribute__((visibility("default"))) TS_BaseSign_get_pubkeys(uint32_t this_arg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
-       LDKChannelPublicKeys ret_var = LDKBaseSign_set_get_pubkeys(this_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelMonitorUpdateDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ChannelMonitorUpdateDecodeErrorZ* owner_conv = (LDKCResult_ChannelMonitorUpdateDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ChannelMonitorUpdateDecodeErrorZ_get_err(owner_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -2335,184 +1000,151 @@ uint32_t  __attribute__((visibility("default"))) TS_BaseSign_get_pubkeys(uint32_
        return ret_ref;
 }
 
-typedef struct LDKSign_JCalls {
-       atomic_size_t refcnt;
-       LDKBaseSign_JCalls* BaseSign;
-       uint32_t write_meth;
-} LDKSign_JCalls;
-static void LDKSign_JCalls_free(void* this_arg) {
-       LDKSign_JCalls *j_calls = (LDKSign_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->write_meth);
-               FREE(j_calls);
+uint32_t __attribute__((visibility("default"))) TS_LDKMonitorEvent_ref_from_ptr(uint32_t ptr) {
+       LDKMonitorEvent *obj = (LDKMonitorEvent*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKMonitorEvent_HTLCEvent: {
+                       LDKHTLCUpdate htlc_event_var = obj->htlc_event;
+                       uint64_t htlc_event_ref = 0;
+                       CHECK((((uint64_t)htlc_event_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&htlc_event_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_event_var);
+                       htlc_event_ref = (uint64_t)htlc_event_var.inner & ~1;
+                       return 0 /* LDKMonitorEvent - HTLCEvent */; (void) htlc_event_ref;
+               }
+               case LDKMonitorEvent_CommitmentTxConfirmed: {
+                       LDKOutPoint commitment_tx_confirmed_var = obj->commitment_tx_confirmed;
+                       uint64_t commitment_tx_confirmed_ref = 0;
+                       CHECK((((uint64_t)commitment_tx_confirmed_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&commitment_tx_confirmed_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_tx_confirmed_var);
+                       commitment_tx_confirmed_ref = (uint64_t)commitment_tx_confirmed_var.inner & ~1;
+                       return 0 /* LDKMonitorEvent - CommitmentTxConfirmed */; (void) commitment_tx_confirmed_ref;
+               }
+               case LDKMonitorEvent_UpdateCompleted: {
+                       LDKOutPoint funding_txo_var = obj->update_completed.funding_txo;
+                       uint64_t funding_txo_ref = 0;
+                       CHECK((((uint64_t)funding_txo_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&funding_txo_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_var);
+                       funding_txo_ref = (uint64_t)funding_txo_var.inner & ~1;
+                       return 0 /* LDKMonitorEvent - UpdateCompleted */; (void) funding_txo_ref; (void) obj->update_completed.monitor_update_id;
+               }
+               case LDKMonitorEvent_UpdateFailed: {
+                       LDKOutPoint update_failed_var = obj->update_failed;
+                       uint64_t update_failed_ref = 0;
+                       CHECK((((uint64_t)update_failed_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&update_failed_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_failed_var);
+                       update_failed_ref = (uint64_t)update_failed_var.inner & ~1;
+                       return 0 /* LDKMonitorEvent - UpdateFailed */; (void) update_failed_ref;
+               }
+               default: abort();
        }
 }
-LDKCVec_u8Z write_LDKSign_jcall(const void* this_arg) {
-       LDKSign_JCalls *j_calls = (LDKSign_JCalls*) this_arg;
-       int8_tArray ret = js_invoke_function_0(j_calls->write_meth);
-       LDKCVec_u8Z ret_ref;
-       ret_ref.datalen = *((uint32_t*)ret);
-       ret_ref.data = MALLOC(ret_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(ret_ref.data, (uint8_t*)(ret + 4), ret_ref.datalen);
-       return ret_ref;
+uint32_t __attribute__((visibility("default"))) TS_LDKCOption_MonitorEventZ_ref_from_ptr(uint32_t ptr) {
+       LDKCOption_MonitorEventZ *obj = (LDKCOption_MonitorEventZ*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKCOption_MonitorEventZ_Some: {
+                       uint64_t some_ref = ((uint64_t)&obj->some) | 1;
+                       return 0 /* LDKCOption_MonitorEventZ - Some */; (void) some_ref;
+               }
+               case LDKCOption_MonitorEventZ_None: {
+                       return 0 /* LDKCOption_MonitorEventZ - None */;
+               }
+               default: abort();
+       }
 }
-static void LDKSign_JCalls_cloned(LDKSign* new_obj) {
-       LDKSign_JCalls *j_calls = (LDKSign_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
-       atomic_fetch_add_explicit(&j_calls->BaseSign->refcnt, 1, memory_order_release);
+static inline struct LDKCOption_MonitorEventZ CResult_COption_MonitorEventZDecodeErrorZ_get_ok(LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return COption_MonitorEventZ_clone(&*owner->contents.result);
 }
-static inline LDKSign LDKSign_init (/*TODO: JS Object Reference */void* o, /*TODO: JS Object Reference */void* BaseSign, uint32_t pubkeys) {
-       LDKSign_JCalls *calls = MALLOC(sizeof(LDKSign_JCalls), "LDKSign_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
-
-       LDKChannelPublicKeys pubkeys_conv;
-       pubkeys_conv.inner = (void*)(pubkeys & (~1));
-       pubkeys_conv.is_owned = (pubkeys & 1) || (pubkeys == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(pubkeys_conv);
-
-       LDKSign ret = {
-               .this_arg = (void*) calls,
-               .write = write_LDKSign_jcall,
-               .cloned = LDKSign_JCalls_cloned,
-               .free = LDKSign_JCalls_free,
-               .BaseSign = LDKBaseSign_init(BaseSign, pubkeys),
-       };
-       calls->BaseSign = ret.BaseSign.this_arg;
-       return ret;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_MonitorEventZDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_COption_MonitorEventZDecodeErrorZ* owner_conv = (LDKCResult_COption_MonitorEventZDecodeErrorZ*)(owner & ~1);
+       LDKCOption_MonitorEventZ *ret_copy = MALLOC(sizeof(LDKCOption_MonitorEventZ), "LDKCOption_MonitorEventZ");
+       *ret_copy = CResult_COption_MonitorEventZDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
-long  __attribute__((visibility("default"))) TS_LDKSign_new(/*TODO: JS Object Reference */void* o, /*TODO: JS Object Reference */ void* BaseSign, uint32_t pubkeys) {
-       LDKSign *res_ptr = MALLOC(sizeof(LDKSign), "LDKSign");
-       *res_ptr = LDKSign_init(o, BaseSign, pubkeys);
-       return (long)res_ptr;
+
+static inline struct LDKDecodeError CResult_COption_MonitorEventZDecodeErrorZ_get_err(LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-int8_tArray  __attribute__((visibility("default"))) TS_Sign_write(uint32_t this_arg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKSign* this_arg_conv = (LDKSign*)this_arg_ptr;
-       LDKCVec_u8Z ret_var = (this_arg_conv->write)(this_arg_conv->this_arg);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_MonitorEventZDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_COption_MonitorEventZDecodeErrorZ* owner_conv = (LDKCResult_COption_MonitorEventZDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_COption_MonitorEventZDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_SignDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_SignDecodeErrorZ *val = (LDKCResult_SignDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKSign* res_ret = MALLOC(sizeof(LDKSign), "LDKSign");
-       *res_ret = Sign_clone(&(*val->contents.result));
-       return (uint64_t)res_ret;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_SignDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_SignDecodeErrorZ *val = (LDKCResult_SignDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-int8_tArray  __attribute__((visibility("default"))) TS_LDKCResult_RecoverableSignatureNoneZ_get_ok(uint32_t arg) {
-       LDKCResult_RecoverableSignatureNoneZ *val = (LDKCResult_RecoverableSignatureNoneZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       int8_tArray es_arr = init_arr(68, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(es_arr + 4), (*val->contents.result).serialized_form, 68);
-       return es_arr;
-}
-void  __attribute__((visibility("default"))) TS_LDKCResult_RecoverableSignatureNoneZ_get_err(uint32_t arg) {
-       LDKCResult_RecoverableSignatureNoneZ *val = (LDKCResult_RecoverableSignatureNoneZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       return *val->contents.err;
+static inline struct LDKHTLCUpdate CResult_HTLCUpdateDecodeErrorZ_get_ok(LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return HTLCUpdate_clone(&*owner->contents.result);
 }
-static inline LDKCVec_CVec_u8ZZ CVec_CVec_u8ZZ_clone(const LDKCVec_CVec_u8ZZ *orig) {
-       LDKCVec_CVec_u8ZZ ret = { .data = MALLOC(sizeof(LDKCVec_u8Z) * orig->datalen, "LDKCVec_CVec_u8ZZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = CVec_u8Z_clone(&orig->data[i]);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_HTLCUpdateDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_HTLCUpdateDecodeErrorZ* owner_conv = (LDKCResult_HTLCUpdateDecodeErrorZ*)(owner & ~1);
+       LDKHTLCUpdate ret_var = CResult_HTLCUpdateDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret;
+       return ret_ref;
 }
-ptrArray  __attribute__((visibility("default"))) TS_LDKCResult_CVec_CVec_u8ZZNoneZ_get_ok(uint32_t arg) {
-       LDKCResult_CVec_CVec_u8ZZNoneZ *val = (LDKCResult_CVec_CVec_u8ZZNoneZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKCVec_CVec_u8ZZ res_var = (*val->contents.result);
-       ptrArray res_arr = NULL;
-       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++) {
-               LDKCVec_u8Z res_conv_12_var = res_var.data[m];
-               int8_tArray res_conv_12_arr = init_arr(res_conv_12_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-               memcpy((uint8_t*)(res_conv_12_arr + 4), res_conv_12_var.data, res_conv_12_var.datalen);
-               res_arr_ptr[m] = res_conv_12_arr;
-       }
-       
-       return res_arr;
-}
-void  __attribute__((visibility("default"))) TS_LDKCResult_CVec_CVec_u8ZZNoneZ_get_err(uint32_t arg) {
-       LDKCResult_CVec_CVec_u8ZZNoneZ *val = (LDKCResult_CVec_CVec_u8ZZNoneZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       return *val->contents.err;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_InMemorySignerDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_InMemorySignerDecodeErrorZ *val = (LDKCResult_InMemorySignerDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKInMemorySigner res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_InMemorySignerDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_InMemorySignerDecodeErrorZ *val = (LDKCResult_InMemorySignerDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
+
+static inline struct LDKDecodeError CResult_HTLCUpdateDecodeErrorZ_get_err(LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-static inline LDKCVec_TxOutZ CVec_TxOutZ_clone(const LDKCVec_TxOutZ *orig) {
-       LDKCVec_TxOutZ ret = { .data = MALLOC(sizeof(LDKTxOut) * orig->datalen, "LDKCVec_TxOutZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = TxOut_clone(&orig->data[i]);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_HTLCUpdateDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_HTLCUpdateDecodeErrorZ* owner_conv = (LDKCResult_HTLCUpdateDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_HTLCUpdateDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret;
+       return ret_ref;
 }
-int8_tArray  __attribute__((visibility("default"))) TS_LDKCResult_TransactionNoneZ_get_ok(uint32_t arg) {
-       LDKCResult_TransactionNoneZ *val = (LDKCResult_TransactionNoneZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKTransaction 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;
+
+static inline void CResult_NoneNoneZ_get_ok(LDKCResult_NoneNoneZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
 }
-void  __attribute__((visibility("default"))) TS_LDKCResult_TransactionNoneZ_get_err(uint32_t arg) {
-       LDKCResult_TransactionNoneZ *val = (LDKCResult_TransactionNoneZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       return *val->contents.err;
+void  __attribute__((visibility("default"))) TS_CResult_NoneNoneZ_get_ok(uint32_t owner) {
+       LDKCResult_NoneNoneZ* owner_conv = (LDKCResult_NoneNoneZ*)(owner & ~1);
+       CResult_NoneNoneZ_get_ok(owner_conv);
 }
-static inline struct LDKThirtyTwoBytes C2Tuple_BlockHashChannelMonitorZ_get_a(LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR tuple){
-       return ThirtyTwoBytes_clone(&tuple->a);
+
+static inline void CResult_NoneNoneZ_get_err(LDKCResult_NoneNoneZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
 }
-int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_get_a(uint32_t tuple) {
-       LDKC2Tuple_BlockHashChannelMonitorZ* tuple_conv = (LDKC2Tuple_BlockHashChannelMonitorZ*)(tuple & ~1);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), C2Tuple_BlockHashChannelMonitorZ_get_a(tuple_conv).data, 32);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_CResult_NoneNoneZ_get_err(uint32_t owner) {
+       LDKCResult_NoneNoneZ* owner_conv = (LDKCResult_NoneNoneZ*)(owner & ~1);
+       CResult_NoneNoneZ_get_err(owner_conv);
 }
 
-static inline struct LDKChannelMonitor C2Tuple_BlockHashChannelMonitorZ_get_b(LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR tuple){
-       return ChannelMonitor_clone(&tuple->b);
+static inline struct LDKOutPoint C2Tuple_OutPointScriptZ_get_a(LDKC2Tuple_OutPointScriptZ *NONNULL_PTR owner){
+       return OutPoint_clone(&owner->a);
 }
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_get_b(uint32_t tuple) {
-       LDKC2Tuple_BlockHashChannelMonitorZ* tuple_conv = (LDKC2Tuple_BlockHashChannelMonitorZ*)(tuple & ~1);
-       LDKChannelMonitor ret_var = C2Tuple_BlockHashChannelMonitorZ_get_b(tuple_conv);
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_OutPointScriptZ_get_a(uint32_t owner) {
+       LDKC2Tuple_OutPointScriptZ* owner_conv = (LDKC2Tuple_OutPointScriptZ*)(owner & ~1);
+       LDKOutPoint ret_var = C2Tuple_OutPointScriptZ_get_a(owner_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -2524,1186 +1156,1103 @@ uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMoni
        return ret_ref;
 }
 
-static inline LDKCVec_C2Tuple_BlockHashChannelMonitorZZ CVec_C2Tuple_BlockHashChannelMonitorZZ_clone(const LDKCVec_C2Tuple_BlockHashChannelMonitorZZ *orig) {
-       LDKCVec_C2Tuple_BlockHashChannelMonitorZZ ret = { .data = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelMonitorZ) * orig->datalen, "LDKCVec_C2Tuple_BlockHashChannelMonitorZZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = C2Tuple_BlockHashChannelMonitorZ_clone(&orig->data[i]);
-       }
-       return ret;
+static inline struct LDKCVec_u8Z C2Tuple_OutPointScriptZ_get_b(LDKC2Tuple_OutPointScriptZ *NONNULL_PTR owner){
+       return CVec_u8Z_clone(&owner->b);
 }
-uint32_tArray  __attribute__((visibility("default"))) TS_LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ *val = (LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKCVec_C2Tuple_BlockHashChannelMonitorZZ res_var = (*val->contents.result);
-       uint32_tArray res_arr = NULL;
-       res_arr = init_arr(res_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
-       uint32_t *res_arr_ptr = (uint32_t*)(res_arr + 4);
-       for (size_t j = 0; j < res_var.datalen; j++) {
-               LDKC2Tuple_BlockHashChannelMonitorZ* res_conv_35_conv = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelMonitorZ), "LDKC2Tuple_BlockHashChannelMonitorZ");
-               *res_conv_35_conv = res_var.data[j];
-               *res_conv_35_conv = C2Tuple_BlockHashChannelMonitorZ_clone(res_conv_35_conv);
-               res_arr_ptr[j] = ((uint64_t)res_conv_35_conv);
-       }
-       
-       return res_arr;
+int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_OutPointScriptZ_get_b(uint32_t owner) {
+       LDKC2Tuple_OutPointScriptZ* owner_conv = (LDKC2Tuple_OutPointScriptZ*)(owner & ~1);
+       LDKCVec_u8Z ret_var = C2Tuple_OutPointScriptZ_get_b(owner_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_get_err(uint32_t arg) {
-       LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ *val = (LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint32_t err_conv = LDKIOError_to_js((*val->contents.err));
-       return err_conv;
+
+static inline uint32_t C2Tuple_u32ScriptZ_get_a(LDKC2Tuple_u32ScriptZ *NONNULL_PTR owner){
+       return owner->a;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKCOption_u16Z_ref_from_ptr(uint32_t ptr) {
-       LDKCOption_u16Z *obj = (LDKCOption_u16Z*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKCOption_u16Z_Some: {
-                       return 0 /* LDKCOption_u16Z - Some */; (void) obj->some;
-               }
-               case LDKCOption_u16Z_None: {
-                       return 0 /* LDKCOption_u16Z - None */;
-               }
-               default: abort();
-       }
+int32_t  __attribute__((visibility("default"))) TS_C2Tuple_u32ScriptZ_get_a(uint32_t owner) {
+       LDKC2Tuple_u32ScriptZ* owner_conv = (LDKC2Tuple_u32ScriptZ*)(owner & ~1);
+       int32_t ret_val = C2Tuple_u32ScriptZ_get_a(owner_conv);
+       return ret_val;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKAPIError_ref_from_ptr(uint32_t ptr) {
-       LDKAPIError *obj = (LDKAPIError*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKAPIError_APIMisuseError: {
-                       LDKStr err_str = obj->api_misuse_error.err;
-                       jstring err_conv = str_ref_to_ts(err_str.chars, err_str.len);
-                       return 0 /* LDKAPIError - APIMisuseError */; (void) err_conv;
-               }
-               case LDKAPIError_FeeRateTooHigh: {
-                       LDKStr err_str = obj->fee_rate_too_high.err;
-                       jstring err_conv = str_ref_to_ts(err_str.chars, err_str.len);
-                       return 0 /* LDKAPIError - FeeRateTooHigh */; (void) err_conv; (void) obj->fee_rate_too_high.feerate;
-               }
-               case LDKAPIError_RouteError: {
-                       LDKStr err_str = obj->route_error.err;
-                       jstring err_conv = str_ref_to_ts(err_str.chars, err_str.len);
-                       return 0 /* LDKAPIError - RouteError */; (void) err_conv;
-               }
-               case LDKAPIError_ChannelUnavailable: {
-                       LDKStr err_str = obj->channel_unavailable.err;
-                       jstring err_conv = str_ref_to_ts(err_str.chars, err_str.len);
-                       return 0 /* LDKAPIError - ChannelUnavailable */; (void) err_conv;
-               }
-               case LDKAPIError_MonitorUpdateFailed: {
-                       return 0 /* LDKAPIError - MonitorUpdateFailed */;
-               }
-               case LDKAPIError_IncompatibleShutdownScript: {
-                       LDKShutdownScript script_var = obj->incompatible_shutdown_script.script;
-                       uint64_t script_ref = 0;
-                       CHECK((((uint64_t)script_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&script_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(script_var);
-                       script_ref = (uint64_t)script_var.inner & ~1;
-                       return 0 /* LDKAPIError - IncompatibleShutdownScript */; (void) script_ref;
-               }
-               default: abort();
-       }
+
+static inline struct LDKCVec_u8Z C2Tuple_u32ScriptZ_get_b(LDKC2Tuple_u32ScriptZ *NONNULL_PTR owner){
+       return CVec_u8Z_clone(&owner->b);
 }
-void  __attribute__((visibility("default"))) TS_LDKCResult_NoneAPIErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_NoneAPIErrorZ *val = (LDKCResult_NoneAPIErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       return *val->contents.result;
+int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_u32ScriptZ_get_b(uint32_t owner) {
+       LDKC2Tuple_u32ScriptZ* owner_conv = (LDKC2Tuple_u32ScriptZ*)(owner & ~1);
+       LDKCVec_u8Z ret_var = C2Tuple_u32ScriptZ_get_b(owner_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_NoneAPIErrorZ_get_err(uint32_t arg) {
-       LDKCResult_NoneAPIErrorZ *val = (LDKCResult_NoneAPIErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint64_t err_ref = ((uint64_t)&(*val->contents.err)) | 1;
-       return err_ref;
+
+static inline struct LDKThirtyTwoBytes C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_a(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR owner){
+       return ThirtyTwoBytes_clone(&owner->a);
 }
-static inline LDKCVec_CResult_NoneAPIErrorZZ CVec_CResult_NoneAPIErrorZZ_clone(const LDKCVec_CResult_NoneAPIErrorZZ *orig) {
-       LDKCVec_CResult_NoneAPIErrorZZ ret = { .data = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ) * orig->datalen, "LDKCVec_CResult_NoneAPIErrorZZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = CResult_NoneAPIErrorZ_clone(&orig->data[i]);
+int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_a(uint32_t owner) {
+       LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* owner_conv = (LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_a(owner_conv).data, 32);
+       return ret_arr;
+}
+
+static inline struct LDKCVec_C2Tuple_u32ScriptZZ C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_b(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR owner){
+       return owner->b;
+}
+uint32_tArray  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_b(uint32_t owner) {
+       LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* owner_conv = (LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ*)(owner & ~1);
+       LDKCVec_C2Tuple_u32ScriptZZ ret_var = C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_b(owner_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t v = 0; v < ret_var.datalen; v++) {
+               LDKC2Tuple_u32ScriptZ* ret_conv_21_conv = MALLOC(sizeof(LDKC2Tuple_u32ScriptZ), "LDKC2Tuple_u32ScriptZ");
+               *ret_conv_21_conv = ret_var.data[v];
+               ret_arr_ptr[v] = ((uint64_t)ret_conv_21_conv);
        }
-       return ret;
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
-static inline LDKCVec_APIErrorZ CVec_APIErrorZ_clone(const LDKCVec_APIErrorZ *orig) {
-       LDKCVec_APIErrorZ ret = { .data = MALLOC(sizeof(LDKAPIError) * orig->datalen, "LDKCVec_APIErrorZ clone bytes"), .datalen = orig->datalen };
+
+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] = APIError_clone(&orig->data[i]);
+               ret.data[i] = MonitorEvent_clone(&orig->data[i]);
        }
        return ret;
 }
-int8_tArray  __attribute__((visibility("default"))) TS_LDKCResult__u832APIErrorZ_get_ok(uint32_t arg) {
-       LDKCResult__u832APIErrorZ *val = (LDKCResult__u832APIErrorZ*)(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).data, 32);
-       return res_arr;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult__u832APIErrorZ_get_err(uint32_t arg) {
-       LDKCResult__u832APIErrorZ *val = (LDKCResult__u832APIErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint64_t err_ref = ((uint64_t)&(*val->contents.err)) | 1;
-       return err_ref;
-}
-uint32_t __attribute__((visibility("default"))) TS_LDKPaymentSendFailure_ref_from_ptr(uint32_t ptr) {
-       LDKPaymentSendFailure *obj = (LDKPaymentSendFailure*)(ptr & ~1);
+uint32_t __attribute__((visibility("default"))) TS_LDKPaymentPurpose_ref_from_ptr(uint32_t ptr) {
+       LDKPaymentPurpose *obj = (LDKPaymentPurpose*)(ptr & ~1);
        switch(obj->tag) {
-               case LDKPaymentSendFailure_ParameterError: {
-                       uint64_t parameter_error_ref = ((uint64_t)&obj->parameter_error) | 1;
-                       return 0 /* LDKPaymentSendFailure - ParameterError */; (void) parameter_error_ref;
+               case LDKPaymentPurpose_InvoicePayment: {
+                       int8_tArray payment_preimage_arr = init_int8_tArray(32);
+                       memcpy(payment_preimage_arr->elems, obj->invoice_payment.payment_preimage.data, 32);
+                       int8_tArray payment_secret_arr = init_int8_tArray(32);
+                       memcpy(payment_secret_arr->elems, obj->invoice_payment.payment_secret.data, 32);
+                       return 0 /* LDKPaymentPurpose - InvoicePayment */; (void) payment_preimage_arr; (void) payment_secret_arr;
                }
-               case LDKPaymentSendFailure_PathParameterError: {
-                       LDKCVec_CResult_NoneAPIErrorZZ path_parameter_error_var = obj->path_parameter_error;
-                       uint32_tArray path_parameter_error_arr = NULL;
-                       path_parameter_error_arr = init_arr(path_parameter_error_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
-                       uint32_t *path_parameter_error_arr_ptr = (uint32_t*)(path_parameter_error_arr + 4);
-                       for (size_t w = 0; w < path_parameter_error_var.datalen; w++) {
-                               LDKCResult_NoneAPIErrorZ* path_parameter_error_conv_22_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
-                               *path_parameter_error_conv_22_conv = path_parameter_error_var.data[w];
-                               *path_parameter_error_conv_22_conv = CResult_NoneAPIErrorZ_clone(path_parameter_error_conv_22_conv);
-                               path_parameter_error_arr_ptr[w] = (uint64_t)path_parameter_error_conv_22_conv;
-                       }
-                       
-                       return 0 /* LDKPaymentSendFailure - PathParameterError */; (void) path_parameter_error_arr;
+               case LDKPaymentPurpose_SpontaneousPayment: {
+                       int8_tArray spontaneous_payment_arr = init_int8_tArray(32);
+                       memcpy(spontaneous_payment_arr->elems, obj->spontaneous_payment.data, 32);
+                       return 0 /* LDKPaymentPurpose - SpontaneousPayment */; (void) spontaneous_payment_arr;
                }
-               case LDKPaymentSendFailure_AllFailedRetrySafe: {
-                       LDKCVec_APIErrorZ all_failed_retry_safe_var = obj->all_failed_retry_safe;
-                       uint32_tArray all_failed_retry_safe_arr = NULL;
-                       all_failed_retry_safe_arr = init_arr(all_failed_retry_safe_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
-                       uint32_t *all_failed_retry_safe_arr_ptr = (uint32_t*)(all_failed_retry_safe_arr + 4);
-                       for (size_t k = 0; k < all_failed_retry_safe_var.datalen; k++) {
-                               uint64_t all_failed_retry_safe_conv_10_ref = ((uint64_t)&all_failed_retry_safe_var.data[k]) | 1;
-                               all_failed_retry_safe_arr_ptr[k] = all_failed_retry_safe_conv_10_ref;
-                       }
-                       
-                       return 0 /* LDKPaymentSendFailure - AllFailedRetrySafe */; (void) all_failed_retry_safe_arr;
+               default: abort();
+       }
+}
+uint32_t __attribute__((visibility("default"))) TS_LDKCOption_u64Z_ref_from_ptr(uint32_t ptr) {
+       LDKCOption_u64Z *obj = (LDKCOption_u64Z*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKCOption_u64Z_Some: {
+                       return 0 /* LDKCOption_u64Z - Some */; (void) obj->some;
                }
-               case LDKPaymentSendFailure_PartialFailure: {
-                       LDKCVec_CResult_NoneAPIErrorZZ results_var = obj->partial_failure.results;
-                       uint32_tArray results_arr = NULL;
-                       results_arr = init_arr(results_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
-                       uint32_t *results_arr_ptr = (uint32_t*)(results_arr + 4);
-                       for (size_t w = 0; w < results_var.datalen; w++) {
-                               LDKCResult_NoneAPIErrorZ* results_conv_22_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
-                               *results_conv_22_conv = results_var.data[w];
-                               *results_conv_22_conv = CResult_NoneAPIErrorZ_clone(results_conv_22_conv);
-                               results_arr_ptr[w] = (uint64_t)results_conv_22_conv;
-                       }
-                       
-                       LDKRouteParameters failed_paths_retry_var = obj->partial_failure.failed_paths_retry;
-                       uint64_t failed_paths_retry_ref = 0;
-                       if ((uint64_t)failed_paths_retry_var.inner > 4096) {
-                               CHECK((((uint64_t)failed_paths_retry_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                               CHECK((((uint64_t)&failed_paths_retry_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(failed_paths_retry_var);
-                               failed_paths_retry_ref = (uint64_t)failed_paths_retry_var.inner & ~1;
-                       }
-                       int8_tArray payment_id_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(payment_id_arr + 4), obj->partial_failure.payment_id.data, 32);
-                       return 0 /* LDKPaymentSendFailure - PartialFailure */; (void) results_arr; (void) failed_paths_retry_ref; (void) payment_id_arr;
+               case LDKCOption_u64Z_None: {
+                       return 0 /* LDKCOption_u64Z - None */;
                }
                default: abort();
        }
 }
-int8_tArray  __attribute__((visibility("default"))) TS_LDKCResult_PaymentIdPaymentSendFailureZ_get_ok(uint32_t arg) {
-       LDKCResult_PaymentIdPaymentSendFailureZ *val = (LDKCResult_PaymentIdPaymentSendFailureZ*)(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).data, 32);
-       return res_arr;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PaymentIdPaymentSendFailureZ_get_err(uint32_t arg) {
-       LDKCResult_PaymentIdPaymentSendFailureZ *val = (LDKCResult_PaymentIdPaymentSendFailureZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint64_t err_ref = ((uint64_t)&(*val->contents.err)) | 1;
-       return err_ref;
-}
-void  __attribute__((visibility("default"))) TS_LDKCResult_NonePaymentSendFailureZ_get_ok(uint32_t arg) {
-       LDKCResult_NonePaymentSendFailureZ *val = (LDKCResult_NonePaymentSendFailureZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       return *val->contents.result;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_NonePaymentSendFailureZ_get_err(uint32_t arg) {
-       LDKCResult_NonePaymentSendFailureZ *val = (LDKCResult_NonePaymentSendFailureZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint64_t err_ref = ((uint64_t)&(*val->contents.err)) | 1;
-       return err_ref;
-}
-static inline struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentIdZ_get_a(LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR tuple){
-       return ThirtyTwoBytes_clone(&tuple->a);
-}
-int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentIdZ_get_a(uint32_t tuple) {
-       LDKC2Tuple_PaymentHashPaymentIdZ* tuple_conv = (LDKC2Tuple_PaymentHashPaymentIdZ*)(tuple & ~1);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), C2Tuple_PaymentHashPaymentIdZ_get_a(tuple_conv).data, 32);
-       return ret_arr;
-}
-
-static inline struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentIdZ_get_b(LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR tuple){
-       return ThirtyTwoBytes_clone(&tuple->b);
-}
-int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentIdZ_get_b(uint32_t tuple) {
-       LDKC2Tuple_PaymentHashPaymentIdZ* tuple_conv = (LDKC2Tuple_PaymentHashPaymentIdZ*)(tuple & ~1);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), C2Tuple_PaymentHashPaymentIdZ_get_b(tuple_conv).data, 32);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_ok(uint32_t arg) {
-       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *val = (LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKC2Tuple_PaymentHashPaymentIdZ* res_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentIdZ), "LDKC2Tuple_PaymentHashPaymentIdZ");
-       *res_conv = (*val->contents.result);
-       *res_conv = C2Tuple_PaymentHashPaymentIdZ_clone(res_conv);
-       return ((uint64_t)res_conv);
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_err(uint32_t arg) {
-       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *val = (LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint64_t err_ref = ((uint64_t)&(*val->contents.err)) | 1;
-       return err_ref;
-}
-uint32_t __attribute__((visibility("default"))) TS_LDKNetAddress_ref_from_ptr(uint32_t ptr) {
-       LDKNetAddress *obj = (LDKNetAddress*)(ptr & ~1);
+uint32_t __attribute__((visibility("default"))) TS_LDKNetworkUpdate_ref_from_ptr(uint32_t ptr) {
+       LDKNetworkUpdate *obj = (LDKNetworkUpdate*)(ptr & ~1);
        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 LDKNetworkUpdate_ChannelUpdateMessage: {
+                       LDKChannelUpdate msg_var = obj->channel_update_message.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKNetworkUpdate - ChannelUpdateMessage */; (void) msg_ref;
                }
-               case LDKNetAddress_OnionV2: {
-                       int8_tArray onion_v2_arr = init_arr(12, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(onion_v2_arr + 4), obj->onion_v2.data, 12);
-                       return 0 /* LDKNetAddress - OnionV2 */; (void) onion_v2_arr;
+               case LDKNetworkUpdate_ChannelClosed: {
+                       return 0 /* LDKNetworkUpdate - ChannelClosed */; (void) obj->channel_closed.short_channel_id; (void) obj->channel_closed.is_permanent;
                }
-               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;
+               case LDKNetworkUpdate_NodeFailure: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->node_failure.node_id.compressed_form, 33);
+                       return 0 /* LDKNetworkUpdate - NodeFailure */; (void) node_id_arr; (void) obj->node_failure.is_permanent;
                }
                default: abort();
        }
 }
-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]);
+uint32_t __attribute__((visibility("default"))) TS_LDKCOption_NetworkUpdateZ_ref_from_ptr(uint32_t ptr) {
+       LDKCOption_NetworkUpdateZ *obj = (LDKCOption_NetworkUpdateZ*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKCOption_NetworkUpdateZ_Some: {
+                       uint64_t some_ref = ((uint64_t)&obj->some) | 1;
+                       return 0 /* LDKCOption_NetworkUpdateZ - Some */; (void) some_ref;
+               }
+               case LDKCOption_NetworkUpdateZ_None: {
+                       return 0 /* LDKCOption_NetworkUpdateZ - None */;
+               }
+               default: abort();
        }
-       return ret;
 }
-static inline struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentSecretZ_get_a(LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR tuple){
-       return ThirtyTwoBytes_clone(&tuple->a);
-}
-int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentSecretZ_get_a(uint32_t tuple) {
-       LDKC2Tuple_PaymentHashPaymentSecretZ* tuple_conv = (LDKC2Tuple_PaymentHashPaymentSecretZ*)(tuple & ~1);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), C2Tuple_PaymentHashPaymentSecretZ_get_a(tuple_conv).data, 32);
-       return ret_arr;
-}
-
-static inline struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentSecretZ_get_b(LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR tuple){
-       return ThirtyTwoBytes_clone(&tuple->b);
-}
-int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentSecretZ_get_b(uint32_t tuple) {
-       LDKC2Tuple_PaymentHashPaymentSecretZ* tuple_conv = (LDKC2Tuple_PaymentHashPaymentSecretZ*)(tuple & ~1);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), C2Tuple_PaymentHashPaymentSecretZ_get_b(tuple_conv).data, 32);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_get_ok(uint32_t arg) {
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *val = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKC2Tuple_PaymentHashPaymentSecretZ* res_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ), "LDKC2Tuple_PaymentHashPaymentSecretZ");
-       *res_conv = (*val->contents.result);
-       *res_conv = C2Tuple_PaymentHashPaymentSecretZ_clone(res_conv);
-       return ((uint64_t)res_conv);
-}
-void  __attribute__((visibility("default"))) TS_LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_get_err(uint32_t arg) {
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *val = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       return *val->contents.err;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *val = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKC2Tuple_PaymentHashPaymentSecretZ* res_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ), "LDKC2Tuple_PaymentHashPaymentSecretZ");
-       *res_conv = (*val->contents.result);
-       *res_conv = C2Tuple_PaymentHashPaymentSecretZ_clone(res_conv);
-       return ((uint64_t)res_conv);
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_err(uint32_t arg) {
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *val = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint64_t err_ref = ((uint64_t)&(*val->contents.err)) | 1;
-       return err_ref;
-}
-int8_tArray  __attribute__((visibility("default"))) TS_LDKCResult_PaymentSecretNoneZ_get_ok(uint32_t arg) {
-       LDKCResult_PaymentSecretNoneZ *val = (LDKCResult_PaymentSecretNoneZ*)(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).data, 32);
-       return res_arr;
-}
-void  __attribute__((visibility("default"))) TS_LDKCResult_PaymentSecretNoneZ_get_err(uint32_t arg) {
-       LDKCResult_PaymentSecretNoneZ *val = (LDKCResult_PaymentSecretNoneZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       return *val->contents.err;
-}
-int8_tArray  __attribute__((visibility("default"))) TS_LDKCResult_PaymentSecretAPIErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_PaymentSecretAPIErrorZ *val = (LDKCResult_PaymentSecretAPIErrorZ*)(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).data, 32);
-       return res_arr;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PaymentSecretAPIErrorZ_get_err(uint32_t arg) {
-       LDKCResult_PaymentSecretAPIErrorZ *val = (LDKCResult_PaymentSecretAPIErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint64_t err_ref = ((uint64_t)&(*val->contents.err)) | 1;
-       return err_ref;
-}
-int8_tArray  __attribute__((visibility("default"))) TS_LDKCResult_PaymentPreimageAPIErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_PaymentPreimageAPIErrorZ *val = (LDKCResult_PaymentPreimageAPIErrorZ*)(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).data, 32);
-       return res_arr;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PaymentPreimageAPIErrorZ_get_err(uint32_t arg) {
-       LDKCResult_PaymentPreimageAPIErrorZ *val = (LDKCResult_PaymentPreimageAPIErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint64_t err_ref = ((uint64_t)&(*val->contents.err)) | 1;
-       return err_ref;
-}
-static inline LDKCVec_ChannelMonitorZ CVec_ChannelMonitorZ_clone(const LDKCVec_ChannelMonitorZ *orig) {
-       LDKCVec_ChannelMonitorZ ret = { .data = MALLOC(sizeof(LDKChannelMonitor) * orig->datalen, "LDKCVec_ChannelMonitorZ clone bytes"), .datalen = orig->datalen };
+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] = ChannelMonitor_clone(&orig->data[i]);
+               ret.data[i] = RouteHop_clone(&orig->data[i]);
        }
        return ret;
 }
-typedef struct LDKWatch_JCalls {
-       atomic_size_t refcnt;
-       uint32_t watch_channel_meth;
-       uint32_t update_channel_meth;
-       uint32_t release_pending_monitor_events_meth;
-} LDKWatch_JCalls;
-static void LDKWatch_JCalls_free(void* this_arg) {
-       LDKWatch_JCalls *j_calls = (LDKWatch_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->watch_channel_meth);
-               js_free(j_calls->update_channel_meth);
-               js_free(j_calls->release_pending_monitor_events_meth);
-               FREE(j_calls);
+uint32_t __attribute__((visibility("default"))) TS_LDKSpendableOutputDescriptor_ref_from_ptr(uint32_t ptr) {
+       LDKSpendableOutputDescriptor *obj = (LDKSpendableOutputDescriptor*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKSpendableOutputDescriptor_StaticOutput: {
+                       LDKOutPoint outpoint_var = obj->static_output.outpoint;
+                       uint64_t outpoint_ref = 0;
+                       CHECK((((uint64_t)outpoint_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&outpoint_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(outpoint_var);
+                       outpoint_ref = (uint64_t)outpoint_var.inner & ~1;
+                       uint64_t output_ref = ((uint64_t)&obj->static_output.output) | 1;
+                       return 0 /* LDKSpendableOutputDescriptor - StaticOutput */; (void) outpoint_ref; (void) (uint64_t)output_ref;
+               }
+               case LDKSpendableOutputDescriptor_DelayedPaymentOutput: {
+                       LDKDelayedPaymentOutputDescriptor delayed_payment_output_var = obj->delayed_payment_output;
+                       uint64_t delayed_payment_output_ref = 0;
+                       CHECK((((uint64_t)delayed_payment_output_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&delayed_payment_output_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(delayed_payment_output_var);
+                       delayed_payment_output_ref = (uint64_t)delayed_payment_output_var.inner & ~1;
+                       return 0 /* LDKSpendableOutputDescriptor - DelayedPaymentOutput */; (void) delayed_payment_output_ref;
+               }
+               case LDKSpendableOutputDescriptor_StaticPaymentOutput: {
+                       LDKStaticPaymentOutputDescriptor static_payment_output_var = obj->static_payment_output;
+                       uint64_t static_payment_output_ref = 0;
+                       CHECK((((uint64_t)static_payment_output_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&static_payment_output_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(static_payment_output_var);
+                       static_payment_output_ref = (uint64_t)static_payment_output_var.inner & ~1;
+                       return 0 /* LDKSpendableOutputDescriptor - StaticPaymentOutput */; (void) static_payment_output_ref;
+               }
+               default: abort();
        }
 }
-LDKCResult_NoneChannelMonitorUpdateErrZ watch_channel_LDKWatch_jcall(const void* this_arg, LDKOutPoint funding_txo, LDKChannelMonitor monitor) {
-       LDKWatch_JCalls *j_calls = (LDKWatch_JCalls*) this_arg;
-       LDKOutPoint funding_txo_var = funding_txo;
-       uint64_t funding_txo_ref = 0;
-       CHECK((((uint64_t)funding_txo_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&funding_txo_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_var);
-       funding_txo_ref = (uint64_t)funding_txo_var.inner;
-       if (funding_txo_var.is_owned) {
-               funding_txo_ref |= 1;
-       }
-       LDKChannelMonitor monitor_var = monitor;
-       uint64_t monitor_ref = 0;
-       CHECK((((uint64_t)monitor_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&monitor_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(monitor_var);
-       monitor_ref = (uint64_t)monitor_var.inner;
-       if (monitor_var.is_owned) {
-               monitor_ref |= 1;
+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]);
        }
-       uint32_t ret = js_invoke_function_2(j_calls->watch_channel_meth, funding_txo_ref, monitor_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_NoneChannelMonitorUpdateErrZ ret_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+       return ret;
 }
-LDKCResult_NoneChannelMonitorUpdateErrZ update_channel_LDKWatch_jcall(const void* this_arg, LDKOutPoint funding_txo, LDKChannelMonitorUpdate update) {
-       LDKWatch_JCalls *j_calls = (LDKWatch_JCalls*) this_arg;
-       LDKOutPoint funding_txo_var = funding_txo;
-       uint64_t funding_txo_ref = 0;
-       CHECK((((uint64_t)funding_txo_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&funding_txo_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_var);
-       funding_txo_ref = (uint64_t)funding_txo_var.inner;
-       if (funding_txo_var.is_owned) {
-               funding_txo_ref |= 1;
+uint32_t __attribute__((visibility("default"))) TS_LDKClosureReason_ref_from_ptr(uint32_t ptr) {
+       LDKClosureReason *obj = (LDKClosureReason*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKClosureReason_CounterpartyForceClosed: {
+                       LDKStr peer_msg_str = obj->counterparty_force_closed.peer_msg;
+                       jstring peer_msg_conv = str_ref_to_ts(peer_msg_str.chars, peer_msg_str.len);
+                       return 0 /* LDKClosureReason - CounterpartyForceClosed */; (void) peer_msg_conv;
+               }
+               case LDKClosureReason_HolderForceClosed: {
+                       return 0 /* LDKClosureReason - HolderForceClosed */;
+               }
+               case LDKClosureReason_CooperativeClosure: {
+                       return 0 /* LDKClosureReason - CooperativeClosure */;
+               }
+               case LDKClosureReason_CommitmentTxConfirmed: {
+                       return 0 /* LDKClosureReason - CommitmentTxConfirmed */;
+               }
+               case LDKClosureReason_FundingTimedOut: {
+                       return 0 /* LDKClosureReason - FundingTimedOut */;
+               }
+               case LDKClosureReason_ProcessingError: {
+                       LDKStr err_str = obj->processing_error.err;
+                       jstring err_conv = str_ref_to_ts(err_str.chars, err_str.len);
+                       return 0 /* LDKClosureReason - ProcessingError */; (void) err_conv;
+               }
+               case LDKClosureReason_DisconnectedPeer: {
+                       return 0 /* LDKClosureReason - DisconnectedPeer */;
+               }
+               case LDKClosureReason_OutdatedChannelManager: {
+                       return 0 /* LDKClosureReason - OutdatedChannelManager */;
+               }
+               default: abort();
        }
-       LDKChannelMonitorUpdate update_var = update;
-       uint64_t update_ref = 0;
-       CHECK((((uint64_t)update_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&update_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_var);
-       update_ref = (uint64_t)update_var.inner;
-       if (update_var.is_owned) {
-               update_ref |= 1;
+}
+uint32_t __attribute__((visibility("default"))) TS_LDKEvent_ref_from_ptr(uint32_t ptr) {
+       LDKEvent *obj = (LDKEvent*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKEvent_FundingGenerationReady: {
+                       int8_tArray temporary_channel_id_arr = init_int8_tArray(32);
+                       memcpy(temporary_channel_id_arr->elems, 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_int8_tArray(output_script_var.datalen);
+                       memcpy(output_script_arr->elems, 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_PaymentReceived: {
+                       int8_tArray payment_hash_arr = init_int8_tArray(32);
+                       memcpy(payment_hash_arr->elems, obj->payment_received.payment_hash.data, 32);
+                       uint64_t purpose_ref = ((uint64_t)&obj->payment_received.purpose) | 1;
+                       return 0 /* LDKEvent - PaymentReceived */; (void) payment_hash_arr; (void) obj->payment_received.amt; (void) purpose_ref;
+               }
+               case LDKEvent_PaymentSent: {
+                       int8_tArray payment_id_arr = init_int8_tArray(32);
+                       memcpy(payment_id_arr->elems, obj->payment_sent.payment_id.data, 32);
+                       int8_tArray payment_preimage_arr = init_int8_tArray(32);
+                       memcpy(payment_preimage_arr->elems, obj->payment_sent.payment_preimage.data, 32);
+                       int8_tArray payment_hash_arr = init_int8_tArray(32);
+                       memcpy(payment_hash_arr->elems, obj->payment_sent.payment_hash.data, 32);
+                       uint64_t fee_paid_msat_ref = ((uint64_t)&obj->payment_sent.fee_paid_msat) | 1;
+                       return 0 /* LDKEvent - PaymentSent */; (void) payment_id_arr; (void) payment_preimage_arr; (void) payment_hash_arr; (void) fee_paid_msat_ref;
+               }
+               case LDKEvent_PaymentPathFailed: {
+                       int8_tArray payment_id_arr = init_int8_tArray(32);
+                       memcpy(payment_id_arr->elems, obj->payment_path_failed.payment_id.data, 32);
+                       int8_tArray payment_hash_arr = init_int8_tArray(32);
+                       memcpy(payment_hash_arr->elems, obj->payment_path_failed.payment_hash.data, 32);
+                       uint64_t network_update_ref = ((uint64_t)&obj->payment_path_failed.network_update) | 1;
+                       LDKCVec_RouteHopZ path_var = obj->payment_path_failed.path;
+                       uint32_tArray path_arr = NULL;
+                       path_arr = init_uint32_tArray(path_var.datalen);
+                       uint32_t *path_arr_ptr = (uint32_t*)(path_arr + 4);
+                       for (size_t k = 0; k < path_var.datalen; k++) {
+                               LDKRouteHop path_conv_10_var = path_var.data[k];
+                               uint64_t path_conv_10_ref = 0;
+                               CHECK((((uint64_t)path_conv_10_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                               CHECK((((uint64_t)&path_conv_10_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_var);
+                               path_conv_10_ref = (uint64_t)path_conv_10_var.inner & ~1;
+                               path_arr_ptr[k] = path_conv_10_ref;
+                       }
+                       
+                       uint64_t short_channel_id_ref = ((uint64_t)&obj->payment_path_failed.short_channel_id) | 1;
+                       LDKRouteParameters retry_var = obj->payment_path_failed.retry;
+                       uint64_t retry_ref = 0;
+                       if ((uint64_t)retry_var.inner > 4096) {
+                               CHECK((((uint64_t)retry_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                               CHECK((((uint64_t)&retry_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(retry_var);
+                               retry_ref = (uint64_t)retry_var.inner & ~1;
+                       }
+                       return 0 /* LDKEvent - PaymentPathFailed */; (void) payment_id_arr; (void) payment_hash_arr; (void) obj->payment_path_failed.rejected_by_dest; (void) network_update_ref; (void) obj->payment_path_failed.all_paths_failed; (void) path_arr; (void) short_channel_id_ref; (void) retry_ref;
+               }
+               case LDKEvent_PaymentFailed: {
+                       int8_tArray payment_id_arr = init_int8_tArray(32);
+                       memcpy(payment_id_arr->elems, obj->payment_failed.payment_id.data, 32);
+                       int8_tArray payment_hash_arr = init_int8_tArray(32);
+                       memcpy(payment_hash_arr->elems, obj->payment_failed.payment_hash.data, 32);
+                       return 0 /* LDKEvent - PaymentFailed */; (void) payment_id_arr; (void) payment_hash_arr;
+               }
+               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 = NULL;
+                       outputs_arr = init_uint32_tArray(outputs_var.datalen);
+                       uint32_t *outputs_arr_ptr = (uint32_t*)(outputs_arr + 4);
+                       for (size_t b = 0; b < outputs_var.datalen; b++) {
+                               uint64_t outputs_conv_27_ref = ((uint64_t)&outputs_var.data[b]) | 1;
+                               outputs_arr_ptr[b] = outputs_conv_27_ref;
+                       }
+                       
+                       return 0 /* LDKEvent - SpendableOutputs */; (void) outputs_arr;
+               }
+               case LDKEvent_PaymentForwarded: {
+                       uint64_t fee_earned_msat_ref = ((uint64_t)&obj->payment_forwarded.fee_earned_msat) | 1;
+                       return 0 /* LDKEvent - PaymentForwarded */; (void) fee_earned_msat_ref; (void) obj->payment_forwarded.claim_from_onchain_tx;
+               }
+               case LDKEvent_ChannelClosed: {
+                       int8_tArray channel_id_arr = init_int8_tArray(32);
+                       memcpy(channel_id_arr->elems, obj->channel_closed.channel_id.data, 32);
+                       uint64_t reason_ref = ((uint64_t)&obj->channel_closed.reason) | 1;
+                       return 0 /* LDKEvent - ChannelClosed */; (void) channel_id_arr; (void) obj->channel_closed.user_channel_id; (void) reason_ref;
+               }
+               case LDKEvent_DiscardFunding: {
+                       int8_tArray channel_id_arr = init_int8_tArray(32);
+                       memcpy(channel_id_arr->elems, obj->discard_funding.channel_id.data, 32);
+                       LDKTransaction transaction_var = obj->discard_funding.transaction;
+                       int8_tArray transaction_arr = init_int8_tArray(transaction_var.datalen);
+                       memcpy(transaction_arr->elems, transaction_var.data, transaction_var.datalen);
+                       return 0 /* LDKEvent - DiscardFunding */; (void) channel_id_arr; (void) transaction_arr;
+               }
+               case LDKEvent_PaymentPathSuccessful: {
+                       int8_tArray payment_id_arr = init_int8_tArray(32);
+                       memcpy(payment_id_arr->elems, obj->payment_path_successful.payment_id.data, 32);
+                       int8_tArray payment_hash_arr = init_int8_tArray(32);
+                       memcpy(payment_hash_arr->elems, obj->payment_path_successful.payment_hash.data, 32);
+                       LDKCVec_RouteHopZ path_var = obj->payment_path_successful.path;
+                       uint32_tArray path_arr = NULL;
+                       path_arr = init_uint32_tArray(path_var.datalen);
+                       uint32_t *path_arr_ptr = (uint32_t*)(path_arr + 4);
+                       for (size_t k = 0; k < path_var.datalen; k++) {
+                               LDKRouteHop path_conv_10_var = path_var.data[k];
+                               uint64_t path_conv_10_ref = 0;
+                               CHECK((((uint64_t)path_conv_10_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                               CHECK((((uint64_t)&path_conv_10_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_var);
+                               path_conv_10_ref = (uint64_t)path_conv_10_var.inner & ~1;
+                               path_arr_ptr[k] = path_conv_10_ref;
+                       }
+                       
+                       return 0 /* LDKEvent - PaymentPathSuccessful */; (void) payment_id_arr; (void) payment_hash_arr; (void) path_arr;
+               }
+               default: abort();
        }
-       uint32_t ret = js_invoke_function_2(j_calls->update_channel_meth, funding_txo_ref, update_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_NoneChannelMonitorUpdateErrZ ret_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
 }
-LDKCVec_MonitorEventZ release_pending_monitor_events_LDKWatch_jcall(const void* this_arg) {
-       LDKWatch_JCalls *j_calls = (LDKWatch_JCalls*) this_arg;
-       uint32_tArray ret = js_invoke_function_0(j_calls->release_pending_monitor_events_meth);
-       LDKCVec_MonitorEventZ ret_constr;
-       ret_constr.datalen = *((uint32_t*)ret);
-       if (ret_constr.datalen > 0)
-               ret_constr.data = MALLOC(ret_constr.datalen * sizeof(LDKMonitorEvent), "LDKCVec_MonitorEventZ Elements");
-       else
-               ret_constr.data = NULL;
-       uint32_t* ret_vals = (uint32_t*)(ret + 4);
-       for (size_t o = 0; o < ret_constr.datalen; o++) {
-               uint32_t ret_conv_14 = ret_vals[o];
-               void* ret_conv_14_ptr = (void*)(((uint64_t)ret_conv_14) & ~1);
-               CHECK_ACCESS(ret_conv_14_ptr);
-               LDKMonitorEvent ret_conv_14_conv = *(LDKMonitorEvent*)(ret_conv_14_ptr);
-               FREE((void*)ret_conv_14);
-               ret_constr.data[o] = ret_conv_14_conv;
+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] = Event_clone(&orig->data[i]);
        }
-       return ret_constr;
+       return ret;
 }
-static void LDKWatch_JCalls_cloned(LDKWatch* new_obj) {
-       LDKWatch_JCalls *j_calls = (LDKWatch_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+static inline uintptr_t C2Tuple_usizeTransactionZ_get_a(LDKC2Tuple_usizeTransactionZ *NONNULL_PTR owner){
+       return owner->a;
+}
+int64_t  __attribute__((visibility("default"))) TS_C2Tuple_usizeTransactionZ_get_a(uint32_t owner) {
+       LDKC2Tuple_usizeTransactionZ* owner_conv = (LDKC2Tuple_usizeTransactionZ*)(owner & ~1);
+       int64_t ret_val = C2Tuple_usizeTransactionZ_get_a(owner_conv);
+       return ret_val;
 }
-static inline LDKWatch LDKWatch_init (/*TODO: JS Object Reference */void* o) {
-       LDKWatch_JCalls *calls = MALLOC(sizeof(LDKWatch_JCalls), "LDKWatch_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
 
-       LDKWatch ret = {
-               .this_arg = (void*) calls,
-               .watch_channel = watch_channel_LDKWatch_jcall,
-               .update_channel = update_channel_LDKWatch_jcall,
-               .release_pending_monitor_events = release_pending_monitor_events_LDKWatch_jcall,
-               .free = LDKWatch_JCalls_free,
-       };
+static inline struct LDKTransaction C2Tuple_usizeTransactionZ_get_b(LDKC2Tuple_usizeTransactionZ *NONNULL_PTR owner){
+       return owner->b;
+}
+int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_usizeTransactionZ_get_b(uint32_t owner) {
+       LDKC2Tuple_usizeTransactionZ* owner_conv = (LDKC2Tuple_usizeTransactionZ*)(owner & ~1);
+       LDKTransaction ret_var = C2Tuple_usizeTransactionZ_get_b(owner_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       Transaction_free(ret_var);
+       return ret_arr;
+}
+
+static inline LDKCVec_C2Tuple_usizeTransactionZZ CVec_C2Tuple_usizeTransactionZZ_clone(const LDKCVec_C2Tuple_usizeTransactionZZ *orig) {
+       LDKCVec_C2Tuple_usizeTransactionZZ ret = { .data = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ) * orig->datalen, "LDKCVec_C2Tuple_usizeTransactionZZ clone bytes"), .datalen = orig->datalen };
+       for (size_t i = 0; i < ret.datalen; i++) {
+               ret.data[i] = C2Tuple_usizeTransactionZ_clone(&orig->data[i]);
+       }
        return ret;
 }
-long  __attribute__((visibility("default"))) TS_LDKWatch_new(/*TODO: JS Object Reference */void* o) {
-       LDKWatch *res_ptr = MALLOC(sizeof(LDKWatch), "LDKWatch");
-       *res_ptr = LDKWatch_init(o);
-       return (long)res_ptr;
+static inline uint32_t C2Tuple_u32TxOutZ_get_a(LDKC2Tuple_u32TxOutZ *NONNULL_PTR owner){
+       return owner->a;
 }
-uint32_t  __attribute__((visibility("default"))) TS_Watch_watch_channel(uint32_t this_arg, uint32_t funding_txo, uint32_t monitor) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKWatch* this_arg_conv = (LDKWatch*)this_arg_ptr;
-       LDKOutPoint funding_txo_conv;
-       funding_txo_conv.inner = (void*)(funding_txo & (~1));
-       funding_txo_conv.is_owned = (funding_txo & 1) || (funding_txo == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_conv);
-       funding_txo_conv = OutPoint_clone(&funding_txo_conv);
-       LDKChannelMonitor monitor_conv;
-       monitor_conv.inner = (void*)(monitor & (~1));
-       monitor_conv.is_owned = (monitor & 1) || (monitor == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(monitor_conv);
-       monitor_conv = ChannelMonitor_clone(&monitor_conv);
-       LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ");
-       *ret_conv = (this_arg_conv->watch_channel)(this_arg_conv->this_arg, funding_txo_conv, monitor_conv);
-       return (uint64_t)ret_conv;
+int32_t  __attribute__((visibility("default"))) TS_C2Tuple_u32TxOutZ_get_a(uint32_t owner) {
+       LDKC2Tuple_u32TxOutZ* owner_conv = (LDKC2Tuple_u32TxOutZ*)(owner & ~1);
+       int32_t ret_val = C2Tuple_u32TxOutZ_get_a(owner_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Watch_update_channel(uint32_t this_arg, uint32_t funding_txo, uint32_t update) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKWatch* this_arg_conv = (LDKWatch*)this_arg_ptr;
-       LDKOutPoint funding_txo_conv;
-       funding_txo_conv.inner = (void*)(funding_txo & (~1));
-       funding_txo_conv.is_owned = (funding_txo & 1) || (funding_txo == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_conv);
-       funding_txo_conv = OutPoint_clone(&funding_txo_conv);
-       LDKChannelMonitorUpdate update_conv;
-       update_conv.inner = (void*)(update & (~1));
-       update_conv.is_owned = (update & 1) || (update == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_conv);
-       update_conv = ChannelMonitorUpdate_clone(&update_conv);
-       LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ");
-       *ret_conv = (this_arg_conv->update_channel)(this_arg_conv->this_arg, funding_txo_conv, update_conv);
-       return (uint64_t)ret_conv;
+static inline struct LDKTxOut C2Tuple_u32TxOutZ_get_b(LDKC2Tuple_u32TxOutZ *NONNULL_PTR owner){
+       return TxOut_clone(&owner->b);
+}
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_u32TxOutZ_get_b(uint32_t owner) {
+       LDKC2Tuple_u32TxOutZ* owner_conv = (LDKC2Tuple_u32TxOutZ*)(owner & ~1);
+       LDKTxOut* ret_ref = MALLOC(sizeof(LDKTxOut), "LDKTxOut");
+       *ret_ref = C2Tuple_u32TxOutZ_get_b(owner_conv);
+       return (uint64_t)ret_ref;
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_Watch_release_pending_monitor_events(uint32_t this_arg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKWatch* this_arg_conv = (LDKWatch*)this_arg_ptr;
-       LDKCVec_MonitorEventZ ret_var = (this_arg_conv->release_pending_monitor_events)(this_arg_conv->this_arg);
+static inline LDKCVec_C2Tuple_u32TxOutZZ CVec_C2Tuple_u32TxOutZZ_clone(const LDKCVec_C2Tuple_u32TxOutZZ *orig) {
+       LDKCVec_C2Tuple_u32TxOutZZ ret = { .data = MALLOC(sizeof(LDKC2Tuple_u32TxOutZ) * orig->datalen, "LDKCVec_C2Tuple_u32TxOutZZ clone bytes"), .datalen = orig->datalen };
+       for (size_t i = 0; i < ret.datalen; i++) {
+               ret.data[i] = C2Tuple_u32TxOutZ_clone(&orig->data[i]);
+       }
+       return ret;
+}
+static inline struct LDKThirtyTwoBytes C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_a(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR owner){
+       return ThirtyTwoBytes_clone(&owner->a);
+}
+int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_a(uint32_t owner) {
+       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* owner_conv = (LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_a(owner_conv).data, 32);
+       return ret_arr;
+}
+
+static inline struct LDKCVec_C2Tuple_u32TxOutZZ C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_b(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR owner){
+       return CVec_C2Tuple_u32TxOutZZ_clone(&owner->b);
+}
+uint32_tArray  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_b(uint32_t owner) {
+       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* owner_conv = (LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ*)(owner & ~1);
+       LDKCVec_C2Tuple_u32TxOutZZ ret_var = C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_b(owner_conv);
        uint32_tArray ret_arr = NULL;
-       ret_arr = init_arr(ret_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
+       ret_arr = init_uint32_tArray(ret_var.datalen);
        uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
-       for (size_t o = 0; o < ret_var.datalen; o++) {
-               LDKMonitorEvent *ret_conv_14_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
-               *ret_conv_14_copy = ret_var.data[o];
-               uint64_t ret_conv_14_ref = (uint64_t)ret_conv_14_copy;
-               ret_arr_ptr[o] = ret_conv_14_ref;
+       for (size_t u = 0; u < ret_var.datalen; u++) {
+               LDKC2Tuple_u32TxOutZ* ret_conv_20_conv = MALLOC(sizeof(LDKC2Tuple_u32TxOutZ), "LDKC2Tuple_u32TxOutZ");
+               *ret_conv_20_conv = ret_var.data[u];
+               ret_arr_ptr[u] = ((uint64_t)ret_conv_20_conv);
        }
        
        FREE(ret_var.data);
        return ret_arr;
 }
 
-typedef struct LDKBroadcasterInterface_JCalls {
-       atomic_size_t refcnt;
-       uint32_t broadcast_transaction_meth;
-} LDKBroadcasterInterface_JCalls;
-static void LDKBroadcasterInterface_JCalls_free(void* this_arg) {
-       LDKBroadcasterInterface_JCalls *j_calls = (LDKBroadcasterInterface_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->broadcast_transaction_meth);
-               FREE(j_calls);
+static inline LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_clone(const LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ *orig) {
+       LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ret = { .data = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ) * orig->datalen, "LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ clone bytes"), .datalen = orig->datalen };
+       for (size_t i = 0; i < ret.datalen; i++) {
+               ret.data[i] = C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone(&orig->data[i]);
        }
+       return ret;
 }
-void broadcast_transaction_LDKBroadcasterInterface_jcall(const void* this_arg, LDKTransaction tx) {
-       LDKBroadcasterInterface_JCalls *j_calls = (LDKBroadcasterInterface_JCalls*) this_arg;
-       LDKTransaction tx_var = tx;
-       int8_tArray tx_arr = init_arr(tx_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(tx_arr + 4), tx_var.data, tx_var.datalen);
-       Transaction_free(tx_var);
-       js_invoke_function_1(j_calls->broadcast_transaction_meth, tx_arr);
+static inline LDKCVec_TxidZ CVec_ThirtyTwoBytesZ_clone(const LDKCVec_TxidZ *orig) {
+       LDKCVec_TxidZ ret = { .data = MALLOC(sizeof(LDKThirtyTwoBytes) * orig->datalen, "LDKCVec_TxidZ clone bytes"), .datalen = orig->datalen };
+       for (size_t i = 0; i < ret.datalen; i++) {
+               ret.data[i] = ThirtyTwoBytes_clone(&orig->data[i]);
+       }
+       return ret;
 }
-static void LDKBroadcasterInterface_JCalls_cloned(LDKBroadcasterInterface* new_obj) {
-       LDKBroadcasterInterface_JCalls *j_calls = (LDKBroadcasterInterface_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+uint32_t __attribute__((visibility("default"))) TS_LDKBalance_ref_from_ptr(uint32_t ptr) {
+       LDKBalance *obj = (LDKBalance*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKBalance_ClaimableOnChannelClose: {
+                       return 0 /* LDKBalance - ClaimableOnChannelClose */; (void) obj->claimable_on_channel_close.claimable_amount_satoshis;
+               }
+               case LDKBalance_ClaimableAwaitingConfirmations: {
+                       return 0 /* LDKBalance - ClaimableAwaitingConfirmations */; (void) obj->claimable_awaiting_confirmations.claimable_amount_satoshis; (void) obj->claimable_awaiting_confirmations.confirmation_height;
+               }
+               case LDKBalance_ContentiousClaimable: {
+                       return 0 /* LDKBalance - ContentiousClaimable */; (void) obj->contentious_claimable.claimable_amount_satoshis; (void) obj->contentious_claimable.timeout_height;
+               }
+               case LDKBalance_MaybeClaimableHTLCAwaitingTimeout: {
+                       return 0 /* LDKBalance - MaybeClaimableHTLCAwaitingTimeout */; (void) obj->maybe_claimable_htlc_awaiting_timeout.claimable_amount_satoshis; (void) obj->maybe_claimable_htlc_awaiting_timeout.claimable_height;
+               }
+               default: abort();
+       }
 }
-static inline LDKBroadcasterInterface LDKBroadcasterInterface_init (/*TODO: JS Object Reference */void* o) {
-       LDKBroadcasterInterface_JCalls *calls = MALLOC(sizeof(LDKBroadcasterInterface_JCalls), "LDKBroadcasterInterface_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
-
-       LDKBroadcasterInterface ret = {
-               .this_arg = (void*) calls,
-               .broadcast_transaction = broadcast_transaction_LDKBroadcasterInterface_jcall,
-               .free = LDKBroadcasterInterface_JCalls_free,
-       };
+static inline LDKCVec_BalanceZ CVec_BalanceZ_clone(const LDKCVec_BalanceZ *orig) {
+       LDKCVec_BalanceZ ret = { .data = MALLOC(sizeof(LDKBalance) * orig->datalen, "LDKCVec_BalanceZ clone bytes"), .datalen = orig->datalen };
+       for (size_t i = 0; i < ret.datalen; i++) {
+               ret.data[i] = Balance_clone(&orig->data[i]);
+       }
        return ret;
 }
-long  __attribute__((visibility("default"))) TS_LDKBroadcasterInterface_new(/*TODO: JS Object Reference */void* o) {
-       LDKBroadcasterInterface *res_ptr = MALLOC(sizeof(LDKBroadcasterInterface), "LDKBroadcasterInterface");
-       *res_ptr = LDKBroadcasterInterface_init(o);
-       return (long)res_ptr;
+static inline struct LDKSignature C2Tuple_SignatureCVec_SignatureZZ_get_a(LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR owner){
+       return owner->a;
 }
-void  __attribute__((visibility("default"))) TS_BroadcasterInterface_broadcast_transaction(uint32_t this_arg, int8_tArray tx) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKBroadcasterInterface* this_arg_conv = (LDKBroadcasterInterface*)this_arg_ptr;
-       LDKTransaction tx_ref;
-       tx_ref.datalen = *((uint32_t*)tx);
-       tx_ref.data = MALLOC(tx_ref.datalen, "LDKTransaction Bytes");
-       memcpy(tx_ref.data, (uint8_t*)(tx + 4), tx_ref.datalen);
-       tx_ref.data_is_owned = true;
-       (this_arg_conv->broadcast_transaction)(this_arg_conv->this_arg, tx_ref);
+int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_SignatureCVec_SignatureZZ_get_a(uint32_t owner) {
+       LDKC2Tuple_SignatureCVec_SignatureZZ* owner_conv = (LDKC2Tuple_SignatureCVec_SignatureZZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, C2Tuple_SignatureCVec_SignatureZZ_get_a(owner_conv).compact_form, 64);
+       return ret_arr;
 }
 
-typedef struct LDKKeysInterface_JCalls {
+static inline struct LDKCVec_SignatureZ C2Tuple_SignatureCVec_SignatureZZ_get_b(LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR owner){
+       return owner->b;
+}
+ptrArray  __attribute__((visibility("default"))) TS_C2Tuple_SignatureCVec_SignatureZZ_get_b(uint32_t owner) {
+       LDKC2Tuple_SignatureCVec_SignatureZZ* owner_conv = (LDKC2Tuple_SignatureCVec_SignatureZZ*)(owner & ~1);
+       LDKCVec_SignatureZ ret_var = C2Tuple_SignatureCVec_SignatureZZ_get_b(owner_conv);
+       ptrArray ret_arr = NULL;
+       ret_arr = init_ptrArray(ret_var.datalen);
+       int8_tArray *ret_arr_ptr = (int8_tArray*)(ret_arr + 4);
+       for (size_t m = 0; m < ret_var.datalen; m++) {
+               int8_tArray ret_conv_12_arr = init_int8_tArray(64);
+               memcpy(ret_conv_12_arr->elems, ret_var.data[m].compact_form, 64);
+               ret_arr_ptr[m] = ret_conv_12_arr;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
+}
+
+static inline struct LDKC2Tuple_SignatureCVec_SignatureZZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_ok(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return C2Tuple_SignatureCVec_SignatureZZ_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_ok(uint32_t owner) {
+       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* owner_conv = (LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(owner & ~1);
+       LDKC2Tuple_SignatureCVec_SignatureZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ), "LDKC2Tuple_SignatureCVec_SignatureZZ");
+       *ret_conv = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_ok(owner_conv);
+       return ((uint64_t)ret_conv);
+}
+
+static inline void CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_err(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
+}
+void  __attribute__((visibility("default"))) TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_err(uint32_t owner) {
+       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* owner_conv = (LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(owner & ~1);
+       CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_err(owner_conv);
+}
+
+static inline struct LDKSignature CResult_SignatureNoneZ_get_ok(LDKCResult_SignatureNoneZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
+}
+int8_tArray  __attribute__((visibility("default"))) TS_CResult_SignatureNoneZ_get_ok(uint32_t owner) {
+       LDKCResult_SignatureNoneZ* owner_conv = (LDKCResult_SignatureNoneZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, CResult_SignatureNoneZ_get_ok(owner_conv).compact_form, 64);
+       return ret_arr;
+}
+
+static inline void CResult_SignatureNoneZ_get_err(LDKCResult_SignatureNoneZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
+}
+void  __attribute__((visibility("default"))) TS_CResult_SignatureNoneZ_get_err(uint32_t owner) {
+       LDKCResult_SignatureNoneZ* owner_conv = (LDKCResult_SignatureNoneZ*)(owner & ~1);
+       CResult_SignatureNoneZ_get_err(owner_conv);
+}
+
+typedef struct LDKBaseSign_JCalls {
        atomic_size_t refcnt;
-       uint32_t get_node_secret_meth;
-       uint32_t get_destination_script_meth;
-       uint32_t get_shutdown_scriptpubkey_meth;
-       uint32_t get_channel_signer_meth;
-       uint32_t get_secure_random_bytes_meth;
-       uint32_t read_chan_signer_meth;
-       uint32_t sign_invoice_meth;
-       uint32_t get_inbound_payment_key_material_meth;
-} LDKKeysInterface_JCalls;
-static void LDKKeysInterface_JCalls_free(void* this_arg) {
-       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
+       uint32_t get_per_commitment_point_meth;
+       uint32_t release_commitment_secret_meth;
+       uint32_t validate_holder_commitment_meth;
+       uint32_t channel_keys_id_meth;
+       uint32_t sign_counterparty_commitment_meth;
+       uint32_t validate_counterparty_revocation_meth;
+       uint32_t sign_holder_commitment_and_htlcs_meth;
+       uint32_t sign_justice_revoked_output_meth;
+       uint32_t sign_justice_revoked_htlc_meth;
+       uint32_t sign_counterparty_htlc_transaction_meth;
+       uint32_t sign_closing_transaction_meth;
+       uint32_t sign_channel_announcement_meth;
+       uint32_t ready_channel_meth;
+} LDKBaseSign_JCalls;
+static void LDKBaseSign_JCalls_free(void* this_arg) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
        if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->get_node_secret_meth);
-               js_free(j_calls->get_destination_script_meth);
-               js_free(j_calls->get_shutdown_scriptpubkey_meth);
-               js_free(j_calls->get_channel_signer_meth);
-               js_free(j_calls->get_secure_random_bytes_meth);
-               js_free(j_calls->read_chan_signer_meth);
-               js_free(j_calls->sign_invoice_meth);
-               js_free(j_calls->get_inbound_payment_key_material_meth);
+               js_free_function_ptr(j_calls->get_per_commitment_point_meth);
+               js_free_function_ptr(j_calls->release_commitment_secret_meth);
+               js_free_function_ptr(j_calls->validate_holder_commitment_meth);
+               js_free_function_ptr(j_calls->channel_keys_id_meth);
+               js_free_function_ptr(j_calls->sign_counterparty_commitment_meth);
+               js_free_function_ptr(j_calls->validate_counterparty_revocation_meth);
+               js_free_function_ptr(j_calls->sign_holder_commitment_and_htlcs_meth);
+               js_free_function_ptr(j_calls->sign_justice_revoked_output_meth);
+               js_free_function_ptr(j_calls->sign_justice_revoked_htlc_meth);
+               js_free_function_ptr(j_calls->sign_counterparty_htlc_transaction_meth);
+               js_free_function_ptr(j_calls->sign_closing_transaction_meth);
+               js_free_function_ptr(j_calls->sign_channel_announcement_meth);
+               js_free_function_ptr(j_calls->ready_channel_meth);
                FREE(j_calls);
        }
 }
-LDKSecretKey get_node_secret_LDKKeysInterface_jcall(const void* this_arg) {
-       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
-       int8_tArray ret = js_invoke_function_0(j_calls->get_node_secret_meth);
-       LDKSecretKey ret_ref;
-       CHECK(*((uint32_t*)ret) == 32);
-       memcpy(ret_ref.bytes, (uint8_t*)(ret + 4), 32);
+LDKPublicKey get_per_commitment_point_LDKBaseSign_jcall(const void* this_arg, uint64_t idx) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
+       int8_tArray ret = (int8_tArray)js_invoke_function_1(j_calls->get_per_commitment_point_meth, (uint32_t)idx);
+       LDKPublicKey ret_ref;
+       CHECK(ret->arr_len == 33);
+       memcpy(ret_ref.compressed_form, ret->elems, 33);
        return ret_ref;
 }
-LDKCVec_u8Z get_destination_script_LDKKeysInterface_jcall(const void* this_arg) {
-       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
-       int8_tArray ret = js_invoke_function_0(j_calls->get_destination_script_meth);
-       LDKCVec_u8Z ret_ref;
-       ret_ref.datalen = *((uint32_t*)ret);
-       ret_ref.data = MALLOC(ret_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(ret_ref.data, (uint8_t*)(ret + 4), ret_ref.datalen);
+LDKThirtyTwoBytes release_commitment_secret_LDKBaseSign_jcall(const void* this_arg, uint64_t idx) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
+       int8_tArray ret = (int8_tArray)js_invoke_function_1(j_calls->release_commitment_secret_meth, (uint32_t)idx);
+       LDKThirtyTwoBytes ret_ref;
+       CHECK(ret->arr_len == 32);
+       memcpy(ret_ref.data, ret->elems, 32);
        return ret_ref;
 }
-LDKShutdownScript get_shutdown_scriptpubkey_LDKKeysInterface_jcall(const void* this_arg) {
-       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
-       uint32_t ret = js_invoke_function_0(j_calls->get_shutdown_scriptpubkey_meth);
-       LDKShutdownScript ret_conv;
-       ret_conv.inner = (void*)(ret & (~1));
-       ret_conv.is_owned = (ret & 1) || (ret == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv);
-       return ret_conv;
-}
-LDKSign get_channel_signer_LDKKeysInterface_jcall(const void* this_arg, bool inbound, uint64_t channel_value_satoshis) {
-       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
-       uint32_t ret = js_invoke_function_2(j_calls->get_channel_signer_meth, inbound, channel_value_satoshis);
+LDKCResult_NoneNoneZ validate_holder_commitment_LDKBaseSign_jcall(const void* this_arg, const LDKHolderCommitmentTransaction * holder_tx) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
+       LDKHolderCommitmentTransaction holder_tx_var = *holder_tx;
+       uint64_t holder_tx_ref = 0;
+       holder_tx_var = HolderCommitmentTransaction_clone(holder_tx);
+       CHECK((((uint64_t)holder_tx_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&holder_tx_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(holder_tx_var);
+       holder_tx_ref = (uint64_t)holder_tx_var.inner;
+       if (holder_tx_var.is_owned) {
+               holder_tx_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_1(j_calls->validate_holder_commitment_meth, (uint32_t)holder_tx_ref);
        void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
        CHECK_ACCESS(ret_ptr);
-       LDKSign ret_conv = *(LDKSign*)(ret_ptr);
+       LDKCResult_NoneNoneZ ret_conv = *(LDKCResult_NoneNoneZ*)(ret_ptr);
        FREE((void*)ret);
        return ret_conv;
 }
-LDKThirtyTwoBytes get_secure_random_bytes_LDKKeysInterface_jcall(const void* this_arg) {
-       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
-       int8_tArray ret = js_invoke_function_0(j_calls->get_secure_random_bytes_meth);
+LDKThirtyTwoBytes channel_keys_id_LDKBaseSign_jcall(const void* this_arg) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
+       int8_tArray ret = (int8_tArray)js_invoke_function_0(j_calls->channel_keys_id_meth);
        LDKThirtyTwoBytes ret_ref;
-       CHECK(*((uint32_t*)ret) == 32);
-       memcpy(ret_ref.data, (uint8_t*)(ret + 4), 32);
+       CHECK(ret->arr_len == 32);
+       memcpy(ret_ref.data, ret->elems, 32);
        return ret_ref;
 }
-LDKCResult_SignDecodeErrorZ read_chan_signer_LDKKeysInterface_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);
-       uint32_t ret = js_invoke_function_1(j_calls->read_chan_signer_meth, reader_arr);
+LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_counterparty_commitment_LDKBaseSign_jcall(const void* this_arg, const LDKCommitmentTransaction * commitment_tx) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
+       LDKCommitmentTransaction commitment_tx_var = *commitment_tx;
+       uint64_t commitment_tx_ref = 0;
+       commitment_tx_var = CommitmentTransaction_clone(commitment_tx);
+       CHECK((((uint64_t)commitment_tx_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&commitment_tx_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_tx_var);
+       commitment_tx_ref = (uint64_t)commitment_tx_var.inner;
+       if (commitment_tx_var.is_owned) {
+               commitment_tx_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_1(j_calls->sign_counterparty_commitment_meth, (uint32_t)commitment_tx_ref);
        void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
        CHECK_ACCESS(ret_ptr);
-       LDKCResult_SignDecodeErrorZ ret_conv = *(LDKCResult_SignDecodeErrorZ*)(ret_ptr);
+       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret_conv = *(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(ret_ptr);
        FREE((void*)ret);
        return ret_conv;
 }
-LDKCResult_RecoverableSignatureNoneZ sign_invoice_LDKKeysInterface_jcall(const void* this_arg, LDKCVec_u8Z invoice_preimage) {
-       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
-       LDKCVec_u8Z invoice_preimage_var = invoice_preimage;
-       int8_tArray invoice_preimage_arr = init_arr(invoice_preimage_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(invoice_preimage_arr + 4), invoice_preimage_var.data, invoice_preimage_var.datalen);
-       CVec_u8Z_free(invoice_preimage_var);
-       uint32_t ret = js_invoke_function_1(j_calls->sign_invoice_meth, invoice_preimage_arr);
+LDKCResult_NoneNoneZ validate_counterparty_revocation_LDKBaseSign_jcall(const void* this_arg, uint64_t idx, const uint8_t (* secret)[32]) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
+       int8_tArray secret_arr = init_int8_tArray(32);
+       memcpy(secret_arr->elems, *secret, 32);
+       uint32_t ret = js_invoke_function_2(j_calls->validate_counterparty_revocation_meth, (uint32_t)idx, (uint32_t)secret_arr);
        void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
        CHECK_ACCESS(ret_ptr);
-       LDKCResult_RecoverableSignatureNoneZ ret_conv = *(LDKCResult_RecoverableSignatureNoneZ*)(ret_ptr);
+       LDKCResult_NoneNoneZ ret_conv = *(LDKCResult_NoneNoneZ*)(ret_ptr);
        FREE((void*)ret);
        return ret_conv;
 }
-LDKThirtyTwoBytes get_inbound_payment_key_material_LDKKeysInterface_jcall(const void* this_arg) {
-       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
-       int8_tArray ret = js_invoke_function_0(j_calls->get_inbound_payment_key_material_meth);
-       LDKThirtyTwoBytes ret_ref;
-       CHECK(*((uint32_t*)ret) == 32);
-       memcpy(ret_ref.data, (uint8_t*)(ret + 4), 32);
-       return ret_ref;
-}
-static void LDKKeysInterface_JCalls_cloned(LDKKeysInterface* new_obj) {
-       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
-}
-static inline LDKKeysInterface LDKKeysInterface_init (/*TODO: JS Object Reference */void* o) {
-       LDKKeysInterface_JCalls *calls = MALLOC(sizeof(LDKKeysInterface_JCalls), "LDKKeysInterface_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
-
-       LDKKeysInterface ret = {
-               .this_arg = (void*) calls,
-               .get_node_secret = get_node_secret_LDKKeysInterface_jcall,
-               .get_destination_script = get_destination_script_LDKKeysInterface_jcall,
-               .get_shutdown_scriptpubkey = get_shutdown_scriptpubkey_LDKKeysInterface_jcall,
-               .get_channel_signer = get_channel_signer_LDKKeysInterface_jcall,
-               .get_secure_random_bytes = get_secure_random_bytes_LDKKeysInterface_jcall,
-               .read_chan_signer = read_chan_signer_LDKKeysInterface_jcall,
-               .sign_invoice = sign_invoice_LDKKeysInterface_jcall,
-               .get_inbound_payment_key_material = get_inbound_payment_key_material_LDKKeysInterface_jcall,
-               .free = LDKKeysInterface_JCalls_free,
-       };
-       return ret;
-}
-long  __attribute__((visibility("default"))) TS_LDKKeysInterface_new(/*TODO: JS Object Reference */void* o) {
-       LDKKeysInterface *res_ptr = MALLOC(sizeof(LDKKeysInterface), "LDKKeysInterface");
-       *res_ptr = LDKKeysInterface_init(o);
-       return (long)res_ptr;
+LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_holder_commitment_and_htlcs_LDKBaseSign_jcall(const void* this_arg, const LDKHolderCommitmentTransaction * commitment_tx) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
+       LDKHolderCommitmentTransaction commitment_tx_var = *commitment_tx;
+       uint64_t commitment_tx_ref = 0;
+       commitment_tx_var = HolderCommitmentTransaction_clone(commitment_tx);
+       CHECK((((uint64_t)commitment_tx_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&commitment_tx_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_tx_var);
+       commitment_tx_ref = (uint64_t)commitment_tx_var.inner;
+       if (commitment_tx_var.is_owned) {
+               commitment_tx_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_1(j_calls->sign_holder_commitment_and_htlcs_meth, (uint32_t)commitment_tx_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret_conv = *(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
 }
-int8_tArray  __attribute__((visibility("default"))) TS_KeysInterface_get_node_secret(uint32_t this_arg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), (this_arg_conv->get_node_secret)(this_arg_conv->this_arg).bytes, 32);
-       return ret_arr;
+LDKCResult_SignatureNoneZ sign_justice_revoked_output_LDKBaseSign_jcall(const void* this_arg, LDKTransaction justice_tx, uintptr_t input, uint64_t amount, const uint8_t (* per_commitment_key)[32]) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
+       LDKTransaction justice_tx_var = justice_tx;
+       int8_tArray justice_tx_arr = init_int8_tArray(justice_tx_var.datalen);
+       memcpy(justice_tx_arr->elems, justice_tx_var.data, justice_tx_var.datalen);
+       Transaction_free(justice_tx_var);
+       int8_tArray per_commitment_key_arr = init_int8_tArray(32);
+       memcpy(per_commitment_key_arr->elems, *per_commitment_key, 32);
+       uint32_t ret = js_invoke_function_4(j_calls->sign_justice_revoked_output_meth, (uint32_t)justice_tx_arr, (uint32_t)input, (uint32_t)amount, (uint32_t)per_commitment_key_arr);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_SignatureNoneZ ret_conv = *(LDKCResult_SignatureNoneZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
 }
-
-int8_tArray  __attribute__((visibility("default"))) TS_KeysInterface_get_destination_script(uint32_t this_arg) {
+LDKCResult_SignatureNoneZ sign_justice_revoked_htlc_LDKBaseSign_jcall(const void* this_arg, LDKTransaction justice_tx, uintptr_t input, uint64_t amount, const uint8_t (* per_commitment_key)[32], const LDKHTLCOutputInCommitment * htlc) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
+       LDKTransaction justice_tx_var = justice_tx;
+       int8_tArray justice_tx_arr = init_int8_tArray(justice_tx_var.datalen);
+       memcpy(justice_tx_arr->elems, justice_tx_var.data, justice_tx_var.datalen);
+       Transaction_free(justice_tx_var);
+       int8_tArray per_commitment_key_arr = init_int8_tArray(32);
+       memcpy(per_commitment_key_arr->elems, *per_commitment_key, 32);
+       LDKHTLCOutputInCommitment htlc_var = *htlc;
+       uint64_t htlc_ref = 0;
+       htlc_var = HTLCOutputInCommitment_clone(htlc);
+       CHECK((((uint64_t)htlc_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&htlc_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_var);
+       htlc_ref = (uint64_t)htlc_var.inner;
+       if (htlc_var.is_owned) {
+               htlc_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_5(j_calls->sign_justice_revoked_htlc_meth, (uint32_t)justice_tx_arr, (uint32_t)input, (uint32_t)amount, (uint32_t)per_commitment_key_arr, (uint32_t)htlc_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_SignatureNoneZ ret_conv = *(LDKCResult_SignatureNoneZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
+}
+LDKCResult_SignatureNoneZ sign_counterparty_htlc_transaction_LDKBaseSign_jcall(const void* this_arg, LDKTransaction htlc_tx, uintptr_t input, uint64_t amount, LDKPublicKey per_commitment_point, const LDKHTLCOutputInCommitment * htlc) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
+       LDKTransaction htlc_tx_var = htlc_tx;
+       int8_tArray htlc_tx_arr = init_int8_tArray(htlc_tx_var.datalen);
+       memcpy(htlc_tx_arr->elems, htlc_tx_var.data, htlc_tx_var.datalen);
+       Transaction_free(htlc_tx_var);
+       int8_tArray per_commitment_point_arr = init_int8_tArray(33);
+       memcpy(per_commitment_point_arr->elems, per_commitment_point.compressed_form, 33);
+       LDKHTLCOutputInCommitment htlc_var = *htlc;
+       uint64_t htlc_ref = 0;
+       htlc_var = HTLCOutputInCommitment_clone(htlc);
+       CHECK((((uint64_t)htlc_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&htlc_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_var);
+       htlc_ref = (uint64_t)htlc_var.inner;
+       if (htlc_var.is_owned) {
+               htlc_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_5(j_calls->sign_counterparty_htlc_transaction_meth, (uint32_t)htlc_tx_arr, (uint32_t)input, (uint32_t)amount, (uint32_t)per_commitment_point_arr, (uint32_t)htlc_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_SignatureNoneZ ret_conv = *(LDKCResult_SignatureNoneZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
+}
+LDKCResult_SignatureNoneZ sign_closing_transaction_LDKBaseSign_jcall(const void* this_arg, const LDKClosingTransaction * closing_tx) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
+       LDKClosingTransaction closing_tx_var = *closing_tx;
+       uint64_t closing_tx_ref = 0;
+       closing_tx_var = ClosingTransaction_clone(closing_tx);
+       CHECK((((uint64_t)closing_tx_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&closing_tx_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(closing_tx_var);
+       closing_tx_ref = (uint64_t)closing_tx_var.inner;
+       if (closing_tx_var.is_owned) {
+               closing_tx_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_1(j_calls->sign_closing_transaction_meth, (uint32_t)closing_tx_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_SignatureNoneZ ret_conv = *(LDKCResult_SignatureNoneZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
+}
+LDKCResult_SignatureNoneZ sign_channel_announcement_LDKBaseSign_jcall(const void* this_arg, const LDKUnsignedChannelAnnouncement * msg) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
+       LDKUnsignedChannelAnnouncement msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = UnsignedChannelAnnouncement_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_1(j_calls->sign_channel_announcement_meth, (uint32_t)msg_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_SignatureNoneZ ret_conv = *(LDKCResult_SignatureNoneZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
+}
+void ready_channel_LDKBaseSign_jcall(void* this_arg, const LDKChannelTransactionParameters * channel_parameters) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
+       LDKChannelTransactionParameters channel_parameters_var = *channel_parameters;
+       uint64_t channel_parameters_ref = 0;
+       channel_parameters_var = ChannelTransactionParameters_clone(channel_parameters);
+       CHECK((((uint64_t)channel_parameters_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&channel_parameters_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_parameters_var);
+       channel_parameters_ref = (uint64_t)channel_parameters_var.inner;
+       if (channel_parameters_var.is_owned) {
+               channel_parameters_ref |= 1;
+       }
+       js_invoke_function_1(j_calls->ready_channel_meth, (uint32_t)channel_parameters_ref);
+}
+static void LDKBaseSign_JCalls_cloned(LDKBaseSign* new_obj) {
+       LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+}
+static inline LDKBaseSign LDKBaseSign_init (/*TODO: JS Object Reference */void* o, uint32_t pubkeys) {
+       LDKBaseSign_JCalls *calls = MALLOC(sizeof(LDKBaseSign_JCalls), "LDKBaseSign_JCalls");
+       atomic_init(&calls->refcnt, 1);
+       //TODO: Assign calls->o from o
+
+       LDKChannelPublicKeys pubkeys_conv;
+       pubkeys_conv.inner = (void*)(pubkeys & (~1));
+       pubkeys_conv.is_owned = (pubkeys & 1) || (pubkeys == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(pubkeys_conv);
+
+       LDKBaseSign ret = {
+               .this_arg = (void*) calls,
+               .get_per_commitment_point = get_per_commitment_point_LDKBaseSign_jcall,
+               .release_commitment_secret = release_commitment_secret_LDKBaseSign_jcall,
+               .validate_holder_commitment = validate_holder_commitment_LDKBaseSign_jcall,
+               .channel_keys_id = channel_keys_id_LDKBaseSign_jcall,
+               .sign_counterparty_commitment = sign_counterparty_commitment_LDKBaseSign_jcall,
+               .validate_counterparty_revocation = validate_counterparty_revocation_LDKBaseSign_jcall,
+               .sign_holder_commitment_and_htlcs = sign_holder_commitment_and_htlcs_LDKBaseSign_jcall,
+               .sign_justice_revoked_output = sign_justice_revoked_output_LDKBaseSign_jcall,
+               .sign_justice_revoked_htlc = sign_justice_revoked_htlc_LDKBaseSign_jcall,
+               .sign_counterparty_htlc_transaction = sign_counterparty_htlc_transaction_LDKBaseSign_jcall,
+               .sign_closing_transaction = sign_closing_transaction_LDKBaseSign_jcall,
+               .sign_channel_announcement = sign_channel_announcement_LDKBaseSign_jcall,
+               .ready_channel = ready_channel_LDKBaseSign_jcall,
+               .free = LDKBaseSign_JCalls_free,
+               .pubkeys = pubkeys_conv,
+               .set_pubkeys = NULL,
+       };
+       return ret;
+}
+long  __attribute__((visibility("default"))) TS_LDKBaseSign_new(/*TODO: JS Object Reference */void* o, uint32_t pubkeys) {
+       LDKBaseSign *res_ptr = MALLOC(sizeof(LDKBaseSign), "LDKBaseSign");
+       *res_ptr = LDKBaseSign_init(o, pubkeys);
+       return (long)res_ptr;
+}
+int8_tArray  __attribute__((visibility("default"))) TS_BaseSign_get_per_commitment_point(uint32_t this_arg, int64_t idx) {
        void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
        if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
-       LDKCVec_u8Z ret_var = (this_arg_conv->get_destination_script)(this_arg_conv->this_arg);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, (this_arg_conv->get_per_commitment_point)(this_arg_conv->this_arg, idx).compressed_form, 33);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_KeysInterface_get_shutdown_scriptpubkey(uint32_t this_arg) {
+int8_tArray  __attribute__((visibility("default"))) TS_BaseSign_release_commitment_secret(uint32_t this_arg, int64_t idx) {
        void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
        if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
-       LDKShutdownScript ret_var = (this_arg_conv->get_shutdown_scriptpubkey)(this_arg_conv->this_arg);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, (this_arg_conv->release_commitment_secret)(this_arg_conv->this_arg, idx).data, 32);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_KeysInterface_get_channel_signer(uint32_t this_arg, jboolean inbound, int64_t channel_value_satoshis) {
+uint32_t  __attribute__((visibility("default"))) TS_BaseSign_validate_holder_commitment(uint32_t this_arg, uint32_t holder_tx) {
        void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
        if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
-       LDKSign* ret_ret = MALLOC(sizeof(LDKSign), "LDKSign");
-       *ret_ret = (this_arg_conv->get_channel_signer)(this_arg_conv->this_arg, inbound, channel_value_satoshis);
-       return (uint64_t)ret_ret;
+       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
+       LDKHolderCommitmentTransaction holder_tx_conv;
+       holder_tx_conv.inner = (void*)(holder_tx & (~1));
+       holder_tx_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(holder_tx_conv);
+       LDKCResult_NoneNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneNoneZ), "LDKCResult_NoneNoneZ");
+       *ret_conv = (this_arg_conv->validate_holder_commitment)(this_arg_conv->this_arg, &holder_tx_conv);
+       return (uint64_t)ret_conv;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_KeysInterface_get_secure_random_bytes(uint32_t this_arg) {
+int8_tArray  __attribute__((visibility("default"))) TS_BaseSign_channel_keys_id(uint32_t this_arg) {
        void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
        if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), (this_arg_conv->get_secure_random_bytes)(this_arg_conv->this_arg).data, 32);
+       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, (this_arg_conv->channel_keys_id)(this_arg_conv->this_arg).data, 32);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_KeysInterface_read_chan_signer(uint32_t this_arg, int8_tArray reader) {
+uint32_t  __attribute__((visibility("default"))) TS_BaseSign_sign_counterparty_commitment(uint32_t this_arg, uint32_t commitment_tx) {
        void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
        if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
-       LDKu8slice reader_ref;
-       reader_ref.datalen = *((uint32_t*)reader);
-       reader_ref.data = (int8_t*)(reader + 4);
-       LDKCResult_SignDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SignDecodeErrorZ), "LDKCResult_SignDecodeErrorZ");
-       *ret_conv = (this_arg_conv->read_chan_signer)(this_arg_conv->this_arg, reader_ref);
+       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
+       LDKCommitmentTransaction commitment_tx_conv;
+       commitment_tx_conv.inner = (void*)(commitment_tx & (~1));
+       commitment_tx_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_tx_conv);
+       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ), "LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ");
+       *ret_conv = (this_arg_conv->sign_counterparty_commitment)(this_arg_conv->this_arg, &commitment_tx_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_KeysInterface_sign_invoice(uint32_t this_arg, int8_tArray invoice_preimage) {
+uint32_t  __attribute__((visibility("default"))) TS_BaseSign_validate_counterparty_revocation(uint32_t this_arg, int64_t idx, int8_tArray secret) {
        void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
        if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
-       LDKCVec_u8Z invoice_preimage_ref;
-       invoice_preimage_ref.datalen = *((uint32_t*)invoice_preimage);
-       invoice_preimage_ref.data = MALLOC(invoice_preimage_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(invoice_preimage_ref.data, (uint8_t*)(invoice_preimage + 4), invoice_preimage_ref.datalen);
-       LDKCResult_RecoverableSignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_RecoverableSignatureNoneZ), "LDKCResult_RecoverableSignatureNoneZ");
-       *ret_conv = (this_arg_conv->sign_invoice)(this_arg_conv->this_arg, invoice_preimage_ref);
+       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
+       unsigned char secret_arr[32];
+       CHECK(secret->arr_len == 32);
+       memcpy(secret_arr, secret->elems, 32);
+       unsigned char (*secret_ref)[32] = &secret_arr;
+       LDKCResult_NoneNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneNoneZ), "LDKCResult_NoneNoneZ");
+       *ret_conv = (this_arg_conv->validate_counterparty_revocation)(this_arg_conv->this_arg, idx, secret_ref);
        return (uint64_t)ret_conv;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_KeysInterface_get_inbound_payment_key_material(uint32_t this_arg) {
+uint32_t  __attribute__((visibility("default"))) TS_BaseSign_sign_holder_commitment_and_htlcs(uint32_t this_arg, uint32_t commitment_tx) {
        void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
        if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), (this_arg_conv->get_inbound_payment_key_material)(this_arg_conv->this_arg).data, 32);
-       return ret_arr;
-}
-
-typedef struct LDKFeeEstimator_JCalls {
-       atomic_size_t refcnt;
-       uint32_t get_est_sat_per_1000_weight_meth;
-} LDKFeeEstimator_JCalls;
-static void LDKFeeEstimator_JCalls_free(void* this_arg) {
-       LDKFeeEstimator_JCalls *j_calls = (LDKFeeEstimator_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->get_est_sat_per_1000_weight_meth);
-               FREE(j_calls);
-       }
-}
-uint32_t get_est_sat_per_1000_weight_LDKFeeEstimator_jcall(const void* this_arg, LDKConfirmationTarget confirmation_target) {
-       LDKFeeEstimator_JCalls *j_calls = (LDKFeeEstimator_JCalls*) this_arg;
-       uint32_t confirmation_target_conv = LDKConfirmationTarget_to_js(confirmation_target);
-       return js_invoke_function_1(j_calls->get_est_sat_per_1000_weight_meth, confirmation_target_conv);
-}
-static void LDKFeeEstimator_JCalls_cloned(LDKFeeEstimator* new_obj) {
-       LDKFeeEstimator_JCalls *j_calls = (LDKFeeEstimator_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
+       LDKHolderCommitmentTransaction commitment_tx_conv;
+       commitment_tx_conv.inner = (void*)(commitment_tx & (~1));
+       commitment_tx_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_tx_conv);
+       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ), "LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ");
+       *ret_conv = (this_arg_conv->sign_holder_commitment_and_htlcs)(this_arg_conv->this_arg, &commitment_tx_conv);
+       return (uint64_t)ret_conv;
 }
-static inline LDKFeeEstimator LDKFeeEstimator_init (/*TODO: JS Object Reference */void* o) {
-       LDKFeeEstimator_JCalls *calls = MALLOC(sizeof(LDKFeeEstimator_JCalls), "LDKFeeEstimator_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
 
-       LDKFeeEstimator ret = {
-               .this_arg = (void*) calls,
-               .get_est_sat_per_1000_weight = get_est_sat_per_1000_weight_LDKFeeEstimator_jcall,
-               .free = LDKFeeEstimator_JCalls_free,
-       };
-       return ret;
-}
-long  __attribute__((visibility("default"))) TS_LDKFeeEstimator_new(/*TODO: JS Object Reference */void* o) {
-       LDKFeeEstimator *res_ptr = MALLOC(sizeof(LDKFeeEstimator), "LDKFeeEstimator");
-       *res_ptr = LDKFeeEstimator_init(o);
-       return (long)res_ptr;
-}
-int32_t  __attribute__((visibility("default"))) TS_FeeEstimator_get_est_sat_per_1000_weight(uint32_t this_arg, uint32_t confirmation_target) {
+uint32_t  __attribute__((visibility("default"))) TS_BaseSign_sign_justice_revoked_output(uint32_t this_arg, int8_tArray justice_tx, int64_t input, int64_t amount, int8_tArray per_commitment_key) {
        void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
        if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKFeeEstimator* this_arg_conv = (LDKFeeEstimator*)this_arg_ptr;
-       LDKConfirmationTarget confirmation_target_conv = LDKConfirmationTarget_from_js(confirmation_target);
-       int32_t ret_val = (this_arg_conv->get_est_sat_per_1000_weight)(this_arg_conv->this_arg, confirmation_target_conv);
-       return ret_val;
+       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
+       LDKTransaction justice_tx_ref;
+       justice_tx_ref.datalen = justice_tx->arr_len;
+       justice_tx_ref.data = MALLOC(justice_tx_ref.datalen, "LDKTransaction Bytes");
+       memcpy(justice_tx_ref.data, justice_tx->elems, justice_tx_ref.datalen);
+       justice_tx_ref.data_is_owned = true;
+       unsigned char per_commitment_key_arr[32];
+       CHECK(per_commitment_key->arr_len == 32);
+       memcpy(per_commitment_key_arr, per_commitment_key->elems, 32);
+       unsigned char (*per_commitment_key_ref)[32] = &per_commitment_key_arr;
+       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
+       *ret_conv = (this_arg_conv->sign_justice_revoked_output)(this_arg_conv->this_arg, justice_tx_ref, input, amount, per_commitment_key_ref);
+       return (uint64_t)ret_conv;
 }
 
-typedef struct LDKLogger_JCalls {
-       atomic_size_t refcnt;
-       uint32_t log_meth;
-} LDKLogger_JCalls;
-static void LDKLogger_JCalls_free(void* this_arg) {
-       LDKLogger_JCalls *j_calls = (LDKLogger_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->log_meth);
-               FREE(j_calls);
-       }
-}
-void log_LDKLogger_jcall(const void* this_arg, const LDKRecord * record) {
-       LDKLogger_JCalls *j_calls = (LDKLogger_JCalls*) this_arg;
-       LDKRecord record_var = *record;
-       uint64_t record_ref = 0;
-       record_var = Record_clone(record);
-       CHECK((((uint64_t)record_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&record_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(record_var);
-       record_ref = (uint64_t)record_var.inner;
-       if (record_var.is_owned) {
-               record_ref |= 1;
-       }
-       js_invoke_function_1(j_calls->log_meth, record_ref);
-}
-static void LDKLogger_JCalls_cloned(LDKLogger* new_obj) {
-       LDKLogger_JCalls *j_calls = (LDKLogger_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+uint32_t  __attribute__((visibility("default"))) TS_BaseSign_sign_justice_revoked_htlc(uint32_t this_arg, int8_tArray justice_tx, int64_t input, int64_t amount, int8_tArray per_commitment_key, uint32_t htlc) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
+       LDKTransaction justice_tx_ref;
+       justice_tx_ref.datalen = justice_tx->arr_len;
+       justice_tx_ref.data = MALLOC(justice_tx_ref.datalen, "LDKTransaction Bytes");
+       memcpy(justice_tx_ref.data, justice_tx->elems, justice_tx_ref.datalen);
+       justice_tx_ref.data_is_owned = true;
+       unsigned char per_commitment_key_arr[32];
+       CHECK(per_commitment_key->arr_len == 32);
+       memcpy(per_commitment_key_arr, per_commitment_key->elems, 32);
+       unsigned char (*per_commitment_key_ref)[32] = &per_commitment_key_arr;
+       LDKHTLCOutputInCommitment htlc_conv;
+       htlc_conv.inner = (void*)(htlc & (~1));
+       htlc_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_conv);
+       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
+       *ret_conv = (this_arg_conv->sign_justice_revoked_htlc)(this_arg_conv->this_arg, justice_tx_ref, input, amount, per_commitment_key_ref, &htlc_conv);
+       return (uint64_t)ret_conv;
 }
-static inline LDKLogger LDKLogger_init (/*TODO: JS Object Reference */void* o) {
-       LDKLogger_JCalls *calls = MALLOC(sizeof(LDKLogger_JCalls), "LDKLogger_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
 
-       LDKLogger ret = {
-               .this_arg = (void*) calls,
-               .log = log_LDKLogger_jcall,
-               .free = LDKLogger_JCalls_free,
-       };
-       return ret;
+uint32_t  __attribute__((visibility("default"))) TS_BaseSign_sign_counterparty_htlc_transaction(uint32_t this_arg, int8_tArray htlc_tx, int64_t input, int64_t amount, int8_tArray per_commitment_point, uint32_t htlc) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
+       LDKTransaction htlc_tx_ref;
+       htlc_tx_ref.datalen = htlc_tx->arr_len;
+       htlc_tx_ref.data = MALLOC(htlc_tx_ref.datalen, "LDKTransaction Bytes");
+       memcpy(htlc_tx_ref.data, htlc_tx->elems, htlc_tx_ref.datalen);
+       htlc_tx_ref.data_is_owned = true;
+       LDKPublicKey per_commitment_point_ref;
+       CHECK(per_commitment_point->arr_len == 33);
+       memcpy(per_commitment_point_ref.compressed_form, per_commitment_point->elems, 33);
+       LDKHTLCOutputInCommitment htlc_conv;
+       htlc_conv.inner = (void*)(htlc & (~1));
+       htlc_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_conv);
+       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
+       *ret_conv = (this_arg_conv->sign_counterparty_htlc_transaction)(this_arg_conv->this_arg, htlc_tx_ref, input, amount, per_commitment_point_ref, &htlc_conv);
+       return (uint64_t)ret_conv;
 }
-long  __attribute__((visibility("default"))) TS_LDKLogger_new(/*TODO: JS Object Reference */void* o) {
-       LDKLogger *res_ptr = MALLOC(sizeof(LDKLogger), "LDKLogger");
-       *res_ptr = LDKLogger_init(o);
-       return (long)res_ptr;
+
+uint32_t  __attribute__((visibility("default"))) TS_BaseSign_sign_closing_transaction(uint32_t this_arg, uint32_t closing_tx) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
+       LDKClosingTransaction closing_tx_conv;
+       closing_tx_conv.inner = (void*)(closing_tx & (~1));
+       closing_tx_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(closing_tx_conv);
+       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
+       *ret_conv = (this_arg_conv->sign_closing_transaction)(this_arg_conv->this_arg, &closing_tx_conv);
+       return (uint64_t)ret_conv;
 }
-static inline struct LDKThirtyTwoBytes C2Tuple_BlockHashChannelManagerZ_get_a(LDKC2Tuple_BlockHashChannelManagerZ *NONNULL_PTR tuple){
-       return ThirtyTwoBytes_clone(&tuple->a);
+
+uint32_t  __attribute__((visibility("default"))) TS_BaseSign_sign_channel_announcement(uint32_t this_arg, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
+       LDKUnsignedChannelAnnouncement msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
+       *ret_conv = (this_arg_conv->sign_channel_announcement)(this_arg_conv->this_arg, &msg_conv);
+       return (uint64_t)ret_conv;
 }
-int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelManagerZ_get_a(uint32_t tuple) {
-       LDKC2Tuple_BlockHashChannelManagerZ* tuple_conv = (LDKC2Tuple_BlockHashChannelManagerZ*)(tuple & ~1);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), C2Tuple_BlockHashChannelManagerZ_get_a(tuple_conv).data, 32);
-       return ret_arr;
+
+void  __attribute__((visibility("default"))) TS_BaseSign_ready_channel(uint32_t this_arg, uint32_t channel_parameters) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
+       LDKChannelTransactionParameters channel_parameters_conv;
+       channel_parameters_conv.inner = (void*)(channel_parameters & (~1));
+       channel_parameters_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_parameters_conv);
+       (this_arg_conv->ready_channel)(this_arg_conv->this_arg, &channel_parameters_conv);
 }
 
-static inline struct LDKChannelManager *C2Tuple_BlockHashChannelManagerZ_get_b(LDKC2Tuple_BlockHashChannelManagerZ *NONNULL_PTR tuple){
-       return &tuple->b;
+LDKChannelPublicKeys LDKBaseSign_set_get_pubkeys(LDKBaseSign* this_arg) {
+       if (this_arg->set_pubkeys != NULL)
+               this_arg->set_pubkeys(this_arg);
+       return this_arg->pubkeys;
 }
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelManagerZ_get_b(uint32_t tuple) {
-       LDKC2Tuple_BlockHashChannelManagerZ* tuple_conv = (LDKC2Tuple_BlockHashChannelManagerZ*)(tuple & ~1);
-       LDKChannelManager ret_var = *C2Tuple_BlockHashChannelManagerZ_get_b(tuple_conv);
+uint32_t  __attribute__((visibility("default"))) TS_BaseSign_get_pubkeys(uint32_t this_arg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKBaseSign* this_arg_conv = (LDKBaseSign*)this_arg_ptr;
+       LDKChannelPublicKeys ret_var = LDKBaseSign_set_get_pubkeys(this_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
        CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner & ~1;
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_ref;
 }
 
-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);
-       LDKC2Tuple_BlockHashChannelManagerZ* res_conv = &(*val->contents.result);
-       // Warning: we really need to clone here, but no clone is available for LDKC2Tuple_BlockHashChannelManagerZ
-       return ((uint64_t)res_conv) | 1;
-}
-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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-typedef struct LDKType_JCalls {
+typedef struct LDKSign_JCalls {
        atomic_size_t refcnt;
-       uint32_t type_id_meth;
-       uint32_t debug_str_meth;
+       LDKBaseSign_JCalls* BaseSign;
        uint32_t write_meth;
-} LDKType_JCalls;
-static void LDKType_JCalls_free(void* this_arg) {
-       LDKType_JCalls *j_calls = (LDKType_JCalls*) this_arg;
+} LDKSign_JCalls;
+static void LDKSign_JCalls_free(void* this_arg) {
+       LDKSign_JCalls *j_calls = (LDKSign_JCalls*) this_arg;
        if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->type_id_meth);
-               js_free(j_calls->debug_str_meth);
-               js_free(j_calls->write_meth);
+               js_free_function_ptr(j_calls->write_meth);
                FREE(j_calls);
        }
 }
-uint16_t type_id_LDKType_jcall(const void* this_arg) {
-       LDKType_JCalls *j_calls = (LDKType_JCalls*) this_arg;
-       return js_invoke_function_0(j_calls->type_id_meth);
-}
-LDKStr debug_str_LDKType_jcall(const void* this_arg) {
-       LDKType_JCalls *j_calls = (LDKType_JCalls*) this_arg;
-       uint32_t ret = js_invoke_function_0(j_calls->debug_str_meth);
-       LDKStr ret_conv = str_ref_to_owned_c(ret);
-       return ret_conv;
-}
-LDKCVec_u8Z write_LDKType_jcall(const void* this_arg) {
-       LDKType_JCalls *j_calls = (LDKType_JCalls*) this_arg;
-       int8_tArray ret = js_invoke_function_0(j_calls->write_meth);
+LDKCVec_u8Z write_LDKSign_jcall(const void* this_arg) {
+       LDKSign_JCalls *j_calls = (LDKSign_JCalls*) this_arg;
+       int8_tArray ret = (int8_tArray)js_invoke_function_0(j_calls->write_meth);
        LDKCVec_u8Z ret_ref;
-       ret_ref.datalen = *((uint32_t*)ret);
+       ret_ref.datalen = ret->arr_len;
        ret_ref.data = MALLOC(ret_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(ret_ref.data, (uint8_t*)(ret + 4), ret_ref.datalen);
+       memcpy(ret_ref.data, ret->elems, ret_ref.datalen);
        return ret_ref;
 }
-static void LDKType_JCalls_cloned(LDKType* new_obj) {
-       LDKType_JCalls *j_calls = (LDKType_JCalls*) new_obj->this_arg;
+static void LDKSign_JCalls_cloned(LDKSign* new_obj) {
+       LDKSign_JCalls *j_calls = (LDKSign_JCalls*) new_obj->this_arg;
        atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+       atomic_fetch_add_explicit(&j_calls->BaseSign->refcnt, 1, memory_order_release);
 }
-static inline LDKType LDKType_init (/*TODO: JS Object Reference */void* o) {
-       LDKType_JCalls *calls = MALLOC(sizeof(LDKType_JCalls), "LDKType_JCalls");
+static inline LDKSign LDKSign_init (/*TODO: JS Object Reference */void* o, /*TODO: JS Object Reference */void* BaseSign, uint32_t pubkeys) {
+       LDKSign_JCalls *calls = MALLOC(sizeof(LDKSign_JCalls), "LDKSign_JCalls");
        atomic_init(&calls->refcnt, 1);
        //TODO: Assign calls->o from o
 
-       LDKType ret = {
+       LDKChannelPublicKeys pubkeys_conv;
+       pubkeys_conv.inner = (void*)(pubkeys & (~1));
+       pubkeys_conv.is_owned = (pubkeys & 1) || (pubkeys == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(pubkeys_conv);
+
+       LDKSign ret = {
                .this_arg = (void*) calls,
-               .type_id = type_id_LDKType_jcall,
-               .debug_str = debug_str_LDKType_jcall,
-               .write = write_LDKType_jcall,
-               .cloned = LDKType_JCalls_cloned,
-               .free = LDKType_JCalls_free,
+               .write = write_LDKSign_jcall,
+               .cloned = LDKSign_JCalls_cloned,
+               .free = LDKSign_JCalls_free,
+               .BaseSign = LDKBaseSign_init(BaseSign, pubkeys),
        };
+       calls->BaseSign = ret.BaseSign.this_arg;
        return ret;
 }
-long  __attribute__((visibility("default"))) TS_LDKType_new(/*TODO: JS Object Reference */void* o) {
-       LDKType *res_ptr = MALLOC(sizeof(LDKType), "LDKType");
-       *res_ptr = LDKType_init(o);
+long  __attribute__((visibility("default"))) TS_LDKSign_new(/*TODO: JS Object Reference */void* o, /*TODO: JS Object Reference */ void* BaseSign, uint32_t pubkeys) {
+       LDKSign *res_ptr = MALLOC(sizeof(LDKSign), "LDKSign");
+       *res_ptr = LDKSign_init(o, BaseSign, pubkeys);
        return (long)res_ptr;
 }
-int16_t  __attribute__((visibility("default"))) TS_Type_type_id(uint32_t this_arg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKType* this_arg_conv = (LDKType*)this_arg_ptr;
-       int16_t ret_val = (this_arg_conv->type_id)(this_arg_conv->this_arg);
-       return ret_val;
-}
-
-jstring  __attribute__((visibility("default"))) TS_Type_debug_str(uint32_t this_arg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKType* this_arg_conv = (LDKType*)this_arg_ptr;
-       LDKStr ret_str = (this_arg_conv->debug_str)(this_arg_conv->this_arg);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_Type_write(uint32_t this_arg) {
+int8_tArray  __attribute__((visibility("default"))) TS_Sign_write(uint32_t this_arg) {
        void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
        if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKType* this_arg_conv = (LDKType*)this_arg_ptr;
+       LDKSign* this_arg_conv = (LDKSign*)this_arg_ptr;
        LDKCVec_u8Z ret_var = (this_arg_conv->write)(this_arg_conv->this_arg);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t __attribute__((visibility("default"))) TS_LDKCOption_TypeZ_ref_from_ptr(uint32_t ptr) {
-       LDKCOption_TypeZ *obj = (LDKCOption_TypeZ*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKCOption_TypeZ_Some: {
-                       LDKType* some_ret = MALLOC(sizeof(LDKType), "LDKType");
-                       *some_ret = Type_clone(&obj->some);
-                       return 0 /* LDKCOption_TypeZ - Some */; (void) (uint64_t)some_ret;
-               }
-               case LDKCOption_TypeZ_None: {
-                       return 0 /* LDKCOption_TypeZ - None */;
-               }
-               default: abort();
-       }
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_COption_TypeZDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_COption_TypeZDecodeErrorZ *val = (LDKCResult_COption_TypeZDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       uint64_t res_ref = ((uint64_t)&(*val->contents.result)) | 1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_COption_TypeZDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_COption_TypeZDecodeErrorZ *val = (LDKCResult_COption_TypeZDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t __attribute__((visibility("default"))) TS_LDKPaymentError_ref_from_ptr(uint32_t ptr) {
-       LDKPaymentError *obj = (LDKPaymentError*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKPaymentError_Invoice: {
-                       LDKStr invoice_str = obj->invoice;
-                       jstring invoice_conv = str_ref_to_ts(invoice_str.chars, invoice_str.len);
-                       return 0 /* LDKPaymentError - Invoice */; (void) invoice_conv;
-               }
-               case LDKPaymentError_Routing: {
-                       LDKLightningError routing_var = obj->routing;
-                       uint64_t routing_ref = 0;
-                       CHECK((((uint64_t)routing_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&routing_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(routing_var);
-                       routing_ref = (uint64_t)routing_var.inner & ~1;
-                       return 0 /* LDKPaymentError - Routing */; (void) routing_ref;
-               }
-               case LDKPaymentError_Sending: {
-                       uint64_t sending_ref = ((uint64_t)&obj->sending) | 1;
-                       return 0 /* LDKPaymentError - Sending */; (void) sending_ref;
-               }
-               default: abort();
-       }
-}
-int8_tArray  __attribute__((visibility("default"))) TS_LDKCResult_PaymentIdPaymentErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_PaymentIdPaymentErrorZ *val = (LDKCResult_PaymentIdPaymentErrorZ*)(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).data, 32);
-       return res_arr;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PaymentIdPaymentErrorZ_get_err(uint32_t arg) {
-       LDKCResult_PaymentIdPaymentErrorZ *val = (LDKCResult_PaymentIdPaymentErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint64_t err_ref = ((uint64_t)&(*val->contents.err)) | 1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_SiPrefixNoneZ_get_ok(uint32_t arg) {
-       LDKCResult_SiPrefixNoneZ *val = (LDKCResult_SiPrefixNoneZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       uint32_t res_conv = LDKSiPrefix_to_js((*val->contents.result));
-       return res_conv;
-}
-void  __attribute__((visibility("default"))) TS_LDKCResult_SiPrefixNoneZ_get_err(uint32_t arg) {
-       LDKCResult_SiPrefixNoneZ *val = (LDKCResult_SiPrefixNoneZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       return *val->contents.err;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_InvoiceNoneZ_get_ok(uint32_t arg) {
-       LDKCResult_InvoiceNoneZ *val = (LDKCResult_InvoiceNoneZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKInvoice res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-void  __attribute__((visibility("default"))) TS_LDKCResult_InvoiceNoneZ_get_err(uint32_t arg) {
-       LDKCResult_InvoiceNoneZ *val = (LDKCResult_InvoiceNoneZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       return *val->contents.err;
+static inline struct LDKThirtyTwoBytes C2Tuple_BlockHashChannelMonitorZ_get_a(LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR owner){
+       return ThirtyTwoBytes_clone(&owner->a);
 }
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_SignedRawInvoiceNoneZ_get_ok(uint32_t arg) {
-       LDKCResult_SignedRawInvoiceNoneZ *val = (LDKCResult_SignedRawInvoiceNoneZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKSignedRawInvoice res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-void  __attribute__((visibility("default"))) TS_LDKCResult_SignedRawInvoiceNoneZ_get_err(uint32_t arg) {
-       LDKCResult_SignedRawInvoiceNoneZ *val = (LDKCResult_SignedRawInvoiceNoneZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       return *val->contents.err;
+int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_get_a(uint32_t owner) {
+       LDKC2Tuple_BlockHashChannelMonitorZ* owner_conv = (LDKC2Tuple_BlockHashChannelMonitorZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, C2Tuple_BlockHashChannelMonitorZ_get_a(owner_conv).data, 32);
+       return ret_arr;
 }
-static inline struct LDKRawInvoice C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_a(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR tuple){
-       return RawInvoice_clone(&tuple->a);
+
+static inline struct LDKChannelMonitor C2Tuple_BlockHashChannelMonitorZ_get_b(LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR owner){
+       return ChannelMonitor_clone(&owner->b);
 }
-uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_a(uint32_t tuple) {
-       LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* tuple_conv = (LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ*)(tuple & ~1);
-       LDKRawInvoice ret_var = C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_a(tuple_conv);
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_get_b(uint32_t owner) {
+       LDKC2Tuple_BlockHashChannelMonitorZ* owner_conv = (LDKC2Tuple_BlockHashChannelMonitorZ*)(owner & ~1);
+       LDKChannelMonitor ret_var = C2Tuple_BlockHashChannelMonitorZ_get_b(owner_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -3715,22 +2264,24 @@ uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_RawInvoice_u832Invoi
        return ret_ref;
 }
 
-static inline struct LDKThirtyTwoBytes C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_b(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR tuple){
-       return ThirtyTwoBytes_clone(&tuple->b);
+static inline struct LDKC2Tuple_BlockHashChannelMonitorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_ok(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return C2Tuple_BlockHashChannelMonitorZ_clone(&*owner->contents.result);
 }
-int8_tArray  __attribute__((visibility("default"))) TS_C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_b(uint32_t tuple) {
-       LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* tuple_conv = (LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ*)(tuple & ~1);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_b(tuple_conv).data, 32);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* owner_conv = (LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(owner & ~1);
+       LDKC2Tuple_BlockHashChannelMonitorZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelMonitorZ), "LDKC2Tuple_BlockHashChannelMonitorZ");
+       *ret_conv = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_ok(owner_conv);
+       return ((uint64_t)ret_conv);
 }
 
-static inline struct LDKInvoiceSignature C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_c(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR tuple){
-       return InvoiceSignature_clone(&tuple->c);
+static inline struct LDKDecodeError CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_err(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_c(uint32_t tuple) {
-       LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* tuple_conv = (LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ*)(tuple & ~1);
-       LDKInvoiceSignature ret_var = C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_c(tuple_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* owner_conv = (LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_err(owner_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -3742,219 +2293,13 @@ uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_RawInvoice_u832Invoi
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PayeePubKeyErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_PayeePubKeyErrorZ *val = (LDKCResult_PayeePubKeyErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKPayeePubKey res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PayeePubKeyErrorZ_get_err(uint32_t arg) {
-       LDKCResult_PayeePubKeyErrorZ *val = (LDKCResult_PayeePubKeyErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint32_t err_conv = LDKSecp256k1Error_to_js((*val->contents.err));
-       return err_conv;
-}
-static inline LDKCVec_PrivateRouteZ CVec_PrivateRouteZ_clone(const LDKCVec_PrivateRouteZ *orig) {
-       LDKCVec_PrivateRouteZ ret = { .data = MALLOC(sizeof(LDKPrivateRoute) * orig->datalen, "LDKCVec_PrivateRouteZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = PrivateRoute_clone(&orig->data[i]);
-       }
-       return ret;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PositiveTimestampCreationErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_PositiveTimestampCreationErrorZ *val = (LDKCResult_PositiveTimestampCreationErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKPositiveTimestamp res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PositiveTimestampCreationErrorZ_get_err(uint32_t arg) {
-       LDKCResult_PositiveTimestampCreationErrorZ *val = (LDKCResult_PositiveTimestampCreationErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint32_t err_conv = LDKCreationError_to_js((*val->contents.err));
-       return err_conv;
-}
-void  __attribute__((visibility("default"))) TS_LDKCResult_NoneSemanticErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_NoneSemanticErrorZ *val = (LDKCResult_NoneSemanticErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       return *val->contents.result;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_NoneSemanticErrorZ_get_err(uint32_t arg) {
-       LDKCResult_NoneSemanticErrorZ *val = (LDKCResult_NoneSemanticErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint32_t err_conv = LDKSemanticError_to_js((*val->contents.err));
-       return err_conv;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_InvoiceSemanticErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_InvoiceSemanticErrorZ *val = (LDKCResult_InvoiceSemanticErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKInvoice res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_InvoiceSemanticErrorZ_get_err(uint32_t arg) {
-       LDKCResult_InvoiceSemanticErrorZ *val = (LDKCResult_InvoiceSemanticErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint32_t err_conv = LDKSemanticError_to_js((*val->contents.err));
-       return err_conv;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_DescriptionCreationErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_DescriptionCreationErrorZ *val = (LDKCResult_DescriptionCreationErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKDescription res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_DescriptionCreationErrorZ_get_err(uint32_t arg) {
-       LDKCResult_DescriptionCreationErrorZ *val = (LDKCResult_DescriptionCreationErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint32_t err_conv = LDKCreationError_to_js((*val->contents.err));
-       return err_conv;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ExpiryTimeCreationErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_ExpiryTimeCreationErrorZ *val = (LDKCResult_ExpiryTimeCreationErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKExpiryTime res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ExpiryTimeCreationErrorZ_get_err(uint32_t arg) {
-       LDKCResult_ExpiryTimeCreationErrorZ *val = (LDKCResult_ExpiryTimeCreationErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint32_t err_conv = LDKCreationError_to_js((*val->contents.err));
-       return err_conv;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PrivateRouteCreationErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_PrivateRouteCreationErrorZ *val = (LDKCResult_PrivateRouteCreationErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKPrivateRoute res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PrivateRouteCreationErrorZ_get_err(uint32_t arg) {
-       LDKCResult_PrivateRouteCreationErrorZ *val = (LDKCResult_PrivateRouteCreationErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint32_t err_conv = LDKCreationError_to_js((*val->contents.err));
-       return err_conv;
-}
-jstring  __attribute__((visibility("default"))) TS_LDKCResult_StringErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_StringErrorZ *val = (LDKCResult_StringErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKStr res_str = (*val->contents.result);
-       jstring res_conv = str_ref_to_ts(res_str.chars, res_str.len);
-       return res_conv;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_StringErrorZ_get_err(uint32_t arg) {
-       LDKCResult_StringErrorZ *val = (LDKCResult_StringErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint32_t err_conv = LDKSecp256k1Error_to_js((*val->contents.err));
-       return err_conv;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ChannelMonitorUpdateDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_ChannelMonitorUpdateDecodeErrorZ *val = (LDKCResult_ChannelMonitorUpdateDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKChannelMonitorUpdate res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ChannelMonitorUpdateDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_ChannelMonitorUpdateDecodeErrorZ *val = (LDKCResult_ChannelMonitorUpdateDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t __attribute__((visibility("default"))) TS_LDKCOption_MonitorEventZ_ref_from_ptr(uint32_t ptr) {
-       LDKCOption_MonitorEventZ *obj = (LDKCOption_MonitorEventZ*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKCOption_MonitorEventZ_Some: {
-                       uint64_t some_ref = ((uint64_t)&obj->some) | 1;
-                       return 0 /* LDKCOption_MonitorEventZ - Some */; (void) some_ref;
-               }
-               case LDKCOption_MonitorEventZ_None: {
-                       return 0 /* LDKCOption_MonitorEventZ - None */;
-               }
-               default: abort();
-       }
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_COption_MonitorEventZDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_COption_MonitorEventZDecodeErrorZ *val = (LDKCResult_COption_MonitorEventZDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       uint64_t res_ref = ((uint64_t)&(*val->contents.result)) | 1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_COption_MonitorEventZDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_COption_MonitorEventZDecodeErrorZ *val = (LDKCResult_COption_MonitorEventZDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
+static inline struct LDKRouteHop CResult_RouteHopDecodeErrorZ_get_ok(LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return RouteHop_clone(&*owner->contents.result);
 }
-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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-static inline struct LDKOutPoint C2Tuple_OutPointScriptZ_get_a(LDKC2Tuple_OutPointScriptZ *NONNULL_PTR tuple){
-       return OutPoint_clone(&tuple->a);
-}
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_OutPointScriptZ_get_a(uint32_t tuple) {
-       LDKC2Tuple_OutPointScriptZ* tuple_conv = (LDKC2Tuple_OutPointScriptZ*)(tuple & ~1);
-       LDKOutPoint ret_var = C2Tuple_OutPointScriptZ_get_a(tuple_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHopDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_RouteHopDecodeErrorZ* owner_conv = (LDKCResult_RouteHopDecodeErrorZ*)(owner & ~1);
+       LDKRouteHop ret_var = CResult_RouteHopDecodeErrorZ_get_ok(owner_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -3966,260 +2311,178 @@ uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_OutPointScriptZ_get_
        return ret_ref;
 }
 
-static inline struct LDKCVec_u8Z C2Tuple_OutPointScriptZ_get_b(LDKC2Tuple_OutPointScriptZ *NONNULL_PTR tuple){
-       return CVec_u8Z_clone(&tuple->b);
+static inline struct LDKDecodeError CResult_RouteHopDecodeErrorZ_get_err(LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_OutPointScriptZ_get_b(uint32_t tuple) {
-       LDKC2Tuple_OutPointScriptZ* tuple_conv = (LDKC2Tuple_OutPointScriptZ*)(tuple & ~1);
-       LDKCVec_u8Z ret_var = C2Tuple_OutPointScriptZ_get_b(tuple_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-static inline uint32_t C2Tuple_u32ScriptZ_get_a(LDKC2Tuple_u32ScriptZ *NONNULL_PTR tuple){
-       return tuple->a;
-}
-int32_t  __attribute__((visibility("default"))) TS_C2Tuple_u32ScriptZ_get_a(uint32_t tuple) {
-       LDKC2Tuple_u32ScriptZ* tuple_conv = (LDKC2Tuple_u32ScriptZ*)(tuple & ~1);
-       int32_t ret_val = C2Tuple_u32ScriptZ_get_a(tuple_conv);
-       return ret_val;
-}
-
-static inline struct LDKCVec_u8Z C2Tuple_u32ScriptZ_get_b(LDKC2Tuple_u32ScriptZ *NONNULL_PTR tuple){
-       return CVec_u8Z_clone(&tuple->b);
-}
-int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_u32ScriptZ_get_b(uint32_t tuple) {
-       LDKC2Tuple_u32ScriptZ* tuple_conv = (LDKC2Tuple_u32ScriptZ*)(tuple & ~1);
-       LDKCVec_u8Z ret_var = C2Tuple_u32ScriptZ_get_b(tuple_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHopDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_RouteHopDecodeErrorZ* owner_conv = (LDKCResult_RouteHopDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_RouteHopDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-static inline LDKCVec_C2Tuple_u32ScriptZZ CVec_C2Tuple_u32ScriptZZ_clone(const LDKCVec_C2Tuple_u32ScriptZZ *orig) {
-       LDKCVec_C2Tuple_u32ScriptZZ ret = { .data = MALLOC(sizeof(LDKC2Tuple_u32ScriptZ) * orig->datalen, "LDKCVec_C2Tuple_u32ScriptZZ clone bytes"), .datalen = orig->datalen };
+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] = C2Tuple_u32ScriptZ_clone(&orig->data[i]);
+               ret.data[i] = CVec_RouteHopZ_clone(&orig->data[i]);
        }
        return ret;
 }
-static inline struct LDKThirtyTwoBytes C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_a(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR tuple){
-       return ThirtyTwoBytes_clone(&tuple->a);
+static inline struct LDKRoute CResult_RouteDecodeErrorZ_get_ok(LDKCResult_RouteDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return Route_clone(&*owner->contents.result);
 }
-int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_a(uint32_t tuple) {
-       LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* tuple_conv = (LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ*)(tuple & ~1);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_a(tuple_conv).data, 32);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_RouteDecodeErrorZ* owner_conv = (LDKCResult_RouteDecodeErrorZ*)(owner & ~1);
+       LDKRoute ret_var = CResult_RouteDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-static inline struct LDKCVec_C2Tuple_u32ScriptZZ C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_b(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR tuple){
-       return CVec_C2Tuple_u32ScriptZZ_clone(&tuple->b);
+static inline struct LDKDecodeError CResult_RouteDecodeErrorZ_get_err(LDKCResult_RouteDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-uint32_tArray  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_b(uint32_t tuple) {
-       LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* tuple_conv = (LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ*)(tuple & ~1);
-       LDKCVec_C2Tuple_u32ScriptZZ ret_var = C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_b(tuple_conv);
-       uint32_tArray ret_arr = NULL;
-       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 v = 0; v < ret_var.datalen; v++) {
-               LDKC2Tuple_u32ScriptZ* ret_conv_21_conv = MALLOC(sizeof(LDKC2Tuple_u32ScriptZ), "LDKC2Tuple_u32ScriptZ");
-               *ret_conv_21_conv = ret_var.data[v];
-               ret_arr_ptr[v] = ((uint64_t)ret_conv_21_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_RouteDecodeErrorZ* owner_conv = (LDKCResult_RouteDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_RouteDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+       return ret_ref;
 }
 
-static inline LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_clone(const LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ *orig) {
-       LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ ret = { .data = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ) * orig->datalen, "LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone(&orig->data[i]);
-       }
-       return ret;
+static inline struct LDKRouteParameters CResult_RouteParametersDecodeErrorZ_get_ok(LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return RouteParameters_clone(&*owner->contents.result);
 }
-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] = Event_clone(&orig->data[i]);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteParametersDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_RouteParametersDecodeErrorZ* owner_conv = (LDKCResult_RouteParametersDecodeErrorZ*)(owner & ~1);
+       LDKRouteParameters ret_var = CResult_RouteParametersDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret;
-}
-static inline uint32_t C2Tuple_u32TxOutZ_get_a(LDKC2Tuple_u32TxOutZ *NONNULL_PTR tuple){
-       return tuple->a;
-}
-int32_t  __attribute__((visibility("default"))) TS_C2Tuple_u32TxOutZ_get_a(uint32_t tuple) {
-       LDKC2Tuple_u32TxOutZ* tuple_conv = (LDKC2Tuple_u32TxOutZ*)(tuple & ~1);
-       int32_t ret_val = C2Tuple_u32TxOutZ_get_a(tuple_conv);
-       return ret_val;
+       return ret_ref;
 }
 
-static inline struct LDKTxOut C2Tuple_u32TxOutZ_get_b(LDKC2Tuple_u32TxOutZ *NONNULL_PTR tuple){
-       return TxOut_clone(&tuple->b);
+static inline struct LDKDecodeError CResult_RouteParametersDecodeErrorZ_get_err(LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_u32TxOutZ_get_b(uint32_t tuple) {
-       LDKC2Tuple_u32TxOutZ* tuple_conv = (LDKC2Tuple_u32TxOutZ*)(tuple & ~1);
-       LDKTxOut* ret_ref = MALLOC(sizeof(LDKTxOut), "LDKTxOut");
-       *ret_ref = C2Tuple_u32TxOutZ_get_b(tuple_conv);
-       return (uint64_t)ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteParametersDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_RouteParametersDecodeErrorZ* owner_conv = (LDKCResult_RouteParametersDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_RouteParametersDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-static inline LDKCVec_C2Tuple_u32TxOutZZ CVec_C2Tuple_u32TxOutZZ_clone(const LDKCVec_C2Tuple_u32TxOutZZ *orig) {
-       LDKCVec_C2Tuple_u32TxOutZZ ret = { .data = MALLOC(sizeof(LDKC2Tuple_u32TxOutZ) * orig->datalen, "LDKCVec_C2Tuple_u32TxOutZZ clone bytes"), .datalen = orig->datalen };
+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] = C2Tuple_u32TxOutZ_clone(&orig->data[i]);
+               ret.data[i] = RouteHint_clone(&orig->data[i]);
        }
        return ret;
 }
-static inline struct LDKThirtyTwoBytes C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_a(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR tuple){
-       return ThirtyTwoBytes_clone(&tuple->a);
+static inline struct LDKPayee CResult_PayeeDecodeErrorZ_get_ok(LDKCResult_PayeeDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return Payee_clone(&*owner->contents.result);
 }
-int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_a(uint32_t tuple) {
-       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* tuple_conv = (LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ*)(tuple & ~1);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_a(tuple_conv).data, 32);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PayeeDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_PayeeDecodeErrorZ* owner_conv = (LDKCResult_PayeeDecodeErrorZ*)(owner & ~1);
+       LDKPayee ret_var = CResult_PayeeDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-static inline struct LDKCVec_C2Tuple_u32TxOutZZ C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_b(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR tuple){
-       return CVec_C2Tuple_u32TxOutZZ_clone(&tuple->b);
+static inline struct LDKDecodeError CResult_PayeeDecodeErrorZ_get_err(LDKCResult_PayeeDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-uint32_tArray  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_b(uint32_t tuple) {
-       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* tuple_conv = (LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ*)(tuple & ~1);
-       LDKCVec_C2Tuple_u32TxOutZZ ret_var = C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_b(tuple_conv);
-       uint32_tArray ret_arr = NULL;
-       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 u = 0; u < ret_var.datalen; u++) {
-               LDKC2Tuple_u32TxOutZ* ret_conv_20_conv = MALLOC(sizeof(LDKC2Tuple_u32TxOutZ), "LDKC2Tuple_u32TxOutZ");
-               *ret_conv_20_conv = ret_var.data[u];
-               ret_arr_ptr[u] = ((uint64_t)ret_conv_20_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PayeeDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_PayeeDecodeErrorZ* owner_conv = (LDKCResult_PayeeDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_PayeeDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+       return ret_ref;
 }
 
-static inline LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_clone(const LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ *orig) {
-       LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ret = { .data = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ) * orig->datalen, "LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ clone bytes"), .datalen = orig->datalen };
+static inline LDKCVec_RouteHintHopZ CVec_RouteHintHopZ_clone(const LDKCVec_RouteHintHopZ *orig) {
+       LDKCVec_RouteHintHopZ ret = { .data = MALLOC(sizeof(LDKRouteHintHop) * orig->datalen, "LDKCVec_RouteHintHopZ clone bytes"), .datalen = orig->datalen };
        for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone(&orig->data[i]);
+               ret.data[i] = RouteHintHop_clone(&orig->data[i]);
        }
        return ret;
 }
-uint32_t __attribute__((visibility("default"))) TS_LDKBalance_ref_from_ptr(uint32_t ptr) {
-       LDKBalance *obj = (LDKBalance*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKBalance_ClaimableOnChannelClose: {
-                       return 0 /* LDKBalance - ClaimableOnChannelClose */; (void) obj->claimable_on_channel_close.claimable_amount_satoshis;
-               }
-               case LDKBalance_ClaimableAwaitingConfirmations: {
-                       return 0 /* LDKBalance - ClaimableAwaitingConfirmations */; (void) obj->claimable_awaiting_confirmations.claimable_amount_satoshis; (void) obj->claimable_awaiting_confirmations.confirmation_height;
-               }
-               case LDKBalance_ContentiousClaimable: {
-                       return 0 /* LDKBalance - ContentiousClaimable */; (void) obj->contentious_claimable.claimable_amount_satoshis; (void) obj->contentious_claimable.timeout_height;
-               }
-               case LDKBalance_MaybeClaimableHTLCAwaitingTimeout: {
-                       return 0 /* LDKBalance - MaybeClaimableHTLCAwaitingTimeout */; (void) obj->maybe_claimable_htlc_awaiting_timeout.claimable_amount_satoshis; (void) obj->maybe_claimable_htlc_awaiting_timeout.claimable_height;
-               }
-               default: abort();
-       }
+static inline struct LDKRouteHint CResult_RouteHintDecodeErrorZ_get_ok(LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return RouteHint_clone(&*owner->contents.result);
 }
-static inline LDKCVec_BalanceZ CVec_BalanceZ_clone(const LDKCVec_BalanceZ *orig) {
-       LDKCVec_BalanceZ ret = { .data = MALLOC(sizeof(LDKBalance) * orig->datalen, "LDKCVec_BalanceZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = Balance_clone(&orig->data[i]);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_RouteHintDecodeErrorZ* owner_conv = (LDKCResult_RouteHintDecodeErrorZ*)(owner & ~1);
+       LDKRouteHint ret_var = CResult_RouteHintDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *val = (LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKC2Tuple_BlockHashChannelMonitorZ* res_conv = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelMonitorZ), "LDKC2Tuple_BlockHashChannelMonitorZ");
-       *res_conv = (*val->contents.result);
-       *res_conv = C2Tuple_BlockHashChannelMonitorZ_clone(res_conv);
-       return ((uint64_t)res_conv);
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *val = (LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-static inline struct LDKPublicKey C2Tuple_PublicKeyTypeZ_get_a(LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR tuple){
-       return tuple->a;
-}
-int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_PublicKeyTypeZ_get_a(uint32_t tuple) {
-       LDKC2Tuple_PublicKeyTypeZ* tuple_conv = (LDKC2Tuple_PublicKeyTypeZ*)(tuple & ~1);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), C2Tuple_PublicKeyTypeZ_get_a(tuple_conv).compressed_form, 33);
-       return ret_arr;
-}
-
-static inline struct LDKType C2Tuple_PublicKeyTypeZ_get_b(LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR tuple){
-       return Type_clone(&tuple->b);
-}
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_PublicKeyTypeZ_get_b(uint32_t tuple) {
-       LDKC2Tuple_PublicKeyTypeZ* tuple_conv = (LDKC2Tuple_PublicKeyTypeZ*)(tuple & ~1);
-       LDKType* ret_ret = MALLOC(sizeof(LDKType), "LDKType");
-       *ret_ret = C2Tuple_PublicKeyTypeZ_get_b(tuple_conv);
-       return (uint64_t)ret_ret;
+       return ret_ref;
 }
 
-static inline LDKCVec_C2Tuple_PublicKeyTypeZZ CVec_C2Tuple_PublicKeyTypeZZ_clone(const LDKCVec_C2Tuple_PublicKeyTypeZZ *orig) {
-       LDKCVec_C2Tuple_PublicKeyTypeZZ ret = { .data = MALLOC(sizeof(LDKC2Tuple_PublicKeyTypeZ) * orig->datalen, "LDKCVec_C2Tuple_PublicKeyTypeZZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = C2Tuple_PublicKeyTypeZ_clone(&orig->data[i]);
-       }
-       return ret;
+static inline struct LDKDecodeError CResult_RouteHintDecodeErrorZ_get_err(LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-static inline struct LDKChannelAnnouncement C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR tuple){
-       return ChannelAnnouncement_clone(&tuple->a);
-}
-uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(uint32_t tuple) {
-       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* tuple_conv = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(tuple & ~1);
-       LDKChannelAnnouncement ret_var = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(tuple_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_RouteHintDecodeErrorZ* owner_conv = (LDKCResult_RouteHintDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_RouteHintDecodeErrorZ_get_err(owner_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -4231,12 +2494,13 @@ uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementC
        return ret_ref;
 }
 
-static inline struct LDKChannelUpdate C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR tuple){
-       return ChannelUpdate_clone(&tuple->b);
+static inline struct LDKRouteHintHop CResult_RouteHintHopDecodeErrorZ_get_ok(LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return RouteHintHop_clone(&*owner->contents.result);
 }
-uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(uint32_t tuple) {
-       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* tuple_conv = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(tuple & ~1);
-       LDKChannelUpdate ret_var = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(tuple_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintHopDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_RouteHintHopDecodeErrorZ* owner_conv = (LDKCResult_RouteHintHopDecodeErrorZ*)(owner & ~1);
+       LDKRouteHintHop ret_var = CResult_RouteHintHopDecodeErrorZ_get_ok(owner_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -4248,12 +2512,13 @@ uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementC
        return ret_ref;
 }
 
-static inline struct LDKChannelUpdate C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR tuple){
-       return ChannelUpdate_clone(&tuple->c);
+static inline struct LDKDecodeError CResult_RouteHintHopDecodeErrorZ_get_err(LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(uint32_t tuple) {
-       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* tuple_conv = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(tuple & ~1);
-       LDKChannelUpdate ret_var = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(tuple_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintHopDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_RouteHintHopDecodeErrorZ* owner_conv = (LDKCResult_RouteHintHopDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_RouteHintHopDecodeErrorZ_get_err(owner_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -4265,9645 +2530,9391 @@ uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementC
        return ret_ref;
 }
 
-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 };
+static inline LDKCVec_ChannelDetailsZ CVec_ChannelDetailsZ_clone(const LDKCVec_ChannelDetailsZ *orig) {
+       LDKCVec_ChannelDetailsZ ret = { .data = MALLOC(sizeof(LDKChannelDetails) * orig->datalen, "LDKCVec_ChannelDetailsZ clone bytes"), .datalen = orig->datalen };
        for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(&orig->data[i]);
+               ret.data[i] = ChannelDetails_clone(&orig->data[i]);
        }
        return 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]);
+static inline struct LDKRoute CResult_RouteLightningErrorZ_get_ok(LDKCResult_RouteLightningErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return Route_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteLightningErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_RouteLightningErrorZ* owner_conv = (LDKCResult_RouteLightningErrorZ*)(owner & ~1);
+       LDKRoute ret_var = CResult_RouteLightningErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret;
+       return ret_ref;
 }
-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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_NodeIdDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_NodeIdDecodeErrorZ *val = (LDKCResult_NodeIdDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKNodeId res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_NodeIdDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_NodeIdDecodeErrorZ *val = (LDKCResult_NodeIdDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_COption_NetworkUpdateZDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_COption_NetworkUpdateZDecodeErrorZ *val = (LDKCResult_COption_NetworkUpdateZDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       uint64_t res_ref = ((uint64_t)&(*val->contents.result)) | 1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_COption_NetworkUpdateZDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_COption_NetworkUpdateZDecodeErrorZ *val = (LDKCResult_COption_NetworkUpdateZDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
+
+static inline struct LDKLightningError CResult_RouteLightningErrorZ_get_err(LDKCResult_RouteLightningErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return LightningError_clone(&*owner->contents.err);
 }
-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);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteLightningErrorZ_get_err(uint32_t owner) {
+       LDKCResult_RouteLightningErrorZ* owner_conv = (LDKCResult_RouteLightningErrorZ*)(owner & ~1);
+       LDKLightningError ret_var = CResult_RouteLightningErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-LDKCResult_TxOutAccessErrorZ get_utxo_LDKAccess_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);
-       uint32_t ret = js_invoke_function_2(j_calls->get_utxo_meth, genesis_hash_arr, short_channel_id);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_TxOutAccessErrorZ ret_conv = *(LDKCResult_TxOutAccessErrorZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+
+static inline void CResult_NoneLightningErrorZ_get_ok(LDKCResult_NoneLightningErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
 }
-static void LDKAccess_JCalls_cloned(LDKAccess* new_obj) {
-       LDKAccess_JCalls *j_calls = (LDKAccess_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+void  __attribute__((visibility("default"))) TS_CResult_NoneLightningErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_NoneLightningErrorZ* owner_conv = (LDKCResult_NoneLightningErrorZ*)(owner & ~1);
+       CResult_NoneLightningErrorZ_get_ok(owner_conv);
 }
-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_LDKAccess_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;
+static inline struct LDKLightningError CResult_NoneLightningErrorZ_get_err(LDKCResult_NoneLightningErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return LightningError_clone(&*owner->contents.err);
 }
-uint32_t  __attribute__((visibility("default"))) TS_Access_get_utxo(uint32_t this_arg, int8_tArray genesis_hash, int64_t short_channel_id) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKAccess* this_arg_conv = (LDKAccess*)this_arg_ptr;
-       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 (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneLightningErrorZ_get_err(uint32_t owner) {
+       LDKCResult_NoneLightningErrorZ* owner_conv = (LDKCResult_NoneLightningErrorZ*)(owner & ~1);
+       LDKLightningError ret_var = CResult_NoneLightningErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t __attribute__((visibility("default"))) TS_LDKCOption_AccessZ_ref_from_ptr(uint32_t ptr) {
-       LDKCOption_AccessZ *obj = (LDKCOption_AccessZ*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKCOption_AccessZ_Some: {
-                       LDKAccess* some_ret = MALLOC(sizeof(LDKAccess), "LDKAccess");
-                       *some_ret = obj->some;
-                       // Warning: We likely need to clone here, but no clone is available, so we just do it for Java instances
-                       return 0 /* LDKCOption_AccessZ - Some */; (void) (uint64_t)some_ret;
-               }
-               case LDKCOption_AccessZ_None: {
-                       return 0 /* LDKCOption_AccessZ - None */;
-               }
-               default: abort();
-       }
+static inline struct LDKPublicKey C2Tuple_PublicKeyTypeZ_get_a(LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR owner){
+       return owner->a;
 }
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_PublicKeyTypeZ_get_a(uint32_t owner) {
+       LDKC2Tuple_PublicKeyTypeZ* owner_conv = (LDKC2Tuple_PublicKeyTypeZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, C2Tuple_PublicKeyTypeZ_get_a(owner_conv).compressed_form, 33);
+       return ret_arr;
 }
-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_LDKCResult_NodeInfoDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_NodeInfoDecodeErrorZ *val = (LDKCResult_NodeInfoDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKNodeInfo res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t __attribute__((visibility("default"))) TS_LDKCOption_CVec_NetAddressZZ_ref_from_ptr(uint32_t ptr) {
-       LDKCOption_CVec_NetAddressZZ *obj = (LDKCOption_CVec_NetAddressZZ*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKCOption_CVec_NetAddressZZ_Some: {
-                       LDKCVec_NetAddressZ some_var = obj->some;
-                       uint32_tArray some_arr = NULL;
-                       some_arr = init_arr(some_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
-                       uint32_t *some_arr_ptr = (uint32_t*)(some_arr + 4);
-                       for (size_t m = 0; m < some_var.datalen; m++) {
-                               uint64_t some_conv_12_ref = ((uint64_t)&some_var.data[m]) | 1;
-                               some_arr_ptr[m] = some_conv_12_ref;
-                       }
-                       
-                       return 0 /* LDKCOption_CVec_NetAddressZZ - Some */; (void) some_arr;
-               }
-               case LDKCOption_CVec_NetAddressZZ_None: {
-                       return 0 /* LDKCOption_CVec_NetAddressZZ - None */;
-               }
-               default: abort();
-       }
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_NetAddressDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_NetAddressDecodeErrorZ *val = (LDKCResult_NetAddressDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       uint64_t res_ref = ((uint64_t)&(*val->contents.result)) | 1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_NetAddressDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_NetAddressDecodeErrorZ *val = (LDKCResult_NetAddressDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-static inline LDKCVec_UpdateAddHTLCZ CVec_UpdateAddHTLCZ_clone(const LDKCVec_UpdateAddHTLCZ *orig) {
-       LDKCVec_UpdateAddHTLCZ ret = { .data = MALLOC(sizeof(LDKUpdateAddHTLC) * orig->datalen, "LDKCVec_UpdateAddHTLCZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = UpdateAddHTLC_clone(&orig->data[i]);
-       }
-       return ret;
-}
-static inline LDKCVec_UpdateFulfillHTLCZ CVec_UpdateFulfillHTLCZ_clone(const LDKCVec_UpdateFulfillHTLCZ *orig) {
-       LDKCVec_UpdateFulfillHTLCZ ret = { .data = MALLOC(sizeof(LDKUpdateFulfillHTLC) * orig->datalen, "LDKCVec_UpdateFulfillHTLCZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = UpdateFulfillHTLC_clone(&orig->data[i]);
-       }
-       return ret;
+
+static inline struct LDKType C2Tuple_PublicKeyTypeZ_get_b(LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR owner){
+       return Type_clone(&owner->b);
 }
-static inline LDKCVec_UpdateFailHTLCZ CVec_UpdateFailHTLCZ_clone(const LDKCVec_UpdateFailHTLCZ *orig) {
-       LDKCVec_UpdateFailHTLCZ ret = { .data = MALLOC(sizeof(LDKUpdateFailHTLC) * orig->datalen, "LDKCVec_UpdateFailHTLCZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = UpdateFailHTLC_clone(&orig->data[i]);
-       }
-       return ret;
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_PublicKeyTypeZ_get_b(uint32_t owner) {
+       LDKC2Tuple_PublicKeyTypeZ* owner_conv = (LDKC2Tuple_PublicKeyTypeZ*)(owner & ~1);
+       LDKType* ret_ret = MALLOC(sizeof(LDKType), "LDKType");
+       *ret_ret = C2Tuple_PublicKeyTypeZ_get_b(owner_conv);
+       return (uint64_t)ret_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 };
+
+static inline LDKCVec_C2Tuple_PublicKeyTypeZZ CVec_C2Tuple_PublicKeyTypeZZ_clone(const LDKCVec_C2Tuple_PublicKeyTypeZZ *orig) {
+       LDKCVec_C2Tuple_PublicKeyTypeZZ ret = { .data = MALLOC(sizeof(LDKC2Tuple_PublicKeyTypeZ) * orig->datalen, "LDKCVec_C2Tuple_PublicKeyTypeZZ clone bytes"), .datalen = orig->datalen };
        for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = UpdateFailMalformedHTLC_clone(&orig->data[i]);
+               ret.data[i] = C2Tuple_PublicKeyTypeZ_clone(&orig->data[i]);
        }
        return ret;
 }
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ClosingSignedFeeRangeDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *val = (LDKCResult_ClosingSignedFeeRangeDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKClosingSignedFeeRange res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ClosingSignedFeeRangeDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *val = (LDKCResult_ClosingSignedFeeRangeDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_RevokeAndACKDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_RevokeAndACKDecodeErrorZ *val = (LDKCResult_RevokeAndACKDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKRevokeAndACK res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_RevokeAndACKDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_RevokeAndACKDecodeErrorZ *val = (LDKCResult_RevokeAndACKDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_UpdateFeeDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_UpdateFeeDecodeErrorZ *val = (LDKCResult_UpdateFeeDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKUpdateFee res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_UpdateFeeDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_UpdateFeeDecodeErrorZ *val = (LDKCResult_UpdateFeeDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_UpdateFulfillHTLCDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_UpdateFulfillHTLCDecodeErrorZ *val = (LDKCResult_UpdateFulfillHTLCDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKUpdateFulfillHTLC res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_UpdateAddHTLCDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_UpdateAddHTLCDecodeErrorZ *val = (LDKCResult_UpdateAddHTLCDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKUpdateAddHTLC res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PingDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_PingDecodeErrorZ *val = (LDKCResult_PingDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKPing res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PingDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_PingDecodeErrorZ *val = (LDKCResult_PingDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PongDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_PongDecodeErrorZ *val = (LDKCResult_PongDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKPong res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_PongDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_PongDecodeErrorZ *val = (LDKCResult_PongDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *val = (LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKUnsignedChannelAnnouncement res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *val = (LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_UnsignedChannelUpdateDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_UnsignedChannelUpdateDecodeErrorZ *val = (LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKUnsignedChannelUpdate res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_UnsignedChannelUpdateDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_UnsignedChannelUpdateDecodeErrorZ *val = (LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ErrorMessageDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_ErrorMessageDecodeErrorZ *val = (LDKCResult_ErrorMessageDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKErrorMessage res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ErrorMessageDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_ErrorMessageDecodeErrorZ *val = (LDKCResult_ErrorMessageDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *val = (LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKUnsignedNodeAnnouncement res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *val = (LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_QueryShortChannelIdsDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_QueryShortChannelIdsDecodeErrorZ *val = (LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKQueryShortChannelIds res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_QueryShortChannelIdsDecodeErrorZ_get_err(uint32_t arg) {
-       LDKCResult_QueryShortChannelIdsDecodeErrorZ *val = (LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *val = (LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKReplyShortChannelIdsEnd res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       CHECK(!val->result_ok);
-       LDKDecodeError err_var = (*val->contents.err);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_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);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_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);
-       uint64_t err_ref = 0;
-       CHECK((((uint64_t)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(err_var);
-       err_ref = (uint64_t)err_var.inner & ~1;
-       return err_ref;
-}
-uint32_t __attribute__((visibility("default"))) TS_LDKSignOrCreationError_ref_from_ptr(uint32_t ptr) {
-       LDKSignOrCreationError *obj = (LDKSignOrCreationError*)(ptr & ~1);
+uint32_t __attribute__((visibility("default"))) TS_LDKErrorAction_ref_from_ptr(uint32_t ptr) {
+       LDKErrorAction *obj = (LDKErrorAction*)(ptr & ~1);
        switch(obj->tag) {
-               case LDKSignOrCreationError_SignError: {
-                       return 0 /* LDKSignOrCreationError - SignError */;
+               case LDKErrorAction_DisconnectPeer: {
+                       LDKErrorMessage msg_var = obj->disconnect_peer.msg;
+                       uint64_t msg_ref = 0;
+                       if ((uint64_t)msg_var.inner > 4096) {
+                               CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                               CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                               msg_ref = (uint64_t)msg_var.inner & ~1;
+                       }
+                       return 0 /* LDKErrorAction - DisconnectPeer */; (void) msg_ref;
+               }
+               case LDKErrorAction_IgnoreError: {
+                       return 0 /* LDKErrorAction - IgnoreError */;
+               }
+               case LDKErrorAction_IgnoreAndLog: {
+                       uint32_t ignore_and_log_conv = LDKLevel_to_js(obj->ignore_and_log);
+                       return 0 /* LDKErrorAction - IgnoreAndLog */; (void) ignore_and_log_conv;
+               }
+               case LDKErrorAction_IgnoreDuplicateGossip: {
+                       return 0 /* LDKErrorAction - IgnoreDuplicateGossip */;
                }
-               case LDKSignOrCreationError_CreationError: {
-                       uint32_t creation_error_conv = LDKCreationError_to_js(obj->creation_error);
-                       return 0 /* LDKSignOrCreationError - CreationError */; (void) creation_error_conv;
+               case LDKErrorAction_SendErrorMessage: {
+                       LDKErrorMessage msg_var = obj->send_error_message.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKErrorAction - SendErrorMessage */; (void) msg_ref;
                }
                default: abort();
        }
 }
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_InvoiceSignOrCreationErrorZ_get_ok(uint32_t arg) {
-       LDKCResult_InvoiceSignOrCreationErrorZ *val = (LDKCResult_InvoiceSignOrCreationErrorZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKInvoice res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_InvoiceSignOrCreationErrorZ_get_err(uint32_t arg) {
-       LDKCResult_InvoiceSignOrCreationErrorZ *val = (LDKCResult_InvoiceSignOrCreationErrorZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       uint64_t err_ref = ((uint64_t)&(*val->contents.err)) | 1;
-       return err_ref;
-}
-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_LDKFilter_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);
-}
-LDKCOption_C2Tuple_usizeTransactionZZ register_output_LDKFilter_jcall(const void* this_arg, LDKWatchedOutput output) {
-       LDKFilter_JCalls *j_calls = (LDKFilter_JCalls*) this_arg;
-       LDKWatchedOutput output_var = output;
-       uint64_t output_ref = 0;
-       CHECK((((uint64_t)output_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&output_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(output_var);
-       output_ref = (uint64_t)output_var.inner;
-       if (output_var.is_owned) {
-               output_ref |= 1;
-       }
-       uint32_t ret = js_invoke_function_1(j_calls->register_output_meth, output_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCOption_C2Tuple_usizeTransactionZZ ret_conv = *(LDKCOption_C2Tuple_usizeTransactionZZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
-}
-static void LDKFilter_JCalls_cloned(LDKFilter* new_obj) {
-       LDKFilter_JCalls *j_calls = (LDKFilter_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
-}
-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_LDKFilter_jcall,
-               .register_output = register_output_LDKFilter_jcall,
-               .free = LDKFilter_JCalls_free,
-       };
-       return ret;
-}
-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;
-}
-void  __attribute__((visibility("default"))) TS_Filter_register_tx(uint32_t this_arg, int8_tArray txid, int8_tArray script_pubkey) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKFilter* this_arg_conv = (LDKFilter*)this_arg_ptr;
-       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_Filter_register_output(uint32_t this_arg, uint32_t output) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKFilter* this_arg_conv = (LDKFilter*)this_arg_ptr;
-       LDKWatchedOutput output_conv;
-       output_conv.inner = (void*)(output & (~1));
-       output_conv.is_owned = (output & 1) || (output == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(output_conv);
-       output_conv = WatchedOutput_clone(&output_conv);
-       LDKCOption_C2Tuple_usizeTransactionZZ *ret_copy = MALLOC(sizeof(LDKCOption_C2Tuple_usizeTransactionZZ), "LDKCOption_C2Tuple_usizeTransactionZZ");
-       *ret_copy = (this_arg_conv->register_output)(this_arg_conv->this_arg, output_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t __attribute__((visibility("default"))) TS_LDKCOption_FilterZ_ref_from_ptr(uint32_t ptr) {
-       LDKCOption_FilterZ *obj = (LDKCOption_FilterZ*)(ptr & ~1);
+uint32_t __attribute__((visibility("default"))) TS_LDKMessageSendEvent_ref_from_ptr(uint32_t ptr) {
+       LDKMessageSendEvent *obj = (LDKMessageSendEvent*)(ptr & ~1);
        switch(obj->tag) {
-               case LDKCOption_FilterZ_Some: {
-                       LDKFilter* some_ret = MALLOC(sizeof(LDKFilter), "LDKFilter");
-                       *some_ret = obj->some;
-                       // Warning: We likely need to clone here, but no clone is available, so we just do it for Java instances
-                       return 0 /* LDKCOption_FilterZ - Some */; (void) (uint64_t)some_ret;
+               case LDKMessageSendEvent_SendAcceptChannel: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->send_accept_channel.node_id.compressed_form, 33);
+                       LDKAcceptChannel msg_var = obj->send_accept_channel.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - SendAcceptChannel */; (void) node_id_arr; (void) msg_ref;
                }
-               case LDKCOption_FilterZ_None: {
-                       return 0 /* LDKCOption_FilterZ - None */;
+               case LDKMessageSendEvent_SendOpenChannel: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->send_open_channel.node_id.compressed_form, 33);
+                       LDKOpenChannel msg_var = obj->send_open_channel.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - SendOpenChannel */; (void) node_id_arr; (void) msg_ref;
                }
-               default: abort();
-       }
-}
-uint32_t  __attribute__((visibility("default"))) TS_LDKCResult_LockedChannelMonitorNoneZ_get_ok(uint32_t arg) {
-       LDKCResult_LockedChannelMonitorNoneZ *val = (LDKCResult_LockedChannelMonitorNoneZ*)(arg & ~1);
-       CHECK(val->result_ok);
-       LDKLockedChannelMonitor res_var = (*val->contents.result);
-       uint64_t res_ref = 0;
-       CHECK((((uint64_t)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(res_var);
-       res_ref = (uint64_t)res_var.inner & ~1;
-       return res_ref;
-}
-void  __attribute__((visibility("default"))) TS_LDKCResult_LockedChannelMonitorNoneZ_get_err(uint32_t arg) {
-       LDKCResult_LockedChannelMonitorNoneZ *val = (LDKCResult_LockedChannelMonitorNoneZ*)(arg & ~1);
-       CHECK(!val->result_ok);
-       return *val->contents.err;
-}
-static inline LDKCVec_OutPointZ CVec_OutPointZ_clone(const LDKCVec_OutPointZ *orig) {
-       LDKCVec_OutPointZ ret = { .data = MALLOC(sizeof(LDKOutPoint) * orig->datalen, "LDKCVec_OutPointZ clone bytes"), .datalen = orig->datalen };
-       for (size_t i = 0; i < ret.datalen; i++) {
-               ret.data[i] = OutPoint_clone(&orig->data[i]);
-       }
-       return ret;
-}
-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_MessageSendEventZ get_and_clear_pending_msg_events_LDKMessageSendEventsProvider_jcall(const void* this_arg) {
-       LDKMessageSendEventsProvider_JCalls *j_calls = (LDKMessageSendEventsProvider_JCalls*) this_arg;
-       uint32_tArray ret = js_invoke_function_0(j_calls->get_and_clear_pending_msg_events_meth);
-       LDKCVec_MessageSendEventZ ret_constr;
-       ret_constr.datalen = *((uint32_t*)ret);
-       if (ret_constr.datalen > 0)
-               ret_constr.data = MALLOC(ret_constr.datalen * sizeof(LDKMessageSendEvent), "LDKCVec_MessageSendEventZ Elements");
-       else
-               ret_constr.data = NULL;
-       uint32_t* ret_vals = (uint32_t*)(ret + 4);
-       for (size_t s = 0; s < ret_constr.datalen; s++) {
-               uint32_t ret_conv_18 = ret_vals[s];
-               void* ret_conv_18_ptr = (void*)(((uint64_t)ret_conv_18) & ~1);
-               CHECK_ACCESS(ret_conv_18_ptr);
-               LDKMessageSendEvent ret_conv_18_conv = *(LDKMessageSendEvent*)(ret_conv_18_ptr);
-               FREE((void*)ret_conv_18);
-               ret_constr.data[s] = ret_conv_18_conv;
-       }
-       return ret_constr;
-}
-static void LDKMessageSendEventsProvider_JCalls_cloned(LDKMessageSendEventsProvider* new_obj) {
-       LDKMessageSendEventsProvider_JCalls *j_calls = (LDKMessageSendEventsProvider_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
-}
-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_LDKMessageSendEventsProvider_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) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKMessageSendEventsProvider* this_arg_conv = (LDKMessageSendEventsProvider*)this_arg_ptr;
-       LDKCVec_MessageSendEventZ ret_var = (this_arg_conv->get_and_clear_pending_msg_events)(this_arg_conv->this_arg);
-       uint32_tArray ret_arr = NULL;
-       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 *ret_conv_18_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-               *ret_conv_18_copy = ret_var.data[s];
-               uint64_t ret_conv_18_ref = (uint64_t)ret_conv_18_copy;
-               ret_arr_ptr[s] = ret_conv_18_ref;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
-}
-
-typedef struct LDKEventHandler_JCalls {
-       atomic_size_t refcnt;
-       uint32_t handle_event_meth;
-} LDKEventHandler_JCalls;
-static void LDKEventHandler_JCalls_free(void* this_arg) {
-       LDKEventHandler_JCalls *j_calls = (LDKEventHandler_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->handle_event_meth);
-               FREE(j_calls);
-       }
-}
-void handle_event_LDKEventHandler_jcall(const void* this_arg, const LDKEvent * event) {
-       LDKEventHandler_JCalls *j_calls = (LDKEventHandler_JCalls*) this_arg;
-       LDKEvent *ret_event = MALLOC(sizeof(LDKEvent), "LDKEvent ret conversion");
-       *ret_event = Event_clone(event);
-       js_invoke_function_1(j_calls->handle_event_meth, (uint64_t)ret_event);
-}
-static void LDKEventHandler_JCalls_cloned(LDKEventHandler* new_obj) {
-       LDKEventHandler_JCalls *j_calls = (LDKEventHandler_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
-}
-static inline LDKEventHandler LDKEventHandler_init (/*TODO: JS Object Reference */void* o) {
-       LDKEventHandler_JCalls *calls = MALLOC(sizeof(LDKEventHandler_JCalls), "LDKEventHandler_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
-
-       LDKEventHandler ret = {
-               .this_arg = (void*) calls,
-               .handle_event = handle_event_LDKEventHandler_jcall,
-               .free = LDKEventHandler_JCalls_free,
-       };
-       return ret;
-}
-long  __attribute__((visibility("default"))) TS_LDKEventHandler_new(/*TODO: JS Object Reference */void* o) {
-       LDKEventHandler *res_ptr = MALLOC(sizeof(LDKEventHandler), "LDKEventHandler");
-       *res_ptr = LDKEventHandler_init(o);
-       return (long)res_ptr;
-}
-void  __attribute__((visibility("default"))) TS_EventHandler_handle_event(uint32_t this_arg, uint32_t event) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKEventHandler* this_arg_conv = (LDKEventHandler*)this_arg_ptr;
-       LDKEvent* event_conv = (LDKEvent*)event;
-       (this_arg_conv->handle_event)(this_arg_conv->this_arg, event_conv);
-}
-
-typedef struct LDKEventsProvider_JCalls {
-       atomic_size_t refcnt;
-       uint32_t process_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->process_pending_events_meth);
-               FREE(j_calls);
-       }
-}
-void process_pending_events_LDKEventsProvider_jcall(const void* this_arg, LDKEventHandler handler) {
-       LDKEventsProvider_JCalls *j_calls = (LDKEventsProvider_JCalls*) this_arg;
-       LDKEventHandler* handler_ret = MALLOC(sizeof(LDKEventHandler), "LDKEventHandler");
-       *handler_ret = handler;
-       js_invoke_function_1(j_calls->process_pending_events_meth, (uint64_t)handler_ret);
-}
-static void LDKEventsProvider_JCalls_cloned(LDKEventsProvider* new_obj) {
-       LDKEventsProvider_JCalls *j_calls = (LDKEventsProvider_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
-}
-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,
-               .process_pending_events = process_pending_events_LDKEventsProvider_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;
-}
-void  __attribute__((visibility("default"))) TS_EventsProvider_process_pending_events(uint32_t this_arg, uint32_t handler) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKEventsProvider* this_arg_conv = (LDKEventsProvider*)this_arg_ptr;
-       void* handler_ptr = (void*)(((uint64_t)handler) & ~1);
-       CHECK_ACCESS(handler_ptr);
-       LDKEventHandler handler_conv = *(LDKEventHandler*)(handler_ptr);
-       (this_arg_conv->process_pending_events)(this_arg_conv->this_arg, handler_conv);
-}
-
-typedef struct LDKListen_JCalls {
-       atomic_size_t refcnt;
-       uint32_t block_connected_meth;
-       uint32_t block_disconnected_meth;
-} LDKListen_JCalls;
-static void LDKListen_JCalls_free(void* this_arg) {
-       LDKListen_JCalls *j_calls = (LDKListen_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->block_connected_meth);
-               js_free(j_calls->block_disconnected_meth);
-               FREE(j_calls);
-       }
-}
-void block_connected_LDKListen_jcall(const void* this_arg, LDKu8slice block, uint32_t height) {
-       LDKListen_JCalls *j_calls = (LDKListen_JCalls*) this_arg;
-       LDKu8slice block_var = block;
-       int8_tArray block_arr = init_arr(block_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(block_arr + 4), block_var.data, block_var.datalen);
-       js_invoke_function_2(j_calls->block_connected_meth, block_arr, height);
-}
-void block_disconnected_LDKListen_jcall(const void* this_arg, const uint8_t (* header)[80], uint32_t height) {
-       LDKListen_JCalls *j_calls = (LDKListen_JCalls*) this_arg;
-       int8_tArray header_arr = init_arr(80, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(header_arr + 4), *header, 80);
-       js_invoke_function_2(j_calls->block_disconnected_meth, header_arr, height);
-}
-static void LDKListen_JCalls_cloned(LDKListen* new_obj) {
-       LDKListen_JCalls *j_calls = (LDKListen_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
-}
-static inline LDKListen LDKListen_init (/*TODO: JS Object Reference */void* o) {
-       LDKListen_JCalls *calls = MALLOC(sizeof(LDKListen_JCalls), "LDKListen_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
-
-       LDKListen ret = {
-               .this_arg = (void*) calls,
-               .block_connected = block_connected_LDKListen_jcall,
-               .block_disconnected = block_disconnected_LDKListen_jcall,
-               .free = LDKListen_JCalls_free,
-       };
-       return ret;
-}
-long  __attribute__((visibility("default"))) TS_LDKListen_new(/*TODO: JS Object Reference */void* o) {
-       LDKListen *res_ptr = MALLOC(sizeof(LDKListen), "LDKListen");
-       *res_ptr = LDKListen_init(o);
-       return (long)res_ptr;
-}
-void  __attribute__((visibility("default"))) TS_Listen_block_connected(uint32_t this_arg, int8_tArray block, int32_t height) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKListen* this_arg_conv = (LDKListen*)this_arg_ptr;
-       LDKu8slice block_ref;
-       block_ref.datalen = *((uint32_t*)block);
-       block_ref.data = (int8_t*)(block + 4);
-       (this_arg_conv->block_connected)(this_arg_conv->this_arg, block_ref, height);
-}
-
-void  __attribute__((visibility("default"))) TS_Listen_block_disconnected(uint32_t this_arg, int8_tArray header, int32_t height) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKListen* this_arg_conv = (LDKListen*)this_arg_ptr;
-       unsigned char header_arr[80];
-       CHECK(*((uint32_t*)header) == 80);
-       memcpy(header_arr, (uint8_t*)(header + 4), 80);
-       unsigned char (*header_ref)[80] = &header_arr;
-       (this_arg_conv->block_disconnected)(this_arg_conv->this_arg, header_ref, height);
-}
-
-typedef struct LDKConfirm_JCalls {
-       atomic_size_t refcnt;
-       uint32_t transactions_confirmed_meth;
-       uint32_t transaction_unconfirmed_meth;
-       uint32_t best_block_updated_meth;
-       uint32_t get_relevant_txids_meth;
-} LDKConfirm_JCalls;
-static void LDKConfirm_JCalls_free(void* this_arg) {
-       LDKConfirm_JCalls *j_calls = (LDKConfirm_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->transactions_confirmed_meth);
-               js_free(j_calls->transaction_unconfirmed_meth);
-               js_free(j_calls->best_block_updated_meth);
-               js_free(j_calls->get_relevant_txids_meth);
-               FREE(j_calls);
-       }
-}
-void transactions_confirmed_LDKConfirm_jcall(const void* this_arg, const uint8_t (* header)[80], LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height) {
-       LDKConfirm_JCalls *j_calls = (LDKConfirm_JCalls*) this_arg;
-       int8_tArray header_arr = init_arr(80, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(header_arr + 4), *header, 80);
-       LDKCVec_C2Tuple_usizeTransactionZZ txdata_var = txdata;
-       uint32_tArray txdata_arr = NULL;
-       txdata_arr = init_arr(txdata_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
-       uint32_t *txdata_arr_ptr = (uint32_t*)(txdata_arr + 4);
-       for (size_t c = 0; c < txdata_var.datalen; c++) {
-               LDKC2Tuple_usizeTransactionZ* txdata_conv_28_conv = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ), "LDKC2Tuple_usizeTransactionZ");
-               *txdata_conv_28_conv = txdata_var.data[c];
-               txdata_arr_ptr[c] = ((uint64_t)txdata_conv_28_conv);
-       }
-       
-       FREE(txdata_var.data);
-       js_invoke_function_3(j_calls->transactions_confirmed_meth, header_arr, txdata_arr, height);
-}
-void transaction_unconfirmed_LDKConfirm_jcall(const void* this_arg, const uint8_t (* txid)[32]) {
-       LDKConfirm_JCalls *j_calls = (LDKConfirm_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);
-       js_invoke_function_1(j_calls->transaction_unconfirmed_meth, txid_arr);
-}
-void best_block_updated_LDKConfirm_jcall(const void* this_arg, const uint8_t (* header)[80], uint32_t height) {
-       LDKConfirm_JCalls *j_calls = (LDKConfirm_JCalls*) this_arg;
-       int8_tArray header_arr = init_arr(80, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(header_arr + 4), *header, 80);
-       js_invoke_function_2(j_calls->best_block_updated_meth, header_arr, height);
-}
-LDKCVec_TxidZ get_relevant_txids_LDKConfirm_jcall(const void* this_arg) {
-       LDKConfirm_JCalls *j_calls = (LDKConfirm_JCalls*) this_arg;
-       ptrArray ret = js_invoke_function_0(j_calls->get_relevant_txids_meth);
-       LDKCVec_TxidZ ret_constr;
-       ret_constr.datalen = *((uint32_t*)ret);
-       if (ret_constr.datalen > 0)
-               ret_constr.data = MALLOC(ret_constr.datalen * sizeof(LDKThirtyTwoBytes), "LDKCVec_TxidZ Elements");
-       else
-               ret_constr.data = NULL;
-       int8_tArray* ret_vals = (int8_tArray*)(ret + 4);
-       for (size_t m = 0; m < ret_constr.datalen; m++) {
-               int8_tArray ret_conv_12 = ret_vals[m];
-               LDKThirtyTwoBytes ret_conv_12_ref;
-               CHECK(*((uint32_t*)ret_conv_12) == 32);
-               memcpy(ret_conv_12_ref.data, (uint8_t*)(ret_conv_12 + 4), 32);
-               ret_constr.data[m] = ret_conv_12_ref;
-       }
-       return ret_constr;
-}
-static void LDKConfirm_JCalls_cloned(LDKConfirm* new_obj) {
-       LDKConfirm_JCalls *j_calls = (LDKConfirm_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
-}
-static inline LDKConfirm LDKConfirm_init (/*TODO: JS Object Reference */void* o) {
-       LDKConfirm_JCalls *calls = MALLOC(sizeof(LDKConfirm_JCalls), "LDKConfirm_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
-
-       LDKConfirm ret = {
-               .this_arg = (void*) calls,
-               .transactions_confirmed = transactions_confirmed_LDKConfirm_jcall,
-               .transaction_unconfirmed = transaction_unconfirmed_LDKConfirm_jcall,
-               .best_block_updated = best_block_updated_LDKConfirm_jcall,
-               .get_relevant_txids = get_relevant_txids_LDKConfirm_jcall,
-               .free = LDKConfirm_JCalls_free,
-       };
-       return ret;
-}
-long  __attribute__((visibility("default"))) TS_LDKConfirm_new(/*TODO: JS Object Reference */void* o) {
-       LDKConfirm *res_ptr = MALLOC(sizeof(LDKConfirm), "LDKConfirm");
-       *res_ptr = LDKConfirm_init(o);
-       return (long)res_ptr;
-}
-void  __attribute__((visibility("default"))) TS_Confirm_transactions_confirmed(uint32_t this_arg, int8_tArray header, uint32_tArray txdata, int32_t height) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKConfirm* this_arg_conv = (LDKConfirm*)this_arg_ptr;
-       unsigned char header_arr[80];
-       CHECK(*((uint32_t*)header) == 80);
-       memcpy(header_arr, (uint8_t*)(header + 4), 80);
-       unsigned char (*header_ref)[80] = &header_arr;
-       LDKCVec_C2Tuple_usizeTransactionZZ txdata_constr;
-       txdata_constr.datalen = *((uint32_t*)txdata);
-       if (txdata_constr.datalen > 0)
-               txdata_constr.data = MALLOC(txdata_constr.datalen * sizeof(LDKC2Tuple_usizeTransactionZ), "LDKCVec_C2Tuple_usizeTransactionZZ Elements");
-       else
-               txdata_constr.data = NULL;
-       uint32_t* txdata_vals = (uint32_t*)(txdata + 4);
-       for (size_t c = 0; c < txdata_constr.datalen; c++) {
-               uint32_t txdata_conv_28 = txdata_vals[c];
-               void* txdata_conv_28_ptr = (void*)(((uint64_t)txdata_conv_28) & ~1);
-               CHECK_ACCESS(txdata_conv_28_ptr);
-               LDKC2Tuple_usizeTransactionZ txdata_conv_28_conv = *(LDKC2Tuple_usizeTransactionZ*)(txdata_conv_28_ptr);
-               txdata_conv_28_conv = C2Tuple_usizeTransactionZ_clone((LDKC2Tuple_usizeTransactionZ*)(((uint64_t)txdata_conv_28) & ~1));
-               txdata_constr.data[c] = txdata_conv_28_conv;
-       }
-       (this_arg_conv->transactions_confirmed)(this_arg_conv->this_arg, header_ref, txdata_constr, height);
-}
-
-void  __attribute__((visibility("default"))) TS_Confirm_transaction_unconfirmed(uint32_t this_arg, int8_tArray txid) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKConfirm* this_arg_conv = (LDKConfirm*)this_arg_ptr;
-       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;
-       (this_arg_conv->transaction_unconfirmed)(this_arg_conv->this_arg, txid_ref);
-}
-
-void  __attribute__((visibility("default"))) TS_Confirm_best_block_updated(uint32_t this_arg, int8_tArray header, int32_t height) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKConfirm* this_arg_conv = (LDKConfirm*)this_arg_ptr;
-       unsigned char header_arr[80];
-       CHECK(*((uint32_t*)header) == 80);
-       memcpy(header_arr, (uint8_t*)(header + 4), 80);
-       unsigned char (*header_ref)[80] = &header_arr;
-       (this_arg_conv->best_block_updated)(this_arg_conv->this_arg, header_ref, height);
-}
-
-ptrArray  __attribute__((visibility("default"))) TS_Confirm_get_relevant_txids(uint32_t this_arg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKConfirm* this_arg_conv = (LDKConfirm*)this_arg_ptr;
-       LDKCVec_TxidZ ret_var = (this_arg_conv->get_relevant_txids)(this_arg_conv->this_arg);
-       ptrArray ret_arr = NULL;
-       ret_arr = init_arr(ret_var.datalen, sizeof(uint32_t), "Native ptrArray Bytes");
-       int8_tArray *ret_arr_ptr = (int8_tArray*)(ret_arr + 4);
-       for (size_t m = 0; m < ret_var.datalen; m++) {
-               int8_tArray ret_conv_12_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-               memcpy((uint8_t*)(ret_conv_12_arr + 4), ret_var.data[m].data, 32);
-               ret_arr_ptr[m] = ret_conv_12_arr;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
-}
-
-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);
-       }
-}
-LDKCResult_NoneChannelMonitorUpdateErrZ persist_new_channel_LDKPersist_jcall(const void* this_arg, LDKOutPoint channel_id, const LDKChannelMonitor * data, LDKMonitorUpdateId update_id) {
-       LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) this_arg;
-       LDKOutPoint channel_id_var = channel_id;
-       uint64_t channel_id_ref = 0;
-       CHECK((((uint64_t)channel_id_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&channel_id_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_id_var);
-       channel_id_ref = (uint64_t)channel_id_var.inner;
-       if (channel_id_var.is_owned) {
-               channel_id_ref |= 1;
-       }
-       LDKChannelMonitor data_var = *data;
-       uint64_t data_ref = 0;
-       data_var = ChannelMonitor_clone(data);
-       CHECK((((uint64_t)data_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&data_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(data_var);
-       data_ref = (uint64_t)data_var.inner;
-       if (data_var.is_owned) {
-               data_ref |= 1;
-       }
-       LDKMonitorUpdateId update_id_var = update_id;
-       uint64_t update_id_ref = 0;
-       CHECK((((uint64_t)update_id_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&update_id_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_id_var);
-       update_id_ref = (uint64_t)update_id_var.inner;
-       if (update_id_var.is_owned) {
-               update_id_ref |= 1;
-       }
-       uint32_t ret = js_invoke_function_3(j_calls->persist_new_channel_meth, channel_id_ref, data_ref, update_id_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_NoneChannelMonitorUpdateErrZ ret_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
-}
-LDKCResult_NoneChannelMonitorUpdateErrZ update_persisted_channel_LDKPersist_jcall(const void* this_arg, LDKOutPoint channel_id, const LDKChannelMonitorUpdate * update, const LDKChannelMonitor * data, LDKMonitorUpdateId update_id) {
-       LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) this_arg;
-       LDKOutPoint channel_id_var = channel_id;
-       uint64_t channel_id_ref = 0;
-       CHECK((((uint64_t)channel_id_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&channel_id_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_id_var);
-       channel_id_ref = (uint64_t)channel_id_var.inner;
-       if (channel_id_var.is_owned) {
-               channel_id_ref |= 1;
-       }
-       LDKChannelMonitorUpdate update_var = *update;
-       uint64_t update_ref = 0;
-       if ((uint64_t)update_var.inner > 4096) {
-               update_var = ChannelMonitorUpdate_clone(update);
-               CHECK((((uint64_t)update_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&update_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_var);
-               update_ref = (uint64_t)update_var.inner;
-               if (update_var.is_owned) {
-                       update_ref |= 1;
-               }
-       }
-       LDKChannelMonitor data_var = *data;
-       uint64_t data_ref = 0;
-       data_var = ChannelMonitor_clone(data);
-       CHECK((((uint64_t)data_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&data_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(data_var);
-       data_ref = (uint64_t)data_var.inner;
-       if (data_var.is_owned) {
-               data_ref |= 1;
-       }
-       LDKMonitorUpdateId update_id_var = update_id;
-       uint64_t update_id_ref = 0;
-       CHECK((((uint64_t)update_id_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&update_id_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_id_var);
-       update_id_ref = (uint64_t)update_id_var.inner;
-       if (update_id_var.is_owned) {
-               update_id_ref |= 1;
-       }
-       uint32_t ret = js_invoke_function_4(j_calls->update_persisted_channel_meth, channel_id_ref, update_ref, data_ref, update_id_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_NoneChannelMonitorUpdateErrZ ret_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
-}
-static void LDKPersist_JCalls_cloned(LDKPersist* new_obj) {
-       LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
-}
-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_LDKPersist_jcall,
-               .update_persisted_channel = update_persisted_channel_LDKPersist_jcall,
-               .free = LDKPersist_JCalls_free,
-       };
-       return ret;
-}
-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_Persist_persist_new_channel(uint32_t this_arg, uint32_t channel_id, uint32_t data, uint32_t update_id) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKPersist* this_arg_conv = (LDKPersist*)this_arg_ptr;
-       LDKOutPoint channel_id_conv;
-       channel_id_conv.inner = (void*)(channel_id & (~1));
-       channel_id_conv.is_owned = (channel_id & 1) || (channel_id == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_id_conv);
-       channel_id_conv = OutPoint_clone(&channel_id_conv);
-       LDKChannelMonitor data_conv;
-       data_conv.inner = (void*)(data & (~1));
-       data_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(data_conv);
-       LDKMonitorUpdateId update_id_conv;
-       update_id_conv.inner = (void*)(update_id & (~1));
-       update_id_conv.is_owned = (update_id & 1) || (update_id == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_id_conv);
-       update_id_conv = MonitorUpdateId_clone(&update_id_conv);
-       LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ");
-       *ret_conv = (this_arg_conv->persist_new_channel)(this_arg_conv->this_arg, channel_id_conv, &data_conv, update_id_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_Persist_update_persisted_channel(uint32_t this_arg, uint32_t channel_id, uint32_t update, uint32_t data, uint32_t update_id) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKPersist* this_arg_conv = (LDKPersist*)this_arg_ptr;
-       LDKOutPoint channel_id_conv;
-       channel_id_conv.inner = (void*)(channel_id & (~1));
-       channel_id_conv.is_owned = (channel_id & 1) || (channel_id == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_id_conv);
-       channel_id_conv = OutPoint_clone(&channel_id_conv);
-       LDKChannelMonitorUpdate update_conv;
-       update_conv.inner = (void*)(update & (~1));
-       update_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_conv);
-       LDKChannelMonitor data_conv;
-       data_conv.inner = (void*)(data & (~1));
-       data_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(data_conv);
-       LDKMonitorUpdateId update_id_conv;
-       update_id_conv.inner = (void*)(update_id & (~1));
-       update_id_conv.is_owned = (update_id & 1) || (update_id == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_id_conv);
-       update_id_conv = MonitorUpdateId_clone(&update_id_conv);
-       LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ");
-       *ret_conv = (this_arg_conv->update_persisted_channel)(this_arg_conv->this_arg, channel_id_conv, &update_conv, &data_conv, update_id_conv);
-       return (uint64_t)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_channel_update_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_channel_update_meth);
-               js_free(j_calls->handle_error_meth);
-               FREE(j_calls);
-       }
-}
-void handle_open_channel_LDKChannelMessageHandler_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;
-       uint64_t their_features_ref = 0;
-       CHECK((((uint64_t)their_features_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&their_features_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(their_features_var);
-       their_features_ref = (uint64_t)their_features_var.inner;
-       if (their_features_var.is_owned) {
-               their_features_ref |= 1;
-       }
-       LDKOpenChannel msg_var = *msg;
-       uint64_t msg_ref = 0;
-       msg_var = OpenChannel_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)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);
-}
-void handle_accept_channel_LDKChannelMessageHandler_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;
-       uint64_t their_features_ref = 0;
-       CHECK((((uint64_t)their_features_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&their_features_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(their_features_var);
-       their_features_ref = (uint64_t)their_features_var.inner;
-       if (their_features_var.is_owned) {
-               their_features_ref |= 1;
-       }
-       LDKAcceptChannel msg_var = *msg;
-       uint64_t msg_ref = 0;
-       msg_var = AcceptChannel_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)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);
-}
-void handle_funding_created_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = FundingCreated_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)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 handle_funding_signed_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = FundingSigned_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)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);
-}
-void handle_funding_locked_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = FundingLocked_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)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);
-}
-void handle_shutdown_LDKChannelMessageHandler_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKInitFeatures * their_features, 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);
-       LDKInitFeatures their_features_var = *their_features;
-       uint64_t their_features_ref = 0;
-       their_features_var = InitFeatures_clone(their_features);
-       CHECK((((uint64_t)their_features_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&their_features_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(their_features_var);
-       their_features_ref = (uint64_t)their_features_var.inner;
-       if (their_features_var.is_owned) {
-               their_features_ref |= 1;
-       }
-       LDKShutdown msg_var = *msg;
-       uint64_t msg_ref = 0;
-       msg_var = Shutdown_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
-       }
-       js_invoke_function_3(j_calls->handle_shutdown_meth, their_node_id_arr, their_features_ref, msg_ref);
-}
-void handle_closing_signed_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = ClosingSigned_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)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);
-}
-void handle_update_add_htlc_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = UpdateAddHTLC_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
+               case LDKMessageSendEvent_SendFundingCreated: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->send_funding_created.node_id.compressed_form, 33);
+                       LDKFundingCreated msg_var = obj->send_funding_created.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - SendFundingCreated */; (void) node_id_arr; (void) msg_ref;
+               }
+               case LDKMessageSendEvent_SendFundingSigned: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->send_funding_signed.node_id.compressed_form, 33);
+                       LDKFundingSigned msg_var = obj->send_funding_signed.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - SendFundingSigned */; (void) node_id_arr; (void) msg_ref;
+               }
+               case LDKMessageSendEvent_SendFundingLocked: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->send_funding_locked.node_id.compressed_form, 33);
+                       LDKFundingLocked msg_var = obj->send_funding_locked.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - SendFundingLocked */; (void) node_id_arr; (void) msg_ref;
+               }
+               case LDKMessageSendEvent_SendAnnouncementSignatures: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->send_announcement_signatures.node_id.compressed_form, 33);
+                       LDKAnnouncementSignatures msg_var = obj->send_announcement_signatures.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - SendAnnouncementSignatures */; (void) node_id_arr; (void) msg_ref;
+               }
+               case LDKMessageSendEvent_UpdateHTLCs: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->update_htl_cs.node_id.compressed_form, 33);
+                       LDKCommitmentUpdate updates_var = obj->update_htl_cs.updates;
+                       uint64_t updates_ref = 0;
+                       CHECK((((uint64_t)updates_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&updates_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(updates_var);
+                       updates_ref = (uint64_t)updates_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - UpdateHTLCs */; (void) node_id_arr; (void) updates_ref;
+               }
+               case LDKMessageSendEvent_SendRevokeAndACK: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->send_revoke_and_ack.node_id.compressed_form, 33);
+                       LDKRevokeAndACK msg_var = obj->send_revoke_and_ack.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - SendRevokeAndACK */; (void) node_id_arr; (void) msg_ref;
+               }
+               case LDKMessageSendEvent_SendClosingSigned: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->send_closing_signed.node_id.compressed_form, 33);
+                       LDKClosingSigned msg_var = obj->send_closing_signed.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - SendClosingSigned */; (void) node_id_arr; (void) msg_ref;
+               }
+               case LDKMessageSendEvent_SendShutdown: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->send_shutdown.node_id.compressed_form, 33);
+                       LDKShutdown msg_var = obj->send_shutdown.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - SendShutdown */; (void) node_id_arr; (void) msg_ref;
+               }
+               case LDKMessageSendEvent_SendChannelReestablish: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->send_channel_reestablish.node_id.compressed_form, 33);
+                       LDKChannelReestablish msg_var = obj->send_channel_reestablish.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - SendChannelReestablish */; (void) node_id_arr; (void) msg_ref;
+               }
+               case LDKMessageSendEvent_BroadcastChannelAnnouncement: {
+                       LDKChannelAnnouncement msg_var = obj->broadcast_channel_announcement.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       LDKChannelUpdate update_msg_var = obj->broadcast_channel_announcement.update_msg;
+                       uint64_t update_msg_ref = 0;
+                       CHECK((((uint64_t)update_msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&update_msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_msg_var);
+                       update_msg_ref = (uint64_t)update_msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - BroadcastChannelAnnouncement */; (void) msg_ref; (void) update_msg_ref;
+               }
+               case LDKMessageSendEvent_BroadcastNodeAnnouncement: {
+                       LDKNodeAnnouncement msg_var = obj->broadcast_node_announcement.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - BroadcastNodeAnnouncement */; (void) msg_ref;
+               }
+               case LDKMessageSendEvent_BroadcastChannelUpdate: {
+                       LDKChannelUpdate msg_var = obj->broadcast_channel_update.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - BroadcastChannelUpdate */; (void) msg_ref;
+               }
+               case LDKMessageSendEvent_SendChannelUpdate: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->send_channel_update.node_id.compressed_form, 33);
+                       LDKChannelUpdate msg_var = obj->send_channel_update.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - SendChannelUpdate */; (void) node_id_arr; (void) msg_ref;
+               }
+               case LDKMessageSendEvent_HandleError: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->handle_error.node_id.compressed_form, 33);
+                       uint64_t action_ref = ((uint64_t)&obj->handle_error.action) | 1;
+                       return 0 /* LDKMessageSendEvent - HandleError */; (void) node_id_arr; (void) action_ref;
+               }
+               case LDKMessageSendEvent_SendChannelRangeQuery: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->send_channel_range_query.node_id.compressed_form, 33);
+                       LDKQueryChannelRange msg_var = obj->send_channel_range_query.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - SendChannelRangeQuery */; (void) node_id_arr; (void) msg_ref;
+               }
+               case LDKMessageSendEvent_SendShortIdsQuery: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->send_short_ids_query.node_id.compressed_form, 33);
+                       LDKQueryShortChannelIds msg_var = obj->send_short_ids_query.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - SendShortIdsQuery */; (void) node_id_arr; (void) msg_ref;
+               }
+               case LDKMessageSendEvent_SendReplyChannelRange: {
+                       int8_tArray node_id_arr = init_int8_tArray(33);
+                       memcpy(node_id_arr->elems, obj->send_reply_channel_range.node_id.compressed_form, 33);
+                       LDKReplyChannelRange msg_var = obj->send_reply_channel_range.msg;
+                       uint64_t msg_ref = 0;
+                       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+                       msg_ref = (uint64_t)msg_var.inner & ~1;
+                       return 0 /* LDKMessageSendEvent - SendReplyChannelRange */; (void) node_id_arr; (void) msg_ref;
+               }
+               default: abort();
        }
-       js_invoke_function_2(j_calls->handle_update_add_htlc_meth, their_node_id_arr, msg_ref);
 }
-void handle_update_fulfill_htlc_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = UpdateFulfillHTLC_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
+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]);
        }
-       js_invoke_function_2(j_calls->handle_update_fulfill_htlc_meth, their_node_id_arr, msg_ref);
+       return ret;
 }
-void handle_update_fail_htlc_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = UpdateFailHTLC_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)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);
+static inline bool CResult_boolLightningErrorZ_get_ok(LDKCResult_boolLightningErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
 }
-void handle_update_fail_malformed_htlc_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = UpdateFailMalformedHTLC_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)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);
+jboolean  __attribute__((visibility("default"))) TS_CResult_boolLightningErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_boolLightningErrorZ* owner_conv = (LDKCResult_boolLightningErrorZ*)(owner & ~1);
+       jboolean ret_val = CResult_boolLightningErrorZ_get_ok(owner_conv);
+       return ret_val;
 }
-void handle_commitment_signed_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = CommitmentSigned_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)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);
+
+static inline struct LDKLightningError CResult_boolLightningErrorZ_get_err(LDKCResult_boolLightningErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return LightningError_clone(&*owner->contents.err);
 }
-void handle_revoke_and_ack_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = RevokeAndACK_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_boolLightningErrorZ_get_err(uint32_t owner) {
+       LDKCResult_boolLightningErrorZ* owner_conv = (LDKCResult_boolLightningErrorZ*)(owner & ~1);
+       LDKLightningError ret_var = CResult_boolLightningErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       js_invoke_function_2(j_calls->handle_revoke_and_ack_meth, their_node_id_arr, msg_ref);
+       return ret_ref;
 }
-void handle_update_fee_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = UpdateFee_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)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);
+
+static inline struct LDKChannelAnnouncement C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR owner){
+       return ChannelAnnouncement_clone(&owner->a);
 }
-void handle_announcement_signatures_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = AnnouncementSignatures_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(uint32_t owner) {
+       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* owner_conv = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(owner & ~1);
+       LDKChannelAnnouncement ret_var = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       js_invoke_function_2(j_calls->handle_announcement_signatures_meth, their_node_id_arr, msg_ref);
-}
-void peer_disconnected_LDKChannelMessageHandler_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);
+       return ret_ref;
 }
-void peer_connected_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = Init_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)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);
+
+static inline struct LDKChannelUpdate C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR owner){
+       return ChannelUpdate_clone(&owner->b);
 }
-void handle_channel_reestablish_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = ChannelReestablish_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(uint32_t owner) {
+       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* owner_conv = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(owner & ~1);
+       LDKChannelUpdate ret_var = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       js_invoke_function_2(j_calls->handle_channel_reestablish_meth, their_node_id_arr, msg_ref);
+       return ret_ref;
 }
-void handle_channel_update_LDKChannelMessageHandler_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKChannelUpdate * 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);
-       LDKChannelUpdate msg_var = *msg;
-       uint64_t msg_ref = 0;
-       msg_var = ChannelUpdate_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
-       }
-       js_invoke_function_2(j_calls->handle_channel_update_meth, their_node_id_arr, msg_ref);
+
+static inline struct LDKChannelUpdate C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR owner){
+       return ChannelUpdate_clone(&owner->c);
 }
-void handle_error_LDKChannelMessageHandler_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;
-       uint64_t msg_ref = 0;
-       msg_var = ErrorMessage_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(uint32_t owner) {
+       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* owner_conv = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(owner & ~1);
+       LDKChannelUpdate ret_var = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       js_invoke_function_2(j_calls->handle_error_meth, their_node_id_arr, msg_ref);
-}
-static void LDKChannelMessageHandler_JCalls_cloned(LDKChannelMessageHandler* new_obj) {
-       LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) new_obj->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 ret_ref;
 }
-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_LDKChannelMessageHandler_jcall,
-               .handle_accept_channel = handle_accept_channel_LDKChannelMessageHandler_jcall,
-               .handle_funding_created = handle_funding_created_LDKChannelMessageHandler_jcall,
-               .handle_funding_signed = handle_funding_signed_LDKChannelMessageHandler_jcall,
-               .handle_funding_locked = handle_funding_locked_LDKChannelMessageHandler_jcall,
-               .handle_shutdown = handle_shutdown_LDKChannelMessageHandler_jcall,
-               .handle_closing_signed = handle_closing_signed_LDKChannelMessageHandler_jcall,
-               .handle_update_add_htlc = handle_update_add_htlc_LDKChannelMessageHandler_jcall,
-               .handle_update_fulfill_htlc = handle_update_fulfill_htlc_LDKChannelMessageHandler_jcall,
-               .handle_update_fail_htlc = handle_update_fail_htlc_LDKChannelMessageHandler_jcall,
-               .handle_update_fail_malformed_htlc = handle_update_fail_malformed_htlc_LDKChannelMessageHandler_jcall,
-               .handle_commitment_signed = handle_commitment_signed_LDKChannelMessageHandler_jcall,
-               .handle_revoke_and_ack = handle_revoke_and_ack_LDKChannelMessageHandler_jcall,
-               .handle_update_fee = handle_update_fee_LDKChannelMessageHandler_jcall,
-               .handle_announcement_signatures = handle_announcement_signatures_LDKChannelMessageHandler_jcall,
-               .peer_disconnected = peer_disconnected_LDKChannelMessageHandler_jcall,
-               .peer_connected = peer_connected_LDKChannelMessageHandler_jcall,
-               .handle_channel_reestablish = handle_channel_reestablish_LDKChannelMessageHandler_jcall,
-               .handle_channel_update = handle_channel_update_LDKChannelMessageHandler_jcall,
-               .handle_error = handle_error_LDKChannelMessageHandler_jcall,
-               .free = LDKChannelMessageHandler_JCalls_free,
-               .MessageSendEventsProvider = LDKMessageSendEventsProvider_init(MessageSendEventsProvider),
-       };
-       calls->MessageSendEventsProvider = ret.MessageSendEventsProvider.this_arg;
+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;
 }
-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_ChannelMessageHandler_handle_open_channel(uint32_t this_arg, int8_tArray their_node_id, uint32_t their_features, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(their_features_conv);
-       their_features_conv = InitFeatures_clone(&their_features_conv);
-       LDKOpenChannel msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_open_channel)(this_arg_conv->this_arg, their_node_id_ref, their_features_conv, &msg_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) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(their_features_conv);
-       their_features_conv = InitFeatures_clone(&their_features_conv);
-       LDKAcceptChannel msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_accept_channel)(this_arg_conv->this_arg, their_node_id_ref, their_features_conv, &msg_conv);
+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;
 }
-
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_funding_created(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_funding_created)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+static inline struct LDKCVec_u8Z CResult_CVec_u8ZPeerHandleErrorZ_get_ok(LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return CVec_u8Z_clone(&*owner->contents.result);
+}
+int8_tArray  __attribute__((visibility("default"))) TS_CResult_CVec_u8ZPeerHandleErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_CVec_u8ZPeerHandleErrorZ* owner_conv = (LDKCResult_CVec_u8ZPeerHandleErrorZ*)(owner & ~1);
+       LDKCVec_u8Z ret_var = CResult_CVec_u8ZPeerHandleErrorZ_get_ok(owner_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_funding_signed(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_funding_signed)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+static inline struct LDKPeerHandleError CResult_CVec_u8ZPeerHandleErrorZ_get_err(LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return PeerHandleError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_CVec_u8ZPeerHandleErrorZ_get_err(uint32_t owner) {
+       LDKCResult_CVec_u8ZPeerHandleErrorZ* owner_conv = (LDKCResult_CVec_u8ZPeerHandleErrorZ*)(owner & ~1);
+       LDKPeerHandleError ret_var = CResult_CVec_u8ZPeerHandleErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_funding_locked(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_funding_locked)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+static inline void CResult_NonePeerHandleErrorZ_get_ok(LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
+}
+void  __attribute__((visibility("default"))) TS_CResult_NonePeerHandleErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_NonePeerHandleErrorZ* owner_conv = (LDKCResult_NonePeerHandleErrorZ*)(owner & ~1);
+       CResult_NonePeerHandleErrorZ_get_ok(owner_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_shutdown(uint32_t this_arg, int8_tArray their_node_id, uint32_t their_features, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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 = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(their_features_conv);
-       LDKShutdown msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_shutdown)(this_arg_conv->this_arg, their_node_id_ref, &their_features_conv, &msg_conv);
+static inline struct LDKPeerHandleError CResult_NonePeerHandleErrorZ_get_err(LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return PeerHandleError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NonePeerHandleErrorZ_get_err(uint32_t owner) {
+       LDKCResult_NonePeerHandleErrorZ* owner_conv = (LDKCResult_NonePeerHandleErrorZ*)(owner & ~1);
+       LDKPeerHandleError ret_var = CResult_NonePeerHandleErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_closing_signed(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_closing_signed)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+static inline bool CResult_boolPeerHandleErrorZ_get_ok(LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
+}
+jboolean  __attribute__((visibility("default"))) TS_CResult_boolPeerHandleErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_boolPeerHandleErrorZ* owner_conv = (LDKCResult_boolPeerHandleErrorZ*)(owner & ~1);
+       jboolean ret_val = CResult_boolPeerHandleErrorZ_get_ok(owner_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_update_add_htlc(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_update_add_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+static inline struct LDKPeerHandleError CResult_boolPeerHandleErrorZ_get_err(LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return PeerHandleError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_boolPeerHandleErrorZ_get_err(uint32_t owner) {
+       LDKCResult_boolPeerHandleErrorZ* owner_conv = (LDKCResult_boolPeerHandleErrorZ*)(owner & ~1);
+       LDKPeerHandleError ret_var = CResult_boolPeerHandleErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_update_fulfill_htlc(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_update_fulfill_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+static inline struct LDKTxOut CResult_TxOutAccessErrorZ_get_ok(LDKCResult_TxOutAccessErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return TxOut_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_TxOutAccessErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_TxOutAccessErrorZ* owner_conv = (LDKCResult_TxOutAccessErrorZ*)(owner & ~1);
+       LDKTxOut* ret_ref = MALLOC(sizeof(LDKTxOut), "LDKTxOut");
+       *ret_ref = CResult_TxOutAccessErrorZ_get_ok(owner_conv);
+       return (uint64_t)ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_update_fail_htlc(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_update_fail_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+static inline enum LDKAccessError CResult_TxOutAccessErrorZ_get_err(LDKCResult_TxOutAccessErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return AccessError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_TxOutAccessErrorZ_get_err(uint32_t owner) {
+       LDKCResult_TxOutAccessErrorZ* owner_conv = (LDKCResult_TxOutAccessErrorZ*)(owner & ~1);
+       uint32_t ret_conv = LDKAccessError_to_js(CResult_TxOutAccessErrorZ_get_err(owner_conv));
+       return 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) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_update_fail_malformed_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+static inline void CResult_NoneChannelMonitorUpdateErrZ_get_ok(LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
+}
+void  __attribute__((visibility("default"))) TS_CResult_NoneChannelMonitorUpdateErrZ_get_ok(uint32_t owner) {
+       LDKCResult_NoneChannelMonitorUpdateErrZ* owner_conv = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(owner & ~1);
+       CResult_NoneChannelMonitorUpdateErrZ_get_ok(owner_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_commitment_signed(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_commitment_signed)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+static inline enum LDKChannelMonitorUpdateErr CResult_NoneChannelMonitorUpdateErrZ_get_err(LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return ChannelMonitorUpdateErr_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneChannelMonitorUpdateErrZ_get_err(uint32_t owner) {
+       LDKCResult_NoneChannelMonitorUpdateErrZ* owner_conv = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(owner & ~1);
+       uint32_t ret_conv = LDKChannelMonitorUpdateErr_to_js(CResult_NoneChannelMonitorUpdateErrZ_get_err(owner_conv));
+       return ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_revoke_and_ack(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_revoke_and_ack)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+uint32_t __attribute__((visibility("default"))) TS_LDKCOption_C2Tuple_usizeTransactionZZ_ref_from_ptr(uint32_t ptr) {
+       LDKCOption_C2Tuple_usizeTransactionZZ *obj = (LDKCOption_C2Tuple_usizeTransactionZZ*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKCOption_C2Tuple_usizeTransactionZZ_Some: {
+                       LDKC2Tuple_usizeTransactionZ* some_conv = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ), "LDKC2Tuple_usizeTransactionZ");
+                       *some_conv = obj->some;
+                       *some_conv = C2Tuple_usizeTransactionZ_clone(some_conv);
+                       return 0 /* LDKCOption_C2Tuple_usizeTransactionZZ - Some */; (void) ((uint64_t)some_conv);
+               }
+               case LDKCOption_C2Tuple_usizeTransactionZZ_None: {
+                       return 0 /* LDKCOption_C2Tuple_usizeTransactionZZ - None */;
+               }
+               default: abort();
+       }
+}
+uint32_t __attribute__((visibility("default"))) TS_LDKCOption_ClosureReasonZ_ref_from_ptr(uint32_t ptr) {
+       LDKCOption_ClosureReasonZ *obj = (LDKCOption_ClosureReasonZ*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKCOption_ClosureReasonZ_Some: {
+                       uint64_t some_ref = ((uint64_t)&obj->some) | 1;
+                       return 0 /* LDKCOption_ClosureReasonZ - Some */; (void) some_ref;
+               }
+               case LDKCOption_ClosureReasonZ_None: {
+                       return 0 /* LDKCOption_ClosureReasonZ - None */;
+               }
+               default: abort();
+       }
+}
+static inline struct LDKCOption_ClosureReasonZ CResult_COption_ClosureReasonZDecodeErrorZ_get_ok(LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return COption_ClosureReasonZ_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_ClosureReasonZDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_COption_ClosureReasonZDecodeErrorZ* owner_conv = (LDKCResult_COption_ClosureReasonZDecodeErrorZ*)(owner & ~1);
+       LDKCOption_ClosureReasonZ *ret_copy = MALLOC(sizeof(LDKCOption_ClosureReasonZ), "LDKCOption_ClosureReasonZ");
+       *ret_copy = CResult_COption_ClosureReasonZDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_update_fee(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_update_fee)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+static inline struct LDKDecodeError CResult_COption_ClosureReasonZDecodeErrorZ_get_err(LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_ClosureReasonZDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_COption_ClosureReasonZDecodeErrorZ* owner_conv = (LDKCResult_COption_ClosureReasonZDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_COption_ClosureReasonZDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_announcement_signatures(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_announcement_signatures)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+uint32_t __attribute__((visibility("default"))) TS_LDKCOption_EventZ_ref_from_ptr(uint32_t ptr) {
+       LDKCOption_EventZ *obj = (LDKCOption_EventZ*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKCOption_EventZ_Some: {
+                       uint64_t some_ref = ((uint64_t)&obj->some) | 1;
+                       return 0 /* LDKCOption_EventZ - Some */; (void) some_ref;
+               }
+               case LDKCOption_EventZ_None: {
+                       return 0 /* LDKCOption_EventZ - None */;
+               }
+               default: abort();
+       }
+}
+static inline struct LDKCOption_EventZ CResult_COption_EventZDecodeErrorZ_get_ok(LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return COption_EventZ_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_EventZDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_COption_EventZDecodeErrorZ* owner_conv = (LDKCResult_COption_EventZDecodeErrorZ*)(owner & ~1);
+       LDKCOption_EventZ *ret_copy = MALLOC(sizeof(LDKCOption_EventZ), "LDKCOption_EventZ");
+       *ret_copy = CResult_COption_EventZDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_peer_disconnected(uint32_t this_arg, int8_tArray their_node_id, jboolean no_connection_possible) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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);
+static inline struct LDKDecodeError CResult_COption_EventZDecodeErrorZ_get_err(LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_EventZDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_COption_EventZDecodeErrorZ* owner_conv = (LDKCResult_COption_EventZDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_COption_EventZDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_peer_connected(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->peer_connected)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+static inline struct LDKNodeId CResult_NodeIdDecodeErrorZ_get_ok(LDKCResult_NodeIdDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return NodeId_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NodeIdDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_NodeIdDecodeErrorZ* owner_conv = (LDKCResult_NodeIdDecodeErrorZ*)(owner & ~1);
+       LDKNodeId ret_var = CResult_NodeIdDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_channel_reestablish(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_channel_reestablish)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+static inline struct LDKDecodeError CResult_NodeIdDecodeErrorZ_get_err(LDKCResult_NodeIdDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NodeIdDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_NodeIdDecodeErrorZ* owner_conv = (LDKCResult_NodeIdDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_NodeIdDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_channel_update(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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);
-       LDKChannelUpdate msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_channel_update)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+static inline struct LDKCOption_NetworkUpdateZ CResult_COption_NetworkUpdateZDecodeErrorZ_get_ok(LDKCResult_COption_NetworkUpdateZDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return COption_NetworkUpdateZ_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_NetworkUpdateZDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_COption_NetworkUpdateZDecodeErrorZ* owner_conv = (LDKCResult_COption_NetworkUpdateZDecodeErrorZ*)(owner & ~1);
+       LDKCOption_NetworkUpdateZ *ret_copy = MALLOC(sizeof(LDKCOption_NetworkUpdateZ), "LDKCOption_NetworkUpdateZ");
+       *ret_copy = CResult_COption_NetworkUpdateZDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_error(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       (this_arg_conv->handle_error)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
+static inline struct LDKDecodeError CResult_COption_NetworkUpdateZDecodeErrorZ_get_err(LDKCResult_COption_NetworkUpdateZDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_NetworkUpdateZDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_COption_NetworkUpdateZDecodeErrorZ* owner_conv = (LDKCResult_COption_NetworkUpdateZDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_COption_NetworkUpdateZDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-typedef struct LDKRoutingMessageHandler_JCalls {
+typedef struct LDKAccess_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 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;
+       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->handle_node_announcement_meth);
-               js_free(j_calls->handle_channel_announcement_meth);
-               js_free(j_calls->handle_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);
+               js_free_function_ptr(j_calls->get_utxo_meth);
                FREE(j_calls);
        }
 }
-LDKCResult_boolLightningErrorZ handle_node_announcement_LDKRoutingMessageHandler_jcall(const void* this_arg, const LDKNodeAnnouncement * msg) {
-       LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg;
-       LDKNodeAnnouncement msg_var = *msg;
-       uint64_t msg_ref = 0;
-       msg_var = NodeAnnouncement_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
-       }
-       uint32_t ret = js_invoke_function_1(j_calls->handle_node_announcement_meth, msg_ref);
+LDKCResult_TxOutAccessErrorZ get_utxo_LDKAccess_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_int8_tArray(32);
+       memcpy(genesis_hash_arr->elems, *genesis_hash, 32);
+       uint32_t ret = js_invoke_function_2(j_calls->get_utxo_meth, (uint32_t)genesis_hash_arr, (uint32_t)short_channel_id);
        void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
        CHECK_ACCESS(ret_ptr);
-       LDKCResult_boolLightningErrorZ ret_conv = *(LDKCResult_boolLightningErrorZ*)(ret_ptr);
+       LDKCResult_TxOutAccessErrorZ ret_conv = *(LDKCResult_TxOutAccessErrorZ*)(ret_ptr);
        FREE((void*)ret);
        return ret_conv;
 }
-LDKCResult_boolLightningErrorZ handle_channel_announcement_LDKRoutingMessageHandler_jcall(const void* this_arg, const LDKChannelAnnouncement * msg) {
-       LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg;
-       LDKChannelAnnouncement msg_var = *msg;
-       uint64_t msg_ref = 0;
-       msg_var = ChannelAnnouncement_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
+static void LDKAccess_JCalls_cloned(LDKAccess* new_obj) {
+       LDKAccess_JCalls *j_calls = (LDKAccess_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+}
+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_LDKAccess_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) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKAccess* this_arg_conv = (LDKAccess*)this_arg_ptr;
+       unsigned char genesis_hash_arr[32];
+       CHECK(genesis_hash->arr_len == 32);
+       memcpy(genesis_hash_arr, genesis_hash->elems, 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 (uint64_t)ret_conv;
+}
+
+uint32_t __attribute__((visibility("default"))) TS_LDKCOption_AccessZ_ref_from_ptr(uint32_t ptr) {
+       LDKCOption_AccessZ *obj = (LDKCOption_AccessZ*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKCOption_AccessZ_Some: {
+                       LDKAccess* some_ret = MALLOC(sizeof(LDKAccess), "LDKAccess");
+                       *some_ret = obj->some;
+                       // Warning: We likely need to clone here, but no clone is available, so we just do it for Java instances
+                       return 0 /* LDKCOption_AccessZ - Some */; (void) (uint64_t)some_ret;
+               }
+               case LDKCOption_AccessZ_None: {
+                       return 0 /* LDKCOption_AccessZ - None */;
+               }
+               default: abort();
        }
-       uint32_t ret = js_invoke_function_1(j_calls->handle_channel_announcement_meth, msg_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_boolLightningErrorZ ret_conv = *(LDKCResult_boolLightningErrorZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
 }
-LDKCResult_boolLightningErrorZ handle_channel_update_LDKRoutingMessageHandler_jcall(const void* this_arg, const LDKChannelUpdate * msg) {
-       LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg;
-       LDKChannelUpdate msg_var = *msg;
-       uint64_t msg_ref = 0;
-       msg_var = ChannelUpdate_clone(msg);
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
+static inline struct LDKDirectionalChannelInfo CResult_DirectionalChannelInfoDecodeErrorZ_get_ok(LDKCResult_DirectionalChannelInfoDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return DirectionalChannelInfo_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_DirectionalChannelInfoDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_DirectionalChannelInfoDecodeErrorZ* owner_conv = (LDKCResult_DirectionalChannelInfoDecodeErrorZ*)(owner & ~1);
+       LDKDirectionalChannelInfo ret_var = CResult_DirectionalChannelInfoDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       uint32_t ret = js_invoke_function_1(j_calls->handle_channel_update_meth, msg_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_boolLightningErrorZ ret_conv = *(LDKCResult_boolLightningErrorZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+       return ret_ref;
 }
-LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ get_next_channel_announcements_LDKRoutingMessageHandler_jcall(const void* this_arg, uint64_t starting_point, uint8_t batch_amount) {
-       LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg;
-       uint32_tArray ret = js_invoke_function_2(j_calls->get_next_channel_announcements_meth, starting_point, batch_amount);
-       LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ ret_constr;
-       ret_constr.datalen = *((uint32_t*)ret);
-       if (ret_constr.datalen > 0)
-               ret_constr.data = MALLOC(ret_constr.datalen * sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ Elements");
-       else
-               ret_constr.data = NULL;
-       uint32_t* ret_vals = (uint32_t*)(ret + 4);
-       for (size_t h = 0; h < ret_constr.datalen; h++) {
-               uint32_t ret_conv_59 = ret_vals[h];
-               void* ret_conv_59_ptr = (void*)(((uint64_t)ret_conv_59) & ~1);
-               CHECK_ACCESS(ret_conv_59_ptr);
-               LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ ret_conv_59_conv = *(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(ret_conv_59_ptr);
-               FREE((void*)ret_conv_59);
-               ret_constr.data[h] = ret_conv_59_conv;
+
+static inline struct LDKDecodeError CResult_DirectionalChannelInfoDecodeErrorZ_get_err(LDKCResult_DirectionalChannelInfoDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_DirectionalChannelInfoDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_DirectionalChannelInfoDecodeErrorZ* owner_conv = (LDKCResult_DirectionalChannelInfoDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_DirectionalChannelInfoDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+static inline struct LDKChannelInfo CResult_ChannelInfoDecodeErrorZ_get_ok(LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ChannelInfo_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelInfoDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ChannelInfoDecodeErrorZ* owner_conv = (LDKCResult_ChannelInfoDecodeErrorZ*)(owner & ~1);
+       LDKChannelInfo ret_var = CResult_ChannelInfoDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+static inline struct LDKDecodeError CResult_ChannelInfoDecodeErrorZ_get_err(LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelInfoDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ChannelInfoDecodeErrorZ* owner_conv = (LDKCResult_ChannelInfoDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ChannelInfoDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+static inline struct LDKRoutingFees CResult_RoutingFeesDecodeErrorZ_get_ok(LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return RoutingFees_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RoutingFeesDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_RoutingFeesDecodeErrorZ* owner_conv = (LDKCResult_RoutingFeesDecodeErrorZ*)(owner & ~1);
+       LDKRoutingFees ret_var = CResult_RoutingFeesDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret_constr;
+       return ret_ref;
 }
-LDKCVec_NodeAnnouncementZ get_next_node_announcements_LDKRoutingMessageHandler_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 ret = js_invoke_function_2(j_calls->get_next_node_announcements_meth, starting_point_arr, batch_amount);
-       LDKCVec_NodeAnnouncementZ ret_constr;
-       ret_constr.datalen = *((uint32_t*)ret);
-       if (ret_constr.datalen > 0)
-               ret_constr.data = MALLOC(ret_constr.datalen * sizeof(LDKNodeAnnouncement), "LDKCVec_NodeAnnouncementZ Elements");
-       else
-               ret_constr.data = NULL;
-       uint32_t* ret_vals = (uint32_t*)(ret + 4);
-       for (size_t s = 0; s < ret_constr.datalen; s++) {
-               uint32_t ret_conv_18 = ret_vals[s];
-               LDKNodeAnnouncement ret_conv_18_conv;
-               ret_conv_18_conv.inner = (void*)(ret_conv_18 & (~1));
-               ret_conv_18_conv.is_owned = (ret_conv_18 & 1) || (ret_conv_18 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_18_conv);
-               ret_constr.data[s] = ret_conv_18_conv;
+
+static inline struct LDKDecodeError CResult_RoutingFeesDecodeErrorZ_get_err(LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RoutingFeesDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_RoutingFeesDecodeErrorZ* owner_conv = (LDKCResult_RoutingFeesDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_RoutingFeesDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret_constr;
+       return ret_ref;
 }
-void sync_routing_table_LDKRoutingMessageHandler_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;
-       uint64_t init_ref = 0;
-       init_var = Init_clone(init);
-       CHECK((((uint64_t)init_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&init_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(init_var);
-       init_ref = (uint64_t)init_var.inner;
-       if (init_var.is_owned) {
-               init_ref |= 1;
+
+uint32_t __attribute__((visibility("default"))) TS_LDKNetAddress_ref_from_ptr(uint32_t ptr) {
+       LDKNetAddress *obj = (LDKNetAddress*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKNetAddress_IPv4: {
+                       int8_tArray addr_arr = init_int8_tArray(4);
+                       memcpy(addr_arr->elems, 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_int8_tArray(16);
+                       memcpy(addr_arr->elems, obj->i_pv6.addr.data, 16);
+                       return 0 /* LDKNetAddress - IPv6 */; (void) addr_arr; (void) obj->i_pv6.port;
+               }
+               case LDKNetAddress_OnionV2: {
+                       int8_tArray onion_v2_arr = init_int8_tArray(12);
+                       memcpy(onion_v2_arr->elems, obj->onion_v2.data, 12);
+                       return 0 /* LDKNetAddress - OnionV2 */; (void) onion_v2_arr;
+               }
+               case LDKNetAddress_OnionV3: {
+                       int8_tArray ed25519_pubkey_arr = init_int8_tArray(32);
+                       memcpy(ed25519_pubkey_arr->elems, 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();
        }
-       js_invoke_function_2(j_calls->sync_routing_table_meth, their_node_id_arr, init_ref);
 }
-LDKCResult_NoneLightningErrorZ handle_reply_channel_range_LDKRoutingMessageHandler_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;
-       uint64_t msg_ref = 0;
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
+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]);
        }
-       uint32_t ret = js_invoke_function_2(j_calls->handle_reply_channel_range_meth, their_node_id_arr, msg_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+       return ret;
 }
-LDKCResult_NoneLightningErrorZ handle_reply_short_channel_ids_end_LDKRoutingMessageHandler_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;
-       uint64_t msg_ref = 0;
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
+static inline struct LDKNodeAnnouncementInfo CResult_NodeAnnouncementInfoDecodeErrorZ_get_ok(LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return NodeAnnouncementInfo_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementInfoDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_NodeAnnouncementInfoDecodeErrorZ* owner_conv = (LDKCResult_NodeAnnouncementInfoDecodeErrorZ*)(owner & ~1);
+       LDKNodeAnnouncementInfo ret_var = CResult_NodeAnnouncementInfoDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       uint32_t ret = js_invoke_function_2(j_calls->handle_reply_short_channel_ids_end_meth, their_node_id_arr, msg_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+       return ret_ref;
 }
-LDKCResult_NoneLightningErrorZ handle_query_channel_range_LDKRoutingMessageHandler_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;
-       uint64_t msg_ref = 0;
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
+
+static inline struct LDKDecodeError CResult_NodeAnnouncementInfoDecodeErrorZ_get_err(LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementInfoDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_NodeAnnouncementInfoDecodeErrorZ* owner_conv = (LDKCResult_NodeAnnouncementInfoDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_NodeAnnouncementInfoDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       uint32_t ret = js_invoke_function_2(j_calls->handle_query_channel_range_meth, their_node_id_arr, msg_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+       return ret_ref;
 }
-LDKCResult_NoneLightningErrorZ handle_query_short_channel_ids_LDKRoutingMessageHandler_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;
-       uint64_t msg_ref = 0;
-       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
-       msg_ref = (uint64_t)msg_var.inner;
-       if (msg_var.is_owned) {
-               msg_ref |= 1;
+
+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;
+}
+static inline struct LDKNodeInfo CResult_NodeInfoDecodeErrorZ_get_ok(LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return NodeInfo_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NodeInfoDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_NodeInfoDecodeErrorZ* owner_conv = (LDKCResult_NodeInfoDecodeErrorZ*)(owner & ~1);
+       LDKNodeInfo ret_var = CResult_NodeInfoDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       uint32_t ret = js_invoke_function_2(j_calls->handle_query_short_channel_ids_meth, their_node_id_arr, msg_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+       return ret_ref;
 }
-static void LDKRoutingMessageHandler_JCalls_cloned(LDKRoutingMessageHandler* new_obj) {
-       LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) new_obj->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);
+
+static inline struct LDKDecodeError CResult_NodeInfoDecodeErrorZ_get_err(LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NodeInfoDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_NodeInfoDecodeErrorZ* owner_conv = (LDKCResult_NodeInfoDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_NodeInfoDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-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_LDKRoutingMessageHandler_jcall,
-               .handle_channel_announcement = handle_channel_announcement_LDKRoutingMessageHandler_jcall,
-               .handle_channel_update = handle_channel_update_LDKRoutingMessageHandler_jcall,
-               .get_next_channel_announcements = get_next_channel_announcements_LDKRoutingMessageHandler_jcall,
-               .get_next_node_announcements = get_next_node_announcements_LDKRoutingMessageHandler_jcall,
-               .sync_routing_table = sync_routing_table_LDKRoutingMessageHandler_jcall,
-               .handle_reply_channel_range = handle_reply_channel_range_LDKRoutingMessageHandler_jcall,
-               .handle_reply_short_channel_ids_end = handle_reply_short_channel_ids_end_LDKRoutingMessageHandler_jcall,
-               .handle_query_channel_range = handle_query_channel_range_LDKRoutingMessageHandler_jcall,
-               .handle_query_short_channel_ids = handle_query_short_channel_ids_LDKRoutingMessageHandler_jcall,
-               .free = LDKRoutingMessageHandler_JCalls_free,
-               .MessageSendEventsProvider = LDKMessageSendEventsProvider_init(MessageSendEventsProvider),
-       };
-       calls->MessageSendEventsProvider = ret.MessageSendEventsProvider.this_arg;
-       return ret;
+static inline struct LDKNetworkGraph CResult_NetworkGraphDecodeErrorZ_get_ok(LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return NetworkGraph_clone(&*owner->contents.result);
 }
-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_t  __attribute__((visibility("default"))) TS_CResult_NetworkGraphDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_NetworkGraphDecodeErrorZ* owner_conv = (LDKCResult_NetworkGraphDecodeErrorZ*)(owner & ~1);
+       LDKNetworkGraph ret_var = CResult_NetworkGraphDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-uint32_t  __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_node_announcement(uint32_t this_arg, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
-       LDKNodeAnnouncement msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       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 (uint64_t)ret_conv;
+
+static inline struct LDKDecodeError CResult_NetworkGraphDecodeErrorZ_get_err(LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NetworkGraphDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_NetworkGraphDecodeErrorZ* owner_conv = (LDKCResult_NetworkGraphDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_NetworkGraphDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_channel_announcement(uint32_t this_arg, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
-       LDKChannelAnnouncement msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_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);
-       return (uint64_t)ret_conv;
+uint32_t __attribute__((visibility("default"))) TS_LDKCOption_CVec_NetAddressZZ_ref_from_ptr(uint32_t ptr) {
+       LDKCOption_CVec_NetAddressZZ *obj = (LDKCOption_CVec_NetAddressZZ*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKCOption_CVec_NetAddressZZ_Some: {
+                       LDKCVec_NetAddressZ some_var = obj->some;
+                       uint32_tArray some_arr = NULL;
+                       some_arr = init_uint32_tArray(some_var.datalen);
+                       uint32_t *some_arr_ptr = (uint32_t*)(some_arr + 4);
+                       for (size_t m = 0; m < some_var.datalen; m++) {
+                               uint64_t some_conv_12_ref = ((uint64_t)&some_var.data[m]) | 1;
+                               some_arr_ptr[m] = some_conv_12_ref;
+                       }
+                       
+                       return 0 /* LDKCOption_CVec_NetAddressZZ - Some */; (void) some_arr;
+               }
+               case LDKCOption_CVec_NetAddressZZ_None: {
+                       return 0 /* LDKCOption_CVec_NetAddressZZ - None */;
+               }
+               default: abort();
+       }
+}
+static inline struct LDKScoringParameters *CResult_ScoringParametersDecodeErrorZ_get_ok(LDKCResult_ScoringParametersDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return &*owner->contents.result;
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ScoringParametersDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ScoringParametersDecodeErrorZ* owner_conv = (LDKCResult_ScoringParametersDecodeErrorZ*)(owner & ~1);
+       LDKScoringParameters ret_var = *CResult_ScoringParametersDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner & ~1;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_channel_update(uint32_t this_arg, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
-       LDKChannelUpdate msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       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 (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_ScoringParametersDecodeErrorZ_get_err(LDKCResult_ScoringParametersDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ScoringParametersDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ScoringParametersDecodeErrorZ* owner_conv = (LDKCResult_ScoringParametersDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ScoringParametersDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return 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) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
-       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 = NULL;
-       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++) {
-               LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* ret_conv_59_conv = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ");
-               *ret_conv_59_conv = ret_var.data[h];
-               ret_arr_ptr[h] = ((uint64_t)ret_conv_59_conv);
+static inline struct LDKInitFeatures CResult_InitFeaturesDecodeErrorZ_get_ok(LDKCResult_InitFeaturesDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return InitFeatures_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_InitFeaturesDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_InitFeaturesDecodeErrorZ* owner_conv = (LDKCResult_InitFeaturesDecodeErrorZ*)(owner & ~1);
+       LDKInitFeatures ret_var = CResult_InitFeaturesDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+       return ret_ref;
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_RoutingMessageHandler_get_next_node_announcements(uint32_t this_arg, int8_tArray starting_point, int8_t batch_amount) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
-       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 = NULL;
-       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 ret_conv_18_var = ret_var.data[s];
-               uint64_t ret_conv_18_ref = 0;
-               CHECK((((uint64_t)ret_conv_18_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_conv_18_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_18_var);
-               ret_conv_18_ref = (uint64_t)ret_conv_18_var.inner;
-               if (ret_conv_18_var.is_owned) {
-                       ret_conv_18_ref |= 1;
-               }
-               ret_arr_ptr[s] = ret_conv_18_ref;
+static inline struct LDKDecodeError CResult_InitFeaturesDecodeErrorZ_get_err(LDKCResult_InitFeaturesDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_InitFeaturesDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_InitFeaturesDecodeErrorZ* owner_conv = (LDKCResult_InitFeaturesDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_InitFeaturesDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_RoutingMessageHandler_sync_routing_table(uint32_t this_arg, int8_tArray their_node_id, uint32_t init) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
-       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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(init_conv);
-       (this_arg_conv->sync_routing_table)(this_arg_conv->this_arg, their_node_id_ref, &init_conv);
+static inline struct LDKChannelFeatures CResult_ChannelFeaturesDecodeErrorZ_get_ok(LDKCResult_ChannelFeaturesDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ChannelFeatures_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelFeaturesDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ChannelFeaturesDecodeErrorZ* owner_conv = (LDKCResult_ChannelFeaturesDecodeErrorZ*)(owner & ~1);
+       LDKChannelFeatures ret_var = CResult_ChannelFeaturesDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_reply_channel_range(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
-       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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       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 (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_ChannelFeaturesDecodeErrorZ_get_err(LDKCResult_ChannelFeaturesDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelFeaturesDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ChannelFeaturesDecodeErrorZ* owner_conv = (LDKCResult_ChannelFeaturesDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ChannelFeaturesDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-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) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
-       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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       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 (uint64_t)ret_conv;
+static inline struct LDKNodeFeatures CResult_NodeFeaturesDecodeErrorZ_get_ok(LDKCResult_NodeFeaturesDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return NodeFeatures_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NodeFeaturesDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_NodeFeaturesDecodeErrorZ* owner_conv = (LDKCResult_NodeFeaturesDecodeErrorZ*)(owner & ~1);
+       LDKNodeFeatures ret_var = CResult_NodeFeaturesDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_query_channel_range(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
-       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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       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 (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_NodeFeaturesDecodeErrorZ_get_err(LDKCResult_NodeFeaturesDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NodeFeaturesDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_NodeFeaturesDecodeErrorZ* owner_conv = (LDKCResult_NodeFeaturesDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_NodeFeaturesDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_query_short_channel_ids(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
-       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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       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 (uint64_t)ret_conv;
+static inline struct LDKInvoiceFeatures CResult_InvoiceFeaturesDecodeErrorZ_get_ok(LDKCResult_InvoiceFeaturesDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return InvoiceFeatures_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceFeaturesDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_InvoiceFeaturesDecodeErrorZ* owner_conv = (LDKCResult_InvoiceFeaturesDecodeErrorZ*)(owner & ~1);
+       LDKInvoiceFeatures ret_var = CResult_InvoiceFeaturesDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-typedef struct LDKCustomMessageReader_JCalls {
-       atomic_size_t refcnt;
-       uint32_t read_meth;
-} LDKCustomMessageReader_JCalls;
-static void LDKCustomMessageReader_JCalls_free(void* this_arg) {
-       LDKCustomMessageReader_JCalls *j_calls = (LDKCustomMessageReader_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->read_meth);
-               FREE(j_calls);
+static inline struct LDKDecodeError CResult_InvoiceFeaturesDecodeErrorZ_get_err(LDKCResult_InvoiceFeaturesDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceFeaturesDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_InvoiceFeaturesDecodeErrorZ* owner_conv = (LDKCResult_InvoiceFeaturesDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_InvoiceFeaturesDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-LDKCResult_COption_TypeZDecodeErrorZ read_LDKCustomMessageReader_jcall(const void* this_arg, uint16_t message_type, LDKu8slice buffer) {
-       LDKCustomMessageReader_JCalls *j_calls = (LDKCustomMessageReader_JCalls*) this_arg;
-       LDKu8slice buffer_var = buffer;
-       int8_tArray buffer_arr = init_arr(buffer_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(buffer_arr + 4), buffer_var.data, buffer_var.datalen);
-       uint32_t ret = js_invoke_function_2(j_calls->read_meth, message_type, buffer_arr);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_COption_TypeZDecodeErrorZ ret_conv = *(LDKCResult_COption_TypeZDecodeErrorZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+
+static inline struct LDKChannelTypeFeatures CResult_ChannelTypeFeaturesDecodeErrorZ_get_ok(LDKCResult_ChannelTypeFeaturesDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ChannelTypeFeatures_clone(&*owner->contents.result);
 }
-static void LDKCustomMessageReader_JCalls_cloned(LDKCustomMessageReader* new_obj) {
-       LDKCustomMessageReader_JCalls *j_calls = (LDKCustomMessageReader_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelTypeFeaturesDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ChannelTypeFeaturesDecodeErrorZ* owner_conv = (LDKCResult_ChannelTypeFeaturesDecodeErrorZ*)(owner & ~1);
+       LDKChannelTypeFeatures ret_var = CResult_ChannelTypeFeaturesDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-static inline LDKCustomMessageReader LDKCustomMessageReader_init (/*TODO: JS Object Reference */void* o) {
-       LDKCustomMessageReader_JCalls *calls = MALLOC(sizeof(LDKCustomMessageReader_JCalls), "LDKCustomMessageReader_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
 
-       LDKCustomMessageReader ret = {
-               .this_arg = (void*) calls,
-               .read = read_LDKCustomMessageReader_jcall,
-               .free = LDKCustomMessageReader_JCalls_free,
-       };
-       return ret;
+static inline struct LDKDecodeError CResult_ChannelTypeFeaturesDecodeErrorZ_get_err(LDKCResult_ChannelTypeFeaturesDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-long  __attribute__((visibility("default"))) TS_LDKCustomMessageReader_new(/*TODO: JS Object Reference */void* o) {
-       LDKCustomMessageReader *res_ptr = MALLOC(sizeof(LDKCustomMessageReader), "LDKCustomMessageReader");
-       *res_ptr = LDKCustomMessageReader_init(o);
-       return (long)res_ptr;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelTypeFeaturesDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ChannelTypeFeaturesDecodeErrorZ* owner_conv = (LDKCResult_ChannelTypeFeaturesDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ChannelTypeFeaturesDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-uint32_t  __attribute__((visibility("default"))) TS_CustomMessageReader_read(uint32_t this_arg, int16_t message_type, int8_tArray buffer) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKCustomMessageReader* this_arg_conv = (LDKCustomMessageReader*)this_arg_ptr;
-       LDKu8slice buffer_ref;
-       buffer_ref.datalen = *((uint32_t*)buffer);
-       buffer_ref.data = (int8_t*)(buffer + 4);
-       LDKCResult_COption_TypeZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_TypeZDecodeErrorZ), "LDKCResult_COption_TypeZDecodeErrorZ");
-       *ret_conv = (this_arg_conv->read)(this_arg_conv->this_arg, message_type, buffer_ref);
-       return (uint64_t)ret_conv;
+
+static inline struct LDKNetAddress CResult_NetAddressDecodeErrorZ_get_ok(LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return NetAddress_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NetAddressDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_NetAddressDecodeErrorZ* owner_conv = (LDKCResult_NetAddressDecodeErrorZ*)(owner & ~1);
+       LDKNetAddress *ret_copy = MALLOC(sizeof(LDKNetAddress), "LDKNetAddress");
+       *ret_copy = CResult_NetAddressDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-typedef struct LDKCustomMessageHandler_JCalls {
-       atomic_size_t refcnt;
-       LDKCustomMessageReader_JCalls* CustomMessageReader;
-       uint32_t handle_custom_message_meth;
-       uint32_t get_and_clear_pending_msg_meth;
-} LDKCustomMessageHandler_JCalls;
-static void LDKCustomMessageHandler_JCalls_free(void* this_arg) {
-       LDKCustomMessageHandler_JCalls *j_calls = (LDKCustomMessageHandler_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->handle_custom_message_meth);
-               js_free(j_calls->get_and_clear_pending_msg_meth);
-               FREE(j_calls);
+static inline struct LDKDecodeError CResult_NetAddressDecodeErrorZ_get_err(LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NetAddressDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_NetAddressDecodeErrorZ* owner_conv = (LDKCResult_NetAddressDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_NetAddressDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-LDKCResult_NoneLightningErrorZ handle_custom_message_LDKCustomMessageHandler_jcall(const void* this_arg, LDKType msg, LDKPublicKey sender_node_id) {
-       LDKCustomMessageHandler_JCalls *j_calls = (LDKCustomMessageHandler_JCalls*) this_arg;
-       LDKType* msg_ret = MALLOC(sizeof(LDKType), "LDKType");
-       *msg_ret = msg;
-       int8_tArray sender_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(sender_node_id_arr + 4), sender_node_id.compressed_form, 33);
-       uint32_t ret = js_invoke_function_2(j_calls->handle_custom_message_meth, (uint64_t)msg_ret, sender_node_id_arr);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+
+static inline LDKCVec_UpdateAddHTLCZ CVec_UpdateAddHTLCZ_clone(const LDKCVec_UpdateAddHTLCZ *orig) {
+       LDKCVec_UpdateAddHTLCZ ret = { .data = MALLOC(sizeof(LDKUpdateAddHTLC) * orig->datalen, "LDKCVec_UpdateAddHTLCZ clone bytes"), .datalen = orig->datalen };
+       for (size_t i = 0; i < ret.datalen; i++) {
+               ret.data[i] = UpdateAddHTLC_clone(&orig->data[i]);
+       }
+       return ret;
 }
-LDKCVec_C2Tuple_PublicKeyTypeZZ get_and_clear_pending_msg_LDKCustomMessageHandler_jcall(const void* this_arg) {
-       LDKCustomMessageHandler_JCalls *j_calls = (LDKCustomMessageHandler_JCalls*) this_arg;
-       uint32_tArray ret = js_invoke_function_0(j_calls->get_and_clear_pending_msg_meth);
-       LDKCVec_C2Tuple_PublicKeyTypeZZ ret_constr;
-       ret_constr.datalen = *((uint32_t*)ret);
-       if (ret_constr.datalen > 0)
-               ret_constr.data = MALLOC(ret_constr.datalen * sizeof(LDKC2Tuple_PublicKeyTypeZ), "LDKCVec_C2Tuple_PublicKeyTypeZZ Elements");
-       else
-               ret_constr.data = NULL;
-       uint32_t* ret_vals = (uint32_t*)(ret + 4);
-       for (size_t z = 0; z < ret_constr.datalen; z++) {
-               uint32_t ret_conv_25 = ret_vals[z];
-               void* ret_conv_25_ptr = (void*)(((uint64_t)ret_conv_25) & ~1);
-               CHECK_ACCESS(ret_conv_25_ptr);
-               LDKC2Tuple_PublicKeyTypeZ ret_conv_25_conv = *(LDKC2Tuple_PublicKeyTypeZ*)(ret_conv_25_ptr);
-               FREE((void*)ret_conv_25);
-               ret_constr.data[z] = ret_conv_25_conv;
+static inline LDKCVec_UpdateFulfillHTLCZ CVec_UpdateFulfillHTLCZ_clone(const LDKCVec_UpdateFulfillHTLCZ *orig) {
+       LDKCVec_UpdateFulfillHTLCZ ret = { .data = MALLOC(sizeof(LDKUpdateFulfillHTLC) * orig->datalen, "LDKCVec_UpdateFulfillHTLCZ clone bytes"), .datalen = orig->datalen };
+       for (size_t i = 0; i < ret.datalen; i++) {
+               ret.data[i] = UpdateFulfillHTLC_clone(&orig->data[i]);
        }
-       return ret_constr;
+       return ret;
 }
-static void LDKCustomMessageHandler_JCalls_cloned(LDKCustomMessageHandler* new_obj) {
-       LDKCustomMessageHandler_JCalls *j_calls = (LDKCustomMessageHandler_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
-       atomic_fetch_add_explicit(&j_calls->CustomMessageReader->refcnt, 1, memory_order_release);
+static inline LDKCVec_UpdateFailHTLCZ CVec_UpdateFailHTLCZ_clone(const LDKCVec_UpdateFailHTLCZ *orig) {
+       LDKCVec_UpdateFailHTLCZ ret = { .data = MALLOC(sizeof(LDKUpdateFailHTLC) * orig->datalen, "LDKCVec_UpdateFailHTLCZ clone bytes"), .datalen = orig->datalen };
+       for (size_t i = 0; i < ret.datalen; i++) {
+               ret.data[i] = UpdateFailHTLC_clone(&orig->data[i]);
+       }
+       return ret;
 }
-static inline LDKCustomMessageHandler LDKCustomMessageHandler_init (/*TODO: JS Object Reference */void* o, /*TODO: JS Object Reference */void* CustomMessageReader) {
-       LDKCustomMessageHandler_JCalls *calls = MALLOC(sizeof(LDKCustomMessageHandler_JCalls), "LDKCustomMessageHandler_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
-
-       LDKCustomMessageHandler ret = {
-               .this_arg = (void*) calls,
-               .handle_custom_message = handle_custom_message_LDKCustomMessageHandler_jcall,
-               .get_and_clear_pending_msg = get_and_clear_pending_msg_LDKCustomMessageHandler_jcall,
-               .free = LDKCustomMessageHandler_JCalls_free,
-               .CustomMessageReader = LDKCustomMessageReader_init(CustomMessageReader),
-       };
-       calls->CustomMessageReader = ret.CustomMessageReader.this_arg;
+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;
 }
-long  __attribute__((visibility("default"))) TS_LDKCustomMessageHandler_new(/*TODO: JS Object Reference */void* o, /*TODO: JS Object Reference */ void* CustomMessageReader) {
-       LDKCustomMessageHandler *res_ptr = MALLOC(sizeof(LDKCustomMessageHandler), "LDKCustomMessageHandler");
-       *res_ptr = LDKCustomMessageHandler_init(o, CustomMessageReader);
-       return (long)res_ptr;
+static inline struct LDKAcceptChannel CResult_AcceptChannelDecodeErrorZ_get_ok(LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return AcceptChannel_clone(&*owner->contents.result);
 }
-uint32_t  __attribute__((visibility("default"))) TS_CustomMessageHandler_handle_custom_message(uint32_t this_arg, uint32_t msg, int8_tArray sender_node_id) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKCustomMessageHandler* this_arg_conv = (LDKCustomMessageHandler*)this_arg_ptr;
-       void* msg_ptr = (void*)(((uint64_t)msg) & ~1);
-       CHECK_ACCESS(msg_ptr);
-       LDKType msg_conv = *(LDKType*)(msg_ptr);
-       LDKPublicKey sender_node_id_ref;
-       CHECK(*((uint32_t*)sender_node_id) == 33);
-       memcpy(sender_node_id_ref.compressed_form, (uint8_t*)(sender_node_id + 4), 33);
-       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
-       *ret_conv = (this_arg_conv->handle_custom_message)(this_arg_conv->this_arg, msg_conv, sender_node_id_ref);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_AcceptChannelDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_AcceptChannelDecodeErrorZ* owner_conv = (LDKCResult_AcceptChannelDecodeErrorZ*)(owner & ~1);
+       LDKAcceptChannel ret_var = CResult_AcceptChannelDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_CustomMessageHandler_get_and_clear_pending_msg(uint32_t this_arg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKCustomMessageHandler* this_arg_conv = (LDKCustomMessageHandler*)this_arg_ptr;
-       LDKCVec_C2Tuple_PublicKeyTypeZZ ret_var = (this_arg_conv->get_and_clear_pending_msg)(this_arg_conv->this_arg);
-       uint32_tArray ret_arr = NULL;
-       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 z = 0; z < ret_var.datalen; z++) {
-               LDKC2Tuple_PublicKeyTypeZ* ret_conv_25_conv = MALLOC(sizeof(LDKC2Tuple_PublicKeyTypeZ), "LDKC2Tuple_PublicKeyTypeZ");
-               *ret_conv_25_conv = ret_var.data[z];
-               ret_arr_ptr[z] = ((uint64_t)ret_conv_25_conv);
+static inline struct LDKDecodeError CResult_AcceptChannelDecodeErrorZ_get_err(LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_AcceptChannelDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_AcceptChannelDecodeErrorZ* owner_conv = (LDKCResult_AcceptChannelDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_AcceptChannelDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+       return ret_ref;
 }
 
-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);
+static inline struct LDKAnnouncementSignatures CResult_AnnouncementSignaturesDecodeErrorZ_get_ok(LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return AnnouncementSignatures_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_AnnouncementSignaturesDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_AnnouncementSignaturesDecodeErrorZ* owner_conv = (LDKCResult_AnnouncementSignaturesDecodeErrorZ*)(owner & ~1);
+       LDKAnnouncementSignatures ret_var = CResult_AnnouncementSignaturesDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-uintptr_t send_data_LDKSocketDescriptor_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 inline struct LDKDecodeError CResult_AnnouncementSignaturesDecodeErrorZ_get_err(LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-void disconnect_socket_LDKSocketDescriptor_jcall(void* this_arg) {
-       LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg;
-       js_invoke_function_0(j_calls->disconnect_socket_meth);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_AnnouncementSignaturesDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_AnnouncementSignaturesDecodeErrorZ* owner_conv = (LDKCResult_AnnouncementSignaturesDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_AnnouncementSignaturesDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-bool eq_LDKSocketDescriptor_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, (uint64_t)other_arg_clone);
+
+static inline struct LDKChannelReestablish CResult_ChannelReestablishDecodeErrorZ_get_ok(LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ChannelReestablish_clone(&*owner->contents.result);
 }
-uint64_t hash_LDKSocketDescriptor_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_ChannelReestablishDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ChannelReestablishDecodeErrorZ* owner_conv = (LDKCResult_ChannelReestablishDecodeErrorZ*)(owner & ~1);
+       LDKChannelReestablish ret_var = CResult_ChannelReestablishDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-static void LDKSocketDescriptor_JCalls_cloned(LDKSocketDescriptor* new_obj) {
-       LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+
+static inline struct LDKDecodeError CResult_ChannelReestablishDecodeErrorZ_get_err(LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelReestablishDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ChannelReestablishDecodeErrorZ* owner_conv = (LDKCResult_ChannelReestablishDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ChannelReestablishDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-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_LDKSocketDescriptor_jcall,
-               .disconnect_socket = disconnect_socket_LDKSocketDescriptor_jcall,
-               .eq = eq_LDKSocketDescriptor_jcall,
-               .hash = hash_LDKSocketDescriptor_jcall,
-               .cloned = LDKSocketDescriptor_JCalls_cloned,
-               .free = LDKSocketDescriptor_JCalls_free,
-       };
-       return ret;
+static inline struct LDKClosingSigned CResult_ClosingSignedDecodeErrorZ_get_ok(LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ClosingSigned_clone(&*owner->contents.result);
 }
-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_ClosingSignedDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ClosingSignedDecodeErrorZ* owner_conv = (LDKCResult_ClosingSignedDecodeErrorZ*)(owner & ~1);
+       LDKClosingSigned ret_var = CResult_ClosingSignedDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_SocketDescriptor_send_data(uint32_t this_arg, int8_tArray data, jboolean resume_read) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKSocketDescriptor* this_arg_conv = (LDKSocketDescriptor*)this_arg_ptr;
-       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;
+
+static inline struct LDKDecodeError CResult_ClosingSignedDecodeErrorZ_get_err(LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ClosingSignedDecodeErrorZ* owner_conv = (LDKCResult_ClosingSignedDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ClosingSignedDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_SocketDescriptor_disconnect_socket(uint32_t this_arg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKSocketDescriptor* this_arg_conv = (LDKSocketDescriptor*)this_arg_ptr;
-       (this_arg_conv->disconnect_socket)(this_arg_conv->this_arg);
+static inline struct LDKClosingSignedFeeRange CResult_ClosingSignedFeeRangeDecodeErrorZ_get_ok(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ClosingSignedFeeRange_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* owner_conv = (LDKCResult_ClosingSignedFeeRangeDecodeErrorZ*)(owner & ~1);
+       LDKClosingSignedFeeRange ret_var = CResult_ClosingSignedFeeRangeDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_SocketDescriptor_hash(uint32_t this_arg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKSocketDescriptor* this_arg_conv = (LDKSocketDescriptor*)this_arg_ptr;
-       int64_t ret_val = (this_arg_conv->hash)(this_arg_conv->this_arg);
-       return ret_val;
+static inline struct LDKDecodeError CResult_ClosingSignedFeeRangeDecodeErrorZ_get_err(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* owner_conv = (LDKCResult_ClosingSignedFeeRangeDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ClosingSignedFeeRangeDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-typedef struct LDKScore_JCalls {
-       atomic_size_t refcnt;
-       uint32_t channel_penalty_msat_meth;
-       uint32_t payment_path_failed_meth;
-       uint32_t payment_path_successful_meth;
-       uint32_t write_meth;
-} LDKScore_JCalls;
-static void LDKScore_JCalls_free(void* this_arg) {
-       LDKScore_JCalls *j_calls = (LDKScore_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->channel_penalty_msat_meth);
-               js_free(j_calls->payment_path_failed_meth);
-               js_free(j_calls->payment_path_successful_meth);
-               js_free(j_calls->write_meth);
-               FREE(j_calls);
+static inline struct LDKCommitmentSigned CResult_CommitmentSignedDecodeErrorZ_get_ok(LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return CommitmentSigned_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_CommitmentSignedDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_CommitmentSignedDecodeErrorZ* owner_conv = (LDKCResult_CommitmentSignedDecodeErrorZ*)(owner & ~1);
+       LDKCommitmentSigned ret_var = CResult_CommitmentSignedDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-uint64_t channel_penalty_msat_LDKScore_jcall(const void* this_arg, uint64_t short_channel_id, uint64_t send_amt_msat, LDKCOption_u64Z channel_capacity_msat, const LDKNodeId * source, const LDKNodeId * target) {
-       LDKScore_JCalls *j_calls = (LDKScore_JCalls*) this_arg;
-       LDKCOption_u64Z *channel_capacity_msat_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
-       *channel_capacity_msat_copy = channel_capacity_msat;
-       uint64_t channel_capacity_msat_ref = (uint64_t)channel_capacity_msat_copy;
-       LDKNodeId source_var = *source;
-       uint64_t source_ref = 0;
-       source_var = NodeId_clone(source);
-       CHECK((((uint64_t)source_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&source_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(source_var);
-       source_ref = (uint64_t)source_var.inner;
-       if (source_var.is_owned) {
-               source_ref |= 1;
+
+static inline struct LDKDecodeError CResult_CommitmentSignedDecodeErrorZ_get_err(LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_CommitmentSignedDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_CommitmentSignedDecodeErrorZ* owner_conv = (LDKCResult_CommitmentSignedDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_CommitmentSignedDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       LDKNodeId target_var = *target;
-       uint64_t target_ref = 0;
-       target_var = NodeId_clone(target);
-       CHECK((((uint64_t)target_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&target_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(target_var);
-       target_ref = (uint64_t)target_var.inner;
-       if (target_var.is_owned) {
-               target_ref |= 1;
+       return ret_ref;
+}
+
+static inline struct LDKFundingCreated CResult_FundingCreatedDecodeErrorZ_get_ok(LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return FundingCreated_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_FundingCreatedDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_FundingCreatedDecodeErrorZ* owner_conv = (LDKCResult_FundingCreatedDecodeErrorZ*)(owner & ~1);
+       LDKFundingCreated ret_var = CResult_FundingCreatedDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return js_invoke_function_5(j_calls->channel_penalty_msat_meth, short_channel_id, send_amt_msat, channel_capacity_msat_ref, source_ref, target_ref);
+       return ret_ref;
 }
-void payment_path_failed_LDKScore_jcall(void* this_arg, LDKCVec_RouteHopZ path, uint64_t short_channel_id) {
-       LDKScore_JCalls *j_calls = (LDKScore_JCalls*) this_arg;
-       LDKCVec_RouteHopZ path_var = path;
-       uint32_tArray path_arr = NULL;
-       path_arr = init_arr(path_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
-       uint32_t *path_arr_ptr = (uint32_t*)(path_arr + 4);
-       for (size_t k = 0; k < path_var.datalen; k++) {
-               LDKRouteHop path_conv_10_var = path_var.data[k];
-               uint64_t path_conv_10_ref = 0;
-               CHECK((((uint64_t)path_conv_10_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&path_conv_10_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_var);
-               path_conv_10_ref = (uint64_t)path_conv_10_var.inner;
-               if (path_conv_10_var.is_owned) {
-                       path_conv_10_ref |= 1;
-               }
-               path_arr_ptr[k] = path_conv_10_ref;
+
+static inline struct LDKDecodeError CResult_FundingCreatedDecodeErrorZ_get_err(LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_FundingCreatedDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_FundingCreatedDecodeErrorZ* owner_conv = (LDKCResult_FundingCreatedDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_FundingCreatedDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       
-       FREE(path_var.data);
-       js_invoke_function_2(j_calls->payment_path_failed_meth, path_arr, short_channel_id);
+       return ret_ref;
 }
-void payment_path_successful_LDKScore_jcall(void* this_arg, LDKCVec_RouteHopZ path) {
-       LDKScore_JCalls *j_calls = (LDKScore_JCalls*) this_arg;
-       LDKCVec_RouteHopZ path_var = path;
-       uint32_tArray path_arr = NULL;
-       path_arr = init_arr(path_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
-       uint32_t *path_arr_ptr = (uint32_t*)(path_arr + 4);
-       for (size_t k = 0; k < path_var.datalen; k++) {
-               LDKRouteHop path_conv_10_var = path_var.data[k];
-               uint64_t path_conv_10_ref = 0;
-               CHECK((((uint64_t)path_conv_10_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&path_conv_10_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_var);
-               path_conv_10_ref = (uint64_t)path_conv_10_var.inner;
-               if (path_conv_10_var.is_owned) {
-                       path_conv_10_ref |= 1;
-               }
-               path_arr_ptr[k] = path_conv_10_ref;
+
+static inline struct LDKFundingSigned CResult_FundingSignedDecodeErrorZ_get_ok(LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return FundingSigned_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_FundingSignedDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_FundingSignedDecodeErrorZ* owner_conv = (LDKCResult_FundingSignedDecodeErrorZ*)(owner & ~1);
+       LDKFundingSigned ret_var = CResult_FundingSignedDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       
-       FREE(path_var.data);
-       js_invoke_function_1(j_calls->payment_path_successful_meth, path_arr);
+       return ret_ref;
 }
-LDKCVec_u8Z write_LDKScore_jcall(const void* this_arg) {
-       LDKScore_JCalls *j_calls = (LDKScore_JCalls*) this_arg;
-       int8_tArray ret = js_invoke_function_0(j_calls->write_meth);
-       LDKCVec_u8Z ret_ref;
-       ret_ref.datalen = *((uint32_t*)ret);
-       ret_ref.data = MALLOC(ret_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(ret_ref.data, (uint8_t*)(ret + 4), ret_ref.datalen);
+
+static inline struct LDKDecodeError CResult_FundingSignedDecodeErrorZ_get_err(LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_FundingSignedDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_FundingSignedDecodeErrorZ* owner_conv = (LDKCResult_FundingSignedDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_FundingSignedDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_ref;
 }
-static void LDKScore_JCalls_cloned(LDKScore* new_obj) {
-       LDKScore_JCalls *j_calls = (LDKScore_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+
+static inline struct LDKFundingLocked CResult_FundingLockedDecodeErrorZ_get_ok(LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return FundingLocked_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_FundingLockedDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_FundingLockedDecodeErrorZ* owner_conv = (LDKCResult_FundingLockedDecodeErrorZ*)(owner & ~1);
+       LDKFundingLocked ret_var = CResult_FundingLockedDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-static inline LDKScore LDKScore_init (/*TODO: JS Object Reference */void* o) {
-       LDKScore_JCalls *calls = MALLOC(sizeof(LDKScore_JCalls), "LDKScore_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
 
-       LDKScore ret = {
-               .this_arg = (void*) calls,
-               .channel_penalty_msat = channel_penalty_msat_LDKScore_jcall,
-               .payment_path_failed = payment_path_failed_LDKScore_jcall,
-               .payment_path_successful = payment_path_successful_LDKScore_jcall,
-               .write = write_LDKScore_jcall,
-               .free = LDKScore_JCalls_free,
-       };
-       return ret;
+static inline struct LDKDecodeError CResult_FundingLockedDecodeErrorZ_get_err(LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-long  __attribute__((visibility("default"))) TS_LDKScore_new(/*TODO: JS Object Reference */void* o) {
-       LDKScore *res_ptr = MALLOC(sizeof(LDKScore), "LDKScore");
-       *res_ptr = LDKScore_init(o);
-       return (long)res_ptr;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_FundingLockedDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_FundingLockedDecodeErrorZ* owner_conv = (LDKCResult_FundingLockedDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_FundingLockedDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_Score_channel_penalty_msat(uint32_t this_arg, int64_t short_channel_id, int64_t send_amt_msat, uint32_t channel_capacity_msat, uint32_t source, uint32_t target) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKScore* this_arg_conv = (LDKScore*)this_arg_ptr;
-       void* channel_capacity_msat_ptr = (void*)(((uint64_t)channel_capacity_msat) & ~1);
-       CHECK_ACCESS(channel_capacity_msat_ptr);
-       LDKCOption_u64Z channel_capacity_msat_conv = *(LDKCOption_u64Z*)(channel_capacity_msat_ptr);
-       channel_capacity_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)channel_capacity_msat) & ~1));
-       LDKNodeId source_conv;
-       source_conv.inner = (void*)(source & (~1));
-       source_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(source_conv);
-       LDKNodeId target_conv;
-       target_conv.inner = (void*)(target & (~1));
-       target_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(target_conv);
-       int64_t ret_val = (this_arg_conv->channel_penalty_msat)(this_arg_conv->this_arg, short_channel_id, send_amt_msat, channel_capacity_msat_conv, &source_conv, &target_conv);
-       return ret_val;
+
+static inline struct LDKInit CResult_InitDecodeErrorZ_get_ok(LDKCResult_InitDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return Init_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_InitDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_InitDecodeErrorZ* owner_conv = (LDKCResult_InitDecodeErrorZ*)(owner & ~1);
+       LDKInit ret_var = CResult_InitDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_Score_payment_path_failed(uint32_t this_arg, uint32_tArray path, int64_t short_channel_id) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKScore* this_arg_conv = (LDKScore*)this_arg_ptr;
-       LDKCVec_RouteHopZ path_constr;
-       path_constr.datalen = *((uint32_t*)path);
-       if (path_constr.datalen > 0)
-               path_constr.data = MALLOC(path_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements");
-       else
-               path_constr.data = NULL;
-       uint32_t* path_vals = (uint32_t*)(path + 4);
-       for (size_t k = 0; k < path_constr.datalen; k++) {
-               uint32_t path_conv_10 = path_vals[k];
-               LDKRouteHop path_conv_10_conv;
-               path_conv_10_conv.inner = (void*)(path_conv_10 & (~1));
-               path_conv_10_conv.is_owned = (path_conv_10 & 1) || (path_conv_10 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_conv);
-               path_conv_10_conv = RouteHop_clone(&path_conv_10_conv);
-               path_constr.data[k] = path_conv_10_conv;
+static inline struct LDKDecodeError CResult_InitDecodeErrorZ_get_err(LDKCResult_InitDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_InitDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_InitDecodeErrorZ* owner_conv = (LDKCResult_InitDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_InitDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       (this_arg_conv->payment_path_failed)(this_arg_conv->this_arg, path_constr, short_channel_id);
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_Score_payment_path_successful(uint32_t this_arg, uint32_tArray path) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKScore* this_arg_conv = (LDKScore*)this_arg_ptr;
-       LDKCVec_RouteHopZ path_constr;
-       path_constr.datalen = *((uint32_t*)path);
-       if (path_constr.datalen > 0)
-               path_constr.data = MALLOC(path_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements");
-       else
-               path_constr.data = NULL;
-       uint32_t* path_vals = (uint32_t*)(path + 4);
-       for (size_t k = 0; k < path_constr.datalen; k++) {
-               uint32_t path_conv_10 = path_vals[k];
-               LDKRouteHop path_conv_10_conv;
-               path_conv_10_conv.inner = (void*)(path_conv_10 & (~1));
-               path_conv_10_conv.is_owned = (path_conv_10 & 1) || (path_conv_10 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_conv);
-               path_conv_10_conv = RouteHop_clone(&path_conv_10_conv);
-               path_constr.data[k] = path_conv_10_conv;
+static inline struct LDKOpenChannel CResult_OpenChannelDecodeErrorZ_get_ok(LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return OpenChannel_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_OpenChannelDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_OpenChannelDecodeErrorZ* owner_conv = (LDKCResult_OpenChannelDecodeErrorZ*)(owner & ~1);
+       LDKOpenChannel ret_var = CResult_OpenChannelDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       (this_arg_conv->payment_path_successful)(this_arg_conv->this_arg, path_constr);
+       return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_Score_write(uint32_t this_arg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKScore* this_arg_conv = (LDKScore*)this_arg_ptr;
-       LDKCVec_u8Z ret_var = (this_arg_conv->write)(this_arg_conv->this_arg);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+static inline struct LDKDecodeError CResult_OpenChannelDecodeErrorZ_get_err(LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-
-typedef struct LDKLockableScore_JCalls {
-       atomic_size_t refcnt;
-       uint32_t lock_meth;
-} LDKLockableScore_JCalls;
-static void LDKLockableScore_JCalls_free(void* this_arg) {
-       LDKLockableScore_JCalls *j_calls = (LDKLockableScore_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->lock_meth);
-               FREE(j_calls);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_OpenChannelDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_OpenChannelDecodeErrorZ* owner_conv = (LDKCResult_OpenChannelDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_OpenChannelDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-LDKScore lock_LDKLockableScore_jcall(const void* this_arg) {
-       LDKLockableScore_JCalls *j_calls = (LDKLockableScore_JCalls*) this_arg;
-       uint32_t ret = js_invoke_function_0(j_calls->lock_meth);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKScore ret_conv = *(LDKScore*)(ret_ptr);// Warning: we may need a move here but no clone is available for LDKScore
-       
-       return ret_conv;
+
+static inline struct LDKRevokeAndACK CResult_RevokeAndACKDecodeErrorZ_get_ok(LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return RevokeAndACK_clone(&*owner->contents.result);
 }
-static void LDKLockableScore_JCalls_cloned(LDKLockableScore* new_obj) {
-       LDKLockableScore_JCalls *j_calls = (LDKLockableScore_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RevokeAndACKDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_RevokeAndACKDecodeErrorZ* owner_conv = (LDKCResult_RevokeAndACKDecodeErrorZ*)(owner & ~1);
+       LDKRevokeAndACK ret_var = CResult_RevokeAndACKDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-static inline LDKLockableScore LDKLockableScore_init (/*TODO: JS Object Reference */void* o) {
-       LDKLockableScore_JCalls *calls = MALLOC(sizeof(LDKLockableScore_JCalls), "LDKLockableScore_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
 
-       LDKLockableScore ret = {
-               .this_arg = (void*) calls,
-               .lock = lock_LDKLockableScore_jcall,
-               .free = LDKLockableScore_JCalls_free,
-       };
-       return ret;
-}
-long  __attribute__((visibility("default"))) TS_LDKLockableScore_new(/*TODO: JS Object Reference */void* o) {
-       LDKLockableScore *res_ptr = MALLOC(sizeof(LDKLockableScore), "LDKLockableScore");
-       *res_ptr = LDKLockableScore_init(o);
-       return (long)res_ptr;
+static inline struct LDKDecodeError CResult_RevokeAndACKDecodeErrorZ_get_err(LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-uint32_t  __attribute__((visibility("default"))) TS_LockableScore_lock(uint32_t this_arg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKLockableScore* this_arg_conv = (LDKLockableScore*)this_arg_ptr;
-       LDKScore* ret_ret = MALLOC(sizeof(LDKScore), "LDKScore");
-       *ret_ret = (this_arg_conv->lock)(this_arg_conv->this_arg);
-       return (uint64_t)ret_ret;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RevokeAndACKDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_RevokeAndACKDecodeErrorZ* owner_conv = (LDKCResult_RevokeAndACKDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_RevokeAndACKDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-typedef struct LDKChannelManagerPersister_JCalls {
-       atomic_size_t refcnt;
-       uint32_t persist_manager_meth;
-} LDKChannelManagerPersister_JCalls;
-static void LDKChannelManagerPersister_JCalls_free(void* this_arg) {
-       LDKChannelManagerPersister_JCalls *j_calls = (LDKChannelManagerPersister_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->persist_manager_meth);
-               FREE(j_calls);
+static inline struct LDKShutdown CResult_ShutdownDecodeErrorZ_get_ok(LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return Shutdown_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ShutdownDecodeErrorZ* owner_conv = (LDKCResult_ShutdownDecodeErrorZ*)(owner & ~1);
+       LDKShutdown ret_var = CResult_ShutdownDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-LDKCResult_NoneErrorZ persist_manager_LDKChannelManagerPersister_jcall(const void* this_arg, const LDKChannelManager * channel_manager) {
-       LDKChannelManagerPersister_JCalls *j_calls = (LDKChannelManagerPersister_JCalls*) this_arg;
-       LDKChannelManager channel_manager_var = *channel_manager;
-       uint64_t channel_manager_ref = 0;
-       // Warning: we may need a move here but no clone is available for LDKChannelManager
-       CHECK((((uint64_t)channel_manager_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&channel_manager_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_manager_var);
-       channel_manager_ref = (uint64_t)channel_manager_var.inner;
-       if (channel_manager_var.is_owned) {
-               channel_manager_ref |= 1;
+
+static inline struct LDKDecodeError CResult_ShutdownDecodeErrorZ_get_err(LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ShutdownDecodeErrorZ* owner_conv = (LDKCResult_ShutdownDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ShutdownDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       uint32_t ret = js_invoke_function_1(j_calls->persist_manager_meth, channel_manager_ref);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_NoneErrorZ ret_conv = *(LDKCResult_NoneErrorZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+       return ret_ref;
 }
-static void LDKChannelManagerPersister_JCalls_cloned(LDKChannelManagerPersister* new_obj) {
-       LDKChannelManagerPersister_JCalls *j_calls = (LDKChannelManagerPersister_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+
+static inline struct LDKUpdateFailHTLC CResult_UpdateFailHTLCDecodeErrorZ_get_ok(LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return UpdateFailHTLC_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFailHTLCDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_UpdateFailHTLCDecodeErrorZ* owner_conv = (LDKCResult_UpdateFailHTLCDecodeErrorZ*)(owner & ~1);
+       LDKUpdateFailHTLC ret_var = CResult_UpdateFailHTLCDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-static inline LDKChannelManagerPersister LDKChannelManagerPersister_init (/*TODO: JS Object Reference */void* o) {
-       LDKChannelManagerPersister_JCalls *calls = MALLOC(sizeof(LDKChannelManagerPersister_JCalls), "LDKChannelManagerPersister_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
 
-       LDKChannelManagerPersister ret = {
-               .this_arg = (void*) calls,
-               .persist_manager = persist_manager_LDKChannelManagerPersister_jcall,
-               .free = LDKChannelManagerPersister_JCalls_free,
-       };
-       return ret;
+static inline struct LDKDecodeError CResult_UpdateFailHTLCDecodeErrorZ_get_err(LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-long  __attribute__((visibility("default"))) TS_LDKChannelManagerPersister_new(/*TODO: JS Object Reference */void* o) {
-       LDKChannelManagerPersister *res_ptr = MALLOC(sizeof(LDKChannelManagerPersister), "LDKChannelManagerPersister");
-       *res_ptr = LDKChannelManagerPersister_init(o);
-       return (long)res_ptr;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFailHTLCDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_UpdateFailHTLCDecodeErrorZ* owner_conv = (LDKCResult_UpdateFailHTLCDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_UpdateFailHTLCDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerPersister_persist_manager(uint32_t this_arg, uint32_t channel_manager) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKChannelManagerPersister* this_arg_conv = (LDKChannelManagerPersister*)this_arg_ptr;
-       LDKChannelManager channel_manager_conv;
-       channel_manager_conv.inner = (void*)(channel_manager & (~1));
-       channel_manager_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_manager_conv);
-       LDKCResult_NoneErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneErrorZ), "LDKCResult_NoneErrorZ");
-       *ret_conv = (this_arg_conv->persist_manager)(this_arg_conv->this_arg, &channel_manager_conv);
-       return (uint64_t)ret_conv;
+
+static inline struct LDKUpdateFailMalformedHTLC CResult_UpdateFailMalformedHTLCDecodeErrorZ_get_ok(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return UpdateFailMalformedHTLC_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* owner_conv = (LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ*)(owner & ~1);
+       LDKUpdateFailMalformedHTLC ret_var = CResult_UpdateFailMalformedHTLCDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t __attribute__((visibility("default"))) TS_LDKFallback_ref_from_ptr(uint32_t ptr) {
-       LDKFallback *obj = (LDKFallback*)(ptr & ~1);
-       switch(obj->tag) {
-               case LDKFallback_SegWitProgram: {
-                       uint8_t version_val = obj->seg_wit_program.version._0;
-                       LDKCVec_u8Z program_var = obj->seg_wit_program.program;
-                       int8_tArray program_arr = init_arr(program_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(program_arr + 4), program_var.data, program_var.datalen);
-                       return 0 /* LDKFallback - SegWitProgram */; (void) version_val; (void) program_arr;
-               }
-               case LDKFallback_PubKeyHash: {
-                       int8_tArray pub_key_hash_arr = init_arr(20, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(pub_key_hash_arr + 4), obj->pub_key_hash.data, 20);
-                       return 0 /* LDKFallback - PubKeyHash */; (void) pub_key_hash_arr;
-               }
-               case LDKFallback_ScriptHash: {
-                       int8_tArray script_hash_arr = init_arr(20, sizeof(uint8_t), "Native int8_tArray Bytes");
-                       memcpy((uint8_t*)(script_hash_arr + 4), obj->script_hash.data, 20);
-                       return 0 /* LDKFallback - ScriptHash */; (void) script_hash_arr;
-               }
-               default: abort();
+static inline struct LDKDecodeError CResult_UpdateFailMalformedHTLCDecodeErrorZ_get_err(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* owner_conv = (LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_UpdateFailMalformedHTLCDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-typedef struct LDKPayer_JCalls {
-       atomic_size_t refcnt;
-       uint32_t node_id_meth;
-       uint32_t first_hops_meth;
-       uint32_t send_payment_meth;
-       uint32_t send_spontaneous_payment_meth;
-       uint32_t retry_payment_meth;
-       uint32_t abandon_payment_meth;
-} LDKPayer_JCalls;
-static void LDKPayer_JCalls_free(void* this_arg) {
-       LDKPayer_JCalls *j_calls = (LDKPayer_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->node_id_meth);
-               js_free(j_calls->first_hops_meth);
-               js_free(j_calls->send_payment_meth);
-               js_free(j_calls->send_spontaneous_payment_meth);
-               js_free(j_calls->retry_payment_meth);
-               js_free(j_calls->abandon_payment_meth);
-               FREE(j_calls);
+
+static inline struct LDKUpdateFee CResult_UpdateFeeDecodeErrorZ_get_ok(LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return UpdateFee_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFeeDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_UpdateFeeDecodeErrorZ* owner_conv = (LDKCResult_UpdateFeeDecodeErrorZ*)(owner & ~1);
+       LDKUpdateFee ret_var = CResult_UpdateFeeDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
+       return ret_ref;
 }
-LDKPublicKey node_id_LDKPayer_jcall(const void* this_arg) {
-       LDKPayer_JCalls *j_calls = (LDKPayer_JCalls*) this_arg;
-       int8_tArray ret = js_invoke_function_0(j_calls->node_id_meth);
-       LDKPublicKey ret_ref;
-       CHECK(*((uint32_t*)ret) == 33);
-       memcpy(ret_ref.compressed_form, (uint8_t*)(ret + 4), 33);
+
+static inline struct LDKDecodeError CResult_UpdateFeeDecodeErrorZ_get_err(LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFeeDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_UpdateFeeDecodeErrorZ* owner_conv = (LDKCResult_UpdateFeeDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_UpdateFeeDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_ref;
 }
-LDKCVec_ChannelDetailsZ first_hops_LDKPayer_jcall(const void* this_arg) {
-       LDKPayer_JCalls *j_calls = (LDKPayer_JCalls*) this_arg;
-       uint32_tArray ret = js_invoke_function_0(j_calls->first_hops_meth);
-       LDKCVec_ChannelDetailsZ ret_constr;
-       ret_constr.datalen = *((uint32_t*)ret);
-       if (ret_constr.datalen > 0)
-               ret_constr.data = MALLOC(ret_constr.datalen * sizeof(LDKChannelDetails), "LDKCVec_ChannelDetailsZ Elements");
-       else
-               ret_constr.data = NULL;
-       uint32_t* ret_vals = (uint32_t*)(ret + 4);
-       for (size_t q = 0; q < ret_constr.datalen; q++) {
-               uint32_t ret_conv_16 = ret_vals[q];
-               LDKChannelDetails ret_conv_16_conv;
-               ret_conv_16_conv.inner = (void*)(ret_conv_16 & (~1));
-               ret_conv_16_conv.is_owned = (ret_conv_16 & 1) || (ret_conv_16 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_16_conv);
-               ret_constr.data[q] = ret_conv_16_conv;
+
+static inline struct LDKUpdateFulfillHTLC CResult_UpdateFulfillHTLCDecodeErrorZ_get_ok(LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return UpdateFulfillHTLC_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFulfillHTLCDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_UpdateFulfillHTLCDecodeErrorZ* owner_conv = (LDKCResult_UpdateFulfillHTLCDecodeErrorZ*)(owner & ~1);
+       LDKUpdateFulfillHTLC ret_var = CResult_UpdateFulfillHTLCDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       return ret_constr;
+       return ret_ref;
 }
-LDKCResult_PaymentIdPaymentSendFailureZ send_payment_LDKPayer_jcall(const void* this_arg, const LDKRoute * route, LDKThirtyTwoBytes payment_hash, LDKThirtyTwoBytes payment_secret) {
-       LDKPayer_JCalls *j_calls = (LDKPayer_JCalls*) this_arg;
-       LDKRoute route_var = *route;
-       uint64_t route_ref = 0;
-       route_var = Route_clone(route);
-       CHECK((((uint64_t)route_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&route_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(route_var);
-       route_ref = (uint64_t)route_var.inner;
-       if (route_var.is_owned) {
-               route_ref |= 1;
-       }
-       int8_tArray payment_hash_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(payment_hash_arr + 4), 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), payment_secret.data, 32);
-       uint32_t ret = js_invoke_function_3(j_calls->send_payment_meth, route_ref, payment_hash_arr, payment_secret_arr);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_PaymentIdPaymentSendFailureZ ret_conv = *(LDKCResult_PaymentIdPaymentSendFailureZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+
+static inline struct LDKDecodeError CResult_UpdateFulfillHTLCDecodeErrorZ_get_err(LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-LDKCResult_PaymentIdPaymentSendFailureZ send_spontaneous_payment_LDKPayer_jcall(const void* this_arg, const LDKRoute * route, LDKThirtyTwoBytes payment_preimage) {
-       LDKPayer_JCalls *j_calls = (LDKPayer_JCalls*) this_arg;
-       LDKRoute route_var = *route;
-       uint64_t route_ref = 0;
-       route_var = Route_clone(route);
-       CHECK((((uint64_t)route_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&route_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(route_var);
-       route_ref = (uint64_t)route_var.inner;
-       if (route_var.is_owned) {
-               route_ref |= 1;
-       }
-       int8_tArray payment_preimage_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(payment_preimage_arr + 4), payment_preimage.data, 32);
-       uint32_t ret = js_invoke_function_2(j_calls->send_spontaneous_payment_meth, route_ref, payment_preimage_arr);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_PaymentIdPaymentSendFailureZ ret_conv = *(LDKCResult_PaymentIdPaymentSendFailureZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFulfillHTLCDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_UpdateFulfillHTLCDecodeErrorZ* owner_conv = (LDKCResult_UpdateFulfillHTLCDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_UpdateFulfillHTLCDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-LDKCResult_NonePaymentSendFailureZ retry_payment_LDKPayer_jcall(const void* this_arg, const LDKRoute * route, LDKThirtyTwoBytes payment_id) {
-       LDKPayer_JCalls *j_calls = (LDKPayer_JCalls*) this_arg;
-       LDKRoute route_var = *route;
-       uint64_t route_ref = 0;
-       route_var = Route_clone(route);
-       CHECK((((uint64_t)route_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&route_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(route_var);
-       route_ref = (uint64_t)route_var.inner;
-       if (route_var.is_owned) {
-               route_ref |= 1;
-       }
-       int8_tArray payment_id_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(payment_id_arr + 4), payment_id.data, 32);
-       uint32_t ret = js_invoke_function_2(j_calls->retry_payment_meth, route_ref, payment_id_arr);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_NonePaymentSendFailureZ ret_conv = *(LDKCResult_NonePaymentSendFailureZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
+
+static inline struct LDKUpdateAddHTLC CResult_UpdateAddHTLCDecodeErrorZ_get_ok(LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return UpdateAddHTLC_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateAddHTLCDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_UpdateAddHTLCDecodeErrorZ* owner_conv = (LDKCResult_UpdateAddHTLCDecodeErrorZ*)(owner & ~1);
+       LDKUpdateAddHTLC ret_var = CResult_UpdateAddHTLCDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-void abandon_payment_LDKPayer_jcall(const void* this_arg, LDKThirtyTwoBytes payment_id) {
-       LDKPayer_JCalls *j_calls = (LDKPayer_JCalls*) this_arg;
-       int8_tArray payment_id_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(payment_id_arr + 4), payment_id.data, 32);
-       js_invoke_function_1(j_calls->abandon_payment_meth, payment_id_arr);
+
+static inline struct LDKDecodeError CResult_UpdateAddHTLCDecodeErrorZ_get_err(LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-static void LDKPayer_JCalls_cloned(LDKPayer* new_obj) {
-       LDKPayer_JCalls *j_calls = (LDKPayer_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateAddHTLCDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_UpdateAddHTLCDecodeErrorZ* owner_conv = (LDKCResult_UpdateAddHTLCDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_UpdateAddHTLCDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
-static inline LDKPayer LDKPayer_init (/*TODO: JS Object Reference */void* o) {
-       LDKPayer_JCalls *calls = MALLOC(sizeof(LDKPayer_JCalls), "LDKPayer_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
 
-       LDKPayer ret = {
-               .this_arg = (void*) calls,
-               .node_id = node_id_LDKPayer_jcall,
-               .first_hops = first_hops_LDKPayer_jcall,
-               .send_payment = send_payment_LDKPayer_jcall,
-               .send_spontaneous_payment = send_spontaneous_payment_LDKPayer_jcall,
-               .retry_payment = retry_payment_LDKPayer_jcall,
-               .abandon_payment = abandon_payment_LDKPayer_jcall,
-               .free = LDKPayer_JCalls_free,
-       };
-       return ret;
+static inline struct LDKPing CResult_PingDecodeErrorZ_get_ok(LDKCResult_PingDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return Ping_clone(&*owner->contents.result);
 }
-long  __attribute__((visibility("default"))) TS_LDKPayer_new(/*TODO: JS Object Reference */void* o) {
-       LDKPayer *res_ptr = MALLOC(sizeof(LDKPayer), "LDKPayer");
-       *res_ptr = LDKPayer_init(o);
-       return (long)res_ptr;
-}
-int8_tArray  __attribute__((visibility("default"))) TS_Payer_node_id(uint32_t this_arg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKPayer* this_arg_conv = (LDKPayer*)this_arg_ptr;
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), (this_arg_conv->node_id)(this_arg_conv->this_arg).compressed_form, 33);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PingDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_PingDecodeErrorZ* owner_conv = (LDKCResult_PingDecodeErrorZ*)(owner & ~1);
+       LDKPing ret_var = CResult_PingDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_Payer_first_hops(uint32_t this_arg) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKPayer* this_arg_conv = (LDKPayer*)this_arg_ptr;
-       LDKCVec_ChannelDetailsZ ret_var = (this_arg_conv->first_hops)(this_arg_conv->this_arg);
-       uint32_tArray ret_arr = NULL;
-       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 q = 0; q < ret_var.datalen; q++) {
-               LDKChannelDetails ret_conv_16_var = ret_var.data[q];
-               uint64_t ret_conv_16_ref = 0;
-               CHECK((((uint64_t)ret_conv_16_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_conv_16_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_16_var);
-               ret_conv_16_ref = (uint64_t)ret_conv_16_var.inner;
-               if (ret_conv_16_var.is_owned) {
-                       ret_conv_16_ref |= 1;
-               }
-               ret_arr_ptr[q] = ret_conv_16_ref;
+static inline struct LDKDecodeError CResult_PingDecodeErrorZ_get_err(LDKCResult_PingDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PingDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_PingDecodeErrorZ* owner_conv = (LDKCResult_PingDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_PingDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Payer_send_payment(uint32_t this_arg, uint32_t route, int8_tArray payment_hash, int8_tArray payment_secret) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKPayer* this_arg_conv = (LDKPayer*)this_arg_ptr;
-       LDKRoute route_conv;
-       route_conv.inner = (void*)(route & (~1));
-       route_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(route_conv);
-       LDKThirtyTwoBytes payment_hash_ref;
-       CHECK(*((uint32_t*)payment_hash) == 32);
-       memcpy(payment_hash_ref.data, (uint8_t*)(payment_hash + 4), 32);
-       LDKThirtyTwoBytes payment_secret_ref;
-       CHECK(*((uint32_t*)payment_secret) == 32);
-       memcpy(payment_secret_ref.data, (uint8_t*)(payment_secret + 4), 32);
-       LDKCResult_PaymentIdPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentSendFailureZ), "LDKCResult_PaymentIdPaymentSendFailureZ");
-       *ret_conv = (this_arg_conv->send_payment)(this_arg_conv->this_arg, &route_conv, payment_hash_ref, payment_secret_ref);
-       return (uint64_t)ret_conv;
+static inline struct LDKPong CResult_PongDecodeErrorZ_get_ok(LDKCResult_PongDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return Pong_clone(&*owner->contents.result);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_Payer_send_spontaneous_payment(uint32_t this_arg, uint32_t route, int8_tArray payment_preimage) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKPayer* this_arg_conv = (LDKPayer*)this_arg_ptr;
-       LDKRoute route_conv;
-       route_conv.inner = (void*)(route & (~1));
-       route_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(route_conv);
-       LDKThirtyTwoBytes payment_preimage_ref;
-       CHECK(*((uint32_t*)payment_preimage) == 32);
-       memcpy(payment_preimage_ref.data, (uint8_t*)(payment_preimage + 4), 32);
-       LDKCResult_PaymentIdPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentSendFailureZ), "LDKCResult_PaymentIdPaymentSendFailureZ");
-       *ret_conv = (this_arg_conv->send_spontaneous_payment)(this_arg_conv->this_arg, &route_conv, payment_preimage_ref);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PongDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_PongDecodeErrorZ* owner_conv = (LDKCResult_PongDecodeErrorZ*)(owner & ~1);
+       LDKPong ret_var = CResult_PongDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Payer_retry_payment(uint32_t this_arg, uint32_t route, int8_tArray payment_id) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKPayer* this_arg_conv = (LDKPayer*)this_arg_ptr;
-       LDKRoute route_conv;
-       route_conv.inner = (void*)(route & (~1));
-       route_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(route_conv);
-       LDKThirtyTwoBytes payment_id_ref;
-       CHECK(*((uint32_t*)payment_id) == 32);
-       memcpy(payment_id_ref.data, (uint8_t*)(payment_id + 4), 32);
-       LDKCResult_NonePaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePaymentSendFailureZ), "LDKCResult_NonePaymentSendFailureZ");
-       *ret_conv = (this_arg_conv->retry_payment)(this_arg_conv->this_arg, &route_conv, payment_id_ref);
-       return (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_PongDecodeErrorZ_get_err(LDKCResult_PongDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-
-void  __attribute__((visibility("default"))) TS_Payer_abandon_payment(uint32_t this_arg, int8_tArray payment_id) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKPayer* this_arg_conv = (LDKPayer*)this_arg_ptr;
-       LDKThirtyTwoBytes payment_id_ref;
-       CHECK(*((uint32_t*)payment_id) == 32);
-       memcpy(payment_id_ref.data, (uint8_t*)(payment_id + 4), 32);
-       (this_arg_conv->abandon_payment)(this_arg_conv->this_arg, payment_id_ref);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PongDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_PongDecodeErrorZ* owner_conv = (LDKCResult_PongDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_PongDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-typedef struct LDKRouter_JCalls {
-       atomic_size_t refcnt;
-       uint32_t find_route_meth;
-} LDKRouter_JCalls;
-static void LDKRouter_JCalls_free(void* this_arg) {
-       LDKRouter_JCalls *j_calls = (LDKRouter_JCalls*) this_arg;
-       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
-               js_free(j_calls->find_route_meth);
-               FREE(j_calls);
-       }
+static inline struct LDKUnsignedChannelAnnouncement CResult_UnsignedChannelAnnouncementDecodeErrorZ_get_ok(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return UnsignedChannelAnnouncement_clone(&*owner->contents.result);
 }
-LDKCResult_RouteLightningErrorZ find_route_LDKRouter_jcall(const void* this_arg, LDKPublicKey payer, const LDKRouteParameters * params, const uint8_t (* payment_hash)[32], LDKCVec_ChannelDetailsZ * first_hops, const LDKScore * scorer) {
-       LDKRouter_JCalls *j_calls = (LDKRouter_JCalls*) this_arg;
-       int8_tArray payer_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(payer_arr + 4), payer.compressed_form, 33);
-       LDKRouteParameters params_var = *params;
-       uint64_t params_ref = 0;
-       params_var = RouteParameters_clone(params);
-       CHECK((((uint64_t)params_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&params_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(params_var);
-       params_ref = (uint64_t)params_var.inner;
-       if (params_var.is_owned) {
-               params_ref |= 1;
-       }
-       int8_tArray payment_hash_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(payment_hash_arr + 4), *payment_hash, 32);
-       LDKCVec_ChannelDetailsZ *first_hops_var_ptr = first_hops;
-       uint32_tArray first_hops_arr = NULL;
-       if (first_hops != NULL) {
-               LDKCVec_ChannelDetailsZ first_hops_var = *first_hops_var_ptr;
-               first_hops_arr = init_arr(first_hops_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
-               uint32_t *first_hops_arr_ptr = (uint32_t*)(first_hops_arr + 4);
-               for (size_t q = 0; q < first_hops_var.datalen; q++) {
-                       LDKChannelDetails first_hops_conv_16_var =      first_hops_var.data[q];
-                       uint64_t first_hops_conv_16_ref = 0;
-                       CHECK((((uint64_t)first_hops_conv_16_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&first_hops_conv_16_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(first_hops_conv_16_var);
-                       first_hops_conv_16_ref = (uint64_t)first_hops_conv_16_var.inner;
-                       if (first_hops_conv_16_var.is_owned) {
-                               first_hops_conv_16_ref |= 1;
-                       }
-                       first_hops_arr_ptr[q] = first_hops_conv_16_ref;
-               }
-       
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* owner_conv = (LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(owner & ~1);
+       LDKUnsignedChannelAnnouncement ret_var = CResult_UnsignedChannelAnnouncementDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       // WARNING: This object doesn't live past this scope, needs clone!
-       uint64_t ret_scorer = ((uint64_t)scorer) | 1;
-       uint32_t ret = js_invoke_function_5(j_calls->find_route_meth, payer_arr, params_ref, payment_hash_arr, first_hops_arr, ret_scorer);
-       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
-       CHECK_ACCESS(ret_ptr);
-       LDKCResult_RouteLightningErrorZ ret_conv = *(LDKCResult_RouteLightningErrorZ*)(ret_ptr);
-       FREE((void*)ret);
-       return ret_conv;
-}
-static void LDKRouter_JCalls_cloned(LDKRouter* new_obj) {
-       LDKRouter_JCalls *j_calls = (LDKRouter_JCalls*) new_obj->this_arg;
-       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+       return ret_ref;
 }
-static inline LDKRouter LDKRouter_init (/*TODO: JS Object Reference */void* o) {
-       LDKRouter_JCalls *calls = MALLOC(sizeof(LDKRouter_JCalls), "LDKRouter_JCalls");
-       atomic_init(&calls->refcnt, 1);
-       //TODO: Assign calls->o from o
 
-       LDKRouter ret = {
-               .this_arg = (void*) calls,
-               .find_route = find_route_LDKRouter_jcall,
-               .free = LDKRouter_JCalls_free,
-       };
-       return ret;
-}
-long  __attribute__((visibility("default"))) TS_LDKRouter_new(/*TODO: JS Object Reference */void* o) {
-       LDKRouter *res_ptr = MALLOC(sizeof(LDKRouter), "LDKRouter");
-       *res_ptr = LDKRouter_init(o);
-       return (long)res_ptr;
+static inline struct LDKDecodeError CResult_UnsignedChannelAnnouncementDecodeErrorZ_get_err(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-uint32_t  __attribute__((visibility("default"))) TS_Router_find_route(uint32_t this_arg, int8_tArray payer, uint32_t params, int8_tArray payment_hash, uint32_tArray first_hops, uint32_t scorer) {
-       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
-       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
-       LDKRouter* this_arg_conv = (LDKRouter*)this_arg_ptr;
-       LDKPublicKey payer_ref;
-       CHECK(*((uint32_t*)payer) == 33);
-       memcpy(payer_ref.compressed_form, (uint8_t*)(payer + 4), 33);
-       LDKRouteParameters params_conv;
-       params_conv.inner = (void*)(params & (~1));
-       params_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(params_conv);
-       unsigned char payment_hash_arr[32];
-       CHECK(*((uint32_t*)payment_hash) == 32);
-       memcpy(payment_hash_arr, (uint8_t*)(payment_hash + 4), 32);
-       unsigned char (*payment_hash_ref)[32] = &payment_hash_arr;
-       LDKCVec_ChannelDetailsZ first_hops_constr;
-       LDKCVec_ChannelDetailsZ *first_hops_ptr = NULL;
-       if (first_hops != 0) {
-               first_hops_constr.datalen = *((uint32_t*)first_hops);
-               if (first_hops_constr.datalen > 0)
-                       first_hops_constr.data = MALLOC(first_hops_constr.datalen * sizeof(LDKChannelDetails), "LDKCVec_ChannelDetailsZ Elements");
-               else
-                       first_hops_constr.data = NULL;
-               uint32_t* first_hops_vals = (uint32_t*)(first_hops + 4);
-               for (size_t q = 0; q < first_hops_constr.datalen; q++) {
-                       uint32_t first_hops_conv_16 = first_hops_vals[q];
-                       LDKChannelDetails first_hops_conv_16_conv;
-                       first_hops_conv_16_conv.inner = (void*)(first_hops_conv_16 & (~1));
-                       first_hops_conv_16_conv.is_owned = (first_hops_conv_16 & 1) || (first_hops_conv_16 == 0);
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(first_hops_conv_16_conv);
-                       first_hops_constr.data[q] = first_hops_conv_16_conv;
-               }
-               first_hops_ptr = &first_hops_constr;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* owner_conv = (LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_UnsignedChannelAnnouncementDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       void* scorer_ptr = (void*)(((uint64_t)scorer) & ~1);
-       if (!(scorer & 1)) { CHECK_ACCESS(scorer_ptr); }
-       LDKScore* scorer_conv = (LDKScore*)scorer_ptr;
-       LDKCResult_RouteLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteLightningErrorZ), "LDKCResult_RouteLightningErrorZ");
-       *ret_conv = (this_arg_conv->find_route)(this_arg_conv->this_arg, payer_ref, &params_conv, payment_hash_ref, first_hops_ptr, scorer_conv);
-       if (first_hops_ptr != NULL) { FREE(first_hops_constr.data); }
-       return (uint64_t)ret_conv;
+       return ret_ref;
 }
 
-jstring  __attribute__((visibility("default"))) TS__ldk_get_compiled_version() {
-       LDKStr ret_str = _ldk_get_compiled_version();
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
+static inline struct LDKChannelAnnouncement CResult_ChannelAnnouncementDecodeErrorZ_get_ok(LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ChannelAnnouncement_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelAnnouncementDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ChannelAnnouncementDecodeErrorZ* owner_conv = (LDKCResult_ChannelAnnouncementDecodeErrorZ*)(owner & ~1);
+       LDKChannelAnnouncement ret_var = CResult_ChannelAnnouncementDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-jstring  __attribute__((visibility("default"))) TS__ldk_c_bindings_get_compiled_version() {
-       LDKStr ret_str = _ldk_c_bindings_get_compiled_version();
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
+static inline struct LDKDecodeError CResult_ChannelAnnouncementDecodeErrorZ_get_err(LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelAnnouncementDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ChannelAnnouncementDecodeErrorZ* owner_conv = (LDKCResult_ChannelAnnouncementDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ChannelAnnouncementDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-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 inline struct LDKUnsignedChannelUpdate CResult_UnsignedChannelUpdateDecodeErrorZ_get_ok(LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return UnsignedChannelUpdate_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelUpdateDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_UnsignedChannelUpdateDecodeErrorZ* owner_conv = (LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(owner & ~1);
+       LDKUnsignedChannelUpdate ret_var = CResult_UnsignedChannelUpdateDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_TxOut_new(int8_tArray script_pubkey, int64_t value) {
-       LDKCVec_u8Z script_pubkey_ref;
-       script_pubkey_ref.datalen = *((uint32_t*)script_pubkey);
-       script_pubkey_ref.data = MALLOC(script_pubkey_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(script_pubkey_ref.data, (uint8_t*)(script_pubkey + 4), script_pubkey_ref.datalen);
-       LDKTxOut* ret_ref = MALLOC(sizeof(LDKTxOut), "LDKTxOut");
-       *ret_ref = TxOut_new(script_pubkey_ref, value);
-       return (uint64_t)ret_ref;
+static inline struct LDKDecodeError CResult_UnsignedChannelUpdateDecodeErrorZ_get_err(LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelUpdateDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_UnsignedChannelUpdateDecodeErrorZ* owner_conv = (LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_UnsignedChannelUpdateDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_TxOut_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKTxOut _res_conv = *(LDKTxOut*)(_res_ptr);
-       FREE((void*)_res);
-       TxOut_free(_res_conv);
+static inline struct LDKChannelUpdate CResult_ChannelUpdateDecodeErrorZ_get_ok(LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ChannelUpdate_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelUpdateDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ChannelUpdateDecodeErrorZ* owner_conv = (LDKCResult_ChannelUpdateDecodeErrorZ*)(owner & ~1);
+       LDKChannelUpdate ret_var = CResult_ChannelUpdateDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-static inline uint64_t TxOut_clone_ptr(LDKTxOut *NONNULL_PTR arg) {
-       LDKTxOut* ret_ref = MALLOC(sizeof(LDKTxOut), "LDKTxOut");
-       *ret_ref = TxOut_clone(arg);
-       return (uint64_t)ret_ref;
+static inline struct LDKDecodeError CResult_ChannelUpdateDecodeErrorZ_get_err(LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-int64_t  __attribute__((visibility("default"))) TS_TxOut_clone_ptr(uint32_t arg) {
-       LDKTxOut* arg_conv = (LDKTxOut*)(arg & ~1);
-       int64_t ret_val = TxOut_clone_ptr(arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelUpdateDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ChannelUpdateDecodeErrorZ* owner_conv = (LDKCResult_ChannelUpdateDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ChannelUpdateDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-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 (uint64_t)ret_ref;
+static inline struct LDKErrorMessage CResult_ErrorMessageDecodeErrorZ_get_ok(LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ErrorMessage_clone(&*owner->contents.result);
 }
-
-void  __attribute__((visibility("default"))) TS_Str_free(jstring _res) {
-       LDKStr dummy = { .chars = NULL, .len = 0, .chars_is_owned = false };
-       Str_free(dummy);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ErrorMessageDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ErrorMessageDecodeErrorZ* owner_conv = (LDKCResult_ErrorMessageDecodeErrorZ*)(owner & ~1);
+       LDKErrorMessage ret_var = CResult_ErrorMessageDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-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 (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_ErrorMessageDecodeErrorZ_get_err(LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-
-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 (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ErrorMessageDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ErrorMessageDecodeErrorZ* owner_conv = (LDKCResult_ErrorMessageDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ErrorMessageDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_SecretKeyErrorZ_is_ok(uint32_t o) {
-       LDKCResult_SecretKeyErrorZ* o_conv = (LDKCResult_SecretKeyErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_SecretKeyErrorZ_is_ok(o_conv);
-       return ret_val;
+static inline struct LDKUnsignedNodeAnnouncement CResult_UnsignedNodeAnnouncementDecodeErrorZ_get_ok(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return UnsignedNodeAnnouncement_clone(&*owner->contents.result);
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_SecretKeyErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_SecretKeyErrorZ _res_conv = *(LDKCResult_SecretKeyErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_SecretKeyErrorZ_free(_res_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* owner_conv = (LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(owner & ~1);
+       LDKUnsignedNodeAnnouncement ret_var = CResult_UnsignedNodeAnnouncementDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_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 (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_UnsignedNodeAnnouncementDecodeErrorZ_get_err(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-
-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 (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* owner_conv = (LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_UnsignedNodeAnnouncementDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_PublicKeyErrorZ_is_ok(uint32_t o) {
-       LDKCResult_PublicKeyErrorZ* o_conv = (LDKCResult_PublicKeyErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_PublicKeyErrorZ_is_ok(o_conv);
-       return ret_val;
+static inline struct LDKNodeAnnouncement CResult_NodeAnnouncementDecodeErrorZ_get_ok(LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return NodeAnnouncement_clone(&*owner->contents.result);
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_PublicKeyErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_PublicKeyErrorZ _res_conv = *(LDKCResult_PublicKeyErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_PublicKeyErrorZ_free(_res_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_NodeAnnouncementDecodeErrorZ* owner_conv = (LDKCResult_NodeAnnouncementDecodeErrorZ*)(owner & ~1);
+       LDKNodeAnnouncement ret_var = CResult_NodeAnnouncementDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-static inline uint64_t CResult_PublicKeyErrorZ_clone_ptr(LDKCResult_PublicKeyErrorZ *NONNULL_PTR arg) {
-       LDKCResult_PublicKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeyErrorZ), "LDKCResult_PublicKeyErrorZ");
-       *ret_conv = CResult_PublicKeyErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_NodeAnnouncementDecodeErrorZ_get_err(LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_PublicKeyErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_PublicKeyErrorZ* arg_conv = (LDKCResult_PublicKeyErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_PublicKeyErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_NodeAnnouncementDecodeErrorZ* owner_conv = (LDKCResult_NodeAnnouncementDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_NodeAnnouncementDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PublicKeyErrorZ_clone(uint32_t orig) {
-       LDKCResult_PublicKeyErrorZ* orig_conv = (LDKCResult_PublicKeyErrorZ*)(orig & ~1);
-       LDKCResult_PublicKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeyErrorZ), "LDKCResult_PublicKeyErrorZ");
-       *ret_conv = CResult_PublicKeyErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+static inline struct LDKQueryShortChannelIds CResult_QueryShortChannelIdsDecodeErrorZ_get_ok(LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return QueryShortChannelIds_clone(&*owner->contents.result);
 }
-
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = TxCreationKeys_clone(&o_conv);
-       LDKCResult_TxCreationKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysDecodeErrorZ), "LDKCResult_TxCreationKeysDecodeErrorZ");
-       *ret_conv = CResult_TxCreationKeysDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_QueryShortChannelIdsDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_QueryShortChannelIdsDecodeErrorZ* owner_conv = (LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(owner & ~1);
+       LDKQueryShortChannelIds ret_var = CResult_QueryShortChannelIdsDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_TxCreationKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysDecodeErrorZ), "LDKCResult_TxCreationKeysDecodeErrorZ");
-       *ret_conv = CResult_TxCreationKeysDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_QueryShortChannelIdsDecodeErrorZ_get_err(LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_TxCreationKeysDecodeErrorZ* o_conv = (LDKCResult_TxCreationKeysDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_TxCreationKeysDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_QueryShortChannelIdsDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_QueryShortChannelIdsDecodeErrorZ* owner_conv = (LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_QueryShortChannelIdsDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_TxCreationKeysDecodeErrorZ _res_conv = *(LDKCResult_TxCreationKeysDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_TxCreationKeysDecodeErrorZ_free(_res_conv);
+static inline struct LDKReplyShortChannelIdsEnd CResult_ReplyShortChannelIdsEndDecodeErrorZ_get_ok(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ReplyShortChannelIdsEnd_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* owner_conv = (LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(owner & ~1);
+       LDKReplyShortChannelIdsEnd ret_var = CResult_ReplyShortChannelIdsEndDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-static inline uint64_t CResult_TxCreationKeysDecodeErrorZ_clone_ptr(LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_TxCreationKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysDecodeErrorZ), "LDKCResult_TxCreationKeysDecodeErrorZ");
-       *ret_conv = CResult_TxCreationKeysDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_ReplyShortChannelIdsEndDecodeErrorZ_get_err(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_TxCreationKeysDecodeErrorZ* arg_conv = (LDKCResult_TxCreationKeysDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_TxCreationKeysDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* owner_conv = (LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ReplyShortChannelIdsEndDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-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 (uint64_t)ret_conv;
+static inline struct LDKQueryChannelRange CResult_QueryChannelRangeDecodeErrorZ_get_ok(LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return QueryChannelRange_clone(&*owner->contents.result);
 }
-
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = ChannelPublicKeys_clone(&o_conv);
-       LDKCResult_ChannelPublicKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ), "LDKCResult_ChannelPublicKeysDecodeErrorZ");
-       *ret_conv = CResult_ChannelPublicKeysDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_QueryChannelRangeDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_QueryChannelRangeDecodeErrorZ* owner_conv = (LDKCResult_QueryChannelRangeDecodeErrorZ*)(owner & ~1);
+       LDKQueryChannelRange ret_var = CResult_QueryChannelRangeDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ChannelPublicKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ), "LDKCResult_ChannelPublicKeysDecodeErrorZ");
-       *ret_conv = CResult_ChannelPublicKeysDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_QueryChannelRangeDecodeErrorZ_get_err(LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_QueryChannelRangeDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_QueryChannelRangeDecodeErrorZ* owner_conv = (LDKCResult_QueryChannelRangeDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_QueryChannelRangeDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelPublicKeysDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ChannelPublicKeysDecodeErrorZ* o_conv = (LDKCResult_ChannelPublicKeysDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ChannelPublicKeysDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+static inline struct LDKReplyChannelRange CResult_ReplyChannelRangeDecodeErrorZ_get_ok(LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ReplyChannelRange_clone(&*owner->contents.result);
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_ChannelPublicKeysDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_ChannelPublicKeysDecodeErrorZ _res_conv = *(LDKCResult_ChannelPublicKeysDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_ChannelPublicKeysDecodeErrorZ_free(_res_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ReplyChannelRangeDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_ReplyChannelRangeDecodeErrorZ* owner_conv = (LDKCResult_ReplyChannelRangeDecodeErrorZ*)(owner & ~1);
+       LDKReplyChannelRange ret_var = CResult_ReplyChannelRangeDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-static inline uint64_t CResult_ChannelPublicKeysDecodeErrorZ_clone_ptr(LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ChannelPublicKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ), "LDKCResult_ChannelPublicKeysDecodeErrorZ");
-       *ret_conv = CResult_ChannelPublicKeysDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_ReplyChannelRangeDecodeErrorZ_get_err(LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_ChannelPublicKeysDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ChannelPublicKeysDecodeErrorZ* arg_conv = (LDKCResult_ChannelPublicKeysDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ChannelPublicKeysDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ReplyChannelRangeDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_ReplyChannelRangeDecodeErrorZ* owner_conv = (LDKCResult_ReplyChannelRangeDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_ReplyChannelRangeDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_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 (uint64_t)ret_conv;
+static inline struct LDKGossipTimestampFilter CResult_GossipTimestampFilterDecodeErrorZ_get_ok(LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return GossipTimestampFilter_clone(&*owner->contents.result);
 }
-
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = TxCreationKeys_clone(&o_conv);
-       LDKCResult_TxCreationKeysErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysErrorZ), "LDKCResult_TxCreationKeysErrorZ");
-       *ret_conv = CResult_TxCreationKeysErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_GossipTimestampFilterDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_GossipTimestampFilterDecodeErrorZ* owner_conv = (LDKCResult_GossipTimestampFilterDecodeErrorZ*)(owner & ~1);
+       LDKGossipTimestampFilter ret_var = CResult_GossipTimestampFilterDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_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 (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_GossipTimestampFilterDecodeErrorZ_get_err(LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysErrorZ_is_ok(uint32_t o) {
-       LDKCResult_TxCreationKeysErrorZ* o_conv = (LDKCResult_TxCreationKeysErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_TxCreationKeysErrorZ_is_ok(o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_GossipTimestampFilterDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_GossipTimestampFilterDecodeErrorZ* owner_conv = (LDKCResult_GossipTimestampFilterDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_GossipTimestampFilterDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_TxCreationKeysErrorZ _res_conv = *(LDKCResult_TxCreationKeysErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_TxCreationKeysErrorZ_free(_res_conv);
+static inline struct LDKDelayedPaymentOutputDescriptor CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_ok(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return DelayedPaymentOutputDescriptor_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* owner_conv = (LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ*)(owner & ~1);
+       LDKDelayedPaymentOutputDescriptor ret_var = CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-static inline uint64_t CResult_TxCreationKeysErrorZ_clone_ptr(LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR arg) {
-       LDKCResult_TxCreationKeysErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysErrorZ), "LDKCResult_TxCreationKeysErrorZ");
-       *ret_conv = CResult_TxCreationKeysErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_err(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_TxCreationKeysErrorZ* arg_conv = (LDKCResult_TxCreationKeysErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_TxCreationKeysErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* owner_conv = (LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysErrorZ_clone(uint32_t orig) {
-       LDKCResult_TxCreationKeysErrorZ* orig_conv = (LDKCResult_TxCreationKeysErrorZ*)(orig & ~1);
-       LDKCResult_TxCreationKeysErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysErrorZ), "LDKCResult_TxCreationKeysErrorZ");
-       *ret_conv = CResult_TxCreationKeysErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+static inline struct LDKStaticPaymentOutputDescriptor CResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_ok(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return StaticPaymentOutputDescriptor_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* owner_conv = (LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ*)(owner & ~1);
+       LDKStaticPaymentOutputDescriptor ret_var = CResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_u32Z_some(int32_t o) {
-       LDKCOption_u32Z *ret_copy = MALLOC(sizeof(LDKCOption_u32Z), "LDKCOption_u32Z");
-       *ret_copy = COption_u32Z_some(o);
-       uint64_t ret_ref = (uint64_t)ret_copy;
+static inline struct LDKDecodeError CResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_err(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* owner_conv = (LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_u32Z_none() {
-       LDKCOption_u32Z *ret_copy = MALLOC(sizeof(LDKCOption_u32Z), "LDKCOption_u32Z");
-       *ret_copy = COption_u32Z_none();
+static inline struct LDKSpendableOutputDescriptor CResult_SpendableOutputDescriptorDecodeErrorZ_get_ok(LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return SpendableOutputDescriptor_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescriptorDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* owner_conv = (LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(owner & ~1);
+       LDKSpendableOutputDescriptor *ret_copy = MALLOC(sizeof(LDKSpendableOutputDescriptor), "LDKSpendableOutputDescriptor");
+       *ret_copy = CResult_SpendableOutputDescriptorDecodeErrorZ_get_ok(owner_conv);
        uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_COption_u32Z_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCOption_u32Z _res_conv = *(LDKCOption_u32Z*)(_res_ptr);
-       FREE((void*)_res);
-       COption_u32Z_free(_res_conv);
+static inline struct LDKDecodeError CResult_SpendableOutputDescriptorDecodeErrorZ_get_err(LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-
-static inline uint64_t COption_u32Z_clone_ptr(LDKCOption_u32Z *NONNULL_PTR arg) {
-       LDKCOption_u32Z *ret_copy = MALLOC(sizeof(LDKCOption_u32Z), "LDKCOption_u32Z");
-       *ret_copy = COption_u32Z_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescriptorDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* owner_conv = (LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_SpendableOutputDescriptorDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_COption_u32Z_clone_ptr(uint32_t arg) {
-       LDKCOption_u32Z* arg_conv = (LDKCOption_u32Z*)arg;
-       int64_t ret_val = COption_u32Z_clone_ptr(arg_conv);
-       return ret_val;
+
+static inline struct LDKSign CResult_SignDecodeErrorZ_get_ok(LDKCResult_SignDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return Sign_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_SignDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_SignDecodeErrorZ* owner_conv = (LDKCResult_SignDecodeErrorZ*)(owner & ~1);
+       LDKSign* ret_ret = MALLOC(sizeof(LDKSign), "LDKSign");
+       *ret_ret = CResult_SignDecodeErrorZ_get_ok(owner_conv);
+       return (uint64_t)ret_ret;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_u32Z_clone(uint32_t orig) {
-       LDKCOption_u32Z* orig_conv = (LDKCOption_u32Z*)orig;
-       LDKCOption_u32Z *ret_copy = MALLOC(sizeof(LDKCOption_u32Z), "LDKCOption_u32Z");
-       *ret_copy = COption_u32Z_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
+static inline struct LDKDecodeError CResult_SignDecodeErrorZ_get_err(LDKCResult_SignDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_SignDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_SignDecodeErrorZ* owner_conv = (LDKCResult_SignDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_SignDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = HTLCOutputInCommitment_clone(&o_conv);
-       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ), "LDKCResult_HTLCOutputInCommitmentDecodeErrorZ");
-       *ret_conv = CResult_HTLCOutputInCommitmentDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+static inline struct LDKRecoverableSignature CResult_RecoverableSignatureNoneZ_get_ok(LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
+}
+int8_tArray  __attribute__((visibility("default"))) TS_CResult_RecoverableSignatureNoneZ_get_ok(uint32_t owner) {
+       LDKCResult_RecoverableSignatureNoneZ* owner_conv = (LDKCResult_RecoverableSignatureNoneZ*)(owner & ~1);
+       int8_tArray et_arr = init_int8_tArray(68);
+       memcpy(et_arr->elems, CResult_RecoverableSignatureNoneZ_get_ok(owner_conv).serialized_form, 68);
+       return et_arr;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ), "LDKCResult_HTLCOutputInCommitmentDecodeErrorZ");
-       *ret_conv = CResult_HTLCOutputInCommitmentDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+static inline void CResult_RecoverableSignatureNoneZ_get_err(LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
+}
+void  __attribute__((visibility("default"))) TS_CResult_RecoverableSignatureNoneZ_get_err(uint32_t owner) {
+       LDKCResult_RecoverableSignatureNoneZ* owner_conv = (LDKCResult_RecoverableSignatureNoneZ*)(owner & ~1);
+       CResult_RecoverableSignatureNoneZ_get_err(owner_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_HTLCOutputInCommitmentDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* o_conv = (LDKCResult_HTLCOutputInCommitmentDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_HTLCOutputInCommitmentDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+static inline LDKCVec_CVec_u8ZZ CVec_CVec_u8ZZ_clone(const LDKCVec_CVec_u8ZZ *orig) {
+       LDKCVec_CVec_u8ZZ ret = { .data = MALLOC(sizeof(LDKCVec_u8Z) * orig->datalen, "LDKCVec_CVec_u8ZZ clone bytes"), .datalen = orig->datalen };
+       for (size_t i = 0; i < ret.datalen; i++) {
+               ret.data[i] = CVec_u8Z_clone(&orig->data[i]);
+       }
+       return ret;
+}
+static inline struct LDKCVec_CVec_u8ZZ CResult_CVec_CVec_u8ZZNoneZ_get_ok(LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return CVec_CVec_u8ZZ_clone(&*owner->contents.result);
+}
+ptrArray  __attribute__((visibility("default"))) TS_CResult_CVec_CVec_u8ZZNoneZ_get_ok(uint32_t owner) {
+       LDKCResult_CVec_CVec_u8ZZNoneZ* owner_conv = (LDKCResult_CVec_CVec_u8ZZNoneZ*)(owner & ~1);
+       LDKCVec_CVec_u8ZZ ret_var = CResult_CVec_CVec_u8ZZNoneZ_get_ok(owner_conv);
+       ptrArray ret_arr = NULL;
+       ret_arr = init_ptrArray(ret_var.datalen);
+       int8_tArray *ret_arr_ptr = (int8_tArray*)(ret_arr + 4);
+       for (size_t m = 0; m < ret_var.datalen; m++) {
+               LDKCVec_u8Z ret_conv_12_var = ret_var.data[m];
+               int8_tArray ret_conv_12_arr = init_int8_tArray(ret_conv_12_var.datalen);
+               memcpy(ret_conv_12_arr->elems, ret_conv_12_var.data, ret_conv_12_var.datalen);
+               CVec_u8Z_free(ret_conv_12_var);
+               ret_arr_ptr[m] = ret_conv_12_arr;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_HTLCOutputInCommitmentDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ _res_conv = *(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_HTLCOutputInCommitmentDecodeErrorZ_free(_res_conv);
+static inline void CResult_CVec_CVec_u8ZZNoneZ_get_err(LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
+}
+void  __attribute__((visibility("default"))) TS_CResult_CVec_CVec_u8ZZNoneZ_get_err(uint32_t owner) {
+       LDKCResult_CVec_CVec_u8ZZNoneZ* owner_conv = (LDKCResult_CVec_CVec_u8ZZNoneZ*)(owner & ~1);
+       CResult_CVec_CVec_u8ZZNoneZ_get_err(owner_conv);
 }
 
-static inline uint64_t CResult_HTLCOutputInCommitmentDecodeErrorZ_clone_ptr(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ), "LDKCResult_HTLCOutputInCommitmentDecodeErrorZ");
-       *ret_conv = CResult_HTLCOutputInCommitmentDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline struct LDKInMemorySigner CResult_InMemorySignerDecodeErrorZ_get_ok(LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return InMemorySigner_clone(&*owner->contents.result);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_HTLCOutputInCommitmentDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* arg_conv = (LDKCResult_HTLCOutputInCommitmentDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_HTLCOutputInCommitmentDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_InMemorySignerDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_InMemorySignerDecodeErrorZ* owner_conv = (LDKCResult_InMemorySignerDecodeErrorZ*)(owner & ~1);
+       LDKInMemorySigner ret_var = CResult_InMemorySignerDecodeErrorZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_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 (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_InMemorySignerDecodeErrorZ_get_err(LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_COption_NoneZ_some() {
-       uint32_t ret_conv = LDKCOption_NoneZ_to_js(COption_NoneZ_some());
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_InMemorySignerDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_InMemorySignerDecodeErrorZ* owner_conv = (LDKCResult_InMemorySignerDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_InMemorySignerDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_NoneZ_none() {
-       uint32_t ret_conv = LDKCOption_NoneZ_to_js(COption_NoneZ_none());
-       return ret_conv;
+static inline LDKCVec_TxOutZ CVec_TxOutZ_clone(const LDKCVec_TxOutZ *orig) {
+       LDKCVec_TxOutZ ret = { .data = MALLOC(sizeof(LDKTxOut) * orig->datalen, "LDKCVec_TxOutZ clone bytes"), .datalen = orig->datalen };
+       for (size_t i = 0; i < ret.datalen; i++) {
+               ret.data[i] = TxOut_clone(&orig->data[i]);
+       }
+       return ret;
 }
-
-void  __attribute__((visibility("default"))) TS_COption_NoneZ_free(uint32_t _res) {
-       LDKCOption_NoneZ _res_conv = LDKCOption_NoneZ_from_js(_res);
-       COption_NoneZ_free(_res_conv);
+static inline struct LDKTransaction CResult_TransactionNoneZ_get_ok(LDKCResult_TransactionNoneZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
 }
-
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = CounterpartyChannelTransactionParameters_clone(&o_conv);
-       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ), "LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ");
-       *ret_conv = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_CResult_TransactionNoneZ_get_ok(uint32_t owner) {
+       LDKCResult_TransactionNoneZ* owner_conv = (LDKCResult_TransactionNoneZ*)(owner & ~1);
+       LDKTransaction ret_var = CResult_TransactionNoneZ_get_ok(owner_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       Transaction_free(ret_var);
+       return ret_arr;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ), "LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ");
-       *ret_conv = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+static inline void CResult_TransactionNoneZ_get_err(LDKCResult_TransactionNoneZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* o_conv = (LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_CResult_TransactionNoneZ_get_err(uint32_t owner) {
+       LDKCResult_TransactionNoneZ* owner_conv = (LDKCResult_TransactionNoneZ*)(owner & ~1);
+       CResult_TransactionNoneZ_get_err(owner_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ _res_conv = *(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(_res_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_function_ptr(j_calls->register_tx_meth);
+               js_free_function_ptr(j_calls->register_output_meth);
+               FREE(j_calls);
+       }
 }
-
-static inline uint64_t CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone_ptr(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ), "LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ");
-       *ret_conv = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+void register_tx_LDKFilter_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_int8_tArray(32);
+       memcpy(txid_arr->elems, *txid, 32);
+       LDKu8slice script_pubkey_var = script_pubkey;
+       int8_tArray script_pubkey_arr = init_int8_tArray(script_pubkey_var.datalen);
+       memcpy(script_pubkey_arr->elems, script_pubkey_var.data, script_pubkey_var.datalen);
+       js_invoke_function_2(j_calls->register_tx_meth, (uint32_t)txid_arr, (uint32_t)script_pubkey_arr);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* arg_conv = (LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+LDKCOption_C2Tuple_usizeTransactionZZ register_output_LDKFilter_jcall(const void* this_arg, LDKWatchedOutput output) {
+       LDKFilter_JCalls *j_calls = (LDKFilter_JCalls*) this_arg;
+       LDKWatchedOutput output_var = output;
+       uint64_t output_ref = 0;
+       CHECK((((uint64_t)output_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&output_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(output_var);
+       output_ref = (uint64_t)output_var.inner;
+       if (output_var.is_owned) {
+               output_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_1(j_calls->register_output_meth, (uint32_t)output_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCOption_C2Tuple_usizeTransactionZZ ret_conv = *(LDKCOption_C2Tuple_usizeTransactionZZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
 }
-
-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 (uint64_t)ret_conv;
+static void LDKFilter_JCalls_cloned(LDKFilter* new_obj) {
+       LDKFilter_JCalls *j_calls = (LDKFilter_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
+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
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = ChannelTransactionParameters_clone(&o_conv);
-       LDKCResult_ChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ), "LDKCResult_ChannelTransactionParametersDecodeErrorZ");
-       *ret_conv = CResult_ChannelTransactionParametersDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+       LDKFilter ret = {
+               .this_arg = (void*) calls,
+               .register_tx = register_tx_LDKFilter_jcall,
+               .register_output = register_output_LDKFilter_jcall,
+               .free = LDKFilter_JCalls_free,
+       };
+       return ret;
 }
-
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ), "LDKCResult_ChannelTransactionParametersDecodeErrorZ");
-       *ret_conv = CResult_ChannelTransactionParametersDecodeErrorZ_err(e_conv);
-       return (uint64_t)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;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelTransactionParametersDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ChannelTransactionParametersDecodeErrorZ* o_conv = (LDKCResult_ChannelTransactionParametersDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ChannelTransactionParametersDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_Filter_register_tx(uint32_t this_arg, int8_tArray txid, int8_tArray script_pubkey) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKFilter* this_arg_conv = (LDKFilter*)this_arg_ptr;
+       unsigned char txid_arr[32];
+       CHECK(txid->arr_len == 32);
+       memcpy(txid_arr, txid->elems, 32);
+       unsigned char (*txid_ref)[32] = &txid_arr;
+       LDKu8slice script_pubkey_ref;
+       script_pubkey_ref.datalen = script_pubkey->arr_len;
+       script_pubkey_ref.data = script_pubkey->elems;
+       (this_arg_conv->register_tx)(this_arg_conv->this_arg, txid_ref, script_pubkey_ref);
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ChannelTransactionParametersDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_ChannelTransactionParametersDecodeErrorZ _res_conv = *(LDKCResult_ChannelTransactionParametersDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_ChannelTransactionParametersDecodeErrorZ_free(_res_conv);
+uint32_t  __attribute__((visibility("default"))) TS_Filter_register_output(uint32_t this_arg, uint32_t output) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKFilter* this_arg_conv = (LDKFilter*)this_arg_ptr;
+       LDKWatchedOutput output_conv;
+       output_conv.inner = (void*)(output & (~1));
+       output_conv.is_owned = (output & 1) || (output == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(output_conv);
+       output_conv = WatchedOutput_clone(&output_conv);
+       LDKCOption_C2Tuple_usizeTransactionZZ *ret_copy = MALLOC(sizeof(LDKCOption_C2Tuple_usizeTransactionZZ), "LDKCOption_C2Tuple_usizeTransactionZZ");
+       *ret_copy = (this_arg_conv->register_output)(this_arg_conv->this_arg, output_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-static inline uint64_t CResult_ChannelTransactionParametersDecodeErrorZ_clone_ptr(LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ), "LDKCResult_ChannelTransactionParametersDecodeErrorZ");
-       *ret_conv = CResult_ChannelTransactionParametersDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+uint32_t __attribute__((visibility("default"))) TS_LDKCOption_FilterZ_ref_from_ptr(uint32_t ptr) {
+       LDKCOption_FilterZ *obj = (LDKCOption_FilterZ*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKCOption_FilterZ_Some: {
+                       LDKFilter* some_ret = MALLOC(sizeof(LDKFilter), "LDKFilter");
+                       *some_ret = obj->some;
+                       // Warning: We likely need to clone here, but no clone is available, so we just do it for Java instances
+                       return 0 /* LDKCOption_FilterZ - Some */; (void) (uint64_t)some_ret;
+               }
+               case LDKCOption_FilterZ_None: {
+                       return 0 /* LDKCOption_FilterZ - None */;
+               }
+               default: abort();
+       }
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_ChannelTransactionParametersDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ChannelTransactionParametersDecodeErrorZ* arg_conv = (LDKCResult_ChannelTransactionParametersDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ChannelTransactionParametersDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+static inline struct LDKLockedChannelMonitor *CResult_LockedChannelMonitorNoneZ_get_ok(LDKCResult_LockedChannelMonitorNoneZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return &*owner->contents.result;
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_LockedChannelMonitorNoneZ_get_ok(uint32_t owner) {
+       LDKCResult_LockedChannelMonitorNoneZ* owner_conv = (LDKCResult_LockedChannelMonitorNoneZ*)(owner & ~1);
+       LDKLockedChannelMonitor ret_var = *CResult_LockedChannelMonitorNoneZ_get_ok(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner & ~1;
+       return ret_ref;
 }
 
-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 (uint64_t)ret_conv;
+static inline void CResult_LockedChannelMonitorNoneZ_get_err(LDKCResult_LockedChannelMonitorNoneZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
+}
+void  __attribute__((visibility("default"))) TS_CResult_LockedChannelMonitorNoneZ_get_err(uint32_t owner) {
+       LDKCResult_LockedChannelMonitorNoneZ* owner_conv = (LDKCResult_LockedChannelMonitorNoneZ*)(owner & ~1);
+       CResult_LockedChannelMonitorNoneZ_get_err(owner_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 _res_conv_12 = _res_vals[m];
-               LDKSignature _res_conv_12_ref;
-               CHECK(*((uint32_t*)_res_conv_12) == 64);
-               memcpy(_res_conv_12_ref.compact_form, (uint8_t*)(_res_conv_12 + 4), 64);
-               _res_constr.data[m] = _res_conv_12_ref;
+static inline LDKCVec_OutPointZ CVec_OutPointZ_clone(const LDKCVec_OutPointZ *orig) {
+       LDKCVec_OutPointZ ret = { .data = MALLOC(sizeof(LDKOutPoint) * orig->datalen, "LDKCVec_OutPointZ clone bytes"), .datalen = orig->datalen };
+       for (size_t i = 0; i < ret.datalen; i++) {
+               ret.data[i] = OutPoint_clone(&orig->data[i]);
+       }
+       return ret;
+}
+uint32_t __attribute__((visibility("default"))) TS_LDKAPIError_ref_from_ptr(uint32_t ptr) {
+       LDKAPIError *obj = (LDKAPIError*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKAPIError_APIMisuseError: {
+                       LDKStr err_str = obj->api_misuse_error.err;
+                       jstring err_conv = str_ref_to_ts(err_str.chars, err_str.len);
+                       return 0 /* LDKAPIError - APIMisuseError */; (void) err_conv;
+               }
+               case LDKAPIError_FeeRateTooHigh: {
+                       LDKStr err_str = obj->fee_rate_too_high.err;
+                       jstring err_conv = str_ref_to_ts(err_str.chars, err_str.len);
+                       return 0 /* LDKAPIError - FeeRateTooHigh */; (void) err_conv; (void) obj->fee_rate_too_high.feerate;
+               }
+               case LDKAPIError_RouteError: {
+                       LDKStr err_str = obj->route_error.err;
+                       jstring err_conv = str_ref_to_ts(err_str.chars, err_str.len);
+                       return 0 /* LDKAPIError - RouteError */; (void) err_conv;
+               }
+               case LDKAPIError_ChannelUnavailable: {
+                       LDKStr err_str = obj->channel_unavailable.err;
+                       jstring err_conv = str_ref_to_ts(err_str.chars, err_str.len);
+                       return 0 /* LDKAPIError - ChannelUnavailable */; (void) err_conv;
+               }
+               case LDKAPIError_MonitorUpdateFailed: {
+                       return 0 /* LDKAPIError - MonitorUpdateFailed */;
+               }
+               case LDKAPIError_IncompatibleShutdownScript: {
+                       LDKShutdownScript script_var = obj->incompatible_shutdown_script.script;
+                       uint64_t script_ref = 0;
+                       CHECK((((uint64_t)script_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&script_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(script_var);
+                       script_ref = (uint64_t)script_var.inner & ~1;
+                       return 0 /* LDKAPIError - IncompatibleShutdownScript */; (void) script_ref;
+               }
+               default: abort();
        }
-       CVec_SignatureZ_free(_res_constr);
-}
-
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = HolderCommitmentTransaction_clone(&o_conv);
-       LDKCResult_HolderCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ), "LDKCResult_HolderCommitmentTransactionDecodeErrorZ");
-       *ret_conv = CResult_HolderCommitmentTransactionDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
-}
-
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_HolderCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ), "LDKCResult_HolderCommitmentTransactionDecodeErrorZ");
-       *ret_conv = CResult_HolderCommitmentTransactionDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_HolderCommitmentTransactionDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_HolderCommitmentTransactionDecodeErrorZ* o_conv = (LDKCResult_HolderCommitmentTransactionDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_HolderCommitmentTransactionDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+static inline void CResult_NoneAPIErrorZ_get_ok(LDKCResult_NoneAPIErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_HolderCommitmentTransactionDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_HolderCommitmentTransactionDecodeErrorZ _res_conv = *(LDKCResult_HolderCommitmentTransactionDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_HolderCommitmentTransactionDecodeErrorZ_free(_res_conv);
+void  __attribute__((visibility("default"))) TS_CResult_NoneAPIErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_NoneAPIErrorZ* owner_conv = (LDKCResult_NoneAPIErrorZ*)(owner & ~1);
+       CResult_NoneAPIErrorZ_get_ok(owner_conv);
 }
 
-static inline uint64_t CResult_HolderCommitmentTransactionDecodeErrorZ_clone_ptr(LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_HolderCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ), "LDKCResult_HolderCommitmentTransactionDecodeErrorZ");
-       *ret_conv = CResult_HolderCommitmentTransactionDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline struct LDKAPIError CResult_NoneAPIErrorZ_get_err(LDKCResult_NoneAPIErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return APIError_clone(&*owner->contents.err);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_HolderCommitmentTransactionDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_HolderCommitmentTransactionDecodeErrorZ* arg_conv = (LDKCResult_HolderCommitmentTransactionDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_HolderCommitmentTransactionDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneAPIErrorZ_get_err(uint32_t owner) {
+       LDKCResult_NoneAPIErrorZ* owner_conv = (LDKCResult_NoneAPIErrorZ*)(owner & ~1);
+       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
+       *ret_copy = CResult_NoneAPIErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_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 (uint64_t)ret_conv;
+uint32_t __attribute__((visibility("default"))) TS_LDKCOption_u16Z_ref_from_ptr(uint32_t ptr) {
+       LDKCOption_u16Z *obj = (LDKCOption_u16Z*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKCOption_u16Z_Some: {
+                       return 0 /* LDKCOption_u16Z - Some */; (void) obj->some;
+               }
+               case LDKCOption_u16Z_None: {
+                       return 0 /* LDKCOption_u16Z - None */;
+               }
+               default: abort();
+       }
 }
-
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = BuiltCommitmentTransaction_clone(&o_conv);
-       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ), "LDKCResult_BuiltCommitmentTransactionDecodeErrorZ");
-       *ret_conv = CResult_BuiltCommitmentTransactionDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+static inline LDKCVec_CResult_NoneAPIErrorZZ CVec_CResult_NoneAPIErrorZZ_clone(const LDKCVec_CResult_NoneAPIErrorZZ *orig) {
+       LDKCVec_CResult_NoneAPIErrorZZ ret = { .data = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ) * orig->datalen, "LDKCVec_CResult_NoneAPIErrorZZ clone bytes"), .datalen = orig->datalen };
+       for (size_t i = 0; i < ret.datalen; i++) {
+               ret.data[i] = CResult_NoneAPIErrorZ_clone(&orig->data[i]);
+       }
+       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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ), "LDKCResult_BuiltCommitmentTransactionDecodeErrorZ");
-       *ret_conv = CResult_BuiltCommitmentTransactionDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+static inline LDKCVec_APIErrorZ CVec_APIErrorZ_clone(const LDKCVec_APIErrorZ *orig) {
+       LDKCVec_APIErrorZ ret = { .data = MALLOC(sizeof(LDKAPIError) * orig->datalen, "LDKCVec_APIErrorZ clone bytes"), .datalen = orig->datalen };
+       for (size_t i = 0; i < ret.datalen; i++) {
+               ret.data[i] = APIError_clone(&orig->data[i]);
+       }
+       return ret;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_BuiltCommitmentTransactionDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* o_conv = (LDKCResult_BuiltCommitmentTransactionDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_BuiltCommitmentTransactionDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+static inline struct LDKThirtyTwoBytes CResult__u832APIErrorZ_get_ok(LDKCResult__u832APIErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ThirtyTwoBytes_clone(&*owner->contents.result);
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_BuiltCommitmentTransactionDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ _res_conv = *(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_BuiltCommitmentTransactionDecodeErrorZ_free(_res_conv);
+int8_tArray  __attribute__((visibility("default"))) TS_CResult__u832APIErrorZ_get_ok(uint32_t owner) {
+       LDKCResult__u832APIErrorZ* owner_conv = (LDKCResult__u832APIErrorZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, CResult__u832APIErrorZ_get_ok(owner_conv).data, 32);
+       return ret_arr;
 }
 
-static inline uint64_t CResult_BuiltCommitmentTransactionDecodeErrorZ_clone_ptr(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ), "LDKCResult_BuiltCommitmentTransactionDecodeErrorZ");
-       *ret_conv = CResult_BuiltCommitmentTransactionDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline struct LDKAPIError CResult__u832APIErrorZ_get_err(LDKCResult__u832APIErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return APIError_clone(&*owner->contents.err);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_BuiltCommitmentTransactionDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* arg_conv = (LDKCResult_BuiltCommitmentTransactionDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_BuiltCommitmentTransactionDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult__u832APIErrorZ_get_err(uint32_t owner) {
+       LDKCResult__u832APIErrorZ* owner_conv = (LDKCResult__u832APIErrorZ*)(owner & ~1);
+       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
+       *ret_copy = CResult__u832APIErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-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 (uint64_t)ret_conv;
+uint32_t __attribute__((visibility("default"))) TS_LDKPaymentSendFailure_ref_from_ptr(uint32_t ptr) {
+       LDKPaymentSendFailure *obj = (LDKPaymentSendFailure*)(ptr & ~1);
+       switch(obj->tag) {
+               case LDKPaymentSendFailure_ParameterError: {
+                       uint64_t parameter_error_ref = ((uint64_t)&obj->parameter_error) | 1;
+                       return 0 /* LDKPaymentSendFailure - ParameterError */; (void) parameter_error_ref;
+               }
+               case LDKPaymentSendFailure_PathParameterError: {
+                       LDKCVec_CResult_NoneAPIErrorZZ path_parameter_error_var = obj->path_parameter_error;
+                       uint32_tArray path_parameter_error_arr = NULL;
+                       path_parameter_error_arr = init_uint32_tArray(path_parameter_error_var.datalen);
+                       uint32_t *path_parameter_error_arr_ptr = (uint32_t*)(path_parameter_error_arr + 4);
+                       for (size_t w = 0; w < path_parameter_error_var.datalen; w++) {
+                               LDKCResult_NoneAPIErrorZ* path_parameter_error_conv_22_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
+                               *path_parameter_error_conv_22_conv = path_parameter_error_var.data[w];
+                               *path_parameter_error_conv_22_conv = CResult_NoneAPIErrorZ_clone(path_parameter_error_conv_22_conv);
+                               path_parameter_error_arr_ptr[w] = (uint64_t)path_parameter_error_conv_22_conv;
+                       }
+                       
+                       return 0 /* LDKPaymentSendFailure - PathParameterError */; (void) path_parameter_error_arr;
+               }
+               case LDKPaymentSendFailure_AllFailedRetrySafe: {
+                       LDKCVec_APIErrorZ all_failed_retry_safe_var = obj->all_failed_retry_safe;
+                       uint32_tArray all_failed_retry_safe_arr = NULL;
+                       all_failed_retry_safe_arr = init_uint32_tArray(all_failed_retry_safe_var.datalen);
+                       uint32_t *all_failed_retry_safe_arr_ptr = (uint32_t*)(all_failed_retry_safe_arr + 4);
+                       for (size_t k = 0; k < all_failed_retry_safe_var.datalen; k++) {
+                               uint64_t all_failed_retry_safe_conv_10_ref = ((uint64_t)&all_failed_retry_safe_var.data[k]) | 1;
+                               all_failed_retry_safe_arr_ptr[k] = all_failed_retry_safe_conv_10_ref;
+                       }
+                       
+                       return 0 /* LDKPaymentSendFailure - AllFailedRetrySafe */; (void) all_failed_retry_safe_arr;
+               }
+               case LDKPaymentSendFailure_PartialFailure: {
+                       LDKCVec_CResult_NoneAPIErrorZZ results_var = obj->partial_failure.results;
+                       uint32_tArray results_arr = NULL;
+                       results_arr = init_uint32_tArray(results_var.datalen);
+                       uint32_t *results_arr_ptr = (uint32_t*)(results_arr + 4);
+                       for (size_t w = 0; w < results_var.datalen; w++) {
+                               LDKCResult_NoneAPIErrorZ* results_conv_22_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
+                               *results_conv_22_conv = results_var.data[w];
+                               *results_conv_22_conv = CResult_NoneAPIErrorZ_clone(results_conv_22_conv);
+                               results_arr_ptr[w] = (uint64_t)results_conv_22_conv;
+                       }
+                       
+                       LDKRouteParameters failed_paths_retry_var = obj->partial_failure.failed_paths_retry;
+                       uint64_t failed_paths_retry_ref = 0;
+                       if ((uint64_t)failed_paths_retry_var.inner > 4096) {
+                               CHECK((((uint64_t)failed_paths_retry_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                               CHECK((((uint64_t)&failed_paths_retry_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(failed_paths_retry_var);
+                               failed_paths_retry_ref = (uint64_t)failed_paths_retry_var.inner & ~1;
+                       }
+                       int8_tArray payment_id_arr = init_int8_tArray(32);
+                       memcpy(payment_id_arr->elems, obj->partial_failure.payment_id.data, 32);
+                       return 0 /* LDKPaymentSendFailure - PartialFailure */; (void) results_arr; (void) failed_paths_retry_ref; (void) payment_id_arr;
+               }
+               default: abort();
+       }
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_TrustedClosingTransactionNoneZ_ok(uint32_t o) {
-       LDKTrustedClosingTransaction o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       // Warning: we need a move here but no clone is available for LDKTrustedClosingTransaction
-       LDKCResult_TrustedClosingTransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TrustedClosingTransactionNoneZ), "LDKCResult_TrustedClosingTransactionNoneZ");
-       *ret_conv = CResult_TrustedClosingTransactionNoneZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+static inline struct LDKThirtyTwoBytes CResult_PaymentIdPaymentSendFailureZ_get_ok(LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ThirtyTwoBytes_clone(&*owner->contents.result);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_TrustedClosingTransactionNoneZ_err() {
-       LDKCResult_TrustedClosingTransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TrustedClosingTransactionNoneZ), "LDKCResult_TrustedClosingTransactionNoneZ");
-       *ret_conv = CResult_TrustedClosingTransactionNoneZ_err();
-       return (uint64_t)ret_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentSendFailureZ_get_ok(uint32_t owner) {
+       LDKCResult_PaymentIdPaymentSendFailureZ* owner_conv = (LDKCResult_PaymentIdPaymentSendFailureZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, CResult_PaymentIdPaymentSendFailureZ_get_ok(owner_conv).data, 32);
+       return ret_arr;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_TrustedClosingTransactionNoneZ_is_ok(uint32_t o) {
-       LDKCResult_TrustedClosingTransactionNoneZ* o_conv = (LDKCResult_TrustedClosingTransactionNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_TrustedClosingTransactionNoneZ_is_ok(o_conv);
-       return ret_val;
+static inline struct LDKPaymentSendFailure CResult_PaymentIdPaymentSendFailureZ_get_err(LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return PaymentSendFailure_clone(&*owner->contents.err);
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_TrustedClosingTransactionNoneZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_TrustedClosingTransactionNoneZ _res_conv = *(LDKCResult_TrustedClosingTransactionNoneZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_TrustedClosingTransactionNoneZ_free(_res_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentSendFailureZ_get_err(uint32_t owner) {
+       LDKCResult_PaymentIdPaymentSendFailureZ* owner_conv = (LDKCResult_PaymentIdPaymentSendFailureZ*)(owner & ~1);
+       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
+       *ret_copy = CResult_PaymentIdPaymentSendFailureZ_get_err(owner_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = CommitmentTransaction_clone(&o_conv);
-       LDKCResult_CommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ), "LDKCResult_CommitmentTransactionDecodeErrorZ");
-       *ret_conv = CResult_CommitmentTransactionDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+static inline void CResult_NonePaymentSendFailureZ_get_ok(LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return *owner->contents.result;
 }
-
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_CommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ), "LDKCResult_CommitmentTransactionDecodeErrorZ");
-       *ret_conv = CResult_CommitmentTransactionDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_CResult_NonePaymentSendFailureZ_get_ok(uint32_t owner) {
+       LDKCResult_NonePaymentSendFailureZ* owner_conv = (LDKCResult_NonePaymentSendFailureZ*)(owner & ~1);
+       CResult_NonePaymentSendFailureZ_get_ok(owner_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_CommitmentTransactionDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_CommitmentTransactionDecodeErrorZ* o_conv = (LDKCResult_CommitmentTransactionDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_CommitmentTransactionDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+static inline struct LDKPaymentSendFailure CResult_NonePaymentSendFailureZ_get_err(LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return PaymentSendFailure_clone(&*owner->contents.err);
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_CommitmentTransactionDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_CommitmentTransactionDecodeErrorZ _res_conv = *(LDKCResult_CommitmentTransactionDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_CommitmentTransactionDecodeErrorZ_free(_res_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NonePaymentSendFailureZ_get_err(uint32_t owner) {
+       LDKCResult_NonePaymentSendFailureZ* owner_conv = (LDKCResult_NonePaymentSendFailureZ*)(owner & ~1);
+       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
+       *ret_copy = CResult_NonePaymentSendFailureZ_get_err(owner_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-static inline uint64_t CResult_CommitmentTransactionDecodeErrorZ_clone_ptr(LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_CommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ), "LDKCResult_CommitmentTransactionDecodeErrorZ");
-       *ret_conv = CResult_CommitmentTransactionDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentIdZ_get_a(LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR owner){
+       return ThirtyTwoBytes_clone(&owner->a);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_CommitmentTransactionDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_CommitmentTransactionDecodeErrorZ* arg_conv = (LDKCResult_CommitmentTransactionDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_CommitmentTransactionDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentIdZ_get_a(uint32_t owner) {
+       LDKC2Tuple_PaymentHashPaymentIdZ* owner_conv = (LDKC2Tuple_PaymentHashPaymentIdZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, C2Tuple_PaymentHashPaymentIdZ_get_a(owner_conv).data, 32);
+       return ret_arr;
 }
 
-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 (uint64_t)ret_conv;
+static inline struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentIdZ_get_b(LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR owner){
+       return ThirtyTwoBytes_clone(&owner->b);
+}
+int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentIdZ_get_b(uint32_t owner) {
+       LDKC2Tuple_PaymentHashPaymentIdZ* owner_conv = (LDKC2Tuple_PaymentHashPaymentIdZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, C2Tuple_PaymentHashPaymentIdZ_get_b(owner_conv).data, 32);
+       return ret_arr;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       // 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 (uint64_t)ret_conv;
+static inline struct LDKC2Tuple_PaymentHashPaymentIdZ CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_ok(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return C2Tuple_PaymentHashPaymentIdZ_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_ok(uint32_t owner) {
+       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* owner_conv = (LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ*)(owner & ~1);
+       LDKC2Tuple_PaymentHashPaymentIdZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentIdZ), "LDKC2Tuple_PaymentHashPaymentIdZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_ok(owner_conv);
+       return ((uint64_t)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();
-       return (uint64_t)ret_conv;
+static inline struct LDKPaymentSendFailure CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_err(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return PaymentSendFailure_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_err(uint32_t owner) {
+       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* owner_conv = (LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ*)(owner & ~1);
+       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
+       *ret_copy = CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_err(owner_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_TrustedCommitmentTransactionNoneZ_is_ok(uint32_t o) {
-       LDKCResult_TrustedCommitmentTransactionNoneZ* o_conv = (LDKCResult_TrustedCommitmentTransactionNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_TrustedCommitmentTransactionNoneZ_is_ok(o_conv);
-       return ret_val;
+static inline struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentSecretZ_get_a(LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR owner){
+       return ThirtyTwoBytes_clone(&owner->a);
+}
+int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentSecretZ_get_a(uint32_t owner) {
+       LDKC2Tuple_PaymentHashPaymentSecretZ* owner_conv = (LDKC2Tuple_PaymentHashPaymentSecretZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, C2Tuple_PaymentHashPaymentSecretZ_get_a(owner_conv).data, 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_TrustedCommitmentTransactionNoneZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_TrustedCommitmentTransactionNoneZ _res_conv = *(LDKCResult_TrustedCommitmentTransactionNoneZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_TrustedCommitmentTransactionNoneZ_free(_res_conv);
+static inline struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentSecretZ_get_b(LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR owner){
+       return ThirtyTwoBytes_clone(&owner->b);
+}
+int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentSecretZ_get_b(uint32_t owner) {
+       LDKC2Tuple_PaymentHashPaymentSecretZ* owner_conv = (LDKC2Tuple_PaymentHashPaymentSecretZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, C2Tuple_PaymentHashPaymentSecretZ_get_b(owner_conv).data, 32);
+       return ret_arr;
 }
 
-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 o_conv_12 = o_vals[m];
-               LDKSignature o_conv_12_ref;
-               CHECK(*((uint32_t*)o_conv_12) == 64);
-               memcpy(o_conv_12_ref.compact_form, (uint8_t*)(o_conv_12 + 4), 64);
-               o_constr.data[m] = o_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 (uint64_t)ret_conv;
+static inline struct LDKC2Tuple_PaymentHashPaymentSecretZ CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_get_ok(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return C2Tuple_PaymentHashPaymentSecretZ_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_get_ok(uint32_t owner) {
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* owner_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ*)(owner & ~1);
+       LDKC2Tuple_PaymentHashPaymentSecretZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ), "LDKC2Tuple_PaymentHashPaymentSecretZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_get_ok(owner_conv);
+       return ((uint64_t)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 (uint64_t)ret_conv;
+static inline void CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_get_err(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
+}
+void  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_get_err(uint32_t owner) {
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* owner_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ*)(owner & ~1);
+       CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_get_err(owner_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_CVec_SignatureZNoneZ_is_ok(uint32_t o) {
-       LDKCResult_CVec_SignatureZNoneZ* o_conv = (LDKCResult_CVec_SignatureZNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_CVec_SignatureZNoneZ_is_ok(o_conv);
-       return ret_val;
+static inline struct LDKC2Tuple_PaymentHashPaymentSecretZ CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_ok(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return C2Tuple_PaymentHashPaymentSecretZ_clone(&*owner->contents.result);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* owner_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ*)(owner & ~1);
+       LDKC2Tuple_PaymentHashPaymentSecretZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ), "LDKC2Tuple_PaymentHashPaymentSecretZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_ok(owner_conv);
+       return ((uint64_t)ret_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_CVec_SignatureZNoneZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_CVec_SignatureZNoneZ _res_conv = *(LDKCResult_CVec_SignatureZNoneZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_CVec_SignatureZNoneZ_free(_res_conv);
+static inline struct LDKAPIError CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_err(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return APIError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_err(uint32_t owner) {
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* owner_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ*)(owner & ~1);
+       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
+       *ret_copy = CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-static inline uint64_t CResult_CVec_SignatureZNoneZ_clone_ptr(LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR arg) {
-       LDKCResult_CVec_SignatureZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_SignatureZNoneZ), "LDKCResult_CVec_SignatureZNoneZ");
-       *ret_conv = CResult_CVec_SignatureZNoneZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline struct LDKThirtyTwoBytes CResult_PaymentSecretNoneZ_get_ok(LDKCResult_PaymentSecretNoneZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ThirtyTwoBytes_clone(&*owner->contents.result);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_CVec_SignatureZNoneZ_clone_ptr(uint32_t arg) {
-       LDKCResult_CVec_SignatureZNoneZ* arg_conv = (LDKCResult_CVec_SignatureZNoneZ*)(arg & ~1);
-       int64_t ret_val = CResult_CVec_SignatureZNoneZ_clone_ptr(arg_conv);
-       return ret_val;
+int8_tArray  __attribute__((visibility("default"))) TS_CResult_PaymentSecretNoneZ_get_ok(uint32_t owner) {
+       LDKCResult_PaymentSecretNoneZ* owner_conv = (LDKCResult_PaymentSecretNoneZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, CResult_PaymentSecretNoneZ_get_ok(owner_conv).data, 32);
+       return ret_arr;
 }
 
-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 (uint64_t)ret_conv;
+static inline void CResult_PaymentSecretNoneZ_get_err(LDKCResult_PaymentSecretNoneZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return *owner->contents.err;
+}
+void  __attribute__((visibility("default"))) TS_CResult_PaymentSecretNoneZ_get_err(uint32_t owner) {
+       LDKCResult_PaymentSecretNoneZ* owner_conv = (LDKCResult_PaymentSecretNoneZ*)(owner & ~1);
+       CResult_PaymentSecretNoneZ_get_err(owner_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptDecodeErrorZ_ok(uint32_t o) {
-       LDKShutdownScript o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = ShutdownScript_clone(&o_conv);
-       LDKCResult_ShutdownScriptDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptDecodeErrorZ), "LDKCResult_ShutdownScriptDecodeErrorZ");
-       *ret_conv = CResult_ShutdownScriptDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+static inline struct LDKThirtyTwoBytes CResult_PaymentSecretAPIErrorZ_get_ok(LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ThirtyTwoBytes_clone(&*owner->contents.result);
+}
+int8_tArray  __attribute__((visibility("default"))) TS_CResult_PaymentSecretAPIErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_PaymentSecretAPIErrorZ* owner_conv = (LDKCResult_PaymentSecretAPIErrorZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, CResult_PaymentSecretAPIErrorZ_get_ok(owner_conv).data, 32);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ShutdownScriptDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptDecodeErrorZ), "LDKCResult_ShutdownScriptDecodeErrorZ");
-       *ret_conv = CResult_ShutdownScriptDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+static inline struct LDKAPIError CResult_PaymentSecretAPIErrorZ_get_err(LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return APIError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretAPIErrorZ_get_err(uint32_t owner) {
+       LDKCResult_PaymentSecretAPIErrorZ* owner_conv = (LDKCResult_PaymentSecretAPIErrorZ*)(owner & ~1);
+       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
+       *ret_copy = CResult_PaymentSecretAPIErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ShutdownScriptDecodeErrorZ* o_conv = (LDKCResult_ShutdownScriptDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ShutdownScriptDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+static inline struct LDKThirtyTwoBytes CResult_PaymentPreimageAPIErrorZ_get_ok(LDKCResult_PaymentPreimageAPIErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return ThirtyTwoBytes_clone(&*owner->contents.result);
+}
+int8_tArray  __attribute__((visibility("default"))) TS_CResult_PaymentPreimageAPIErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_PaymentPreimageAPIErrorZ* owner_conv = (LDKCResult_PaymentPreimageAPIErrorZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, CResult_PaymentPreimageAPIErrorZ_get_ok(owner_conv).data, 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_ShutdownScriptDecodeErrorZ _res_conv = *(LDKCResult_ShutdownScriptDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_ShutdownScriptDecodeErrorZ_free(_res_conv);
+static inline struct LDKAPIError CResult_PaymentPreimageAPIErrorZ_get_err(LDKCResult_PaymentPreimageAPIErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return APIError_clone(&*owner->contents.err);
+}
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentPreimageAPIErrorZ_get_err(uint32_t owner) {
+       LDKCResult_PaymentPreimageAPIErrorZ* owner_conv = (LDKCResult_PaymentPreimageAPIErrorZ*)(owner & ~1);
+       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
+       *ret_copy = CResult_PaymentPreimageAPIErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-static inline uint64_t CResult_ShutdownScriptDecodeErrorZ_clone_ptr(LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ShutdownScriptDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptDecodeErrorZ), "LDKCResult_ShutdownScriptDecodeErrorZ");
-       *ret_conv = CResult_ShutdownScriptDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline LDKCVec_ChannelMonitorZ CVec_ChannelMonitorZ_clone(const LDKCVec_ChannelMonitorZ *orig) {
+       LDKCVec_ChannelMonitorZ ret = { .data = MALLOC(sizeof(LDKChannelMonitor) * orig->datalen, "LDKCVec_ChannelMonitorZ clone bytes"), .datalen = orig->datalen };
+       for (size_t i = 0; i < ret.datalen; i++) {
+               ret.data[i] = ChannelMonitor_clone(&orig->data[i]);
+       }
+       return ret;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ShutdownScriptDecodeErrorZ* arg_conv = (LDKCResult_ShutdownScriptDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ShutdownScriptDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+typedef struct LDKWatch_JCalls {
+       atomic_size_t refcnt;
+       uint32_t watch_channel_meth;
+       uint32_t update_channel_meth;
+       uint32_t release_pending_monitor_events_meth;
+} LDKWatch_JCalls;
+static void LDKWatch_JCalls_free(void* this_arg) {
+       LDKWatch_JCalls *j_calls = (LDKWatch_JCalls*) this_arg;
+       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
+               js_free_function_ptr(j_calls->watch_channel_meth);
+               js_free_function_ptr(j_calls->update_channel_meth);
+               js_free_function_ptr(j_calls->release_pending_monitor_events_meth);
+               FREE(j_calls);
+       }
+}
+LDKCResult_NoneChannelMonitorUpdateErrZ watch_channel_LDKWatch_jcall(const void* this_arg, LDKOutPoint funding_txo, LDKChannelMonitor monitor) {
+       LDKWatch_JCalls *j_calls = (LDKWatch_JCalls*) this_arg;
+       LDKOutPoint funding_txo_var = funding_txo;
+       uint64_t funding_txo_ref = 0;
+       CHECK((((uint64_t)funding_txo_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&funding_txo_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_var);
+       funding_txo_ref = (uint64_t)funding_txo_var.inner;
+       if (funding_txo_var.is_owned) {
+               funding_txo_ref |= 1;
+       }
+       LDKChannelMonitor monitor_var = monitor;
+       uint64_t monitor_ref = 0;
+       CHECK((((uint64_t)monitor_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&monitor_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(monitor_var);
+       monitor_ref = (uint64_t)monitor_var.inner;
+       if (monitor_var.is_owned) {
+               monitor_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_2(j_calls->watch_channel_meth, (uint32_t)funding_txo_ref, (uint32_t)monitor_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_NoneChannelMonitorUpdateErrZ ret_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
+}
+LDKCResult_NoneChannelMonitorUpdateErrZ update_channel_LDKWatch_jcall(const void* this_arg, LDKOutPoint funding_txo, LDKChannelMonitorUpdate update) {
+       LDKWatch_JCalls *j_calls = (LDKWatch_JCalls*) this_arg;
+       LDKOutPoint funding_txo_var = funding_txo;
+       uint64_t funding_txo_ref = 0;
+       CHECK((((uint64_t)funding_txo_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&funding_txo_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_var);
+       funding_txo_ref = (uint64_t)funding_txo_var.inner;
+       if (funding_txo_var.is_owned) {
+               funding_txo_ref |= 1;
+       }
+       LDKChannelMonitorUpdate update_var = update;
+       uint64_t update_ref = 0;
+       CHECK((((uint64_t)update_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&update_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_var);
+       update_ref = (uint64_t)update_var.inner;
+       if (update_var.is_owned) {
+               update_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_2(j_calls->update_channel_meth, (uint32_t)funding_txo_ref, (uint32_t)update_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_NoneChannelMonitorUpdateErrZ ret_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
+}
+LDKCVec_MonitorEventZ release_pending_monitor_events_LDKWatch_jcall(const void* this_arg) {
+       LDKWatch_JCalls *j_calls = (LDKWatch_JCalls*) this_arg;
+       uint32_tArray ret = (uint32_tArray)js_invoke_function_0(j_calls->release_pending_monitor_events_meth);
+       LDKCVec_MonitorEventZ ret_constr;
+       ret_constr.datalen = ret->arr_len;
+       if (ret_constr.datalen > 0)
+               ret_constr.data = MALLOC(ret_constr.datalen * sizeof(LDKMonitorEvent), "LDKCVec_MonitorEventZ Elements");
+       else
+               ret_constr.data = NULL;
+       uint32_t* ret_vals = ret->elems;
+       for (size_t o = 0; o < ret_constr.datalen; o++) {
+               uint32_t ret_conv_14 = ret_vals[o];
+               void* ret_conv_14_ptr = (void*)(((uint64_t)ret_conv_14) & ~1);
+               CHECK_ACCESS(ret_conv_14_ptr);
+               LDKMonitorEvent ret_conv_14_conv = *(LDKMonitorEvent*)(ret_conv_14_ptr);
+               FREE((void*)ret_conv_14);
+               ret_constr.data[o] = ret_conv_14_conv;
+       }
+       return ret_constr;
+}
+static void LDKWatch_JCalls_cloned(LDKWatch* new_obj) {
+       LDKWatch_JCalls *j_calls = (LDKWatch_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+}
+static inline LDKWatch LDKWatch_init (/*TODO: JS Object Reference */void* o) {
+       LDKWatch_JCalls *calls = MALLOC(sizeof(LDKWatch_JCalls), "LDKWatch_JCalls");
+       atomic_init(&calls->refcnt, 1);
+       //TODO: Assign calls->o from o
+
+       LDKWatch ret = {
+               .this_arg = (void*) calls,
+               .watch_channel = watch_channel_LDKWatch_jcall,
+               .update_channel = update_channel_LDKWatch_jcall,
+               .release_pending_monitor_events = release_pending_monitor_events_LDKWatch_jcall,
+               .free = LDKWatch_JCalls_free,
+       };
+       return ret;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_ShutdownScriptDecodeErrorZ* orig_conv = (LDKCResult_ShutdownScriptDecodeErrorZ*)(orig & ~1);
-       LDKCResult_ShutdownScriptDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptDecodeErrorZ), "LDKCResult_ShutdownScriptDecodeErrorZ");
-       *ret_conv = CResult_ShutdownScriptDecodeErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+long  __attribute__((visibility("default"))) TS_LDKWatch_new(/*TODO: JS Object Reference */void* o) {
+       LDKWatch *res_ptr = MALLOC(sizeof(LDKWatch), "LDKWatch");
+       *res_ptr = LDKWatch_init(o);
+       return (long)res_ptr;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptInvalidShutdownScriptZ_ok(uint32_t o) {
-       LDKShutdownScript o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = ShutdownScript_clone(&o_conv);
-       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ), "LDKCResult_ShutdownScriptInvalidShutdownScriptZ");
-       *ret_conv = CResult_ShutdownScriptInvalidShutdownScriptZ_ok(o_conv);
+uint32_t  __attribute__((visibility("default"))) TS_Watch_watch_channel(uint32_t this_arg, uint32_t funding_txo, uint32_t monitor) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKWatch* this_arg_conv = (LDKWatch*)this_arg_ptr;
+       LDKOutPoint funding_txo_conv;
+       funding_txo_conv.inner = (void*)(funding_txo & (~1));
+       funding_txo_conv.is_owned = (funding_txo & 1) || (funding_txo == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_conv);
+       funding_txo_conv = OutPoint_clone(&funding_txo_conv);
+       LDKChannelMonitor monitor_conv;
+       monitor_conv.inner = (void*)(monitor & (~1));
+       monitor_conv.is_owned = (monitor & 1) || (monitor == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(monitor_conv);
+       monitor_conv = ChannelMonitor_clone(&monitor_conv);
+       LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ");
+       *ret_conv = (this_arg_conv->watch_channel)(this_arg_conv->this_arg, funding_txo_conv, monitor_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptInvalidShutdownScriptZ_err(uint32_t e) {
-       LDKInvalidShutdownScript e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = InvalidShutdownScript_clone(&e_conv);
-       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ), "LDKCResult_ShutdownScriptInvalidShutdownScriptZ");
-       *ret_conv = CResult_ShutdownScriptInvalidShutdownScriptZ_err(e_conv);
+uint32_t  __attribute__((visibility("default"))) TS_Watch_update_channel(uint32_t this_arg, uint32_t funding_txo, uint32_t update) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKWatch* this_arg_conv = (LDKWatch*)this_arg_ptr;
+       LDKOutPoint funding_txo_conv;
+       funding_txo_conv.inner = (void*)(funding_txo & (~1));
+       funding_txo_conv.is_owned = (funding_txo & 1) || (funding_txo == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_conv);
+       funding_txo_conv = OutPoint_clone(&funding_txo_conv);
+       LDKChannelMonitorUpdate update_conv;
+       update_conv.inner = (void*)(update & (~1));
+       update_conv.is_owned = (update & 1) || (update == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_conv);
+       update_conv = ChannelMonitorUpdate_clone(&update_conv);
+       LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ");
+       *ret_conv = (this_arg_conv->update_channel)(this_arg_conv->this_arg, funding_txo_conv, update_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptInvalidShutdownScriptZ_is_ok(uint32_t o) {
-       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* o_conv = (LDKCResult_ShutdownScriptInvalidShutdownScriptZ*)(o & ~1);
-       jboolean ret_val = CResult_ShutdownScriptInvalidShutdownScriptZ_is_ok(o_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptInvalidShutdownScriptZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_ShutdownScriptInvalidShutdownScriptZ _res_conv = *(LDKCResult_ShutdownScriptInvalidShutdownScriptZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_ShutdownScriptInvalidShutdownScriptZ_free(_res_conv);
+uint32_tArray  __attribute__((visibility("default"))) TS_Watch_release_pending_monitor_events(uint32_t this_arg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKWatch* this_arg_conv = (LDKWatch*)this_arg_ptr;
+       LDKCVec_MonitorEventZ ret_var = (this_arg_conv->release_pending_monitor_events)(this_arg_conv->this_arg);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t o = 0; o < ret_var.datalen; o++) {
+               LDKMonitorEvent *ret_conv_14_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
+               *ret_conv_14_copy = ret_var.data[o];
+               uint64_t ret_conv_14_ref = (uint64_t)ret_conv_14_copy;
+               ret_arr_ptr[o] = ret_conv_14_ref;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-static inline uint64_t CResult_ShutdownScriptInvalidShutdownScriptZ_clone_ptr(LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR arg) {
-       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ), "LDKCResult_ShutdownScriptInvalidShutdownScriptZ");
-       *ret_conv = CResult_ShutdownScriptInvalidShutdownScriptZ_clone(arg);
-       return (uint64_t)ret_conv;
+typedef struct LDKBroadcasterInterface_JCalls {
+       atomic_size_t refcnt;
+       uint32_t broadcast_transaction_meth;
+} LDKBroadcasterInterface_JCalls;
+static void LDKBroadcasterInterface_JCalls_free(void* this_arg) {
+       LDKBroadcasterInterface_JCalls *j_calls = (LDKBroadcasterInterface_JCalls*) this_arg;
+       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
+               js_free_function_ptr(j_calls->broadcast_transaction_meth);
+               FREE(j_calls);
+       }
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptInvalidShutdownScriptZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* arg_conv = (LDKCResult_ShutdownScriptInvalidShutdownScriptZ*)(arg & ~1);
-       int64_t ret_val = CResult_ShutdownScriptInvalidShutdownScriptZ_clone_ptr(arg_conv);
-       return ret_val;
+void broadcast_transaction_LDKBroadcasterInterface_jcall(const void* this_arg, LDKTransaction tx) {
+       LDKBroadcasterInterface_JCalls *j_calls = (LDKBroadcasterInterface_JCalls*) this_arg;
+       LDKTransaction tx_var = tx;
+       int8_tArray tx_arr = init_int8_tArray(tx_var.datalen);
+       memcpy(tx_arr->elems, tx_var.data, tx_var.datalen);
+       Transaction_free(tx_var);
+       js_invoke_function_1(j_calls->broadcast_transaction_meth, (uint32_t)tx_arr);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptInvalidShutdownScriptZ_clone(uint32_t orig) {
-       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* orig_conv = (LDKCResult_ShutdownScriptInvalidShutdownScriptZ*)(orig & ~1);
-       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ), "LDKCResult_ShutdownScriptInvalidShutdownScriptZ");
-       *ret_conv = CResult_ShutdownScriptInvalidShutdownScriptZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+static void LDKBroadcasterInterface_JCalls_cloned(LDKBroadcasterInterface* new_obj) {
+       LDKBroadcasterInterface_JCalls *j_calls = (LDKBroadcasterInterface_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
+static inline LDKBroadcasterInterface LDKBroadcasterInterface_init (/*TODO: JS Object Reference */void* o) {
+       LDKBroadcasterInterface_JCalls *calls = MALLOC(sizeof(LDKBroadcasterInterface_JCalls), "LDKBroadcasterInterface_JCalls");
+       atomic_init(&calls->refcnt, 1);
+       //TODO: Assign calls->o from o
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneErrorZ_ok() {
-       LDKCResult_NoneErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneErrorZ), "LDKCResult_NoneErrorZ");
-       *ret_conv = CResult_NoneErrorZ_ok();
-       return (uint64_t)ret_conv;
+       LDKBroadcasterInterface ret = {
+               .this_arg = (void*) calls,
+               .broadcast_transaction = broadcast_transaction_LDKBroadcasterInterface_jcall,
+               .free = LDKBroadcasterInterface_JCalls_free,
+       };
+       return ret;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneErrorZ_err(uint32_t e) {
-       LDKIOError e_conv = LDKIOError_from_js(e);
-       LDKCResult_NoneErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneErrorZ), "LDKCResult_NoneErrorZ");
-       *ret_conv = CResult_NoneErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+long  __attribute__((visibility("default"))) TS_LDKBroadcasterInterface_new(/*TODO: JS Object Reference */void* o) {
+       LDKBroadcasterInterface *res_ptr = MALLOC(sizeof(LDKBroadcasterInterface), "LDKBroadcasterInterface");
+       *res_ptr = LDKBroadcasterInterface_init(o);
+       return (long)res_ptr;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_NoneErrorZ_is_ok(uint32_t o) {
-       LDKCResult_NoneErrorZ* o_conv = (LDKCResult_NoneErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_NoneErrorZ_is_ok(o_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_BroadcasterInterface_broadcast_transaction(uint32_t this_arg, int8_tArray tx) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKBroadcasterInterface* this_arg_conv = (LDKBroadcasterInterface*)this_arg_ptr;
+       LDKTransaction tx_ref;
+       tx_ref.datalen = tx->arr_len;
+       tx_ref.data = MALLOC(tx_ref.datalen, "LDKTransaction Bytes");
+       memcpy(tx_ref.data, tx->elems, tx_ref.datalen);
+       tx_ref.data_is_owned = true;
+       (this_arg_conv->broadcast_transaction)(this_arg_conv->this_arg, tx_ref);
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_NoneErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_NoneErrorZ _res_conv = *(LDKCResult_NoneErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_NoneErrorZ_free(_res_conv);
+typedef struct LDKKeysInterface_JCalls {
+       atomic_size_t refcnt;
+       uint32_t get_node_secret_meth;
+       uint32_t get_destination_script_meth;
+       uint32_t get_shutdown_scriptpubkey_meth;
+       uint32_t get_channel_signer_meth;
+       uint32_t get_secure_random_bytes_meth;
+       uint32_t read_chan_signer_meth;
+       uint32_t sign_invoice_meth;
+       uint32_t get_inbound_payment_key_material_meth;
+} LDKKeysInterface_JCalls;
+static void LDKKeysInterface_JCalls_free(void* this_arg) {
+       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
+       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
+               js_free_function_ptr(j_calls->get_node_secret_meth);
+               js_free_function_ptr(j_calls->get_destination_script_meth);
+               js_free_function_ptr(j_calls->get_shutdown_scriptpubkey_meth);
+               js_free_function_ptr(j_calls->get_channel_signer_meth);
+               js_free_function_ptr(j_calls->get_secure_random_bytes_meth);
+               js_free_function_ptr(j_calls->read_chan_signer_meth);
+               js_free_function_ptr(j_calls->sign_invoice_meth);
+               js_free_function_ptr(j_calls->get_inbound_payment_key_material_meth);
+               FREE(j_calls);
+       }
 }
-
-static inline uint64_t CResult_NoneErrorZ_clone_ptr(LDKCResult_NoneErrorZ *NONNULL_PTR arg) {
-       LDKCResult_NoneErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneErrorZ), "LDKCResult_NoneErrorZ");
-       *ret_conv = CResult_NoneErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+LDKSecretKey get_node_secret_LDKKeysInterface_jcall(const void* this_arg) {
+       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
+       int8_tArray ret = (int8_tArray)js_invoke_function_0(j_calls->get_node_secret_meth);
+       LDKSecretKey ret_ref;
+       CHECK(ret->arr_len == 32);
+       memcpy(ret_ref.bytes, ret->elems, 32);
+       return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_NoneErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_NoneErrorZ* arg_conv = (LDKCResult_NoneErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_NoneErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+LDKCVec_u8Z get_destination_script_LDKKeysInterface_jcall(const void* this_arg) {
+       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
+       int8_tArray ret = (int8_tArray)js_invoke_function_0(j_calls->get_destination_script_meth);
+       LDKCVec_u8Z ret_ref;
+       ret_ref.datalen = ret->arr_len;
+       ret_ref.data = MALLOC(ret_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(ret_ref.data, ret->elems, ret_ref.datalen);
+       return ret_ref;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneErrorZ_clone(uint32_t orig) {
-       LDKCResult_NoneErrorZ* orig_conv = (LDKCResult_NoneErrorZ*)(orig & ~1);
-       LDKCResult_NoneErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneErrorZ), "LDKCResult_NoneErrorZ");
-       *ret_conv = CResult_NoneErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+LDKShutdownScript get_shutdown_scriptpubkey_LDKKeysInterface_jcall(const void* this_arg) {
+       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
+       uint32_t ret = js_invoke_function_0(j_calls->get_shutdown_scriptpubkey_meth);
+       LDKShutdownScript ret_conv;
+       ret_conv.inner = (void*)(ret & (~1));
+       ret_conv.is_owned = (ret & 1) || (ret == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv);
+       return ret_conv;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHopDecodeErrorZ_ok(uint32_t o) {
-       LDKRouteHop o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = RouteHop_clone(&o_conv);
-       LDKCResult_RouteHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHopDecodeErrorZ), "LDKCResult_RouteHopDecodeErrorZ");
-       *ret_conv = CResult_RouteHopDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+LDKSign get_channel_signer_LDKKeysInterface_jcall(const void* this_arg, bool inbound, uint64_t channel_value_satoshis) {
+       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
+       uint32_t ret = js_invoke_function_2(j_calls->get_channel_signer_meth, (uint32_t)inbound, (uint32_t)channel_value_satoshis);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKSign ret_conv = *(LDKSign*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHopDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_RouteHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHopDecodeErrorZ), "LDKCResult_RouteHopDecodeErrorZ");
-       *ret_conv = CResult_RouteHopDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+LDKThirtyTwoBytes get_secure_random_bytes_LDKKeysInterface_jcall(const void* this_arg) {
+       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
+       int8_tArray ret = (int8_tArray)js_invoke_function_0(j_calls->get_secure_random_bytes_meth);
+       LDKThirtyTwoBytes ret_ref;
+       CHECK(ret->arr_len == 32);
+       memcpy(ret_ref.data, ret->elems, 32);
+       return ret_ref;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_RouteHopDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_RouteHopDecodeErrorZ* o_conv = (LDKCResult_RouteHopDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_RouteHopDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+LDKCResult_SignDecodeErrorZ read_chan_signer_LDKKeysInterface_jcall(const void* this_arg, LDKu8slice reader) {
+       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
+       LDKu8slice reader_var = reader;
+       int8_tArray reader_arr = init_int8_tArray(reader_var.datalen);
+       memcpy(reader_arr->elems, reader_var.data, reader_var.datalen);
+       uint32_t ret = js_invoke_function_1(j_calls->read_chan_signer_meth, (uint32_t)reader_arr);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_SignDecodeErrorZ ret_conv = *(LDKCResult_SignDecodeErrorZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_RouteHopDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_RouteHopDecodeErrorZ _res_conv = *(LDKCResult_RouteHopDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_RouteHopDecodeErrorZ_free(_res_conv);
+LDKCResult_RecoverableSignatureNoneZ sign_invoice_LDKKeysInterface_jcall(const void* this_arg, LDKCVec_u8Z invoice_preimage) {
+       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
+       LDKCVec_u8Z invoice_preimage_var = invoice_preimage;
+       int8_tArray invoice_preimage_arr = init_int8_tArray(invoice_preimage_var.datalen);
+       memcpy(invoice_preimage_arr->elems, invoice_preimage_var.data, invoice_preimage_var.datalen);
+       CVec_u8Z_free(invoice_preimage_var);
+       uint32_t ret = js_invoke_function_1(j_calls->sign_invoice_meth, (uint32_t)invoice_preimage_arr);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_RecoverableSignatureNoneZ ret_conv = *(LDKCResult_RecoverableSignatureNoneZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
 }
-
-static inline uint64_t CResult_RouteHopDecodeErrorZ_clone_ptr(LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_RouteHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHopDecodeErrorZ), "LDKCResult_RouteHopDecodeErrorZ");
-       *ret_conv = CResult_RouteHopDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+LDKThirtyTwoBytes get_inbound_payment_key_material_LDKKeysInterface_jcall(const void* this_arg) {
+       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
+       int8_tArray ret = (int8_tArray)js_invoke_function_0(j_calls->get_inbound_payment_key_material_meth);
+       LDKThirtyTwoBytes ret_ref;
+       CHECK(ret->arr_len == 32);
+       memcpy(ret_ref.data, ret->elems, 32);
+       return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_RouteHopDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_RouteHopDecodeErrorZ* arg_conv = (LDKCResult_RouteHopDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_RouteHopDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+static void LDKKeysInterface_JCalls_cloned(LDKKeysInterface* new_obj) {
+       LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
+static inline LDKKeysInterface LDKKeysInterface_init (/*TODO: JS Object Reference */void* o) {
+       LDKKeysInterface_JCalls *calls = MALLOC(sizeof(LDKKeysInterface_JCalls), "LDKKeysInterface_JCalls");
+       atomic_init(&calls->refcnt, 1);
+       //TODO: Assign calls->o from o
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHopDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_RouteHopDecodeErrorZ* orig_conv = (LDKCResult_RouteHopDecodeErrorZ*)(orig & ~1);
-       LDKCResult_RouteHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHopDecodeErrorZ), "LDKCResult_RouteHopDecodeErrorZ");
-       *ret_conv = CResult_RouteHopDecodeErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+       LDKKeysInterface ret = {
+               .this_arg = (void*) calls,
+               .get_node_secret = get_node_secret_LDKKeysInterface_jcall,
+               .get_destination_script = get_destination_script_LDKKeysInterface_jcall,
+               .get_shutdown_scriptpubkey = get_shutdown_scriptpubkey_LDKKeysInterface_jcall,
+               .get_channel_signer = get_channel_signer_LDKKeysInterface_jcall,
+               .get_secure_random_bytes = get_secure_random_bytes_LDKKeysInterface_jcall,
+               .read_chan_signer = read_chan_signer_LDKKeysInterface_jcall,
+               .sign_invoice = sign_invoice_LDKKeysInterface_jcall,
+               .get_inbound_payment_key_material = get_inbound_payment_key_material_LDKKeysInterface_jcall,
+               .free = LDKKeysInterface_JCalls_free,
+       };
+       return ret;
 }
-
-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 _res_conv_10 = _res_vals[k];
-               LDKRouteHop _res_conv_10_conv;
-               _res_conv_10_conv.inner = (void*)(_res_conv_10 & (~1));
-               _res_conv_10_conv.is_owned = (_res_conv_10 & 1) || (_res_conv_10 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_10_conv);
-               _res_constr.data[k] = _res_conv_10_conv;
-       }
-       CVec_RouteHopZ_free(_res_constr);
+long  __attribute__((visibility("default"))) TS_LDKKeysInterface_new(/*TODO: JS Object Reference */void* o) {
+       LDKKeysInterface *res_ptr = MALLOC(sizeof(LDKKeysInterface), "LDKKeysInterface");
+       *res_ptr = LDKKeysInterface_init(o);
+       return (long)res_ptr;
 }
-
-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 _res_conv_12 = _res_vals[m];
-               LDKCVec_RouteHopZ _res_conv_12_constr;
-               _res_conv_12_constr.datalen = *((uint32_t*)_res_conv_12);
-               if (_res_conv_12_constr.datalen > 0)
-                       _res_conv_12_constr.data = MALLOC(_res_conv_12_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements");
-               else
-                       _res_conv_12_constr.data = NULL;
-               uint32_t* _res_conv_12_vals = (uint32_t*)(_res_conv_12 + 4);
-               for (size_t k = 0; k < _res_conv_12_constr.datalen; k++) {
-                       uint32_t _res_conv_12_conv_10 = _res_conv_12_vals[k];
-                       LDKRouteHop _res_conv_12_conv_10_conv;
-                       _res_conv_12_conv_10_conv.inner = (void*)(_res_conv_12_conv_10 & (~1));
-                       _res_conv_12_conv_10_conv.is_owned = (_res_conv_12_conv_10 & 1) || (_res_conv_12_conv_10 == 0);
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_12_conv_10_conv);
-                       _res_conv_12_constr.data[k] = _res_conv_12_conv_10_conv;
-               }
-               _res_constr.data[m] = _res_conv_12_constr;
-       }
-       CVec_CVec_RouteHopZZ_free(_res_constr);
+int8_tArray  __attribute__((visibility("default"))) TS_KeysInterface_get_node_secret(uint32_t this_arg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, (this_arg_conv->get_node_secret)(this_arg_conv->this_arg).bytes, 32);
+       return ret_arr;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = Route_clone(&o_conv);
-       LDKCResult_RouteDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteDecodeErrorZ), "LDKCResult_RouteDecodeErrorZ");
-       *ret_conv = CResult_RouteDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_KeysInterface_get_destination_script(uint32_t this_arg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
+       LDKCVec_u8Z ret_var = (this_arg_conv->get_destination_script)(this_arg_conv->this_arg);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(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 (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_KeysInterface_get_shutdown_scriptpubkey(uint32_t this_arg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
+       LDKShutdownScript ret_var = (this_arg_conv->get_shutdown_scriptpubkey)(this_arg_conv->this_arg);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_RouteDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_RouteDecodeErrorZ* o_conv = (LDKCResult_RouteDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_RouteDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_KeysInterface_get_channel_signer(uint32_t this_arg, jboolean inbound, int64_t channel_value_satoshis) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
+       LDKSign* ret_ret = MALLOC(sizeof(LDKSign), "LDKSign");
+       *ret_ret = (this_arg_conv->get_channel_signer)(this_arg_conv->this_arg, inbound, channel_value_satoshis);
+       return (uint64_t)ret_ret;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_RouteDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_RouteDecodeErrorZ _res_conv = *(LDKCResult_RouteDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_RouteDecodeErrorZ_free(_res_conv);
+int8_tArray  __attribute__((visibility("default"))) TS_KeysInterface_get_secure_random_bytes(uint32_t this_arg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, (this_arg_conv->get_secure_random_bytes)(this_arg_conv->this_arg).data, 32);
+       return ret_arr;
 }
 
-static inline uint64_t CResult_RouteDecodeErrorZ_clone_ptr(LDKCResult_RouteDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_RouteDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteDecodeErrorZ), "LDKCResult_RouteDecodeErrorZ");
-       *ret_conv = CResult_RouteDecodeErrorZ_clone(arg);
+uint32_t  __attribute__((visibility("default"))) TS_KeysInterface_read_chan_signer(uint32_t this_arg, int8_tArray reader) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
+       LDKu8slice reader_ref;
+       reader_ref.datalen = reader->arr_len;
+       reader_ref.data = reader->elems;
+       LDKCResult_SignDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SignDecodeErrorZ), "LDKCResult_SignDecodeErrorZ");
+       *ret_conv = (this_arg_conv->read_chan_signer)(this_arg_conv->this_arg, reader_ref);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_RouteDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_RouteDecodeErrorZ* arg_conv = (LDKCResult_RouteDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_RouteDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
-}
 
-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);
+uint32_t  __attribute__((visibility("default"))) TS_KeysInterface_sign_invoice(uint32_t this_arg, int8_tArray invoice_preimage) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
+       LDKCVec_u8Z invoice_preimage_ref;
+       invoice_preimage_ref.datalen = invoice_preimage->arr_len;
+       invoice_preimage_ref.data = MALLOC(invoice_preimage_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(invoice_preimage_ref.data, invoice_preimage->elems, invoice_preimage_ref.datalen);
+       LDKCResult_RecoverableSignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_RecoverableSignatureNoneZ), "LDKCResult_RecoverableSignatureNoneZ");
+       *ret_conv = (this_arg_conv->sign_invoice)(this_arg_conv->this_arg, invoice_preimage_ref);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteParametersDecodeErrorZ_ok(uint32_t o) {
-       LDKRouteParameters o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = RouteParameters_clone(&o_conv);
-       LDKCResult_RouteParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteParametersDecodeErrorZ), "LDKCResult_RouteParametersDecodeErrorZ");
-       *ret_conv = CResult_RouteParametersDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_KeysInterface_get_inbound_payment_key_material(uint32_t this_arg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKKeysInterface* this_arg_conv = (LDKKeysInterface*)this_arg_ptr;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, (this_arg_conv->get_inbound_payment_key_material)(this_arg_conv->this_arg).data, 32);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteParametersDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_RouteParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteParametersDecodeErrorZ), "LDKCResult_RouteParametersDecodeErrorZ");
-       *ret_conv = CResult_RouteParametersDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+typedef struct LDKFeeEstimator_JCalls {
+       atomic_size_t refcnt;
+       uint32_t get_est_sat_per_1000_weight_meth;
+} LDKFeeEstimator_JCalls;
+static void LDKFeeEstimator_JCalls_free(void* this_arg) {
+       LDKFeeEstimator_JCalls *j_calls = (LDKFeeEstimator_JCalls*) this_arg;
+       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
+               js_free_function_ptr(j_calls->get_est_sat_per_1000_weight_meth);
+               FREE(j_calls);
+       }
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_RouteParametersDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_RouteParametersDecodeErrorZ* o_conv = (LDKCResult_RouteParametersDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_RouteParametersDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+uint32_t get_est_sat_per_1000_weight_LDKFeeEstimator_jcall(const void* this_arg, LDKConfirmationTarget confirmation_target) {
+       LDKFeeEstimator_JCalls *j_calls = (LDKFeeEstimator_JCalls*) this_arg;
+       uint32_t confirmation_target_conv = LDKConfirmationTarget_to_js(confirmation_target);
+       return js_invoke_function_1(j_calls->get_est_sat_per_1000_weight_meth, (uint32_t)confirmation_target_conv);
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_RouteParametersDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_RouteParametersDecodeErrorZ _res_conv = *(LDKCResult_RouteParametersDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_RouteParametersDecodeErrorZ_free(_res_conv);
+static void LDKFeeEstimator_JCalls_cloned(LDKFeeEstimator* new_obj) {
+       LDKFeeEstimator_JCalls *j_calls = (LDKFeeEstimator_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
+static inline LDKFeeEstimator LDKFeeEstimator_init (/*TODO: JS Object Reference */void* o) {
+       LDKFeeEstimator_JCalls *calls = MALLOC(sizeof(LDKFeeEstimator_JCalls), "LDKFeeEstimator_JCalls");
+       atomic_init(&calls->refcnt, 1);
+       //TODO: Assign calls->o from o
 
-static inline uint64_t CResult_RouteParametersDecodeErrorZ_clone_ptr(LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_RouteParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteParametersDecodeErrorZ), "LDKCResult_RouteParametersDecodeErrorZ");
-       *ret_conv = CResult_RouteParametersDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+       LDKFeeEstimator ret = {
+               .this_arg = (void*) calls,
+               .get_est_sat_per_1000_weight = get_est_sat_per_1000_weight_LDKFeeEstimator_jcall,
+               .free = LDKFeeEstimator_JCalls_free,
+       };
+       return ret;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_RouteParametersDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_RouteParametersDecodeErrorZ* arg_conv = (LDKCResult_RouteParametersDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_RouteParametersDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+long  __attribute__((visibility("default"))) TS_LDKFeeEstimator_new(/*TODO: JS Object Reference */void* o) {
+       LDKFeeEstimator *res_ptr = MALLOC(sizeof(LDKFeeEstimator), "LDKFeeEstimator");
+       *res_ptr = LDKFeeEstimator_init(o);
+       return (long)res_ptr;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteParametersDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_RouteParametersDecodeErrorZ* orig_conv = (LDKCResult_RouteParametersDecodeErrorZ*)(orig & ~1);
-       LDKCResult_RouteParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteParametersDecodeErrorZ), "LDKCResult_RouteParametersDecodeErrorZ");
-       *ret_conv = CResult_RouteParametersDecodeErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+int32_t  __attribute__((visibility("default"))) TS_FeeEstimator_get_est_sat_per_1000_weight(uint32_t this_arg, uint32_t confirmation_target) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKFeeEstimator* this_arg_conv = (LDKFeeEstimator*)this_arg_ptr;
+       LDKConfirmationTarget confirmation_target_conv = LDKConfirmationTarget_from_js(confirmation_target);
+       int32_t ret_val = (this_arg_conv->get_est_sat_per_1000_weight)(this_arg_conv->this_arg, confirmation_target_conv);
+       return ret_val;
 }
 
-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 _res_conv_11 = _res_vals[l];
-               LDKRouteHint _res_conv_11_conv;
-               _res_conv_11_conv.inner = (void*)(_res_conv_11 & (~1));
-               _res_conv_11_conv.is_owned = (_res_conv_11 & 1) || (_res_conv_11 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_11_conv);
-               _res_constr.data[l] = _res_conv_11_conv;
+typedef struct LDKLogger_JCalls {
+       atomic_size_t refcnt;
+       uint32_t log_meth;
+} LDKLogger_JCalls;
+static void LDKLogger_JCalls_free(void* this_arg) {
+       LDKLogger_JCalls *j_calls = (LDKLogger_JCalls*) this_arg;
+       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
+               js_free_function_ptr(j_calls->log_meth);
+               FREE(j_calls);
        }
-       CVec_RouteHintZ_free(_res_constr);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_COption_u64Z_some(int64_t o) {
-       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
-       *ret_copy = COption_u64Z_some(o);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void log_LDKLogger_jcall(const void* this_arg, const LDKRecord * record) {
+       LDKLogger_JCalls *j_calls = (LDKLogger_JCalls*) this_arg;
+       LDKRecord record_var = *record;
+       uint64_t record_ref = 0;
+       record_var = Record_clone(record);
+       CHECK((((uint64_t)record_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&record_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(record_var);
+       record_ref = (uint64_t)record_var.inner;
+       if (record_var.is_owned) {
+               record_ref |= 1;
+       }
+       js_invoke_function_1(j_calls->log_meth, (uint32_t)record_ref);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_COption_u64Z_none() {
-       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
-       *ret_copy = COption_u64Z_none();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+static void LDKLogger_JCalls_cloned(LDKLogger* new_obj) {
+       LDKLogger_JCalls *j_calls = (LDKLogger_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
+static inline LDKLogger LDKLogger_init (/*TODO: JS Object Reference */void* o) {
+       LDKLogger_JCalls *calls = MALLOC(sizeof(LDKLogger_JCalls), "LDKLogger_JCalls");
+       atomic_init(&calls->refcnt, 1);
+       //TODO: Assign calls->o from o
 
-void  __attribute__((visibility("default"))) TS_COption_u64Z_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCOption_u64Z _res_conv = *(LDKCOption_u64Z*)(_res_ptr);
-       FREE((void*)_res);
-       COption_u64Z_free(_res_conv);
+       LDKLogger ret = {
+               .this_arg = (void*) calls,
+               .log = log_LDKLogger_jcall,
+               .free = LDKLogger_JCalls_free,
+       };
+       return ret;
 }
-
-static inline uint64_t COption_u64Z_clone_ptr(LDKCOption_u64Z *NONNULL_PTR arg) {
-       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
-       *ret_copy = COption_u64Z_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+long  __attribute__((visibility("default"))) TS_LDKLogger_new(/*TODO: JS Object Reference */void* o) {
+       LDKLogger *res_ptr = MALLOC(sizeof(LDKLogger), "LDKLogger");
+       *res_ptr = LDKLogger_init(o);
+       return (long)res_ptr;
 }
-int64_t  __attribute__((visibility("default"))) TS_COption_u64Z_clone_ptr(uint32_t arg) {
-       LDKCOption_u64Z* arg_conv = (LDKCOption_u64Z*)arg;
-       int64_t ret_val = COption_u64Z_clone_ptr(arg_conv);
-       return ret_val;
+static inline struct LDKThirtyTwoBytes C2Tuple_BlockHashChannelManagerZ_get_a(LDKC2Tuple_BlockHashChannelManagerZ *NONNULL_PTR owner){
+       return ThirtyTwoBytes_clone(&owner->a);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_COption_u64Z_clone(uint32_t orig) {
-       LDKCOption_u64Z* orig_conv = (LDKCOption_u64Z*)orig;
-       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
-       *ret_copy = COption_u64Z_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelManagerZ_get_a(uint32_t owner) {
+       LDKC2Tuple_BlockHashChannelManagerZ* owner_conv = (LDKC2Tuple_BlockHashChannelManagerZ*)(owner & ~1);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, C2Tuple_BlockHashChannelManagerZ_get_a(owner_conv).data, 32);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PayeeDecodeErrorZ_ok(uint32_t o) {
-       LDKPayee o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = Payee_clone(&o_conv);
-       LDKCResult_PayeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeeDecodeErrorZ), "LDKCResult_PayeeDecodeErrorZ");
-       *ret_conv = CResult_PayeeDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+static inline struct LDKChannelManager *C2Tuple_BlockHashChannelManagerZ_get_b(LDKC2Tuple_BlockHashChannelManagerZ *NONNULL_PTR owner){
+       return &owner->b;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PayeeDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_PayeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeeDecodeErrorZ), "LDKCResult_PayeeDecodeErrorZ");
-       *ret_conv = CResult_PayeeDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelManagerZ_get_b(uint32_t owner) {
+       LDKC2Tuple_BlockHashChannelManagerZ* owner_conv = (LDKC2Tuple_BlockHashChannelManagerZ*)(owner & ~1);
+       LDKChannelManager ret_var = *C2Tuple_BlockHashChannelManagerZ_get_b(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner & ~1;
+       return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_PayeeDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_PayeeDecodeErrorZ* o_conv = (LDKCResult_PayeeDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_PayeeDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+static inline struct LDKC2Tuple_BlockHashChannelManagerZ *CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_ok(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ *NONNULL_PTR owner){
+CHECK(owner->result_ok);
+       return &*owner->contents.result;
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_PayeeDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_PayeeDecodeErrorZ _res_conv = *(LDKCResult_PayeeDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_PayeeDecodeErrorZ_free(_res_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_ok(uint32_t owner) {
+       LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* owner_conv = (LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ*)(owner & ~1);
+       uint64_t ret_ret = (uint64_t)CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_ok(owner_conv);
+       return ret_ret;
 }
 
-static inline uint64_t CResult_PayeeDecodeErrorZ_clone_ptr(LDKCResult_PayeeDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_PayeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeeDecodeErrorZ), "LDKCResult_PayeeDecodeErrorZ");
-       *ret_conv = CResult_PayeeDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline struct LDKDecodeError CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_err(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ *NONNULL_PTR owner){
+CHECK(!owner->result_ok);
+       return DecodeError_clone(&*owner->contents.err);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_PayeeDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_PayeeDecodeErrorZ* arg_conv = (LDKCResult_PayeeDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_PayeeDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_err(uint32_t owner) {
+       LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* owner_conv = (LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ*)(owner & ~1);
+       LDKDecodeError ret_var = CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_err(owner_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PayeeDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_PayeeDecodeErrorZ* orig_conv = (LDKCResult_PayeeDecodeErrorZ*)(orig & ~1);
-       LDKCResult_PayeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeeDecodeErrorZ), "LDKCResult_PayeeDecodeErrorZ");
-       *ret_conv = CResult_PayeeDecodeErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+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_function_ptr(j_calls->get_and_clear_pending_msg_events_meth);
+               FREE(j_calls);
+       }
 }
-
-void  __attribute__((visibility("default"))) TS_CVec_RouteHintHopZ_free(uint32_tArray _res) {
-       LDKCVec_RouteHintHopZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKRouteHintHop), "LDKCVec_RouteHintHopZ Elements");
+LDKCVec_MessageSendEventZ get_and_clear_pending_msg_events_LDKMessageSendEventsProvider_jcall(const void* this_arg) {
+       LDKMessageSendEventsProvider_JCalls *j_calls = (LDKMessageSendEventsProvider_JCalls*) this_arg;
+       uint32_tArray ret = (uint32_tArray)js_invoke_function_0(j_calls->get_and_clear_pending_msg_events_meth);
+       LDKCVec_MessageSendEventZ ret_constr;
+       ret_constr.datalen = ret->arr_len;
+       if (ret_constr.datalen > 0)
+               ret_constr.data = MALLOC(ret_constr.datalen * sizeof(LDKMessageSendEvent), "LDKCVec_MessageSendEventZ Elements");
        else
-               _res_constr.data = NULL;
-       uint32_t* _res_vals = (uint32_t*)(_res + 4);
-       for (size_t o = 0; o < _res_constr.datalen; o++) {
-               uint32_t _res_conv_14 = _res_vals[o];
-               LDKRouteHintHop _res_conv_14_conv;
-               _res_conv_14_conv.inner = (void*)(_res_conv_14 & (~1));
-               _res_conv_14_conv.is_owned = (_res_conv_14 & 1) || (_res_conv_14 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_14_conv);
-               _res_constr.data[o] = _res_conv_14_conv;
+               ret_constr.data = NULL;
+       uint32_t* ret_vals = ret->elems;
+       for (size_t s = 0; s < ret_constr.datalen; s++) {
+               uint32_t ret_conv_18 = ret_vals[s];
+               void* ret_conv_18_ptr = (void*)(((uint64_t)ret_conv_18) & ~1);
+               CHECK_ACCESS(ret_conv_18_ptr);
+               LDKMessageSendEvent ret_conv_18_conv = *(LDKMessageSendEvent*)(ret_conv_18_ptr);
+               FREE((void*)ret_conv_18);
+               ret_constr.data[s] = ret_conv_18_conv;
        }
-       CVec_RouteHintHopZ_free(_res_constr);
+       return ret_constr;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintDecodeErrorZ_ok(uint32_t o) {
-       LDKRouteHint o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = RouteHint_clone(&o_conv);
-       LDKCResult_RouteHintDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintDecodeErrorZ), "LDKCResult_RouteHintDecodeErrorZ");
-       *ret_conv = CResult_RouteHintDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+static void LDKMessageSendEventsProvider_JCalls_cloned(LDKMessageSendEventsProvider* new_obj) {
+       LDKMessageSendEventsProvider_JCalls *j_calls = (LDKMessageSendEventsProvider_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
+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
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_RouteHintDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintDecodeErrorZ), "LDKCResult_RouteHintDecodeErrorZ");
-       *ret_conv = CResult_RouteHintDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+       LDKMessageSendEventsProvider ret = {
+               .this_arg = (void*) calls,
+               .get_and_clear_pending_msg_events = get_and_clear_pending_msg_events_LDKMessageSendEventsProvider_jcall,
+               .free = LDKMessageSendEventsProvider_JCalls_free,
+       };
+       return ret;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_RouteHintDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_RouteHintDecodeErrorZ* o_conv = (LDKCResult_RouteHintDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_RouteHintDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+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) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKMessageSendEventsProvider* this_arg_conv = (LDKMessageSendEventsProvider*)this_arg_ptr;
+       LDKCVec_MessageSendEventZ ret_var = (this_arg_conv->get_and_clear_pending_msg_events)(this_arg_conv->this_arg);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t s = 0; s < ret_var.datalen; s++) {
+               LDKMessageSendEvent *ret_conv_18_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+               *ret_conv_18_copy = ret_var.data[s];
+               uint64_t ret_conv_18_ref = (uint64_t)ret_conv_18_copy;
+               ret_arr_ptr[s] = ret_conv_18_ref;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_RouteHintDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_RouteHintDecodeErrorZ _res_conv = *(LDKCResult_RouteHintDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_RouteHintDecodeErrorZ_free(_res_conv);
+typedef struct LDKEventHandler_JCalls {
+       atomic_size_t refcnt;
+       uint32_t handle_event_meth;
+} LDKEventHandler_JCalls;
+static void LDKEventHandler_JCalls_free(void* this_arg) {
+       LDKEventHandler_JCalls *j_calls = (LDKEventHandler_JCalls*) this_arg;
+       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
+               js_free_function_ptr(j_calls->handle_event_meth);
+               FREE(j_calls);
+       }
 }
-
-static inline uint64_t CResult_RouteHintDecodeErrorZ_clone_ptr(LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_RouteHintDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintDecodeErrorZ), "LDKCResult_RouteHintDecodeErrorZ");
-       *ret_conv = CResult_RouteHintDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+void handle_event_LDKEventHandler_jcall(const void* this_arg, const LDKEvent * event) {
+       LDKEventHandler_JCalls *j_calls = (LDKEventHandler_JCalls*) this_arg;
+       LDKEvent *ret_event = MALLOC(sizeof(LDKEvent), "LDKEvent ret conversion");
+       *ret_event = Event_clone(event);
+       js_invoke_function_1(j_calls->handle_event_meth, (uint32_t)(uint64_t)ret_event);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_RouteHintDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_RouteHintDecodeErrorZ* arg_conv = (LDKCResult_RouteHintDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_RouteHintDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+static void LDKEventHandler_JCalls_cloned(LDKEventHandler* new_obj) {
+       LDKEventHandler_JCalls *j_calls = (LDKEventHandler_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
+static inline LDKEventHandler LDKEventHandler_init (/*TODO: JS Object Reference */void* o) {
+       LDKEventHandler_JCalls *calls = MALLOC(sizeof(LDKEventHandler_JCalls), "LDKEventHandler_JCalls");
+       atomic_init(&calls->refcnt, 1);
+       //TODO: Assign calls->o from o
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_RouteHintDecodeErrorZ* orig_conv = (LDKCResult_RouteHintDecodeErrorZ*)(orig & ~1);
-       LDKCResult_RouteHintDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintDecodeErrorZ), "LDKCResult_RouteHintDecodeErrorZ");
-       *ret_conv = CResult_RouteHintDecodeErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+       LDKEventHandler ret = {
+               .this_arg = (void*) calls,
+               .handle_event = handle_event_LDKEventHandler_jcall,
+               .free = LDKEventHandler_JCalls_free,
+       };
+       return ret;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintHopDecodeErrorZ_ok(uint32_t o) {
-       LDKRouteHintHop o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = RouteHintHop_clone(&o_conv);
-       LDKCResult_RouteHintHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintHopDecodeErrorZ), "LDKCResult_RouteHintHopDecodeErrorZ");
-       *ret_conv = CResult_RouteHintHopDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+long  __attribute__((visibility("default"))) TS_LDKEventHandler_new(/*TODO: JS Object Reference */void* o) {
+       LDKEventHandler *res_ptr = MALLOC(sizeof(LDKEventHandler), "LDKEventHandler");
+       *res_ptr = LDKEventHandler_init(o);
+       return (long)res_ptr;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintHopDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_RouteHintHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintHopDecodeErrorZ), "LDKCResult_RouteHintHopDecodeErrorZ");
-       *ret_conv = CResult_RouteHintHopDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_EventHandler_handle_event(uint32_t this_arg, uint32_t event) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKEventHandler* this_arg_conv = (LDKEventHandler*)this_arg_ptr;
+       LDKEvent* event_conv = (LDKEvent*)event;
+       (this_arg_conv->handle_event)(this_arg_conv->this_arg, event_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_RouteHintHopDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_RouteHintHopDecodeErrorZ* o_conv = (LDKCResult_RouteHintHopDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_RouteHintHopDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+typedef struct LDKEventsProvider_JCalls {
+       atomic_size_t refcnt;
+       uint32_t process_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_function_ptr(j_calls->process_pending_events_meth);
+               FREE(j_calls);
+       }
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_RouteHintHopDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_RouteHintHopDecodeErrorZ _res_conv = *(LDKCResult_RouteHintHopDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_RouteHintHopDecodeErrorZ_free(_res_conv);
+void process_pending_events_LDKEventsProvider_jcall(const void* this_arg, LDKEventHandler handler) {
+       LDKEventsProvider_JCalls *j_calls = (LDKEventsProvider_JCalls*) this_arg;
+       LDKEventHandler* handler_ret = MALLOC(sizeof(LDKEventHandler), "LDKEventHandler");
+       *handler_ret = handler;
+       js_invoke_function_1(j_calls->process_pending_events_meth, (uint32_t)(uint64_t)handler_ret);
+}
+static void LDKEventsProvider_JCalls_cloned(LDKEventsProvider* new_obj) {
+       LDKEventsProvider_JCalls *j_calls = (LDKEventsProvider_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
+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
 
-static inline uint64_t CResult_RouteHintHopDecodeErrorZ_clone_ptr(LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_RouteHintHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintHopDecodeErrorZ), "LDKCResult_RouteHintHopDecodeErrorZ");
-       *ret_conv = CResult_RouteHintHopDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+       LDKEventsProvider ret = {
+               .this_arg = (void*) calls,
+               .process_pending_events = process_pending_events_LDKEventsProvider_jcall,
+               .free = LDKEventsProvider_JCalls_free,
+       };
+       return ret;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_RouteHintHopDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_RouteHintHopDecodeErrorZ* arg_conv = (LDKCResult_RouteHintHopDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_RouteHintHopDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+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_t  __attribute__((visibility("default"))) TS_CResult_RouteHintHopDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_RouteHintHopDecodeErrorZ* orig_conv = (LDKCResult_RouteHintHopDecodeErrorZ*)(orig & ~1);
-       LDKCResult_RouteHintHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintHopDecodeErrorZ), "LDKCResult_RouteHintHopDecodeErrorZ");
-       *ret_conv = CResult_RouteHintHopDecodeErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_EventsProvider_process_pending_events(uint32_t this_arg, uint32_t handler) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKEventsProvider* this_arg_conv = (LDKEventsProvider*)this_arg_ptr;
+       void* handler_ptr = (void*)(((uint64_t)handler) & ~1);
+       CHECK_ACCESS(handler_ptr);
+       LDKEventHandler handler_conv = *(LDKEventHandler*)(handler_ptr);
+       (this_arg_conv->process_pending_events)(this_arg_conv->this_arg, handler_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 _res_conv_16 = _res_vals[q];
-               LDKChannelDetails _res_conv_16_conv;
-               _res_conv_16_conv.inner = (void*)(_res_conv_16 & (~1));
-               _res_conv_16_conv.is_owned = (_res_conv_16 & 1) || (_res_conv_16 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_16_conv);
-               _res_constr.data[q] = _res_conv_16_conv;
+typedef struct LDKListen_JCalls {
+       atomic_size_t refcnt;
+       uint32_t block_connected_meth;
+       uint32_t block_disconnected_meth;
+} LDKListen_JCalls;
+static void LDKListen_JCalls_free(void* this_arg) {
+       LDKListen_JCalls *j_calls = (LDKListen_JCalls*) this_arg;
+       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
+               js_free_function_ptr(j_calls->block_connected_meth);
+               js_free_function_ptr(j_calls->block_disconnected_meth);
+               FREE(j_calls);
        }
-       CVec_ChannelDetailsZ_free(_res_constr);
 }
-
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = Route_clone(&o_conv);
-       LDKCResult_RouteLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteLightningErrorZ), "LDKCResult_RouteLightningErrorZ");
-       *ret_conv = CResult_RouteLightningErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+void block_connected_LDKListen_jcall(const void* this_arg, LDKu8slice block, uint32_t height) {
+       LDKListen_JCalls *j_calls = (LDKListen_JCalls*) this_arg;
+       LDKu8slice block_var = block;
+       int8_tArray block_arr = init_int8_tArray(block_var.datalen);
+       memcpy(block_arr->elems, block_var.data, block_var.datalen);
+       js_invoke_function_2(j_calls->block_connected_meth, (uint32_t)block_arr, (uint32_t)height);
 }
-
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(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 (uint64_t)ret_conv;
+void block_disconnected_LDKListen_jcall(const void* this_arg, const uint8_t (* header)[80], uint32_t height) {
+       LDKListen_JCalls *j_calls = (LDKListen_JCalls*) this_arg;
+       int8_tArray header_arr = init_int8_tArray(80);
+       memcpy(header_arr->elems, *header, 80);
+       js_invoke_function_2(j_calls->block_disconnected_meth, (uint32_t)header_arr, (uint32_t)height);
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_RouteLightningErrorZ_is_ok(uint32_t o) {
-       LDKCResult_RouteLightningErrorZ* o_conv = (LDKCResult_RouteLightningErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_RouteLightningErrorZ_is_ok(o_conv);
-       return ret_val;
+static void LDKListen_JCalls_cloned(LDKListen* new_obj) {
+       LDKListen_JCalls *j_calls = (LDKListen_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
+static inline LDKListen LDKListen_init (/*TODO: JS Object Reference */void* o) {
+       LDKListen_JCalls *calls = MALLOC(sizeof(LDKListen_JCalls), "LDKListen_JCalls");
+       atomic_init(&calls->refcnt, 1);
+       //TODO: Assign calls->o from o
 
-void  __attribute__((visibility("default"))) TS_CResult_RouteLightningErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_RouteLightningErrorZ _res_conv = *(LDKCResult_RouteLightningErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_RouteLightningErrorZ_free(_res_conv);
+       LDKListen ret = {
+               .this_arg = (void*) calls,
+               .block_connected = block_connected_LDKListen_jcall,
+               .block_disconnected = block_disconnected_LDKListen_jcall,
+               .free = LDKListen_JCalls_free,
+       };
+       return ret;
 }
-
-static inline uint64_t CResult_RouteLightningErrorZ_clone_ptr(LDKCResult_RouteLightningErrorZ *NONNULL_PTR arg) {
-       LDKCResult_RouteLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteLightningErrorZ), "LDKCResult_RouteLightningErrorZ");
-       *ret_conv = CResult_RouteLightningErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+long  __attribute__((visibility("default"))) TS_LDKListen_new(/*TODO: JS Object Reference */void* o) {
+       LDKListen *res_ptr = MALLOC(sizeof(LDKListen), "LDKListen");
+       *res_ptr = LDKListen_init(o);
+       return (long)res_ptr;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_RouteLightningErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_RouteLightningErrorZ* arg_conv = (LDKCResult_RouteLightningErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_RouteLightningErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_Listen_block_connected(uint32_t this_arg, int8_tArray block, int32_t height) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKListen* this_arg_conv = (LDKListen*)this_arg_ptr;
+       LDKu8slice block_ref;
+       block_ref.datalen = block->arr_len;
+       block_ref.data = block->elems;
+       (this_arg_conv->block_connected)(this_arg_conv->this_arg, block_ref, height);
 }
 
-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 (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_Listen_block_disconnected(uint32_t this_arg, int8_tArray header, int32_t height) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKListen* this_arg_conv = (LDKListen*)this_arg_ptr;
+       unsigned char header_arr[80];
+       CHECK(header->arr_len == 80);
+       memcpy(header_arr, header->elems, 80);
+       unsigned char (*header_ref)[80] = &header_arr;
+       (this_arg_conv->block_disconnected)(this_arg_conv->this_arg, header_ref, height);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_TxOutAccessErrorZ_ok(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKTxOut o_conv = *(LDKTxOut*)(o_ptr);
-       o_conv = TxOut_clone((LDKTxOut*)(((uint64_t)o) & ~1));
-       LDKCResult_TxOutAccessErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxOutAccessErrorZ), "LDKCResult_TxOutAccessErrorZ");
-       *ret_conv = CResult_TxOutAccessErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+typedef struct LDKConfirm_JCalls {
+       atomic_size_t refcnt;
+       uint32_t transactions_confirmed_meth;
+       uint32_t transaction_unconfirmed_meth;
+       uint32_t best_block_updated_meth;
+       uint32_t get_relevant_txids_meth;
+} LDKConfirm_JCalls;
+static void LDKConfirm_JCalls_free(void* this_arg) {
+       LDKConfirm_JCalls *j_calls = (LDKConfirm_JCalls*) this_arg;
+       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
+               js_free_function_ptr(j_calls->transactions_confirmed_meth);
+               js_free_function_ptr(j_calls->transaction_unconfirmed_meth);
+               js_free_function_ptr(j_calls->best_block_updated_meth);
+               js_free_function_ptr(j_calls->get_relevant_txids_meth);
+               FREE(j_calls);
+       }
 }
-
-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 (uint64_t)ret_conv;
+void transactions_confirmed_LDKConfirm_jcall(const void* this_arg, const uint8_t (* header)[80], LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height) {
+       LDKConfirm_JCalls *j_calls = (LDKConfirm_JCalls*) this_arg;
+       int8_tArray header_arr = init_int8_tArray(80);
+       memcpy(header_arr->elems, *header, 80);
+       LDKCVec_C2Tuple_usizeTransactionZZ txdata_var = txdata;
+       uint32_tArray txdata_arr = NULL;
+       txdata_arr = init_uint32_tArray(txdata_var.datalen);
+       uint32_t *txdata_arr_ptr = (uint32_t*)(txdata_arr + 4);
+       for (size_t c = 0; c < txdata_var.datalen; c++) {
+               LDKC2Tuple_usizeTransactionZ* txdata_conv_28_conv = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ), "LDKC2Tuple_usizeTransactionZ");
+               *txdata_conv_28_conv = txdata_var.data[c];
+               txdata_arr_ptr[c] = ((uint64_t)txdata_conv_28_conv);
+       }
+       
+       FREE(txdata_var.data);
+       js_invoke_function_3(j_calls->transactions_confirmed_meth, (uint32_t)header_arr, (uint32_t)txdata_arr, (uint32_t)height);
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_TxOutAccessErrorZ_is_ok(uint32_t o) {
-       LDKCResult_TxOutAccessErrorZ* o_conv = (LDKCResult_TxOutAccessErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_TxOutAccessErrorZ_is_ok(o_conv);
-       return ret_val;
+void transaction_unconfirmed_LDKConfirm_jcall(const void* this_arg, const uint8_t (* txid)[32]) {
+       LDKConfirm_JCalls *j_calls = (LDKConfirm_JCalls*) this_arg;
+       int8_tArray txid_arr = init_int8_tArray(32);
+       memcpy(txid_arr->elems, *txid, 32);
+       js_invoke_function_1(j_calls->transaction_unconfirmed_meth, (uint32_t)txid_arr);
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_TxOutAccessErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_TxOutAccessErrorZ _res_conv = *(LDKCResult_TxOutAccessErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_TxOutAccessErrorZ_free(_res_conv);
+void best_block_updated_LDKConfirm_jcall(const void* this_arg, const uint8_t (* header)[80], uint32_t height) {
+       LDKConfirm_JCalls *j_calls = (LDKConfirm_JCalls*) this_arg;
+       int8_tArray header_arr = init_int8_tArray(80);
+       memcpy(header_arr->elems, *header, 80);
+       js_invoke_function_2(j_calls->best_block_updated_meth, (uint32_t)header_arr, (uint32_t)height);
 }
-
-static inline uint64_t CResult_TxOutAccessErrorZ_clone_ptr(LDKCResult_TxOutAccessErrorZ *NONNULL_PTR arg) {
-       LDKCResult_TxOutAccessErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxOutAccessErrorZ), "LDKCResult_TxOutAccessErrorZ");
-       *ret_conv = CResult_TxOutAccessErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+LDKCVec_TxidZ get_relevant_txids_LDKConfirm_jcall(const void* this_arg) {
+       LDKConfirm_JCalls *j_calls = (LDKConfirm_JCalls*) this_arg;
+       ptrArray ret = (ptrArray)js_invoke_function_0(j_calls->get_relevant_txids_meth);
+       LDKCVec_TxidZ ret_constr;
+       ret_constr.datalen = ret->arr_len;
+       if (ret_constr.datalen > 0)
+               ret_constr.data = MALLOC(ret_constr.datalen * sizeof(LDKThirtyTwoBytes), "LDKCVec_TxidZ Elements");
+       else
+               ret_constr.data = NULL;
+       int8_tArray* ret_vals = (void*) ret->elems;
+       for (size_t m = 0; m < ret_constr.datalen; m++) {
+               int8_tArray ret_conv_12 = ret_vals[m];
+               LDKThirtyTwoBytes ret_conv_12_ref;
+               CHECK(ret_conv_12->arr_len == 32);
+               memcpy(ret_conv_12_ref.data, ret_conv_12->elems, 32);
+               ret_constr.data[m] = ret_conv_12_ref;
+       }
+       return ret_constr;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_TxOutAccessErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_TxOutAccessErrorZ* arg_conv = (LDKCResult_TxOutAccessErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_TxOutAccessErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+static void LDKConfirm_JCalls_cloned(LDKConfirm* new_obj) {
+       LDKConfirm_JCalls *j_calls = (LDKConfirm_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
+static inline LDKConfirm LDKConfirm_init (/*TODO: JS Object Reference */void* o) {
+       LDKConfirm_JCalls *calls = MALLOC(sizeof(LDKConfirm_JCalls), "LDKConfirm_JCalls");
+       atomic_init(&calls->refcnt, 1);
+       //TODO: Assign calls->o from o
 
-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 (uint64_t)ret_conv;
+       LDKConfirm ret = {
+               .this_arg = (void*) calls,
+               .transactions_confirmed = transactions_confirmed_LDKConfirm_jcall,
+               .transaction_unconfirmed = transaction_unconfirmed_LDKConfirm_jcall,
+               .best_block_updated = best_block_updated_LDKConfirm_jcall,
+               .get_relevant_txids = get_relevant_txids_LDKConfirm_jcall,
+               .free = LDKConfirm_JCalls_free,
+       };
+       return ret;
 }
-
-static inline uint64_t C2Tuple_usizeTransactionZ_clone_ptr(LDKC2Tuple_usizeTransactionZ *NONNULL_PTR arg) {
-       LDKC2Tuple_usizeTransactionZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ), "LDKC2Tuple_usizeTransactionZ");
-       *ret_conv = C2Tuple_usizeTransactionZ_clone(arg);
-       return ((uint64_t)ret_conv);
+long  __attribute__((visibility("default"))) TS_LDKConfirm_new(/*TODO: JS Object Reference */void* o) {
+       LDKConfirm *res_ptr = MALLOC(sizeof(LDKConfirm), "LDKConfirm");
+       *res_ptr = LDKConfirm_init(o);
+       return (long)res_ptr;
 }
-int64_t  __attribute__((visibility("default"))) TS_C2Tuple_usizeTransactionZ_clone_ptr(uint32_t arg) {
-       LDKC2Tuple_usizeTransactionZ* arg_conv = (LDKC2Tuple_usizeTransactionZ*)(arg & ~1);
-       int64_t ret_val = C2Tuple_usizeTransactionZ_clone_ptr(arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_Confirm_transactions_confirmed(uint32_t this_arg, int8_tArray header, uint32_tArray txdata, int32_t height) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKConfirm* this_arg_conv = (LDKConfirm*)this_arg_ptr;
+       unsigned char header_arr[80];
+       CHECK(header->arr_len == 80);
+       memcpy(header_arr, header->elems, 80);
+       unsigned char (*header_ref)[80] = &header_arr;
+       LDKCVec_C2Tuple_usizeTransactionZZ txdata_constr;
+       txdata_constr.datalen = txdata->arr_len;
+       if (txdata_constr.datalen > 0)
+               txdata_constr.data = MALLOC(txdata_constr.datalen * sizeof(LDKC2Tuple_usizeTransactionZ), "LDKCVec_C2Tuple_usizeTransactionZZ Elements");
+       else
+               txdata_constr.data = NULL;
+       uint32_t* txdata_vals = txdata->elems;
+       for (size_t c = 0; c < txdata_constr.datalen; c++) {
+               uint32_t txdata_conv_28 = txdata_vals[c];
+               void* txdata_conv_28_ptr = (void*)(((uint64_t)txdata_conv_28) & ~1);
+               CHECK_ACCESS(txdata_conv_28_ptr);
+               LDKC2Tuple_usizeTransactionZ txdata_conv_28_conv = *(LDKC2Tuple_usizeTransactionZ*)(txdata_conv_28_ptr);
+               txdata_conv_28_conv = C2Tuple_usizeTransactionZ_clone((LDKC2Tuple_usizeTransactionZ*)(((uint64_t)txdata_conv_28) & ~1));
+               txdata_constr.data[c] = txdata_conv_28_conv;
+       }
+       (this_arg_conv->transactions_confirmed)(this_arg_conv->this_arg, header_ref, txdata_constr, height);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_usizeTransactionZ_clone(uint32_t orig) {
-       LDKC2Tuple_usizeTransactionZ* orig_conv = (LDKC2Tuple_usizeTransactionZ*)(orig & ~1);
-       LDKC2Tuple_usizeTransactionZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ), "LDKC2Tuple_usizeTransactionZ");
-       *ret_conv = C2Tuple_usizeTransactionZ_clone(orig_conv);
-       return ((uint64_t)ret_conv);
+void  __attribute__((visibility("default"))) TS_Confirm_transaction_unconfirmed(uint32_t this_arg, int8_tArray txid) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKConfirm* this_arg_conv = (LDKConfirm*)this_arg_ptr;
+       unsigned char txid_arr[32];
+       CHECK(txid->arr_len == 32);
+       memcpy(txid_arr, txid->elems, 32);
+       unsigned char (*txid_ref)[32] = &txid_arr;
+       (this_arg_conv->transaction_unconfirmed)(this_arg_conv->this_arg, txid_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_usizeTransactionZ_new(int64_t a, int8_tArray b) {
-       LDKTransaction b_ref;
-       b_ref.datalen = *((uint32_t*)b);
-       b_ref.data = MALLOC(b_ref.datalen, "LDKTransaction Bytes");
-       memcpy(b_ref.data, (uint8_t*)(b + 4), b_ref.datalen);
-       b_ref.data_is_owned = true;
-       LDKC2Tuple_usizeTransactionZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ), "LDKC2Tuple_usizeTransactionZ");
-       *ret_conv = C2Tuple_usizeTransactionZ_new(a, b_ref);
-       return ((uint64_t)ret_conv);
+void  __attribute__((visibility("default"))) TS_Confirm_best_block_updated(uint32_t this_arg, int8_tArray header, int32_t height) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKConfirm* this_arg_conv = (LDKConfirm*)this_arg_ptr;
+       unsigned char header_arr[80];
+       CHECK(header->arr_len == 80);
+       memcpy(header_arr, header->elems, 80);
+       unsigned char (*header_ref)[80] = &header_arr;
+       (this_arg_conv->best_block_updated)(this_arg_conv->this_arg, header_ref, height);
 }
 
-void  __attribute__((visibility("default"))) TS_C2Tuple_usizeTransactionZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKC2Tuple_usizeTransactionZ _res_conv = *(LDKC2Tuple_usizeTransactionZ*)(_res_ptr);
-       FREE((void*)_res);
-       C2Tuple_usizeTransactionZ_free(_res_conv);
+ptrArray  __attribute__((visibility("default"))) TS_Confirm_get_relevant_txids(uint32_t this_arg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKConfirm* this_arg_conv = (LDKConfirm*)this_arg_ptr;
+       LDKCVec_TxidZ ret_var = (this_arg_conv->get_relevant_txids)(this_arg_conv->this_arg);
+       ptrArray ret_arr = NULL;
+       ret_arr = init_ptrArray(ret_var.datalen);
+       int8_tArray *ret_arr_ptr = (int8_tArray*)(ret_arr + 4);
+       for (size_t m = 0; m < ret_var.datalen; m++) {
+               int8_tArray ret_conv_12_arr = init_int8_tArray(32);
+               memcpy(ret_conv_12_arr->elems, ret_var.data[m].data, 32);
+               ret_arr_ptr[m] = ret_conv_12_arr;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_CVec_C2Tuple_usizeTransactionZZ_free(uint32_tArray _res) {
-       LDKCVec_C2Tuple_usizeTransactionZZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC2Tuple_usizeTransactionZ), "LDKCVec_C2Tuple_usizeTransactionZZ Elements");
-       else
-               _res_constr.data = NULL;
-       uint32_t* _res_vals = (uint32_t*)(_res + 4);
-       for (size_t c = 0; c < _res_constr.datalen; c++) {
-               uint32_t _res_conv_28 = _res_vals[c];
-               void* _res_conv_28_ptr = (void*)(((uint64_t)_res_conv_28) & ~1);
-               CHECK_ACCESS(_res_conv_28_ptr);
-               LDKC2Tuple_usizeTransactionZ _res_conv_28_conv = *(LDKC2Tuple_usizeTransactionZ*)(_res_conv_28_ptr);
-               FREE((void*)_res_conv_28);
-               _res_constr.data[c] = _res_conv_28_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_function_ptr(j_calls->persist_new_channel_meth);
+               js_free_function_ptr(j_calls->update_persisted_channel_meth);
+               FREE(j_calls);
+       }
+}
+LDKCResult_NoneChannelMonitorUpdateErrZ persist_new_channel_LDKPersist_jcall(const void* this_arg, LDKOutPoint channel_id, const LDKChannelMonitor * data, LDKMonitorUpdateId update_id) {
+       LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) this_arg;
+       LDKOutPoint channel_id_var = channel_id;
+       uint64_t channel_id_ref = 0;
+       CHECK((((uint64_t)channel_id_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&channel_id_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_id_var);
+       channel_id_ref = (uint64_t)channel_id_var.inner;
+       if (channel_id_var.is_owned) {
+               channel_id_ref |= 1;
+       }
+       LDKChannelMonitor data_var = *data;
+       uint64_t data_ref = 0;
+       data_var = ChannelMonitor_clone(data);
+       CHECK((((uint64_t)data_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&data_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(data_var);
+       data_ref = (uint64_t)data_var.inner;
+       if (data_var.is_owned) {
+               data_ref |= 1;
+       }
+       LDKMonitorUpdateId update_id_var = update_id;
+       uint64_t update_id_ref = 0;
+       CHECK((((uint64_t)update_id_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&update_id_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_id_var);
+       update_id_ref = (uint64_t)update_id_var.inner;
+       if (update_id_var.is_owned) {
+               update_id_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_3(j_calls->persist_new_channel_meth, (uint32_t)channel_id_ref, (uint32_t)data_ref, (uint32_t)update_id_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_NoneChannelMonitorUpdateErrZ ret_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
+}
+LDKCResult_NoneChannelMonitorUpdateErrZ update_persisted_channel_LDKPersist_jcall(const void* this_arg, LDKOutPoint channel_id, const LDKChannelMonitorUpdate * update, const LDKChannelMonitor * data, LDKMonitorUpdateId update_id) {
+       LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) this_arg;
+       LDKOutPoint channel_id_var = channel_id;
+       uint64_t channel_id_ref = 0;
+       CHECK((((uint64_t)channel_id_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&channel_id_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_id_var);
+       channel_id_ref = (uint64_t)channel_id_var.inner;
+       if (channel_id_var.is_owned) {
+               channel_id_ref |= 1;
+       }
+       LDKChannelMonitorUpdate update_var = *update;
+       uint64_t update_ref = 0;
+       if ((uint64_t)update_var.inner > 4096) {
+               update_var = ChannelMonitorUpdate_clone(update);
+               CHECK((((uint64_t)update_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&update_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_var);
+               update_ref = (uint64_t)update_var.inner;
+               if (update_var.is_owned) {
+                       update_ref |= 1;
+               }
+       }
+       LDKChannelMonitor data_var = *data;
+       uint64_t data_ref = 0;
+       data_var = ChannelMonitor_clone(data);
+       CHECK((((uint64_t)data_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&data_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(data_var);
+       data_ref = (uint64_t)data_var.inner;
+       if (data_var.is_owned) {
+               data_ref |= 1;
+       }
+       LDKMonitorUpdateId update_id_var = update_id;
+       uint64_t update_id_ref = 0;
+       CHECK((((uint64_t)update_id_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&update_id_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_id_var);
+       update_id_ref = (uint64_t)update_id_var.inner;
+       if (update_id_var.is_owned) {
+               update_id_ref |= 1;
        }
-       CVec_C2Tuple_usizeTransactionZZ_free(_res_constr);
+       uint32_t ret = js_invoke_function_4(j_calls->update_persisted_channel_meth, (uint32_t)channel_id_ref, (uint32_t)update_ref, (uint32_t)data_ref, (uint32_t)update_id_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_NoneChannelMonitorUpdateErrZ ret_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
 }
-
-void  __attribute__((visibility("default"))) TS_CVec_TxidZ_free(ptrArray _res) {
-       LDKCVec_TxidZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKThirtyTwoBytes), "LDKCVec_TxidZ 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 _res_conv_12 = _res_vals[m];
-               LDKThirtyTwoBytes _res_conv_12_ref;
-               CHECK(*((uint32_t*)_res_conv_12) == 32);
-               memcpy(_res_conv_12_ref.data, (uint8_t*)(_res_conv_12 + 4), 32);
-               _res_constr.data[m] = _res_conv_12_ref;
-       }
-       CVec_TxidZ_free(_res_constr);
+static void LDKPersist_JCalls_cloned(LDKPersist* new_obj) {
+       LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
+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
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneChannelMonitorUpdateErrZ_ok() {
+       LDKPersist ret = {
+               .this_arg = (void*) calls,
+               .persist_new_channel = persist_new_channel_LDKPersist_jcall,
+               .update_persisted_channel = update_persisted_channel_LDKPersist_jcall,
+               .free = LDKPersist_JCalls_free,
+       };
+       return ret;
+}
+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_Persist_persist_new_channel(uint32_t this_arg, uint32_t channel_id, uint32_t data, uint32_t update_id) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKPersist* this_arg_conv = (LDKPersist*)this_arg_ptr;
+       LDKOutPoint channel_id_conv;
+       channel_id_conv.inner = (void*)(channel_id & (~1));
+       channel_id_conv.is_owned = (channel_id & 1) || (channel_id == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_id_conv);
+       channel_id_conv = OutPoint_clone(&channel_id_conv);
+       LDKChannelMonitor data_conv;
+       data_conv.inner = (void*)(data & (~1));
+       data_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(data_conv);
+       LDKMonitorUpdateId update_id_conv;
+       update_id_conv.inner = (void*)(update_id & (~1));
+       update_id_conv.is_owned = (update_id & 1) || (update_id == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_id_conv);
+       update_id_conv = MonitorUpdateId_clone(&update_id_conv);
        LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ");
-       *ret_conv = CResult_NoneChannelMonitorUpdateErrZ_ok();
+       *ret_conv = (this_arg_conv->persist_new_channel)(this_arg_conv->this_arg, channel_id_conv, &data_conv, update_id_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneChannelMonitorUpdateErrZ_err(uint32_t e) {
-       LDKChannelMonitorUpdateErr e_conv = LDKChannelMonitorUpdateErr_from_js(e);
+uint32_t  __attribute__((visibility("default"))) TS_Persist_update_persisted_channel(uint32_t this_arg, uint32_t channel_id, uint32_t update, uint32_t data, uint32_t update_id) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKPersist* this_arg_conv = (LDKPersist*)this_arg_ptr;
+       LDKOutPoint channel_id_conv;
+       channel_id_conv.inner = (void*)(channel_id & (~1));
+       channel_id_conv.is_owned = (channel_id & 1) || (channel_id == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_id_conv);
+       channel_id_conv = OutPoint_clone(&channel_id_conv);
+       LDKChannelMonitorUpdate update_conv;
+       update_conv.inner = (void*)(update & (~1));
+       update_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_conv);
+       LDKChannelMonitor data_conv;
+       data_conv.inner = (void*)(data & (~1));
+       data_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(data_conv);
+       LDKMonitorUpdateId update_id_conv;
+       update_id_conv.inner = (void*)(update_id & (~1));
+       update_id_conv.is_owned = (update_id & 1) || (update_id == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_id_conv);
+       update_id_conv = MonitorUpdateId_clone(&update_id_conv);
        LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ");
-       *ret_conv = CResult_NoneChannelMonitorUpdateErrZ_err(e_conv);
+       *ret_conv = (this_arg_conv->update_persisted_channel)(this_arg_conv->this_arg, channel_id_conv, &update_conv, &data_conv, update_id_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_NoneChannelMonitorUpdateErrZ_is_ok(uint32_t o) {
-       LDKCResult_NoneChannelMonitorUpdateErrZ* o_conv = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(o & ~1);
-       jboolean ret_val = CResult_NoneChannelMonitorUpdateErrZ_is_ok(o_conv);
-       return ret_val;
+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_channel_update_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_function_ptr(j_calls->handle_open_channel_meth);
+               js_free_function_ptr(j_calls->handle_accept_channel_meth);
+               js_free_function_ptr(j_calls->handle_funding_created_meth);
+               js_free_function_ptr(j_calls->handle_funding_signed_meth);
+               js_free_function_ptr(j_calls->handle_funding_locked_meth);
+               js_free_function_ptr(j_calls->handle_shutdown_meth);
+               js_free_function_ptr(j_calls->handle_closing_signed_meth);
+               js_free_function_ptr(j_calls->handle_update_add_htlc_meth);
+               js_free_function_ptr(j_calls->handle_update_fulfill_htlc_meth);
+               js_free_function_ptr(j_calls->handle_update_fail_htlc_meth);
+               js_free_function_ptr(j_calls->handle_update_fail_malformed_htlc_meth);
+               js_free_function_ptr(j_calls->handle_commitment_signed_meth);
+               js_free_function_ptr(j_calls->handle_revoke_and_ack_meth);
+               js_free_function_ptr(j_calls->handle_update_fee_meth);
+               js_free_function_ptr(j_calls->handle_announcement_signatures_meth);
+               js_free_function_ptr(j_calls->peer_disconnected_meth);
+               js_free_function_ptr(j_calls->peer_connected_meth);
+               js_free_function_ptr(j_calls->handle_channel_reestablish_meth);
+               js_free_function_ptr(j_calls->handle_channel_update_meth);
+               js_free_function_ptr(j_calls->handle_error_meth);
+               FREE(j_calls);
+       }
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_NoneChannelMonitorUpdateErrZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_NoneChannelMonitorUpdateErrZ _res_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_NoneChannelMonitorUpdateErrZ_free(_res_conv);
+void handle_open_channel_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKInitFeatures their_features_var = their_features;
+       uint64_t their_features_ref = 0;
+       CHECK((((uint64_t)their_features_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&their_features_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(their_features_var);
+       their_features_ref = (uint64_t)their_features_var.inner;
+       if (their_features_var.is_owned) {
+               their_features_ref |= 1;
+       }
+       LDKOpenChannel msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = OpenChannel_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_3(j_calls->handle_open_channel_meth, (uint32_t)their_node_id_arr, (uint32_t)their_features_ref, (uint32_t)msg_ref);
 }
-
-static inline uint64_t CResult_NoneChannelMonitorUpdateErrZ_clone_ptr(LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR arg) {
-       LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ");
-       *ret_conv = CResult_NoneChannelMonitorUpdateErrZ_clone(arg);
-       return (uint64_t)ret_conv;
+void handle_accept_channel_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKInitFeatures their_features_var = their_features;
+       uint64_t their_features_ref = 0;
+       CHECK((((uint64_t)their_features_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&their_features_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(their_features_var);
+       their_features_ref = (uint64_t)their_features_var.inner;
+       if (their_features_var.is_owned) {
+               their_features_ref |= 1;
+       }
+       LDKAcceptChannel msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = AcceptChannel_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_3(j_calls->handle_accept_channel_meth, (uint32_t)their_node_id_arr, (uint32_t)their_features_ref, (uint32_t)msg_ref);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_NoneChannelMonitorUpdateErrZ_clone_ptr(uint32_t arg) {
-       LDKCResult_NoneChannelMonitorUpdateErrZ* arg_conv = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(arg & ~1);
-       int64_t ret_val = CResult_NoneChannelMonitorUpdateErrZ_clone_ptr(arg_conv);
-       return ret_val;
+void handle_funding_created_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKFundingCreated msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = FundingCreated_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->handle_funding_created_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneChannelMonitorUpdateErrZ_clone(uint32_t orig) {
-       LDKCResult_NoneChannelMonitorUpdateErrZ* orig_conv = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(orig & ~1);
-       LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ");
-       *ret_conv = CResult_NoneChannelMonitorUpdateErrZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+void handle_funding_signed_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKFundingSigned msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = FundingSigned_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->handle_funding_signed_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
+}
+void handle_funding_locked_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKFundingLocked msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = FundingLocked_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->handle_funding_locked_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
+}
+void handle_shutdown_LDKChannelMessageHandler_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKInitFeatures * their_features, const LDKShutdown * msg) {
+       LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg;
+       int8_tArray their_node_id_arr = init_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKInitFeatures their_features_var = *their_features;
+       uint64_t their_features_ref = 0;
+       their_features_var = InitFeatures_clone(their_features);
+       CHECK((((uint64_t)their_features_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&their_features_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(their_features_var);
+       their_features_ref = (uint64_t)their_features_var.inner;
+       if (their_features_var.is_owned) {
+               their_features_ref |= 1;
+       }
+       LDKShutdown msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = Shutdown_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_3(j_calls->handle_shutdown_meth, (uint32_t)their_node_id_arr, (uint32_t)their_features_ref, (uint32_t)msg_ref);
+}
+void handle_closing_signed_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKClosingSigned msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = ClosingSigned_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->handle_closing_signed_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
 }
-
-void  __attribute__((visibility("default"))) TS_CVec_MonitorEventZ_free(uint32_tArray _res) {
-       LDKCVec_MonitorEventZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKMonitorEvent), "LDKCVec_MonitorEventZ Elements");
-       else
-               _res_constr.data = NULL;
-       uint32_t* _res_vals = (uint32_t*)(_res + 4);
-       for (size_t o = 0; o < _res_constr.datalen; o++) {
-               uint32_t _res_conv_14 = _res_vals[o];
-               void* _res_conv_14_ptr = (void*)(((uint64_t)_res_conv_14) & ~1);
-               CHECK_ACCESS(_res_conv_14_ptr);
-               LDKMonitorEvent _res_conv_14_conv = *(LDKMonitorEvent*)(_res_conv_14_ptr);
-               FREE((void*)_res_conv_14);
-               _res_constr.data[o] = _res_conv_14_conv;
+void handle_update_add_htlc_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKUpdateAddHTLC msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = UpdateAddHTLC_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
        }
-       CVec_MonitorEventZ_free(_res_constr);
+       js_invoke_function_2(j_calls->handle_update_add_htlc_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_COption_C2Tuple_usizeTransactionZZ_some(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKC2Tuple_usizeTransactionZ o_conv = *(LDKC2Tuple_usizeTransactionZ*)(o_ptr);
-       o_conv = C2Tuple_usizeTransactionZ_clone((LDKC2Tuple_usizeTransactionZ*)(((uint64_t)o) & ~1));
-       LDKCOption_C2Tuple_usizeTransactionZZ *ret_copy = MALLOC(sizeof(LDKCOption_C2Tuple_usizeTransactionZZ), "LDKCOption_C2Tuple_usizeTransactionZZ");
-       *ret_copy = COption_C2Tuple_usizeTransactionZZ_some(o_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void handle_update_fulfill_htlc_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKUpdateFulfillHTLC msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = UpdateFulfillHTLC_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->handle_update_fulfill_htlc_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_COption_C2Tuple_usizeTransactionZZ_none() {
-       LDKCOption_C2Tuple_usizeTransactionZZ *ret_copy = MALLOC(sizeof(LDKCOption_C2Tuple_usizeTransactionZZ), "LDKCOption_C2Tuple_usizeTransactionZZ");
-       *ret_copy = COption_C2Tuple_usizeTransactionZZ_none();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void handle_update_fail_htlc_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKUpdateFailHTLC msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = UpdateFailHTLC_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->handle_update_fail_htlc_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
 }
-
-void  __attribute__((visibility("default"))) TS_COption_C2Tuple_usizeTransactionZZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCOption_C2Tuple_usizeTransactionZZ _res_conv = *(LDKCOption_C2Tuple_usizeTransactionZZ*)(_res_ptr);
-       FREE((void*)_res);
-       COption_C2Tuple_usizeTransactionZZ_free(_res_conv);
+void handle_update_fail_malformed_htlc_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKUpdateFailMalformedHTLC msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = UpdateFailMalformedHTLC_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->handle_update_fail_malformed_htlc_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
 }
-
-static inline uint64_t COption_C2Tuple_usizeTransactionZZ_clone_ptr(LDKCOption_C2Tuple_usizeTransactionZZ *NONNULL_PTR arg) {
-       LDKCOption_C2Tuple_usizeTransactionZZ *ret_copy = MALLOC(sizeof(LDKCOption_C2Tuple_usizeTransactionZZ), "LDKCOption_C2Tuple_usizeTransactionZZ");
-       *ret_copy = COption_C2Tuple_usizeTransactionZZ_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void handle_commitment_signed_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKCommitmentSigned msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = CommitmentSigned_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->handle_commitment_signed_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
 }
-int64_t  __attribute__((visibility("default"))) TS_COption_C2Tuple_usizeTransactionZZ_clone_ptr(uint32_t arg) {
-       LDKCOption_C2Tuple_usizeTransactionZZ* arg_conv = (LDKCOption_C2Tuple_usizeTransactionZZ*)arg;
-       int64_t ret_val = COption_C2Tuple_usizeTransactionZZ_clone_ptr(arg_conv);
-       return ret_val;
+void handle_revoke_and_ack_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKRevokeAndACK msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = RevokeAndACK_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->handle_revoke_and_ack_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_COption_C2Tuple_usizeTransactionZZ_clone(uint32_t orig) {
-       LDKCOption_C2Tuple_usizeTransactionZZ* orig_conv = (LDKCOption_C2Tuple_usizeTransactionZZ*)orig;
-       LDKCOption_C2Tuple_usizeTransactionZZ *ret_copy = MALLOC(sizeof(LDKCOption_C2Tuple_usizeTransactionZZ), "LDKCOption_C2Tuple_usizeTransactionZZ");
-       *ret_copy = COption_C2Tuple_usizeTransactionZZ_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void handle_update_fee_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKUpdateFee msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = UpdateFee_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->handle_update_fee_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_COption_ClosureReasonZ_some(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKClosureReason o_conv = *(LDKClosureReason*)(o_ptr);
-       o_conv = ClosureReason_clone((LDKClosureReason*)(((uint64_t)o) & ~1));
-       LDKCOption_ClosureReasonZ *ret_copy = MALLOC(sizeof(LDKCOption_ClosureReasonZ), "LDKCOption_ClosureReasonZ");
-       *ret_copy = COption_ClosureReasonZ_some(o_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void handle_announcement_signatures_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKAnnouncementSignatures msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = AnnouncementSignatures_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->handle_announcement_signatures_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_COption_ClosureReasonZ_none() {
-       LDKCOption_ClosureReasonZ *ret_copy = MALLOC(sizeof(LDKCOption_ClosureReasonZ), "LDKCOption_ClosureReasonZ");
-       *ret_copy = COption_ClosureReasonZ_none();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void peer_disconnected_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       js_invoke_function_2(j_calls->peer_disconnected_meth, (uint32_t)their_node_id_arr, (uint32_t)no_connection_possible);
 }
-
-void  __attribute__((visibility("default"))) TS_COption_ClosureReasonZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCOption_ClosureReasonZ _res_conv = *(LDKCOption_ClosureReasonZ*)(_res_ptr);
-       FREE((void*)_res);
-       COption_ClosureReasonZ_free(_res_conv);
+void peer_connected_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKInit msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = Init_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->peer_connected_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
 }
-
-static inline uint64_t COption_ClosureReasonZ_clone_ptr(LDKCOption_ClosureReasonZ *NONNULL_PTR arg) {
-       LDKCOption_ClosureReasonZ *ret_copy = MALLOC(sizeof(LDKCOption_ClosureReasonZ), "LDKCOption_ClosureReasonZ");
-       *ret_copy = COption_ClosureReasonZ_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void handle_channel_reestablish_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKChannelReestablish msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = ChannelReestablish_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->handle_channel_reestablish_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
 }
-int64_t  __attribute__((visibility("default"))) TS_COption_ClosureReasonZ_clone_ptr(uint32_t arg) {
-       LDKCOption_ClosureReasonZ* arg_conv = (LDKCOption_ClosureReasonZ*)arg;
-       int64_t ret_val = COption_ClosureReasonZ_clone_ptr(arg_conv);
-       return ret_val;
+void handle_channel_update_LDKChannelMessageHandler_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKChannelUpdate * msg) {
+       LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg;
+       int8_tArray their_node_id_arr = init_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKChannelUpdate msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = ChannelUpdate_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->handle_channel_update_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_COption_ClosureReasonZ_clone(uint32_t orig) {
-       LDKCOption_ClosureReasonZ* orig_conv = (LDKCOption_ClosureReasonZ*)orig;
-       LDKCOption_ClosureReasonZ *ret_copy = MALLOC(sizeof(LDKCOption_ClosureReasonZ), "LDKCOption_ClosureReasonZ");
-       *ret_copy = COption_ClosureReasonZ_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void handle_error_LDKChannelMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKErrorMessage msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = ErrorMessage_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->handle_error_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_ClosureReasonZDecodeErrorZ_ok(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKCOption_ClosureReasonZ o_conv = *(LDKCOption_ClosureReasonZ*)(o_ptr);
-       o_conv = COption_ClosureReasonZ_clone((LDKCOption_ClosureReasonZ*)(((uint64_t)o) & ~1));
-       LDKCResult_COption_ClosureReasonZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ), "LDKCResult_COption_ClosureReasonZDecodeErrorZ");
-       *ret_conv = CResult_COption_ClosureReasonZDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+static void LDKChannelMessageHandler_JCalls_cloned(LDKChannelMessageHandler* new_obj) {
+       LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) new_obj->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);
 }
+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
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_ClosureReasonZDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_COption_ClosureReasonZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ), "LDKCResult_COption_ClosureReasonZDecodeErrorZ");
-       *ret_conv = CResult_COption_ClosureReasonZDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+       LDKChannelMessageHandler ret = {
+               .this_arg = (void*) calls,
+               .handle_open_channel = handle_open_channel_LDKChannelMessageHandler_jcall,
+               .handle_accept_channel = handle_accept_channel_LDKChannelMessageHandler_jcall,
+               .handle_funding_created = handle_funding_created_LDKChannelMessageHandler_jcall,
+               .handle_funding_signed = handle_funding_signed_LDKChannelMessageHandler_jcall,
+               .handle_funding_locked = handle_funding_locked_LDKChannelMessageHandler_jcall,
+               .handle_shutdown = handle_shutdown_LDKChannelMessageHandler_jcall,
+               .handle_closing_signed = handle_closing_signed_LDKChannelMessageHandler_jcall,
+               .handle_update_add_htlc = handle_update_add_htlc_LDKChannelMessageHandler_jcall,
+               .handle_update_fulfill_htlc = handle_update_fulfill_htlc_LDKChannelMessageHandler_jcall,
+               .handle_update_fail_htlc = handle_update_fail_htlc_LDKChannelMessageHandler_jcall,
+               .handle_update_fail_malformed_htlc = handle_update_fail_malformed_htlc_LDKChannelMessageHandler_jcall,
+               .handle_commitment_signed = handle_commitment_signed_LDKChannelMessageHandler_jcall,
+               .handle_revoke_and_ack = handle_revoke_and_ack_LDKChannelMessageHandler_jcall,
+               .handle_update_fee = handle_update_fee_LDKChannelMessageHandler_jcall,
+               .handle_announcement_signatures = handle_announcement_signatures_LDKChannelMessageHandler_jcall,
+               .peer_disconnected = peer_disconnected_LDKChannelMessageHandler_jcall,
+               .peer_connected = peer_connected_LDKChannelMessageHandler_jcall,
+               .handle_channel_reestablish = handle_channel_reestablish_LDKChannelMessageHandler_jcall,
+               .handle_channel_update = handle_channel_update_LDKChannelMessageHandler_jcall,
+               .handle_error = handle_error_LDKChannelMessageHandler_jcall,
+               .free = LDKChannelMessageHandler_JCalls_free,
+               .MessageSendEventsProvider = LDKMessageSendEventsProvider_init(MessageSendEventsProvider),
+       };
+       calls->MessageSendEventsProvider = ret.MessageSendEventsProvider.this_arg;
+       return ret;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_COption_ClosureReasonZDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_COption_ClosureReasonZDecodeErrorZ* o_conv = (LDKCResult_COption_ClosureReasonZDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_COption_ClosureReasonZDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+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_COption_ClosureReasonZDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_COption_ClosureReasonZDecodeErrorZ _res_conv = *(LDKCResult_COption_ClosureReasonZDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_COption_ClosureReasonZDecodeErrorZ_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) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKInitFeatures their_features_conv;
+       their_features_conv.inner = (void*)(their_features & (~1));
+       their_features_conv.is_owned = (their_features & 1) || (their_features == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(their_features_conv);
+       their_features_conv = InitFeatures_clone(&their_features_conv);
+       LDKOpenChannel msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_open_channel)(this_arg_conv->this_arg, their_node_id_ref, their_features_conv, &msg_conv);
 }
 
-static inline uint64_t CResult_COption_ClosureReasonZDecodeErrorZ_clone_ptr(LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_COption_ClosureReasonZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ), "LDKCResult_COption_ClosureReasonZDecodeErrorZ");
-       *ret_conv = CResult_COption_ClosureReasonZDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
-}
-int64_t  __attribute__((visibility("default"))) TS_CResult_COption_ClosureReasonZDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_COption_ClosureReasonZDecodeErrorZ* arg_conv = (LDKCResult_COption_ClosureReasonZDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_COption_ClosureReasonZDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+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) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKInitFeatures their_features_conv;
+       their_features_conv.inner = (void*)(their_features & (~1));
+       their_features_conv.is_owned = (their_features & 1) || (their_features == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(their_features_conv);
+       their_features_conv = InitFeatures_clone(&their_features_conv);
+       LDKAcceptChannel msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (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_COption_ClosureReasonZDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_COption_ClosureReasonZDecodeErrorZ* orig_conv = (LDKCResult_COption_ClosureReasonZDecodeErrorZ*)(orig & ~1);
-       LDKCResult_COption_ClosureReasonZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ), "LDKCResult_COption_ClosureReasonZDecodeErrorZ");
-       *ret_conv = CResult_COption_ClosureReasonZDecodeErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_funding_created(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKFundingCreated msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_funding_created)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_NetworkUpdateZ_some(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKNetworkUpdate o_conv = *(LDKNetworkUpdate*)(o_ptr);
-       o_conv = NetworkUpdate_clone((LDKNetworkUpdate*)(((uint64_t)o) & ~1));
-       LDKCOption_NetworkUpdateZ *ret_copy = MALLOC(sizeof(LDKCOption_NetworkUpdateZ), "LDKCOption_NetworkUpdateZ");
-       *ret_copy = COption_NetworkUpdateZ_some(o_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_funding_signed(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKFundingSigned msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_funding_signed)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_NetworkUpdateZ_none() {
-       LDKCOption_NetworkUpdateZ *ret_copy = MALLOC(sizeof(LDKCOption_NetworkUpdateZ), "LDKCOption_NetworkUpdateZ");
-       *ret_copy = COption_NetworkUpdateZ_none();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_funding_locked(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKFundingLocked msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_funding_locked)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_COption_NetworkUpdateZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCOption_NetworkUpdateZ _res_conv = *(LDKCOption_NetworkUpdateZ*)(_res_ptr);
-       FREE((void*)_res);
-       COption_NetworkUpdateZ_free(_res_conv);
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_shutdown(uint32_t this_arg, int8_tArray their_node_id, uint32_t their_features, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKInitFeatures their_features_conv;
+       their_features_conv.inner = (void*)(their_features & (~1));
+       their_features_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(their_features_conv);
+       LDKShutdown msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_shutdown)(this_arg_conv->this_arg, their_node_id_ref, &their_features_conv, &msg_conv);
 }
 
-static inline uint64_t COption_NetworkUpdateZ_clone_ptr(LDKCOption_NetworkUpdateZ *NONNULL_PTR arg) {
-       LDKCOption_NetworkUpdateZ *ret_copy = MALLOC(sizeof(LDKCOption_NetworkUpdateZ), "LDKCOption_NetworkUpdateZ");
-       *ret_copy = COption_NetworkUpdateZ_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_closing_signed(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKClosingSigned msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_closing_signed)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
 }
-int64_t  __attribute__((visibility("default"))) TS_COption_NetworkUpdateZ_clone_ptr(uint32_t arg) {
-       LDKCOption_NetworkUpdateZ* arg_conv = (LDKCOption_NetworkUpdateZ*)arg;
-       int64_t ret_val = COption_NetworkUpdateZ_clone_ptr(arg_conv);
-       return ret_val;
+
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_update_add_htlc(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKUpdateAddHTLC msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_update_add_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_NetworkUpdateZ_clone(uint32_t orig) {
-       LDKCOption_NetworkUpdateZ* orig_conv = (LDKCOption_NetworkUpdateZ*)orig;
-       LDKCOption_NetworkUpdateZ *ret_copy = MALLOC(sizeof(LDKCOption_NetworkUpdateZ), "LDKCOption_NetworkUpdateZ");
-       *ret_copy = COption_NetworkUpdateZ_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_update_fulfill_htlc(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKUpdateFulfillHTLC msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_update_fulfill_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_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 _res_conv_27 = _res_vals[b];
-               void* _res_conv_27_ptr = (void*)(((uint64_t)_res_conv_27) & ~1);
-               CHECK_ACCESS(_res_conv_27_ptr);
-               LDKSpendableOutputDescriptor _res_conv_27_conv = *(LDKSpendableOutputDescriptor*)(_res_conv_27_ptr);
-               FREE((void*)_res_conv_27);
-               _res_constr.data[b] = _res_conv_27_conv;
-       }
-       CVec_SpendableOutputDescriptorZ_free(_res_constr);
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_update_fail_htlc(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKUpdateFailHTLC msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_update_fail_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_EventZ_some(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKEvent o_conv = *(LDKEvent*)(o_ptr);
-       o_conv = Event_clone((LDKEvent*)(((uint64_t)o) & ~1));
-       LDKCOption_EventZ *ret_copy = MALLOC(sizeof(LDKCOption_EventZ), "LDKCOption_EventZ");
-       *ret_copy = COption_EventZ_some(o_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_update_fail_malformed_htlc(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKUpdateFailMalformedHTLC msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (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_COption_EventZ_none() {
-       LDKCOption_EventZ *ret_copy = MALLOC(sizeof(LDKCOption_EventZ), "LDKCOption_EventZ");
-       *ret_copy = COption_EventZ_none();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_commitment_signed(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKCommitmentSigned msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_commitment_signed)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_COption_EventZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCOption_EventZ _res_conv = *(LDKCOption_EventZ*)(_res_ptr);
-       FREE((void*)_res);
-       COption_EventZ_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) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKRevokeAndACK msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_revoke_and_ack)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
 }
 
-static inline uint64_t COption_EventZ_clone_ptr(LDKCOption_EventZ *NONNULL_PTR arg) {
-       LDKCOption_EventZ *ret_copy = MALLOC(sizeof(LDKCOption_EventZ), "LDKCOption_EventZ");
-       *ret_copy = COption_EventZ_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_update_fee(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKUpdateFee msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_update_fee)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
 }
-int64_t  __attribute__((visibility("default"))) TS_COption_EventZ_clone_ptr(uint32_t arg) {
-       LDKCOption_EventZ* arg_conv = (LDKCOption_EventZ*)arg;
-       int64_t ret_val = COption_EventZ_clone_ptr(arg_conv);
-       return ret_val;
+
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_announcement_signatures(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKAnnouncementSignatures msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_announcement_signatures)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_EventZ_clone(uint32_t orig) {
-       LDKCOption_EventZ* orig_conv = (LDKCOption_EventZ*)orig;
-       LDKCOption_EventZ *ret_copy = MALLOC(sizeof(LDKCOption_EventZ), "LDKCOption_EventZ");
-       *ret_copy = COption_EventZ_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_peer_disconnected(uint32_t this_arg, int8_tArray their_node_id, jboolean no_connection_possible) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       (this_arg_conv->peer_disconnected)(this_arg_conv->this_arg, their_node_id_ref, no_connection_possible);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_EventZDecodeErrorZ_ok(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKCOption_EventZ o_conv = *(LDKCOption_EventZ*)(o_ptr);
-       o_conv = COption_EventZ_clone((LDKCOption_EventZ*)(((uint64_t)o) & ~1));
-       LDKCResult_COption_EventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_EventZDecodeErrorZ), "LDKCResult_COption_EventZDecodeErrorZ");
-       *ret_conv = CResult_COption_EventZDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_peer_connected(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKInit msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->peer_connected)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_EventZDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_COption_EventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_EventZDecodeErrorZ), "LDKCResult_COption_EventZDecodeErrorZ");
-       *ret_conv = CResult_COption_EventZDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_channel_reestablish(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKChannelReestablish msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_channel_reestablish)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_COption_EventZDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_COption_EventZDecodeErrorZ* o_conv = (LDKCResult_COption_EventZDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_COption_EventZDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_channel_update(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKChannelUpdate msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_channel_update)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_COption_EventZDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_COption_EventZDecodeErrorZ _res_conv = *(LDKCResult_COption_EventZDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_COption_EventZDecodeErrorZ_free(_res_conv);
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_error(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKErrorMessage msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       (this_arg_conv->handle_error)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv);
 }
 
-static inline uint64_t CResult_COption_EventZDecodeErrorZ_clone_ptr(LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_COption_EventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_EventZDecodeErrorZ), "LDKCResult_COption_EventZDecodeErrorZ");
-       *ret_conv = CResult_COption_EventZDecodeErrorZ_clone(arg);
-       return (uint64_t)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 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_function_ptr(j_calls->handle_node_announcement_meth);
+               js_free_function_ptr(j_calls->handle_channel_announcement_meth);
+               js_free_function_ptr(j_calls->handle_channel_update_meth);
+               js_free_function_ptr(j_calls->get_next_channel_announcements_meth);
+               js_free_function_ptr(j_calls->get_next_node_announcements_meth);
+               js_free_function_ptr(j_calls->sync_routing_table_meth);
+               js_free_function_ptr(j_calls->handle_reply_channel_range_meth);
+               js_free_function_ptr(j_calls->handle_reply_short_channel_ids_end_meth);
+               js_free_function_ptr(j_calls->handle_query_channel_range_meth);
+               js_free_function_ptr(j_calls->handle_query_short_channel_ids_meth);
+               FREE(j_calls);
+       }
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_COption_EventZDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_COption_EventZDecodeErrorZ* arg_conv = (LDKCResult_COption_EventZDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_COption_EventZDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+LDKCResult_boolLightningErrorZ handle_node_announcement_LDKRoutingMessageHandler_jcall(const void* this_arg, const LDKNodeAnnouncement * msg) {
+       LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg;
+       LDKNodeAnnouncement msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = NodeAnnouncement_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_1(j_calls->handle_node_announcement_meth, (uint32_t)msg_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_boolLightningErrorZ ret_conv = *(LDKCResult_boolLightningErrorZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_EventZDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_COption_EventZDecodeErrorZ* orig_conv = (LDKCResult_COption_EventZDecodeErrorZ*)(orig & ~1);
-       LDKCResult_COption_EventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_EventZDecodeErrorZ), "LDKCResult_COption_EventZDecodeErrorZ");
-       *ret_conv = CResult_COption_EventZDecodeErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+LDKCResult_boolLightningErrorZ handle_channel_announcement_LDKRoutingMessageHandler_jcall(const void* this_arg, const LDKChannelAnnouncement * msg) {
+       LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg;
+       LDKChannelAnnouncement msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = ChannelAnnouncement_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_1(j_calls->handle_channel_announcement_meth, (uint32_t)msg_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_boolLightningErrorZ ret_conv = *(LDKCResult_boolLightningErrorZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
 }
-
-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");
+LDKCResult_boolLightningErrorZ handle_channel_update_LDKRoutingMessageHandler_jcall(const void* this_arg, const LDKChannelUpdate * msg) {
+       LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg;
+       LDKChannelUpdate msg_var = *msg;
+       uint64_t msg_ref = 0;
+       msg_var = ChannelUpdate_clone(msg);
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_1(j_calls->handle_channel_update_meth, (uint32_t)msg_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_boolLightningErrorZ ret_conv = *(LDKCResult_boolLightningErrorZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
+}
+LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ get_next_channel_announcements_LDKRoutingMessageHandler_jcall(const void* this_arg, uint64_t starting_point, uint8_t batch_amount) {
+       LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg;
+       uint32_tArray ret = (uint32_tArray)js_invoke_function_2(j_calls->get_next_channel_announcements_meth, (uint32_t)starting_point, (uint32_t)batch_amount);
+       LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ ret_constr;
+       ret_constr.datalen = ret->arr_len;
+       if (ret_constr.datalen > 0)
+               ret_constr.data = MALLOC(ret_constr.datalen * sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ Elements");
+       else
+               ret_constr.data = NULL;
+       uint32_t* ret_vals = ret->elems;
+       for (size_t h = 0; h < ret_constr.datalen; h++) {
+               uint32_t ret_conv_59 = ret_vals[h];
+               void* ret_conv_59_ptr = (void*)(((uint64_t)ret_conv_59) & ~1);
+               CHECK_ACCESS(ret_conv_59_ptr);
+               LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ ret_conv_59_conv = *(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(ret_conv_59_ptr);
+               FREE((void*)ret_conv_59);
+               ret_constr.data[h] = ret_conv_59_conv;
+       }
+       return ret_constr;
+}
+LDKCVec_NodeAnnouncementZ get_next_node_announcements_LDKRoutingMessageHandler_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_int8_tArray(33);
+       memcpy(starting_point_arr->elems, starting_point.compressed_form, 33);
+       uint32_tArray ret = (uint32_tArray)js_invoke_function_2(j_calls->get_next_node_announcements_meth, (uint32_t)starting_point_arr, (uint32_t)batch_amount);
+       LDKCVec_NodeAnnouncementZ ret_constr;
+       ret_constr.datalen = ret->arr_len;
+       if (ret_constr.datalen > 0)
+               ret_constr.data = MALLOC(ret_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 _res_conv_18 = _res_vals[s];
-               void* _res_conv_18_ptr = (void*)(((uint64_t)_res_conv_18) & ~1);
-               CHECK_ACCESS(_res_conv_18_ptr);
-               LDKMessageSendEvent _res_conv_18_conv = *(LDKMessageSendEvent*)(_res_conv_18_ptr);
-               FREE((void*)_res_conv_18);
-               _res_constr.data[s] = _res_conv_18_conv;
+               ret_constr.data = NULL;
+       uint32_t* ret_vals = ret->elems;
+       for (size_t s = 0; s < ret_constr.datalen; s++) {
+               uint32_t ret_conv_18 = ret_vals[s];
+               LDKNodeAnnouncement ret_conv_18_conv;
+               ret_conv_18_conv.inner = (void*)(ret_conv_18 & (~1));
+               ret_conv_18_conv.is_owned = (ret_conv_18 & 1) || (ret_conv_18 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_18_conv);
+               ret_constr.data[s] = ret_conv_18_conv;
        }
-       CVec_MessageSendEventZ_free(_res_constr);
+       return ret_constr;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ScoringParametersDecodeErrorZ_ok(uint32_t o) {
-       LDKScoringParameters o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       // Warning: we need a move here but no clone is available for LDKScoringParameters
-       LDKCResult_ScoringParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ScoringParametersDecodeErrorZ), "LDKCResult_ScoringParametersDecodeErrorZ");
-       *ret_conv = CResult_ScoringParametersDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+void sync_routing_table_LDKRoutingMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKInit init_var = *init;
+       uint64_t init_ref = 0;
+       init_var = Init_clone(init);
+       CHECK((((uint64_t)init_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&init_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(init_var);
+       init_ref = (uint64_t)init_var.inner;
+       if (init_var.is_owned) {
+               init_ref |= 1;
+       }
+       js_invoke_function_2(j_calls->sync_routing_table_meth, (uint32_t)their_node_id_arr, (uint32_t)init_ref);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ScoringParametersDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ScoringParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ScoringParametersDecodeErrorZ), "LDKCResult_ScoringParametersDecodeErrorZ");
-       *ret_conv = CResult_ScoringParametersDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+LDKCResult_NoneLightningErrorZ handle_reply_channel_range_LDKRoutingMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKReplyChannelRange msg_var = msg;
+       uint64_t msg_ref = 0;
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_2(j_calls->handle_reply_channel_range_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_ScoringParametersDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ScoringParametersDecodeErrorZ* o_conv = (LDKCResult_ScoringParametersDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ScoringParametersDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+LDKCResult_NoneLightningErrorZ handle_reply_short_channel_ids_end_LDKRoutingMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKReplyShortChannelIdsEnd msg_var = msg;
+       uint64_t msg_ref = 0;
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_2(j_calls->handle_reply_short_channel_ids_end_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_ScoringParametersDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_ScoringParametersDecodeErrorZ _res_conv = *(LDKCResult_ScoringParametersDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_ScoringParametersDecodeErrorZ_free(_res_conv);
+LDKCResult_NoneLightningErrorZ handle_query_channel_range_LDKRoutingMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKQueryChannelRange msg_var = msg;
+       uint64_t msg_ref = 0;
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_2(j_calls->handle_query_channel_range_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ScorerDecodeErrorZ_ok(uint32_t o) {
-       LDKScorer o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       // Warning: we need a move here but no clone is available for LDKScorer
-       LDKCResult_ScorerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ScorerDecodeErrorZ), "LDKCResult_ScorerDecodeErrorZ");
-       *ret_conv = CResult_ScorerDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+LDKCResult_NoneLightningErrorZ handle_query_short_channel_ids_LDKRoutingMessageHandler_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_int8_tArray(33);
+       memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33);
+       LDKQueryShortChannelIds msg_var = msg;
+       uint64_t msg_ref = 0;
+       CHECK((((uint64_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var);
+       msg_ref = (uint64_t)msg_var.inner;
+       if (msg_var.is_owned) {
+               msg_ref |= 1;
+       }
+       uint32_t ret = js_invoke_function_2(j_calls->handle_query_short_channel_ids_meth, (uint32_t)their_node_id_arr, (uint32_t)msg_ref);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ScorerDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ScorerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ScorerDecodeErrorZ), "LDKCResult_ScorerDecodeErrorZ");
-       *ret_conv = CResult_ScorerDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+static void LDKRoutingMessageHandler_JCalls_cloned(LDKRoutingMessageHandler* new_obj) {
+       LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) new_obj->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);
 }
+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
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ScorerDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ScorerDecodeErrorZ* o_conv = (LDKCResult_ScorerDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ScorerDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+       LDKRoutingMessageHandler ret = {
+               .this_arg = (void*) calls,
+               .handle_node_announcement = handle_node_announcement_LDKRoutingMessageHandler_jcall,
+               .handle_channel_announcement = handle_channel_announcement_LDKRoutingMessageHandler_jcall,
+               .handle_channel_update = handle_channel_update_LDKRoutingMessageHandler_jcall,
+               .get_next_channel_announcements = get_next_channel_announcements_LDKRoutingMessageHandler_jcall,
+               .get_next_node_announcements = get_next_node_announcements_LDKRoutingMessageHandler_jcall,
+               .sync_routing_table = sync_routing_table_LDKRoutingMessageHandler_jcall,
+               .handle_reply_channel_range = handle_reply_channel_range_LDKRoutingMessageHandler_jcall,
+               .handle_reply_short_channel_ids_end = handle_reply_short_channel_ids_end_LDKRoutingMessageHandler_jcall,
+               .handle_query_channel_range = handle_query_channel_range_LDKRoutingMessageHandler_jcall,
+               .handle_query_short_channel_ids = handle_query_short_channel_ids_LDKRoutingMessageHandler_jcall,
+               .free = LDKRoutingMessageHandler_JCalls_free,
+               .MessageSendEventsProvider = LDKMessageSendEventsProvider_init(MessageSendEventsProvider),
+       };
+       calls->MessageSendEventsProvider = ret.MessageSendEventsProvider.this_arg;
+       return ret;
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_ScorerDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_ScorerDecodeErrorZ _res_conv = *(LDKCResult_ScorerDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_ScorerDecodeErrorZ_free(_res_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;
 }
-
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = InitFeatures_clone(&o_conv);
-       LDKCResult_InitFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitFeaturesDecodeErrorZ), "LDKCResult_InitFeaturesDecodeErrorZ");
-       *ret_conv = CResult_InitFeaturesDecodeErrorZ_ok(o_conv);
+uint32_t  __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_node_announcement(uint32_t this_arg, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
+       LDKNodeAnnouncement msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       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 (uint64_t)ret_conv;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_InitFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitFeaturesDecodeErrorZ), "LDKCResult_InitFeaturesDecodeErrorZ");
-       *ret_conv = CResult_InitFeaturesDecodeErrorZ_err(e_conv);
+uint32_t  __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_channel_announcement(uint32_t this_arg, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
+       LDKChannelAnnouncement msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_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);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_InitFeaturesDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_InitFeaturesDecodeErrorZ* o_conv = (LDKCResult_InitFeaturesDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_InitFeaturesDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_CResult_InitFeaturesDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_InitFeaturesDecodeErrorZ _res_conv = *(LDKCResult_InitFeaturesDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_InitFeaturesDecodeErrorZ_free(_res_conv);
+uint32_t  __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_channel_update(uint32_t this_arg, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
+       LDKChannelUpdate msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       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 (uint64_t)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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = ChannelFeatures_clone(&o_conv);
-       LDKCResult_ChannelFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ), "LDKCResult_ChannelFeaturesDecodeErrorZ");
-       *ret_conv = CResult_ChannelFeaturesDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+uint32_tArray  __attribute__((visibility("default"))) TS_RoutingMessageHandler_get_next_channel_announcements(uint32_t this_arg, int64_t starting_point, int8_t batch_amount) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
+       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 = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t h = 0; h < ret_var.datalen; h++) {
+               LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* ret_conv_59_conv = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ");
+               *ret_conv_59_conv = ret_var.data[h];
+               ret_arr_ptr[h] = ((uint64_t)ret_conv_59_conv);
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ChannelFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ), "LDKCResult_ChannelFeaturesDecodeErrorZ");
-       *ret_conv = CResult_ChannelFeaturesDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+uint32_tArray  __attribute__((visibility("default"))) TS_RoutingMessageHandler_get_next_node_announcements(uint32_t this_arg, int8_tArray starting_point, int8_t batch_amount) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
+       LDKPublicKey starting_point_ref;
+       CHECK(starting_point->arr_len == 33);
+       memcpy(starting_point_ref.compressed_form, starting_point->elems, 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 = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t s = 0; s < ret_var.datalen; s++) {
+               LDKNodeAnnouncement ret_conv_18_var = ret_var.data[s];
+               uint64_t ret_conv_18_ref = 0;
+               CHECK((((uint64_t)ret_conv_18_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_conv_18_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_18_var);
+               ret_conv_18_ref = (uint64_t)ret_conv_18_var.inner;
+               if (ret_conv_18_var.is_owned) {
+                       ret_conv_18_ref |= 1;
+               }
+               ret_arr_ptr[s] = ret_conv_18_ref;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelFeaturesDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ChannelFeaturesDecodeErrorZ* o_conv = (LDKCResult_ChannelFeaturesDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ChannelFeaturesDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_RoutingMessageHandler_sync_routing_table(uint32_t this_arg, int8_tArray their_node_id, uint32_t init) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKInit init_conv;
+       init_conv.inner = (void*)(init & (~1));
+       init_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(init_conv);
+       (this_arg_conv->sync_routing_table)(this_arg_conv->this_arg, their_node_id_ref, &init_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ChannelFeaturesDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_ChannelFeaturesDecodeErrorZ _res_conv = *(LDKCResult_ChannelFeaturesDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_ChannelFeaturesDecodeErrorZ_free(_res_conv);
+uint32_t  __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_reply_channel_range(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKReplyChannelRange msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       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 (uint64_t)ret_conv;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = NodeFeatures_clone(&o_conv);
-       LDKCResult_NodeFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeFeaturesDecodeErrorZ), "LDKCResult_NodeFeaturesDecodeErrorZ");
-       *ret_conv = CResult_NodeFeaturesDecodeErrorZ_ok(o_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) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKReplyShortChannelIdsEnd msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       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 (uint64_t)ret_conv;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_NodeFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeFeaturesDecodeErrorZ), "LDKCResult_NodeFeaturesDecodeErrorZ");
-       *ret_conv = CResult_NodeFeaturesDecodeErrorZ_err(e_conv);
+uint32_t  __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_query_channel_range(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKQueryChannelRange msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       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 (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_NodeFeaturesDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_NodeFeaturesDecodeErrorZ* o_conv = (LDKCResult_NodeFeaturesDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_NodeFeaturesDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_query_short_channel_ids(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg_ptr;
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       LDKQueryShortChannelIds msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       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 (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_NodeFeaturesDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_NodeFeaturesDecodeErrorZ _res_conv = *(LDKCResult_NodeFeaturesDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_NodeFeaturesDecodeErrorZ_free(_res_conv);
+typedef struct LDKCustomMessageReader_JCalls {
+       atomic_size_t refcnt;
+       uint32_t read_meth;
+} LDKCustomMessageReader_JCalls;
+static void LDKCustomMessageReader_JCalls_free(void* this_arg) {
+       LDKCustomMessageReader_JCalls *j_calls = (LDKCustomMessageReader_JCalls*) this_arg;
+       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
+               js_free_function_ptr(j_calls->read_meth);
+               FREE(j_calls);
+       }
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceFeaturesDecodeErrorZ_ok(uint32_t o) {
-       LDKInvoiceFeatures o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = InvoiceFeatures_clone(&o_conv);
-       LDKCResult_InvoiceFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ), "LDKCResult_InvoiceFeaturesDecodeErrorZ");
-       *ret_conv = CResult_InvoiceFeaturesDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+LDKCResult_COption_TypeZDecodeErrorZ read_LDKCustomMessageReader_jcall(const void* this_arg, uint16_t message_type, LDKu8slice buffer) {
+       LDKCustomMessageReader_JCalls *j_calls = (LDKCustomMessageReader_JCalls*) this_arg;
+       LDKu8slice buffer_var = buffer;
+       int8_tArray buffer_arr = init_int8_tArray(buffer_var.datalen);
+       memcpy(buffer_arr->elems, buffer_var.data, buffer_var.datalen);
+       uint32_t ret = js_invoke_function_2(j_calls->read_meth, (uint32_t)message_type, (uint32_t)buffer_arr);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_COption_TypeZDecodeErrorZ ret_conv = *(LDKCResult_COption_TypeZDecodeErrorZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceFeaturesDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_InvoiceFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ), "LDKCResult_InvoiceFeaturesDecodeErrorZ");
-       *ret_conv = CResult_InvoiceFeaturesDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+static void LDKCustomMessageReader_JCalls_cloned(LDKCustomMessageReader* new_obj) {
+       LDKCustomMessageReader_JCalls *j_calls = (LDKCustomMessageReader_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
+static inline LDKCustomMessageReader LDKCustomMessageReader_init (/*TODO: JS Object Reference */void* o) {
+       LDKCustomMessageReader_JCalls *calls = MALLOC(sizeof(LDKCustomMessageReader_JCalls), "LDKCustomMessageReader_JCalls");
+       atomic_init(&calls->refcnt, 1);
+       //TODO: Assign calls->o from o
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_InvoiceFeaturesDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_InvoiceFeaturesDecodeErrorZ* o_conv = (LDKCResult_InvoiceFeaturesDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_InvoiceFeaturesDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+       LDKCustomMessageReader ret = {
+               .this_arg = (void*) calls,
+               .read = read_LDKCustomMessageReader_jcall,
+               .free = LDKCustomMessageReader_JCalls_free,
+       };
+       return ret;
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_InvoiceFeaturesDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_InvoiceFeaturesDecodeErrorZ _res_conv = *(LDKCResult_InvoiceFeaturesDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_InvoiceFeaturesDecodeErrorZ_free(_res_conv);
+long  __attribute__((visibility("default"))) TS_LDKCustomMessageReader_new(/*TODO: JS Object Reference */void* o) {
+       LDKCustomMessageReader *res_ptr = MALLOC(sizeof(LDKCustomMessageReader), "LDKCustomMessageReader");
+       *res_ptr = LDKCustomMessageReader_init(o);
+       return (long)res_ptr;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelTypeFeaturesDecodeErrorZ_ok(uint32_t o) {
-       LDKChannelTypeFeatures o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = ChannelTypeFeatures_clone(&o_conv);
-       LDKCResult_ChannelTypeFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ), "LDKCResult_ChannelTypeFeaturesDecodeErrorZ");
-       *ret_conv = CResult_ChannelTypeFeaturesDecodeErrorZ_ok(o_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CustomMessageReader_read(uint32_t this_arg, int16_t message_type, int8_tArray buffer) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKCustomMessageReader* this_arg_conv = (LDKCustomMessageReader*)this_arg_ptr;
+       LDKu8slice buffer_ref;
+       buffer_ref.datalen = buffer->arr_len;
+       buffer_ref.data = buffer->elems;
+       LDKCResult_COption_TypeZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_TypeZDecodeErrorZ), "LDKCResult_COption_TypeZDecodeErrorZ");
+       *ret_conv = (this_arg_conv->read)(this_arg_conv->this_arg, message_type, buffer_ref);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelTypeFeaturesDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ChannelTypeFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ), "LDKCResult_ChannelTypeFeaturesDecodeErrorZ");
-       *ret_conv = CResult_ChannelTypeFeaturesDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+typedef struct LDKCustomMessageHandler_JCalls {
+       atomic_size_t refcnt;
+       LDKCustomMessageReader_JCalls* CustomMessageReader;
+       uint32_t handle_custom_message_meth;
+       uint32_t get_and_clear_pending_msg_meth;
+} LDKCustomMessageHandler_JCalls;
+static void LDKCustomMessageHandler_JCalls_free(void* this_arg) {
+       LDKCustomMessageHandler_JCalls *j_calls = (LDKCustomMessageHandler_JCalls*) this_arg;
+       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
+               js_free_function_ptr(j_calls->handle_custom_message_meth);
+               js_free_function_ptr(j_calls->get_and_clear_pending_msg_meth);
+               FREE(j_calls);
+       }
+}
+LDKCResult_NoneLightningErrorZ handle_custom_message_LDKCustomMessageHandler_jcall(const void* this_arg, LDKType msg, LDKPublicKey sender_node_id) {
+       LDKCustomMessageHandler_JCalls *j_calls = (LDKCustomMessageHandler_JCalls*) this_arg;
+       LDKType* msg_ret = MALLOC(sizeof(LDKType), "LDKType");
+       *msg_ret = msg;
+       int8_tArray sender_node_id_arr = init_int8_tArray(33);
+       memcpy(sender_node_id_arr->elems, sender_node_id.compressed_form, 33);
+       uint32_t ret = js_invoke_function_2(j_calls->handle_custom_message_meth, (uint32_t)(uint64_t)msg_ret, (uint32_t)sender_node_id_arr);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(ret_ptr);
+       FREE((void*)ret);
+       return ret_conv;
+}
+LDKCVec_C2Tuple_PublicKeyTypeZZ get_and_clear_pending_msg_LDKCustomMessageHandler_jcall(const void* this_arg) {
+       LDKCustomMessageHandler_JCalls *j_calls = (LDKCustomMessageHandler_JCalls*) this_arg;
+       uint32_tArray ret = (uint32_tArray)js_invoke_function_0(j_calls->get_and_clear_pending_msg_meth);
+       LDKCVec_C2Tuple_PublicKeyTypeZZ ret_constr;
+       ret_constr.datalen = ret->arr_len;
+       if (ret_constr.datalen > 0)
+               ret_constr.data = MALLOC(ret_constr.datalen * sizeof(LDKC2Tuple_PublicKeyTypeZ), "LDKCVec_C2Tuple_PublicKeyTypeZZ Elements");
+       else
+               ret_constr.data = NULL;
+       uint32_t* ret_vals = ret->elems;
+       for (size_t z = 0; z < ret_constr.datalen; z++) {
+               uint32_t ret_conv_25 = ret_vals[z];
+               void* ret_conv_25_ptr = (void*)(((uint64_t)ret_conv_25) & ~1);
+               CHECK_ACCESS(ret_conv_25_ptr);
+               LDKC2Tuple_PublicKeyTypeZ ret_conv_25_conv = *(LDKC2Tuple_PublicKeyTypeZ*)(ret_conv_25_ptr);
+               FREE((void*)ret_conv_25);
+               ret_constr.data[z] = ret_conv_25_conv;
+       }
+       return ret_constr;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelTypeFeaturesDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ChannelTypeFeaturesDecodeErrorZ* o_conv = (LDKCResult_ChannelTypeFeaturesDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ChannelTypeFeaturesDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+static void LDKCustomMessageHandler_JCalls_cloned(LDKCustomMessageHandler* new_obj) {
+       LDKCustomMessageHandler_JCalls *j_calls = (LDKCustomMessageHandler_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
+       atomic_fetch_add_explicit(&j_calls->CustomMessageReader->refcnt, 1, memory_order_release);
 }
+static inline LDKCustomMessageHandler LDKCustomMessageHandler_init (/*TODO: JS Object Reference */void* o, /*TODO: JS Object Reference */void* CustomMessageReader) {
+       LDKCustomMessageHandler_JCalls *calls = MALLOC(sizeof(LDKCustomMessageHandler_JCalls), "LDKCustomMessageHandler_JCalls");
+       atomic_init(&calls->refcnt, 1);
+       //TODO: Assign calls->o from o
 
-void  __attribute__((visibility("default"))) TS_CResult_ChannelTypeFeaturesDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_ChannelTypeFeaturesDecodeErrorZ _res_conv = *(LDKCResult_ChannelTypeFeaturesDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_ChannelTypeFeaturesDecodeErrorZ_free(_res_conv);
+       LDKCustomMessageHandler ret = {
+               .this_arg = (void*) calls,
+               .handle_custom_message = handle_custom_message_LDKCustomMessageHandler_jcall,
+               .get_and_clear_pending_msg = get_and_clear_pending_msg_LDKCustomMessageHandler_jcall,
+               .free = LDKCustomMessageHandler_JCalls_free,
+               .CustomMessageReader = LDKCustomMessageReader_init(CustomMessageReader),
+       };
+       calls->CustomMessageReader = ret.CustomMessageReader.this_arg;
+       return ret;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_ok(uint32_t o) {
-       LDKDelayedPaymentOutputDescriptor o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = DelayedPaymentOutputDescriptor_clone(&o_conv);
-       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ");
-       *ret_conv = CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+long  __attribute__((visibility("default"))) TS_LDKCustomMessageHandler_new(/*TODO: JS Object Reference */void* o, /*TODO: JS Object Reference */ void* CustomMessageReader) {
+       LDKCustomMessageHandler *res_ptr = MALLOC(sizeof(LDKCustomMessageHandler), "LDKCustomMessageHandler");
+       *res_ptr = LDKCustomMessageHandler_init(o, CustomMessageReader);
+       return (long)res_ptr;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ");
-       *ret_conv = CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_err(e_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CustomMessageHandler_handle_custom_message(uint32_t this_arg, uint32_t msg, int8_tArray sender_node_id) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKCustomMessageHandler* this_arg_conv = (LDKCustomMessageHandler*)this_arg_ptr;
+       void* msg_ptr = (void*)(((uint64_t)msg) & ~1);
+       CHECK_ACCESS(msg_ptr);
+       LDKType msg_conv = *(LDKType*)(msg_ptr);
+       LDKPublicKey sender_node_id_ref;
+       CHECK(sender_node_id->arr_len == 33);
+       memcpy(sender_node_id_ref.compressed_form, sender_node_id->elems, 33);
+       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
+       *ret_conv = (this_arg_conv->handle_custom_message)(this_arg_conv->this_arg, msg_conv, sender_node_id_ref);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* o_conv = (LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ _res_conv = *(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(_res_conv);
+uint32_tArray  __attribute__((visibility("default"))) TS_CustomMessageHandler_get_and_clear_pending_msg(uint32_t this_arg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKCustomMessageHandler* this_arg_conv = (LDKCustomMessageHandler*)this_arg_ptr;
+       LDKCVec_C2Tuple_PublicKeyTypeZZ ret_var = (this_arg_conv->get_and_clear_pending_msg)(this_arg_conv->this_arg);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t z = 0; z < ret_var.datalen; z++) {
+               LDKC2Tuple_PublicKeyTypeZ* ret_conv_25_conv = MALLOC(sizeof(LDKC2Tuple_PublicKeyTypeZ), "LDKC2Tuple_PublicKeyTypeZ");
+               *ret_conv_25_conv = ret_var.data[z];
+               ret_arr_ptr[z] = ((uint64_t)ret_conv_25_conv);
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-static inline uint64_t CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone_ptr(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ");
-       *ret_conv = CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone(arg);
-       return (uint64_t)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_function_ptr(j_calls->send_data_meth);
+               js_free_function_ptr(j_calls->disconnect_socket_meth);
+               js_free_function_ptr(j_calls->eq_meth);
+               js_free_function_ptr(j_calls->hash_meth);
+               FREE(j_calls);
+       }
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* arg_conv = (LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+uintptr_t send_data_LDKSocketDescriptor_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_int8_tArray(data_var.datalen);
+       memcpy(data_arr->elems, data_var.data, data_var.datalen);
+       return js_invoke_function_2(j_calls->send_data_meth, (uint32_t)data_arr, (uint32_t)resume_read);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* orig_conv = (LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ*)(orig & ~1);
-       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ");
-       *ret_conv = CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+void disconnect_socket_LDKSocketDescriptor_jcall(void* this_arg) {
+       LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg;
+       js_invoke_function_0(j_calls->disconnect_socket_meth);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_ok(uint32_t o) {
-       LDKStaticPaymentOutputDescriptor o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = StaticPaymentOutputDescriptor_clone(&o_conv);
-       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ");
-       *ret_conv = CResult_StaticPaymentOutputDescriptorDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+bool eq_LDKSocketDescriptor_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, (uint32_t)(uint64_t)other_arg_clone);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ");
-       *ret_conv = CResult_StaticPaymentOutputDescriptorDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+uint64_t hash_LDKSocketDescriptor_jcall(const void* this_arg) {
+       LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg;
+       return js_invoke_function_0(j_calls->hash_meth);
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* o_conv = (LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_StaticPaymentOutputDescriptorDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+static void LDKSocketDescriptor_JCalls_cloned(LDKSocketDescriptor* new_obj) {
+       LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
+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
 
-void  __attribute__((visibility("default"))) TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ _res_conv = *(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(_res_conv);
+       LDKSocketDescriptor ret = {
+               .this_arg = (void*) calls,
+               .send_data = send_data_LDKSocketDescriptor_jcall,
+               .disconnect_socket = disconnect_socket_LDKSocketDescriptor_jcall,
+               .eq = eq_LDKSocketDescriptor_jcall,
+               .hash = hash_LDKSocketDescriptor_jcall,
+               .cloned = LDKSocketDescriptor_JCalls_cloned,
+               .free = LDKSocketDescriptor_JCalls_free,
+       };
+       return ret;
 }
-
-static inline uint64_t CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone_ptr(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ");
-       *ret_conv = CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone(arg);
-       return (uint64_t)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;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* arg_conv = (LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_SocketDescriptor_send_data(uint32_t this_arg, int8_tArray data, jboolean resume_read) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKSocketDescriptor* this_arg_conv = (LDKSocketDescriptor*)this_arg_ptr;
+       LDKu8slice data_ref;
+       data_ref.datalen = data->arr_len;
+       data_ref.data = data->elems;
+       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_StaticPaymentOutputDescriptorDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* orig_conv = (LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ*)(orig & ~1);
-       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ");
-       *ret_conv = CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_SocketDescriptor_disconnect_socket(uint32_t this_arg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKSocketDescriptor* this_arg_conv = (LDKSocketDescriptor*)this_arg_ptr;
+       (this_arg_conv->disconnect_socket)(this_arg_conv->this_arg);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescriptorDecodeErrorZ_ok(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKSpendableOutputDescriptor o_conv = *(LDKSpendableOutputDescriptor*)(o_ptr);
-       o_conv = SpendableOutputDescriptor_clone((LDKSpendableOutputDescriptor*)(((uint64_t)o) & ~1));
-       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ), "LDKCResult_SpendableOutputDescriptorDecodeErrorZ");
-       *ret_conv = CResult_SpendableOutputDescriptorDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+int64_t  __attribute__((visibility("default"))) TS_SocketDescriptor_hash(uint32_t this_arg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKSocketDescriptor* this_arg_conv = (LDKSocketDescriptor*)this_arg_ptr;
+       int64_t ret_val = (this_arg_conv->hash)(this_arg_conv->this_arg);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescriptorDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ), "LDKCResult_SpendableOutputDescriptorDecodeErrorZ");
-       *ret_conv = CResult_SpendableOutputDescriptorDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+typedef struct LDKScore_JCalls {
+       atomic_size_t refcnt;
+       uint32_t channel_penalty_msat_meth;
+       uint32_t payment_path_failed_meth;
+       uint32_t payment_path_successful_meth;
+       uint32_t write_meth;
+} LDKScore_JCalls;
+static void LDKScore_JCalls_free(void* this_arg) {
+       LDKScore_JCalls *j_calls = (LDKScore_JCalls*) this_arg;
+       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
+               js_free_function_ptr(j_calls->channel_penalty_msat_meth);
+               js_free_function_ptr(j_calls->payment_path_failed_meth);
+               js_free_function_ptr(j_calls->payment_path_successful_meth);
+               js_free_function_ptr(j_calls->write_meth);
+               FREE(j_calls);
+       }
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescriptorDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* o_conv = (LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_SpendableOutputDescriptorDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+uint64_t channel_penalty_msat_LDKScore_jcall(const void* this_arg, uint64_t short_channel_id, uint64_t send_amt_msat, LDKCOption_u64Z channel_capacity_msat, const LDKNodeId * source, const LDKNodeId * target) {
+       LDKScore_JCalls *j_calls = (LDKScore_JCalls*) this_arg;
+       LDKCOption_u64Z *channel_capacity_msat_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
+       *channel_capacity_msat_copy = channel_capacity_msat;
+       uint64_t channel_capacity_msat_ref = (uint64_t)channel_capacity_msat_copy;
+       LDKNodeId source_var = *source;
+       uint64_t source_ref = 0;
+       source_var = NodeId_clone(source);
+       CHECK((((uint64_t)source_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&source_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(source_var);
+       source_ref = (uint64_t)source_var.inner;
+       if (source_var.is_owned) {
+               source_ref |= 1;
+       }
+       LDKNodeId target_var = *target;
+       uint64_t target_ref = 0;
+       target_var = NodeId_clone(target);
+       CHECK((((uint64_t)target_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&target_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(target_var);
+       target_ref = (uint64_t)target_var.inner;
+       if (target_var.is_owned) {
+               target_ref |= 1;
+       }
+       return js_invoke_function_5(j_calls->channel_penalty_msat_meth, (uint32_t)short_channel_id, (uint32_t)send_amt_msat, (uint32_t)channel_capacity_msat_ref, (uint32_t)source_ref, (uint32_t)target_ref);
 }
-
-void  __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescriptorDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_SpendableOutputDescriptorDecodeErrorZ _res_conv = *(LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_SpendableOutputDescriptorDecodeErrorZ_free(_res_conv);
+void payment_path_failed_LDKScore_jcall(void* this_arg, LDKCVec_RouteHopZ path, uint64_t short_channel_id) {
+       LDKScore_JCalls *j_calls = (LDKScore_JCalls*) this_arg;
+       LDKCVec_RouteHopZ path_var = path;
+       uint32_tArray path_arr = NULL;
+       path_arr = init_uint32_tArray(path_var.datalen);
+       uint32_t *path_arr_ptr = (uint32_t*)(path_arr + 4);
+       for (size_t k = 0; k < path_var.datalen; k++) {
+               LDKRouteHop path_conv_10_var = path_var.data[k];
+               uint64_t path_conv_10_ref = 0;
+               CHECK((((uint64_t)path_conv_10_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&path_conv_10_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_var);
+               path_conv_10_ref = (uint64_t)path_conv_10_var.inner;
+               if (path_conv_10_var.is_owned) {
+                       path_conv_10_ref |= 1;
+               }
+               path_arr_ptr[k] = path_conv_10_ref;
+       }
+       
+       FREE(path_var.data);
+       js_invoke_function_2(j_calls->payment_path_failed_meth, (uint32_t)path_arr, (uint32_t)short_channel_id);
 }
-
-static inline uint64_t CResult_SpendableOutputDescriptorDecodeErrorZ_clone_ptr(LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ), "LDKCResult_SpendableOutputDescriptorDecodeErrorZ");
-       *ret_conv = CResult_SpendableOutputDescriptorDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+void payment_path_successful_LDKScore_jcall(void* this_arg, LDKCVec_RouteHopZ path) {
+       LDKScore_JCalls *j_calls = (LDKScore_JCalls*) this_arg;
+       LDKCVec_RouteHopZ path_var = path;
+       uint32_tArray path_arr = NULL;
+       path_arr = init_uint32_tArray(path_var.datalen);
+       uint32_t *path_arr_ptr = (uint32_t*)(path_arr + 4);
+       for (size_t k = 0; k < path_var.datalen; k++) {
+               LDKRouteHop path_conv_10_var = path_var.data[k];
+               uint64_t path_conv_10_ref = 0;
+               CHECK((((uint64_t)path_conv_10_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&path_conv_10_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_var);
+               path_conv_10_ref = (uint64_t)path_conv_10_var.inner;
+               if (path_conv_10_var.is_owned) {
+                       path_conv_10_ref |= 1;
+               }
+               path_arr_ptr[k] = path_conv_10_ref;
+       }
+       
+       FREE(path_var.data);
+       js_invoke_function_1(j_calls->payment_path_successful_meth, (uint32_t)path_arr);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescriptorDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* arg_conv = (LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_SpendableOutputDescriptorDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+LDKCVec_u8Z write_LDKScore_jcall(const void* this_arg) {
+       LDKScore_JCalls *j_calls = (LDKScore_JCalls*) this_arg;
+       int8_tArray ret = (int8_tArray)js_invoke_function_0(j_calls->write_meth);
+       LDKCVec_u8Z ret_ref;
+       ret_ref.datalen = ret->arr_len;
+       ret_ref.data = MALLOC(ret_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(ret_ref.data, ret->elems, ret_ref.datalen);
+       return ret_ref;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescriptorDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* orig_conv = (LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(orig & ~1);
-       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ), "LDKCResult_SpendableOutputDescriptorDecodeErrorZ");
-       *ret_conv = CResult_SpendableOutputDescriptorDecodeErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+static void LDKScore_JCalls_cloned(LDKScore* new_obj) {
+       LDKScore_JCalls *j_calls = (LDKScore_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
+static inline LDKScore LDKScore_init (/*TODO: JS Object Reference */void* o) {
+       LDKScore_JCalls *calls = MALLOC(sizeof(LDKScore_JCalls), "LDKScore_JCalls");
+       atomic_init(&calls->refcnt, 1);
+       //TODO: Assign calls->o from o
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneNoneZ_ok() {
-       LDKCResult_NoneNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneNoneZ), "LDKCResult_NoneNoneZ");
-       *ret_conv = CResult_NoneNoneZ_ok();
-       return (uint64_t)ret_conv;
+       LDKScore ret = {
+               .this_arg = (void*) calls,
+               .channel_penalty_msat = channel_penalty_msat_LDKScore_jcall,
+               .payment_path_failed = payment_path_failed_LDKScore_jcall,
+               .payment_path_successful = payment_path_successful_LDKScore_jcall,
+               .write = write_LDKScore_jcall,
+               .free = LDKScore_JCalls_free,
+       };
+       return ret;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneNoneZ_err() {
-       LDKCResult_NoneNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneNoneZ), "LDKCResult_NoneNoneZ");
-       *ret_conv = CResult_NoneNoneZ_err();
-       return (uint64_t)ret_conv;
+long  __attribute__((visibility("default"))) TS_LDKScore_new(/*TODO: JS Object Reference */void* o) {
+       LDKScore *res_ptr = MALLOC(sizeof(LDKScore), "LDKScore");
+       *res_ptr = LDKScore_init(o);
+       return (long)res_ptr;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_NoneNoneZ_is_ok(uint32_t o) {
-       LDKCResult_NoneNoneZ* o_conv = (LDKCResult_NoneNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_NoneNoneZ_is_ok(o_conv);
+int64_t  __attribute__((visibility("default"))) TS_Score_channel_penalty_msat(uint32_t this_arg, int64_t short_channel_id, int64_t send_amt_msat, uint32_t channel_capacity_msat, uint32_t source, uint32_t target) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKScore* this_arg_conv = (LDKScore*)this_arg_ptr;
+       void* channel_capacity_msat_ptr = (void*)(((uint64_t)channel_capacity_msat) & ~1);
+       CHECK_ACCESS(channel_capacity_msat_ptr);
+       LDKCOption_u64Z channel_capacity_msat_conv = *(LDKCOption_u64Z*)(channel_capacity_msat_ptr);
+       channel_capacity_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)channel_capacity_msat) & ~1));
+       LDKNodeId source_conv;
+       source_conv.inner = (void*)(source & (~1));
+       source_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(source_conv);
+       LDKNodeId target_conv;
+       target_conv.inner = (void*)(target & (~1));
+       target_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(target_conv);
+       int64_t ret_val = (this_arg_conv->channel_penalty_msat)(this_arg_conv->this_arg, short_channel_id, send_amt_msat, channel_capacity_msat_conv, &source_conv, &target_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_NoneNoneZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_NoneNoneZ _res_conv = *(LDKCResult_NoneNoneZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_NoneNoneZ_free(_res_conv);
+void  __attribute__((visibility("default"))) TS_Score_payment_path_failed(uint32_t this_arg, uint32_tArray path, int64_t short_channel_id) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKScore* this_arg_conv = (LDKScore*)this_arg_ptr;
+       LDKCVec_RouteHopZ path_constr;
+       path_constr.datalen = path->arr_len;
+       if (path_constr.datalen > 0)
+               path_constr.data = MALLOC(path_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements");
+       else
+               path_constr.data = NULL;
+       uint32_t* path_vals = path->elems;
+       for (size_t k = 0; k < path_constr.datalen; k++) {
+               uint32_t path_conv_10 = path_vals[k];
+               LDKRouteHop path_conv_10_conv;
+               path_conv_10_conv.inner = (void*)(path_conv_10 & (~1));
+               path_conv_10_conv.is_owned = (path_conv_10 & 1) || (path_conv_10 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_conv);
+               path_conv_10_conv = RouteHop_clone(&path_conv_10_conv);
+               path_constr.data[k] = path_conv_10_conv;
+       }
+       (this_arg_conv->payment_path_failed)(this_arg_conv->this_arg, path_constr, short_channel_id);
 }
 
-static inline uint64_t CResult_NoneNoneZ_clone_ptr(LDKCResult_NoneNoneZ *NONNULL_PTR arg) {
-       LDKCResult_NoneNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneNoneZ), "LDKCResult_NoneNoneZ");
-       *ret_conv = CResult_NoneNoneZ_clone(arg);
-       return (uint64_t)ret_conv;
-}
-int64_t  __attribute__((visibility("default"))) TS_CResult_NoneNoneZ_clone_ptr(uint32_t arg) {
-       LDKCResult_NoneNoneZ* arg_conv = (LDKCResult_NoneNoneZ*)(arg & ~1);
-       int64_t ret_val = CResult_NoneNoneZ_clone_ptr(arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_Score_payment_path_successful(uint32_t this_arg, uint32_tArray path) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKScore* this_arg_conv = (LDKScore*)this_arg_ptr;
+       LDKCVec_RouteHopZ path_constr;
+       path_constr.datalen = path->arr_len;
+       if (path_constr.datalen > 0)
+               path_constr.data = MALLOC(path_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements");
+       else
+               path_constr.data = NULL;
+       uint32_t* path_vals = path->elems;
+       for (size_t k = 0; k < path_constr.datalen; k++) {
+               uint32_t path_conv_10 = path_vals[k];
+               LDKRouteHop path_conv_10_conv;
+               path_conv_10_conv.inner = (void*)(path_conv_10 & (~1));
+               path_conv_10_conv.is_owned = (path_conv_10 & 1) || (path_conv_10 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_conv);
+               path_conv_10_conv = RouteHop_clone(&path_conv_10_conv);
+               path_constr.data[k] = path_conv_10_conv;
+       }
+       (this_arg_conv->payment_path_successful)(this_arg_conv->this_arg, path_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneNoneZ_clone(uint32_t orig) {
-       LDKCResult_NoneNoneZ* orig_conv = (LDKCResult_NoneNoneZ*)(orig & ~1);
-       LDKCResult_NoneNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneNoneZ), "LDKCResult_NoneNoneZ");
-       *ret_conv = CResult_NoneNoneZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_Score_write(uint32_t this_arg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKScore* this_arg_conv = (LDKScore*)this_arg_ptr;
+       LDKCVec_u8Z ret_var = (this_arg_conv->write)(this_arg_conv->this_arg);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-static inline uint64_t C2Tuple_SignatureCVec_SignatureZZ_clone_ptr(LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR arg) {
-       LDKC2Tuple_SignatureCVec_SignatureZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ), "LDKC2Tuple_SignatureCVec_SignatureZZ");
-       *ret_conv = C2Tuple_SignatureCVec_SignatureZZ_clone(arg);
-       return ((uint64_t)ret_conv);
+typedef struct LDKLockableScore_JCalls {
+       atomic_size_t refcnt;
+       uint32_t lock_meth;
+} LDKLockableScore_JCalls;
+static void LDKLockableScore_JCalls_free(void* this_arg) {
+       LDKLockableScore_JCalls *j_calls = (LDKLockableScore_JCalls*) this_arg;
+       if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) {
+               js_free_function_ptr(j_calls->lock_meth);
+               FREE(j_calls);
+       }
 }
-int64_t  __attribute__((visibility("default"))) TS_C2Tuple_SignatureCVec_SignatureZZ_clone_ptr(uint32_t arg) {
-       LDKC2Tuple_SignatureCVec_SignatureZZ* arg_conv = (LDKC2Tuple_SignatureCVec_SignatureZZ*)(arg & ~1);
-       int64_t ret_val = C2Tuple_SignatureCVec_SignatureZZ_clone_ptr(arg_conv);
-       return ret_val;
+LDKScore lock_LDKLockableScore_jcall(const void* this_arg) {
+       LDKLockableScore_JCalls *j_calls = (LDKLockableScore_JCalls*) this_arg;
+       uint32_t ret = js_invoke_function_0(j_calls->lock_meth);
+       void* ret_ptr = (void*)(((uint64_t)ret) & ~1);
+       CHECK_ACCESS(ret_ptr);
+       LDKScore ret_conv = *(LDKScore*)(ret_ptr);// Warning: we may need a move here but no clone is available for LDKScore
+       
+       return ret_conv;
 }
-
-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_conv = MALLOC(sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ), "LDKC2Tuple_SignatureCVec_SignatureZZ");
-       *ret_conv = C2Tuple_SignatureCVec_SignatureZZ_clone(orig_conv);
-       return ((uint64_t)ret_conv);
+static void LDKLockableScore_JCalls_cloned(LDKLockableScore* new_obj) {
+       LDKLockableScore_JCalls *j_calls = (LDKLockableScore_JCalls*) new_obj->this_arg;
+       atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_SignatureCVec_SignatureZZ_new(int8_tArray a, ptrArray b) {
-       LDKSignature a_ref;
-       CHECK(*((uint32_t*)a) == 64);
-       memcpy(a_ref.compact_form, (uint8_t*)(a + 4), 64);
-       LDKCVec_SignatureZ b_constr;
-       b_constr.datalen = *((uint32_t*)b);
-       if (b_constr.datalen > 0)
-               b_constr.data = MALLOC(b_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ Elements");
-       else
-               b_constr.data = NULL;
-       int8_tArray* b_vals = (int8_tArray*)(b + 4);
-       for (size_t m = 0; m < b_constr.datalen; m++) {
-               int8_tArray b_conv_12 = b_vals[m];
-               LDKSignature b_conv_12_ref;
-               CHECK(*((uint32_t*)b_conv_12) == 64);
-               memcpy(b_conv_12_ref.compact_form, (uint8_t*)(b_conv_12 + 4), 64);
-               b_constr.data[m] = b_conv_12_ref;
-       }
-       LDKC2Tuple_SignatureCVec_SignatureZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ), "LDKC2Tuple_SignatureCVec_SignatureZZ");
-       *ret_conv = C2Tuple_SignatureCVec_SignatureZZ_new(a_ref, b_constr);
-       return ((uint64_t)ret_conv);
+static inline LDKLockableScore LDKLockableScore_init (/*TODO: JS Object Reference */void* o) {
+       LDKLockableScore_JCalls *calls = MALLOC(sizeof(LDKLockableScore_JCalls), "LDKLockableScore_JCalls");
+       atomic_init(&calls->refcnt, 1);
+       //TODO: Assign calls->o from o
+
+       LDKLockableScore ret = {
+               .this_arg = (void*) calls,
+               .lock = lock_LDKLockableScore_jcall,
+               .free = LDKLockableScore_JCalls_free,
+       };
+       return ret;
+}
+long  __attribute__((visibility("default"))) TS_LDKLockableScore_new(/*TODO: JS Object Reference */void* o) {
+       LDKLockableScore *res_ptr = MALLOC(sizeof(LDKLockableScore), "LDKLockableScore");
+       *res_ptr = LDKLockableScore_init(o);
+       return (long)res_ptr;
+}
+uint32_t  __attribute__((visibility("default"))) TS_LockableScore_lock(uint32_t this_arg) {
+       void* this_arg_ptr = (void*)(((uint64_t)this_arg) & ~1);
+       if (!(this_arg & 1)) { CHECK_ACCESS(this_arg_ptr); }
+       LDKLockableScore* this_arg_conv = (LDKLockableScore*)this_arg_ptr;
+       LDKScore* ret_ret = MALLOC(sizeof(LDKScore), "LDKScore");
+       *ret_ret = (this_arg_conv->lock)(this_arg_conv->this_arg);
+       return (uint64_t)ret_ret;
 }
 
-void  __attribute__((visibility("default"))) TS_C2Tuple_SignatureCVec_SignatureZZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKC2Tuple_SignatureCVec_SignatureZZ _res_conv = *(LDKC2Tuple_SignatureCVec_SignatureZZ*)(_res_ptr);
-       FREE((void*)_res);
-       C2Tuple_SignatureCVec_SignatureZZ_free(_res_conv);
+jstring  __attribute__((visibility("default"))) TS__ldk_get_compiled_version() {
+       LDKStr ret_str = _ldk_get_compiled_version();
+       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
+       Str_free(ret_str);
+       return ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKC2Tuple_SignatureCVec_SignatureZZ o_conv = *(LDKC2Tuple_SignatureCVec_SignatureZZ*)(o_ptr);
-       o_conv = C2Tuple_SignatureCVec_SignatureZZ_clone((LDKC2Tuple_SignatureCVec_SignatureZZ*)(((uint64_t)o) & ~1));
-       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ), "LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ");
-       *ret_conv = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+jstring  __attribute__((visibility("default"))) TS__ldk_c_bindings_get_compiled_version() {
+       LDKStr ret_str = _ldk_c_bindings_get_compiled_version();
+       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
+       Str_free(ret_str);
+       return ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err() {
-       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ), "LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ");
-       *ret_conv = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err();
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_Transaction_free(int8_tArray _res) {
+       LDKTransaction _res_ref;
+       _res_ref.datalen = _res->arr_len;
+       _res_ref.data = MALLOC(_res_ref.datalen, "LDKTransaction Bytes");
+       memcpy(_res_ref.data, _res->elems, _res_ref.datalen);
+       _res_ref.data_is_owned = true;
+       Transaction_free(_res_ref);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_is_ok(uint32_t o) {
-       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* o_conv = (LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_is_ok(o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_TxOut_new(int8_tArray script_pubkey, int64_t value) {
+       LDKCVec_u8Z script_pubkey_ref;
+       script_pubkey_ref.datalen = script_pubkey->arr_len;
+       script_pubkey_ref.data = MALLOC(script_pubkey_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(script_pubkey_ref.data, script_pubkey->elems, script_pubkey_ref.datalen);
+       LDKTxOut* ret_ref = MALLOC(sizeof(LDKTxOut), "LDKTxOut");
+       *ret_ref = TxOut_new(script_pubkey_ref, value);
+       return (uint64_t)ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_TxOut_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ _res_conv = *(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(_res_ptr);
+       LDKTxOut _res_conv = *(LDKTxOut*)(_res_ptr);
        FREE((void*)_res);
-       CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(_res_conv);
+       TxOut_free(_res_conv);
 }
 
-static inline uint64_t CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone_ptr(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR arg) {
-       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ), "LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ");
-       *ret_conv = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline uint64_t TxOut_clone_ptr(LDKTxOut *NONNULL_PTR arg) {
+       LDKTxOut* ret_ref = MALLOC(sizeof(LDKTxOut), "LDKTxOut");
+       *ret_ref = TxOut_clone(arg);
+       return (uint64_t)ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone_ptr(uint32_t arg) {
-       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* arg_conv = (LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(arg & ~1);
-       int64_t ret_val = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_TxOut_clone_ptr(uint32_t arg) {
+       LDKTxOut* arg_conv = (LDKTxOut*)(arg & ~1);
+       int64_t ret_val = TxOut_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(uint32_t orig) {
-       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* orig_conv = (LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(orig & ~1);
-       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ), "LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ");
-       *ret_conv = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(orig_conv);
-       return (uint64_t)ret_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 (uint64_t)ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SignatureNoneZ_ok(int8_tArray o) {
-       LDKSignature o_ref;
-       CHECK(*((uint32_t*)o) == 64);
-       memcpy(o_ref.compact_form, (uint8_t*)(o + 4), 64);
-       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
-       *ret_conv = CResult_SignatureNoneZ_ok(o_ref);
+void  __attribute__((visibility("default"))) TS_Str_free(jstring _res) {
+       LDKStr dummy = { .chars = NULL, .len = 0, .chars_is_owned = false };
+       Str_free(dummy);
+}
+
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = ChannelConfig_clone(&o_conv);
+       LDKCResult_ChannelConfigDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelConfigDecodeErrorZ), "LDKCResult_ChannelConfigDecodeErrorZ");
+       *ret_conv = CResult_ChannelConfigDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SignatureNoneZ_err() {
-       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
-       *ret_conv = CResult_SignatureNoneZ_err();
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_ChannelConfigDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelConfigDecodeErrorZ), "LDKCResult_ChannelConfigDecodeErrorZ");
+       *ret_conv = CResult_ChannelConfigDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_SignatureNoneZ_is_ok(uint32_t o) {
-       LDKCResult_SignatureNoneZ* o_conv = (LDKCResult_SignatureNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_SignatureNoneZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelConfigDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ChannelConfigDecodeErrorZ* o_conv = (LDKCResult_ChannelConfigDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ChannelConfigDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_SignatureNoneZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ChannelConfigDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_SignatureNoneZ _res_conv = *(LDKCResult_SignatureNoneZ*)(_res_ptr);
+       LDKCResult_ChannelConfigDecodeErrorZ _res_conv = *(LDKCResult_ChannelConfigDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_SignatureNoneZ_free(_res_conv);
+       CResult_ChannelConfigDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_SignatureNoneZ_clone_ptr(LDKCResult_SignatureNoneZ *NONNULL_PTR arg) {
-       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
-       *ret_conv = CResult_SignatureNoneZ_clone(arg);
+static inline uint64_t CResult_ChannelConfigDecodeErrorZ_clone_ptr(LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_ChannelConfigDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelConfigDecodeErrorZ), "LDKCResult_ChannelConfigDecodeErrorZ");
+       *ret_conv = CResult_ChannelConfigDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_SignatureNoneZ_clone_ptr(uint32_t arg) {
-       LDKCResult_SignatureNoneZ* arg_conv = (LDKCResult_SignatureNoneZ*)(arg & ~1);
-       int64_t ret_val = CResult_SignatureNoneZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_ChannelConfigDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ChannelConfigDecodeErrorZ* arg_conv = (LDKCResult_ChannelConfigDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_ChannelConfigDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SignatureNoneZ_clone(uint32_t orig) {
-       LDKCResult_SignatureNoneZ* orig_conv = (LDKCResult_SignatureNoneZ*)(orig & ~1);
-       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
-       *ret_conv = CResult_SignatureNoneZ_clone(orig_conv);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SignDecodeErrorZ_ok(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKSign o_conv = *(LDKSign*)(o_ptr);
-       LDKCResult_SignDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SignDecodeErrorZ), "LDKCResult_SignDecodeErrorZ");
-       *ret_conv = CResult_SignDecodeErrorZ_ok(o_conv);
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = OutPoint_clone(&o_conv);
+       LDKCResult_OutPointDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OutPointDecodeErrorZ), "LDKCResult_OutPointDecodeErrorZ");
+       *ret_conv = CResult_OutPointDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SignDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_SignDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SignDecodeErrorZ), "LDKCResult_SignDecodeErrorZ");
-       *ret_conv = CResult_SignDecodeErrorZ_err(e_conv);
+       LDKCResult_OutPointDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OutPointDecodeErrorZ), "LDKCResult_OutPointDecodeErrorZ");
+       *ret_conv = CResult_OutPointDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_SignDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_SignDecodeErrorZ* o_conv = (LDKCResult_SignDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_SignDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_OutPointDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_OutPointDecodeErrorZ* o_conv = (LDKCResult_OutPointDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_OutPointDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_SignDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_OutPointDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_SignDecodeErrorZ _res_conv = *(LDKCResult_SignDecodeErrorZ*)(_res_ptr);
+       LDKCResult_OutPointDecodeErrorZ _res_conv = *(LDKCResult_OutPointDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_SignDecodeErrorZ_free(_res_conv);
+       CResult_OutPointDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_SignDecodeErrorZ_clone_ptr(LDKCResult_SignDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_SignDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SignDecodeErrorZ), "LDKCResult_SignDecodeErrorZ");
-       *ret_conv = CResult_SignDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_OutPointDecodeErrorZ_clone_ptr(LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_OutPointDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OutPointDecodeErrorZ), "LDKCResult_OutPointDecodeErrorZ");
+       *ret_conv = CResult_OutPointDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_SignDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_SignDecodeErrorZ* arg_conv = (LDKCResult_SignDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_SignDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_OutPointDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_OutPointDecodeErrorZ* arg_conv = (LDKCResult_OutPointDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_OutPointDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SignDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_SignDecodeErrorZ* orig_conv = (LDKCResult_SignDecodeErrorZ*)(orig & ~1);
-       LDKCResult_SignDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SignDecodeErrorZ), "LDKCResult_SignDecodeErrorZ");
-       *ret_conv = CResult_SignDecodeErrorZ_clone(orig_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 (uint64_t)ret_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_SecretKeyErrorZ_ok(int8_tArray o) {
+       LDKSecretKey o_ref;
+       CHECK(o->arr_len == 32);
+       memcpy(o_ref.bytes, o->elems, 32);
+       LDKCResult_SecretKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SecretKeyErrorZ), "LDKCResult_SecretKeyErrorZ");
+       *ret_conv = CResult_SecretKeyErrorZ_ok(o_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RecoverableSignatureNoneZ_ok(int8_tArray arg) {
-       LDKRecoverableSignature arg_ref;
-       CHECK(*((uint32_t*)arg) == 68);
-       memcpy(arg_ref.serialized_form, (uint8_t*)(arg + 4), 68);
-       LDKCResult_RecoverableSignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_RecoverableSignatureNoneZ), "LDKCResult_RecoverableSignatureNoneZ");
-       *ret_conv = CResult_RecoverableSignatureNoneZ_ok(arg_ref);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RecoverableSignatureNoneZ_err() {
-       LDKCResult_RecoverableSignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_RecoverableSignatureNoneZ), "LDKCResult_RecoverableSignatureNoneZ");
-       *ret_conv = CResult_RecoverableSignatureNoneZ_err();
+jboolean  __attribute__((visibility("default"))) TS_CResult_SecretKeyErrorZ_is_ok(uint32_t o) {
+       LDKCResult_SecretKeyErrorZ* o_conv = (LDKCResult_SecretKeyErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_SecretKeyErrorZ_is_ok(o_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_CResult_SecretKeyErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_SecretKeyErrorZ _res_conv = *(LDKCResult_SecretKeyErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_SecretKeyErrorZ_free(_res_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PublicKeyErrorZ_ok(int8_tArray o) {
+       LDKPublicKey o_ref;
+       CHECK(o->arr_len == 33);
+       memcpy(o_ref.compressed_form, o->elems, 33);
+       LDKCResult_PublicKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeyErrorZ), "LDKCResult_PublicKeyErrorZ");
+       *ret_conv = CResult_PublicKeyErrorZ_ok(o_ref);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_RecoverableSignatureNoneZ_is_ok(uint32_t o) {
-       LDKCResult_RecoverableSignatureNoneZ* o_conv = (LDKCResult_RecoverableSignatureNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_RecoverableSignatureNoneZ_is_ok(o_conv);
+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 (uint64_t)ret_conv;
+}
+
+jboolean  __attribute__((visibility("default"))) TS_CResult_PublicKeyErrorZ_is_ok(uint32_t o) {
+       LDKCResult_PublicKeyErrorZ* o_conv = (LDKCResult_PublicKeyErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_PublicKeyErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_RecoverableSignatureNoneZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_PublicKeyErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_RecoverableSignatureNoneZ _res_conv = *(LDKCResult_RecoverableSignatureNoneZ*)(_res_ptr);
+       LDKCResult_PublicKeyErrorZ _res_conv = *(LDKCResult_PublicKeyErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_RecoverableSignatureNoneZ_free(_res_conv);
+       CResult_PublicKeyErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_RecoverableSignatureNoneZ_clone_ptr(LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR arg) {
-       LDKCResult_RecoverableSignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_RecoverableSignatureNoneZ), "LDKCResult_RecoverableSignatureNoneZ");
-       *ret_conv = CResult_RecoverableSignatureNoneZ_clone(arg);
+static inline uint64_t CResult_PublicKeyErrorZ_clone_ptr(LDKCResult_PublicKeyErrorZ *NONNULL_PTR arg) {
+       LDKCResult_PublicKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeyErrorZ), "LDKCResult_PublicKeyErrorZ");
+       *ret_conv = CResult_PublicKeyErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_RecoverableSignatureNoneZ_clone_ptr(uint32_t arg) {
-       LDKCResult_RecoverableSignatureNoneZ* arg_conv = (LDKCResult_RecoverableSignatureNoneZ*)(arg & ~1);
-       int64_t ret_val = CResult_RecoverableSignatureNoneZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_PublicKeyErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_PublicKeyErrorZ* arg_conv = (LDKCResult_PublicKeyErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_PublicKeyErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RecoverableSignatureNoneZ_clone(uint32_t orig) {
-       LDKCResult_RecoverableSignatureNoneZ* orig_conv = (LDKCResult_RecoverableSignatureNoneZ*)(orig & ~1);
-       LDKCResult_RecoverableSignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_RecoverableSignatureNoneZ), "LDKCResult_RecoverableSignatureNoneZ");
-       *ret_conv = CResult_RecoverableSignatureNoneZ_clone(orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PublicKeyErrorZ_clone(uint32_t orig) {
+       LDKCResult_PublicKeyErrorZ* orig_conv = (LDKCResult_PublicKeyErrorZ*)(orig & ~1);
+       LDKCResult_PublicKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeyErrorZ), "LDKCResult_PublicKeyErrorZ");
+       *ret_conv = CResult_PublicKeyErrorZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_CVec_CVec_u8ZZ_free(ptrArray _res) {
-       LDKCVec_CVec_u8ZZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKCVec_u8Z), "LDKCVec_CVec_u8ZZ 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 _res_conv_12 = _res_vals[m];
-               LDKCVec_u8Z _res_conv_12_ref;
-               _res_conv_12_ref.datalen = *((uint32_t*)_res_conv_12);
-               _res_conv_12_ref.data = MALLOC(_res_conv_12_ref.datalen, "LDKCVec_u8Z Bytes");
-               memcpy(_res_conv_12_ref.data, (uint8_t*)(_res_conv_12 + 4), _res_conv_12_ref.datalen);
-               _res_constr.data[m] = _res_conv_12_ref;
-       }
-       CVec_CVec_u8ZZ_free(_res_constr);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_CVec_CVec_u8ZZNoneZ_ok(ptrArray o) {
-       LDKCVec_CVec_u8ZZ o_constr;
-       o_constr.datalen = *((uint32_t*)o);
-       if (o_constr.datalen > 0)
-               o_constr.data = MALLOC(o_constr.datalen * sizeof(LDKCVec_u8Z), "LDKCVec_CVec_u8ZZ 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 o_conv_12 = o_vals[m];
-               LDKCVec_u8Z o_conv_12_ref;
-               o_conv_12_ref.datalen = *((uint32_t*)o_conv_12);
-               o_conv_12_ref.data = MALLOC(o_conv_12_ref.datalen, "LDKCVec_u8Z Bytes");
-               memcpy(o_conv_12_ref.data, (uint8_t*)(o_conv_12 + 4), o_conv_12_ref.datalen);
-               o_constr.data[m] = o_conv_12_ref;
-       }
-       LDKCResult_CVec_CVec_u8ZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ), "LDKCResult_CVec_CVec_u8ZZNoneZ");
-       *ret_conv = CResult_CVec_CVec_u8ZZNoneZ_ok(o_constr);
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = TxCreationKeys_clone(&o_conv);
+       LDKCResult_TxCreationKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysDecodeErrorZ), "LDKCResult_TxCreationKeysDecodeErrorZ");
+       *ret_conv = CResult_TxCreationKeysDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_CVec_CVec_u8ZZNoneZ_err() {
-       LDKCResult_CVec_CVec_u8ZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ), "LDKCResult_CVec_CVec_u8ZZNoneZ");
-       *ret_conv = CResult_CVec_CVec_u8ZZNoneZ_err();
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_TxCreationKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysDecodeErrorZ), "LDKCResult_TxCreationKeysDecodeErrorZ");
+       *ret_conv = CResult_TxCreationKeysDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_CVec_CVec_u8ZZNoneZ_is_ok(uint32_t o) {
-       LDKCResult_CVec_CVec_u8ZZNoneZ* o_conv = (LDKCResult_CVec_CVec_u8ZZNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_CVec_CVec_u8ZZNoneZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_TxCreationKeysDecodeErrorZ* o_conv = (LDKCResult_TxCreationKeysDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_TxCreationKeysDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_CVec_CVec_u8ZZNoneZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_CVec_CVec_u8ZZNoneZ _res_conv = *(LDKCResult_CVec_CVec_u8ZZNoneZ*)(_res_ptr);
+       LDKCResult_TxCreationKeysDecodeErrorZ _res_conv = *(LDKCResult_TxCreationKeysDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_CVec_CVec_u8ZZNoneZ_free(_res_conv);
+       CResult_TxCreationKeysDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_CVec_CVec_u8ZZNoneZ_clone_ptr(LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR arg) {
-       LDKCResult_CVec_CVec_u8ZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ), "LDKCResult_CVec_CVec_u8ZZNoneZ");
-       *ret_conv = CResult_CVec_CVec_u8ZZNoneZ_clone(arg);
+static inline uint64_t CResult_TxCreationKeysDecodeErrorZ_clone_ptr(LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_TxCreationKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysDecodeErrorZ), "LDKCResult_TxCreationKeysDecodeErrorZ");
+       *ret_conv = CResult_TxCreationKeysDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_CVec_CVec_u8ZZNoneZ_clone_ptr(uint32_t arg) {
-       LDKCResult_CVec_CVec_u8ZZNoneZ* arg_conv = (LDKCResult_CVec_CVec_u8ZZNoneZ*)(arg & ~1);
-       int64_t ret_val = CResult_CVec_CVec_u8ZZNoneZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_TxCreationKeysDecodeErrorZ* arg_conv = (LDKCResult_TxCreationKeysDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_TxCreationKeysDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_CVec_CVec_u8ZZNoneZ_clone(uint32_t orig) {
-       LDKCResult_CVec_CVec_u8ZZNoneZ* orig_conv = (LDKCResult_CVec_CVec_u8ZZNoneZ*)(orig & ~1);
-       LDKCResult_CVec_CVec_u8ZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ), "LDKCResult_CVec_CVec_u8ZZNoneZ");
-       *ret_conv = CResult_CVec_CVec_u8ZZNoneZ_clone(orig_conv);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InMemorySignerDecodeErrorZ_ok(uint32_t o) {
-       LDKInMemorySigner o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = InMemorySigner_clone(&o_conv);
-       LDKCResult_InMemorySignerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InMemorySignerDecodeErrorZ), "LDKCResult_InMemorySignerDecodeErrorZ");
-       *ret_conv = CResult_InMemorySignerDecodeErrorZ_ok(o_conv);
+       o_conv = ChannelPublicKeys_clone(&o_conv);
+       LDKCResult_ChannelPublicKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ), "LDKCResult_ChannelPublicKeysDecodeErrorZ");
+       *ret_conv = CResult_ChannelPublicKeysDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InMemorySignerDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_InMemorySignerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InMemorySignerDecodeErrorZ), "LDKCResult_InMemorySignerDecodeErrorZ");
-       *ret_conv = CResult_InMemorySignerDecodeErrorZ_err(e_conv);
+       LDKCResult_ChannelPublicKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ), "LDKCResult_ChannelPublicKeysDecodeErrorZ");
+       *ret_conv = CResult_ChannelPublicKeysDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_InMemorySignerDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_InMemorySignerDecodeErrorZ* o_conv = (LDKCResult_InMemorySignerDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_InMemorySignerDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelPublicKeysDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ChannelPublicKeysDecodeErrorZ* o_conv = (LDKCResult_ChannelPublicKeysDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ChannelPublicKeysDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_InMemorySignerDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ChannelPublicKeysDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_InMemorySignerDecodeErrorZ _res_conv = *(LDKCResult_InMemorySignerDecodeErrorZ*)(_res_ptr);
+       LDKCResult_ChannelPublicKeysDecodeErrorZ _res_conv = *(LDKCResult_ChannelPublicKeysDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_InMemorySignerDecodeErrorZ_free(_res_conv);
+       CResult_ChannelPublicKeysDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_InMemorySignerDecodeErrorZ_clone_ptr(LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_InMemorySignerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InMemorySignerDecodeErrorZ), "LDKCResult_InMemorySignerDecodeErrorZ");
-       *ret_conv = CResult_InMemorySignerDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_ChannelPublicKeysDecodeErrorZ_clone_ptr(LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_ChannelPublicKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ), "LDKCResult_ChannelPublicKeysDecodeErrorZ");
+       *ret_conv = CResult_ChannelPublicKeysDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_InMemorySignerDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_InMemorySignerDecodeErrorZ* arg_conv = (LDKCResult_InMemorySignerDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_InMemorySignerDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_ChannelPublicKeysDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ChannelPublicKeysDecodeErrorZ* arg_conv = (LDKCResult_ChannelPublicKeysDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_ChannelPublicKeysDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InMemorySignerDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_InMemorySignerDecodeErrorZ* orig_conv = (LDKCResult_InMemorySignerDecodeErrorZ*)(orig & ~1);
-       LDKCResult_InMemorySignerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InMemorySignerDecodeErrorZ), "LDKCResult_InMemorySignerDecodeErrorZ");
-       *ret_conv = CResult_InMemorySignerDecodeErrorZ_clone(orig_conv);
+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 (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_CVec_TxOutZ_free(uint32_tArray _res) {
-       LDKCVec_TxOutZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKTxOut), "LDKCVec_TxOutZ 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 _res_conv_7 = _res_vals[h];
-               void* _res_conv_7_ptr = (void*)(((uint64_t)_res_conv_7) & ~1);
-               CHECK_ACCESS(_res_conv_7_ptr);
-               LDKTxOut _res_conv_7_conv = *(LDKTxOut*)(_res_conv_7_ptr);
-               FREE((void*)_res_conv_7);
-               _res_constr.data[h] = _res_conv_7_conv;
-       }
-       CVec_TxOutZ_free(_res_constr);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_TransactionNoneZ_ok(int8_tArray o) {
-       LDKTransaction o_ref;
-       o_ref.datalen = *((uint32_t*)o);
-       o_ref.data = MALLOC(o_ref.datalen, "LDKTransaction Bytes");
-       memcpy(o_ref.data, (uint8_t*)(o + 4), o_ref.datalen);
-       o_ref.data_is_owned = true;
-       LDKCResult_TransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TransactionNoneZ), "LDKCResult_TransactionNoneZ");
-       *ret_conv = CResult_TransactionNoneZ_ok(o_ref);
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = TxCreationKeys_clone(&o_conv);
+       LDKCResult_TxCreationKeysErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysErrorZ), "LDKCResult_TxCreationKeysErrorZ");
+       *ret_conv = CResult_TxCreationKeysErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_TransactionNoneZ_err() {
-       LDKCResult_TransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TransactionNoneZ), "LDKCResult_TransactionNoneZ");
-       *ret_conv = CResult_TransactionNoneZ_err();
+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 (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_TransactionNoneZ_is_ok(uint32_t o) {
-       LDKCResult_TransactionNoneZ* o_conv = (LDKCResult_TransactionNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_TransactionNoneZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysErrorZ_is_ok(uint32_t o) {
+       LDKCResult_TxCreationKeysErrorZ* o_conv = (LDKCResult_TxCreationKeysErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_TxCreationKeysErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_TransactionNoneZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_TransactionNoneZ _res_conv = *(LDKCResult_TransactionNoneZ*)(_res_ptr);
+       LDKCResult_TxCreationKeysErrorZ _res_conv = *(LDKCResult_TxCreationKeysErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_TransactionNoneZ_free(_res_conv);
+       CResult_TxCreationKeysErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_TransactionNoneZ_clone_ptr(LDKCResult_TransactionNoneZ *NONNULL_PTR arg) {
-       LDKCResult_TransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TransactionNoneZ), "LDKCResult_TransactionNoneZ");
-       *ret_conv = CResult_TransactionNoneZ_clone(arg);
+static inline uint64_t CResult_TxCreationKeysErrorZ_clone_ptr(LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR arg) {
+       LDKCResult_TxCreationKeysErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysErrorZ), "LDKCResult_TxCreationKeysErrorZ");
+       *ret_conv = CResult_TxCreationKeysErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_TransactionNoneZ_clone_ptr(uint32_t arg) {
-       LDKCResult_TransactionNoneZ* arg_conv = (LDKCResult_TransactionNoneZ*)(arg & ~1);
-       int64_t ret_val = CResult_TransactionNoneZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_TxCreationKeysErrorZ* arg_conv = (LDKCResult_TxCreationKeysErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_TxCreationKeysErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_TransactionNoneZ_clone(uint32_t orig) {
-       LDKCResult_TransactionNoneZ* orig_conv = (LDKCResult_TransactionNoneZ*)(orig & ~1);
-       LDKCResult_TransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TransactionNoneZ), "LDKCResult_TransactionNoneZ");
-       *ret_conv = CResult_TransactionNoneZ_clone(orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_TxCreationKeysErrorZ_clone(uint32_t orig) {
+       LDKCResult_TxCreationKeysErrorZ* orig_conv = (LDKCResult_TxCreationKeysErrorZ*)(orig & ~1);
+       LDKCResult_TxCreationKeysErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysErrorZ), "LDKCResult_TxCreationKeysErrorZ");
+       *ret_conv = CResult_TxCreationKeysErrorZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-static inline uint64_t C2Tuple_BlockHashChannelMonitorZ_clone_ptr(LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR arg) {
-       LDKC2Tuple_BlockHashChannelMonitorZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelMonitorZ), "LDKC2Tuple_BlockHashChannelMonitorZ");
-       *ret_conv = C2Tuple_BlockHashChannelMonitorZ_clone(arg);
-       return ((uint64_t)ret_conv);
-}
-int64_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_clone_ptr(uint32_t arg) {
-       LDKC2Tuple_BlockHashChannelMonitorZ* arg_conv = (LDKC2Tuple_BlockHashChannelMonitorZ*)(arg & ~1);
-       int64_t ret_val = C2Tuple_BlockHashChannelMonitorZ_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_clone(uint32_t orig) {
-       LDKC2Tuple_BlockHashChannelMonitorZ* orig_conv = (LDKC2Tuple_BlockHashChannelMonitorZ*)(orig & ~1);
-       LDKC2Tuple_BlockHashChannelMonitorZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelMonitorZ), "LDKC2Tuple_BlockHashChannelMonitorZ");
-       *ret_conv = C2Tuple_BlockHashChannelMonitorZ_clone(orig_conv);
-       return ((uint64_t)ret_conv);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_new(int8_tArray a, uint32_t b) {
-       LDKThirtyTwoBytes a_ref;
-       CHECK(*((uint32_t*)a) == 32);
-       memcpy(a_ref.data, (uint8_t*)(a + 4), 32);
-       LDKChannelMonitor b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = (b & 1) || (b == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       b_conv = ChannelMonitor_clone(&b_conv);
-       LDKC2Tuple_BlockHashChannelMonitorZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelMonitorZ), "LDKC2Tuple_BlockHashChannelMonitorZ");
-       *ret_conv = C2Tuple_BlockHashChannelMonitorZ_new(a_ref, b_conv);
-       return ((uint64_t)ret_conv);
+uint32_t  __attribute__((visibility("default"))) TS_COption_u32Z_some(int32_t o) {
+       LDKCOption_u32Z *ret_copy = MALLOC(sizeof(LDKCOption_u32Z), "LDKCOption_u32Z");
+       *ret_copy = COption_u32Z_some(o);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_free(uint32_t _res) {
+uint32_t  __attribute__((visibility("default"))) TS_COption_u32Z_none() {
+       LDKCOption_u32Z *ret_copy = MALLOC(sizeof(LDKCOption_u32Z), "LDKCOption_u32Z");
+       *ret_copy = COption_u32Z_none();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+void  __attribute__((visibility("default"))) TS_COption_u32Z_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKC2Tuple_BlockHashChannelMonitorZ _res_conv = *(LDKC2Tuple_BlockHashChannelMonitorZ*)(_res_ptr);
+       LDKCOption_u32Z _res_conv = *(LDKCOption_u32Z*)(_res_ptr);
        FREE((void*)_res);
-       C2Tuple_BlockHashChannelMonitorZ_free(_res_conv);
+       COption_u32Z_free(_res_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_CVec_C2Tuple_BlockHashChannelMonitorZZ_free(uint32_tArray _res) {
-       LDKCVec_C2Tuple_BlockHashChannelMonitorZZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC2Tuple_BlockHashChannelMonitorZ), "LDKCVec_C2Tuple_BlockHashChannelMonitorZZ Elements");
-       else
-               _res_constr.data = NULL;
-       uint32_t* _res_vals = (uint32_t*)(_res + 4);
-       for (size_t j = 0; j < _res_constr.datalen; j++) {
-               uint32_t _res_conv_35 = _res_vals[j];
-               void* _res_conv_35_ptr = (void*)(((uint64_t)_res_conv_35) & ~1);
-               CHECK_ACCESS(_res_conv_35_ptr);
-               LDKC2Tuple_BlockHashChannelMonitorZ _res_conv_35_conv = *(LDKC2Tuple_BlockHashChannelMonitorZ*)(_res_conv_35_ptr);
-               FREE((void*)_res_conv_35);
-               _res_constr.data[j] = _res_conv_35_conv;
-       }
-       CVec_C2Tuple_BlockHashChannelMonitorZZ_free(_res_constr);
+static inline uint64_t COption_u32Z_clone_ptr(LDKCOption_u32Z *NONNULL_PTR arg) {
+       LDKCOption_u32Z *ret_copy = MALLOC(sizeof(LDKCOption_u32Z), "LDKCOption_u32Z");
+       *ret_copy = COption_u32Z_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_COption_u32Z_clone_ptr(uint32_t arg) {
+       LDKCOption_u32Z* arg_conv = (LDKCOption_u32Z*)arg;
+       int64_t ret_val = COption_u32Z_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_ok(uint32_tArray o) {
-       LDKCVec_C2Tuple_BlockHashChannelMonitorZZ o_constr;
-       o_constr.datalen = *((uint32_t*)o);
-       if (o_constr.datalen > 0)
-               o_constr.data = MALLOC(o_constr.datalen * sizeof(LDKC2Tuple_BlockHashChannelMonitorZ), "LDKCVec_C2Tuple_BlockHashChannelMonitorZZ Elements");
-       else
-               o_constr.data = NULL;
-       uint32_t* o_vals = (uint32_t*)(o + 4);
-       for (size_t j = 0; j < o_constr.datalen; j++) {
-               uint32_t o_conv_35 = o_vals[j];
-               void* o_conv_35_ptr = (void*)(((uint64_t)o_conv_35) & ~1);
-               CHECK_ACCESS(o_conv_35_ptr);
-               LDKC2Tuple_BlockHashChannelMonitorZ o_conv_35_conv = *(LDKC2Tuple_BlockHashChannelMonitorZ*)(o_conv_35_ptr);
-               o_conv_35_conv = C2Tuple_BlockHashChannelMonitorZ_clone((LDKC2Tuple_BlockHashChannelMonitorZ*)(((uint64_t)o_conv_35) & ~1));
-               o_constr.data[j] = o_conv_35_conv;
-       }
-       LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ), "LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ");
-       *ret_conv = CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_ok(o_constr);
+uint32_t  __attribute__((visibility("default"))) TS_COption_u32Z_clone(uint32_t orig) {
+       LDKCOption_u32Z* orig_conv = (LDKCOption_u32Z*)orig;
+       LDKCOption_u32Z *ret_copy = MALLOC(sizeof(LDKCOption_u32Z), "LDKCOption_u32Z");
+       *ret_copy = COption_u32Z_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = HTLCOutputInCommitment_clone(&o_conv);
+       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ), "LDKCResult_HTLCOutputInCommitmentDecodeErrorZ");
+       *ret_conv = CResult_HTLCOutputInCommitmentDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_err(uint32_t e) {
-       LDKIOError e_conv = LDKIOError_from_js(e);
-       LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ), "LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ");
-       *ret_conv = CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_err(e_conv);
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ), "LDKCResult_HTLCOutputInCommitmentDecodeErrorZ");
+       *ret_conv = CResult_HTLCOutputInCommitmentDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_is_ok(uint32_t o) {
-       LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* o_conv = (LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_HTLCOutputInCommitmentDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* o_conv = (LDKCResult_HTLCOutputInCommitmentDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_HTLCOutputInCommitmentDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_HTLCOutputInCommitmentDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ _res_conv = *(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ*)(_res_ptr);
+       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ _res_conv = *(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(_res_conv);
+       CResult_HTLCOutputInCommitmentDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_clone_ptr(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ *NONNULL_PTR arg) {
-       LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ), "LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ");
-       *ret_conv = CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_clone(arg);
+static inline uint64_t CResult_HTLCOutputInCommitmentDecodeErrorZ_clone_ptr(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ), "LDKCResult_HTLCOutputInCommitmentDecodeErrorZ");
+       *ret_conv = CResult_HTLCOutputInCommitmentDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* arg_conv = (LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_HTLCOutputInCommitmentDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* arg_conv = (LDKCResult_HTLCOutputInCommitmentDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_HTLCOutputInCommitmentDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_clone(uint32_t orig) {
-       LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* orig_conv = (LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ*)(orig & ~1);
-       LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ), "LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ");
-       *ret_conv = CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_clone(orig_conv);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_u16Z_some(int16_t o) {
-       LDKCOption_u16Z *ret_copy = MALLOC(sizeof(LDKCOption_u16Z), "LDKCOption_u16Z");
-       *ret_copy = COption_u16Z_some(o);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_COption_NoneZ_some() {
+       uint32_t ret_conv = LDKCOption_NoneZ_to_js(COption_NoneZ_some());
+       return ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_u16Z_none() {
-       LDKCOption_u16Z *ret_copy = MALLOC(sizeof(LDKCOption_u16Z), "LDKCOption_u16Z");
-       *ret_copy = COption_u16Z_none();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_COption_NoneZ_none() {
+       uint32_t ret_conv = LDKCOption_NoneZ_to_js(COption_NoneZ_none());
+       return ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_COption_u16Z_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_COption_NoneZ_free(uint32_t _res) {
+       LDKCOption_NoneZ _res_conv = LDKCOption_NoneZ_from_js(_res);
+       COption_NoneZ_free(_res_conv);
+}
+
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = CounterpartyChannelTransactionParameters_clone(&o_conv);
+       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ), "LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ");
+       *ret_conv = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_ok(o_conv);
+       return (uint64_t)ret_conv;
+}
+
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ), "LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ");
+       *ret_conv = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
+}
+
+jboolean  __attribute__((visibility("default"))) TS_CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* o_conv = (LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_is_ok(o_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCOption_u16Z _res_conv = *(LDKCOption_u16Z*)(_res_ptr);
+       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ _res_conv = *(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       COption_u16Z_free(_res_conv);
+       CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t COption_u16Z_clone_ptr(LDKCOption_u16Z *NONNULL_PTR arg) {
-       LDKCOption_u16Z *ret_copy = MALLOC(sizeof(LDKCOption_u16Z), "LDKCOption_u16Z");
-       *ret_copy = COption_u16Z_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+static inline uint64_t CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone_ptr(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ), "LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ");
+       *ret_conv = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_COption_u16Z_clone_ptr(uint32_t arg) {
-       LDKCOption_u16Z* arg_conv = (LDKCOption_u16Z*)arg;
-       int64_t ret_val = COption_u16Z_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* arg_conv = (LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_u16Z_clone(uint32_t orig) {
-       LDKCOption_u16Z* orig_conv = (LDKCOption_u16Z*)orig;
-       LDKCOption_u16Z *ret_copy = MALLOC(sizeof(LDKCOption_u16Z), "LDKCOption_u16Z");
-       *ret_copy = COption_u16Z_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_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 (uint64_t)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();
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = ChannelTransactionParameters_clone(&o_conv);
+       LDKCResult_ChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ), "LDKCResult_ChannelTransactionParametersDecodeErrorZ");
+       *ret_conv = CResult_ChannelTransactionParametersDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneAPIErrorZ_err(uint32_t e) {
-       void* e_ptr = (void*)(((uint64_t)e) & ~1);
-       CHECK_ACCESS(e_ptr);
-       LDKAPIError e_conv = *(LDKAPIError*)(e_ptr);
-       e_conv = APIError_clone((LDKAPIError*)(((uint64_t)e) & ~1));
-       LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
-       *ret_conv = CResult_NoneAPIErrorZ_err(e_conv);
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_ChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ), "LDKCResult_ChannelTransactionParametersDecodeErrorZ");
+       *ret_conv = CResult_ChannelTransactionParametersDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_NoneAPIErrorZ_is_ok(uint32_t o) {
-       LDKCResult_NoneAPIErrorZ* o_conv = (LDKCResult_NoneAPIErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_NoneAPIErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelTransactionParametersDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ChannelTransactionParametersDecodeErrorZ* o_conv = (LDKCResult_ChannelTransactionParametersDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ChannelTransactionParametersDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_NoneAPIErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ChannelTransactionParametersDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_NoneAPIErrorZ _res_conv = *(LDKCResult_NoneAPIErrorZ*)(_res_ptr);
+       LDKCResult_ChannelTransactionParametersDecodeErrorZ _res_conv = *(LDKCResult_ChannelTransactionParametersDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_NoneAPIErrorZ_free(_res_conv);
+       CResult_ChannelTransactionParametersDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_NoneAPIErrorZ_clone_ptr(LDKCResult_NoneAPIErrorZ *NONNULL_PTR arg) {
-       LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
-       *ret_conv = CResult_NoneAPIErrorZ_clone(arg);
+static inline uint64_t CResult_ChannelTransactionParametersDecodeErrorZ_clone_ptr(LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_ChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ), "LDKCResult_ChannelTransactionParametersDecodeErrorZ");
+       *ret_conv = CResult_ChannelTransactionParametersDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_NoneAPIErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_NoneAPIErrorZ* arg_conv = (LDKCResult_NoneAPIErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_NoneAPIErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_ChannelTransactionParametersDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ChannelTransactionParametersDecodeErrorZ* arg_conv = (LDKCResult_ChannelTransactionParametersDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_ChannelTransactionParametersDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_CVec_CResult_NoneAPIErrorZZ_free(uint32_tArray _res) {
-       LDKCVec_CResult_NoneAPIErrorZZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKCResult_NoneAPIErrorZ), "LDKCVec_CResult_NoneAPIErrorZZ Elements");
-       else
-               _res_constr.data = NULL;
-       uint32_t* _res_vals = (uint32_t*)(_res + 4);
-       for (size_t w = 0; w < _res_constr.datalen; w++) {
-               uint32_t _res_conv_22 = _res_vals[w];
-               void* _res_conv_22_ptr = (void*)(((uint64_t)_res_conv_22) & ~1);
-               CHECK_ACCESS(_res_conv_22_ptr);
-               LDKCResult_NoneAPIErrorZ _res_conv_22_conv = *(LDKCResult_NoneAPIErrorZ*)(_res_conv_22_ptr);
-               FREE((void*)_res_conv_22);
-               _res_constr.data[w] = _res_conv_22_conv;
-       }
-       CVec_CResult_NoneAPIErrorZZ_free(_res_constr);
-}
-
-void  __attribute__((visibility("default"))) TS_CVec_APIErrorZ_free(uint32_tArray _res) {
-       LDKCVec_APIErrorZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
+void  __attribute__((visibility("default"))) TS_CVec_SignatureZ_free(ptrArray _res) {
+       LDKCVec_SignatureZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
        if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKAPIError), "LDKCVec_APIErrorZ Elements");
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ 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 _res_conv_10 = _res_vals[k];
-               void* _res_conv_10_ptr = (void*)(((uint64_t)_res_conv_10) & ~1);
-               CHECK_ACCESS(_res_conv_10_ptr);
-               LDKAPIError _res_conv_10_conv = *(LDKAPIError*)(_res_conv_10_ptr);
-               FREE((void*)_res_conv_10);
-               _res_constr.data[k] = _res_conv_10_conv;
+       int8_tArray* _res_vals = (void*) _res->elems;
+       for (size_t m = 0; m < _res_constr.datalen; m++) {
+               int8_tArray _res_conv_12 = _res_vals[m];
+               LDKSignature _res_conv_12_ref;
+               CHECK(_res_conv_12->arr_len == 64);
+               memcpy(_res_conv_12_ref.compact_form, _res_conv_12->elems, 64);
+               _res_constr.data[m] = _res_conv_12_ref;
        }
-       CVec_APIErrorZ_free(_res_constr);
+       CVec_SignatureZ_free(_res_constr);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult__u832APIErrorZ_ok(int8_tArray o) {
-       LDKThirtyTwoBytes o_ref;
-       CHECK(*((uint32_t*)o) == 32);
-       memcpy(o_ref.data, (uint8_t*)(o + 4), 32);
-       LDKCResult__u832APIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult__u832APIErrorZ), "LDKCResult__u832APIErrorZ");
-       *ret_conv = CResult__u832APIErrorZ_ok(o_ref);
+
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = HolderCommitmentTransaction_clone(&o_conv);
+       LDKCResult_HolderCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ), "LDKCResult_HolderCommitmentTransactionDecodeErrorZ");
+       *ret_conv = CResult_HolderCommitmentTransactionDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult__u832APIErrorZ_err(uint32_t e) {
-       void* e_ptr = (void*)(((uint64_t)e) & ~1);
-       CHECK_ACCESS(e_ptr);
-       LDKAPIError e_conv = *(LDKAPIError*)(e_ptr);
-       e_conv = APIError_clone((LDKAPIError*)(((uint64_t)e) & ~1));
-       LDKCResult__u832APIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult__u832APIErrorZ), "LDKCResult__u832APIErrorZ");
-       *ret_conv = CResult__u832APIErrorZ_err(e_conv);
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_HolderCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ), "LDKCResult_HolderCommitmentTransactionDecodeErrorZ");
+       *ret_conv = CResult_HolderCommitmentTransactionDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult__u832APIErrorZ_is_ok(uint32_t o) {
-       LDKCResult__u832APIErrorZ* o_conv = (LDKCResult__u832APIErrorZ*)(o & ~1);
-       jboolean ret_val = CResult__u832APIErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_HolderCommitmentTransactionDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_HolderCommitmentTransactionDecodeErrorZ* o_conv = (LDKCResult_HolderCommitmentTransactionDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_HolderCommitmentTransactionDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult__u832APIErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_HolderCommitmentTransactionDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult__u832APIErrorZ _res_conv = *(LDKCResult__u832APIErrorZ*)(_res_ptr);
+       LDKCResult_HolderCommitmentTransactionDecodeErrorZ _res_conv = *(LDKCResult_HolderCommitmentTransactionDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult__u832APIErrorZ_free(_res_conv);
+       CResult_HolderCommitmentTransactionDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult__u832APIErrorZ_clone_ptr(LDKCResult__u832APIErrorZ *NONNULL_PTR arg) {
-       LDKCResult__u832APIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult__u832APIErrorZ), "LDKCResult__u832APIErrorZ");
-       *ret_conv = CResult__u832APIErrorZ_clone(arg);
+static inline uint64_t CResult_HolderCommitmentTransactionDecodeErrorZ_clone_ptr(LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_HolderCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ), "LDKCResult_HolderCommitmentTransactionDecodeErrorZ");
+       *ret_conv = CResult_HolderCommitmentTransactionDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult__u832APIErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult__u832APIErrorZ* arg_conv = (LDKCResult__u832APIErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult__u832APIErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_HolderCommitmentTransactionDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_HolderCommitmentTransactionDecodeErrorZ* arg_conv = (LDKCResult_HolderCommitmentTransactionDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_HolderCommitmentTransactionDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult__u832APIErrorZ_clone(uint32_t orig) {
-       LDKCResult__u832APIErrorZ* orig_conv = (LDKCResult__u832APIErrorZ*)(orig & ~1);
-       LDKCResult__u832APIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult__u832APIErrorZ), "LDKCResult__u832APIErrorZ");
-       *ret_conv = CResult__u832APIErrorZ_clone(orig_conv);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentSendFailureZ_ok(int8_tArray o) {
-       LDKThirtyTwoBytes o_ref;
-       CHECK(*((uint32_t*)o) == 32);
-       memcpy(o_ref.data, (uint8_t*)(o + 4), 32);
-       LDKCResult_PaymentIdPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentSendFailureZ), "LDKCResult_PaymentIdPaymentSendFailureZ");
-       *ret_conv = CResult_PaymentIdPaymentSendFailureZ_ok(o_ref);
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = BuiltCommitmentTransaction_clone(&o_conv);
+       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ), "LDKCResult_BuiltCommitmentTransactionDecodeErrorZ");
+       *ret_conv = CResult_BuiltCommitmentTransactionDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentSendFailureZ_err(uint32_t e) {
-       void* e_ptr = (void*)(((uint64_t)e) & ~1);
-       CHECK_ACCESS(e_ptr);
-       LDKPaymentSendFailure e_conv = *(LDKPaymentSendFailure*)(e_ptr);
-       e_conv = PaymentSendFailure_clone((LDKPaymentSendFailure*)(((uint64_t)e) & ~1));
-       LDKCResult_PaymentIdPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentSendFailureZ), "LDKCResult_PaymentIdPaymentSendFailureZ");
-       *ret_conv = CResult_PaymentIdPaymentSendFailureZ_err(e_conv);
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ), "LDKCResult_BuiltCommitmentTransactionDecodeErrorZ");
+       *ret_conv = CResult_BuiltCommitmentTransactionDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentSendFailureZ_is_ok(uint32_t o) {
-       LDKCResult_PaymentIdPaymentSendFailureZ* o_conv = (LDKCResult_PaymentIdPaymentSendFailureZ*)(o & ~1);
-       jboolean ret_val = CResult_PaymentIdPaymentSendFailureZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_BuiltCommitmentTransactionDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* o_conv = (LDKCResult_BuiltCommitmentTransactionDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_BuiltCommitmentTransactionDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentSendFailureZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_BuiltCommitmentTransactionDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_PaymentIdPaymentSendFailureZ _res_conv = *(LDKCResult_PaymentIdPaymentSendFailureZ*)(_res_ptr);
+       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ _res_conv = *(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_PaymentIdPaymentSendFailureZ_free(_res_conv);
+       CResult_BuiltCommitmentTransactionDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_PaymentIdPaymentSendFailureZ_clone_ptr(LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR arg) {
-       LDKCResult_PaymentIdPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentSendFailureZ), "LDKCResult_PaymentIdPaymentSendFailureZ");
-       *ret_conv = CResult_PaymentIdPaymentSendFailureZ_clone(arg);
+static inline uint64_t CResult_BuiltCommitmentTransactionDecodeErrorZ_clone_ptr(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ), "LDKCResult_BuiltCommitmentTransactionDecodeErrorZ");
+       *ret_conv = CResult_BuiltCommitmentTransactionDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentSendFailureZ_clone_ptr(uint32_t arg) {
-       LDKCResult_PaymentIdPaymentSendFailureZ* arg_conv = (LDKCResult_PaymentIdPaymentSendFailureZ*)(arg & ~1);
-       int64_t ret_val = CResult_PaymentIdPaymentSendFailureZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_BuiltCommitmentTransactionDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* arg_conv = (LDKCResult_BuiltCommitmentTransactionDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_BuiltCommitmentTransactionDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentSendFailureZ_clone(uint32_t orig) {
-       LDKCResult_PaymentIdPaymentSendFailureZ* orig_conv = (LDKCResult_PaymentIdPaymentSendFailureZ*)(orig & ~1);
-       LDKCResult_PaymentIdPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentSendFailureZ), "LDKCResult_PaymentIdPaymentSendFailureZ");
-       *ret_conv = CResult_PaymentIdPaymentSendFailureZ_clone(orig_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 (uint64_t)ret_conv;
 }
 
-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_TrustedClosingTransactionNoneZ_ok(uint32_t o) {
+       LDKTrustedClosingTransaction o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = (o & 1) || (o == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       // Warning: we need a move here but no clone is available for LDKTrustedClosingTransaction
+       LDKCResult_TrustedClosingTransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TrustedClosingTransactionNoneZ), "LDKCResult_TrustedClosingTransactionNoneZ");
+       *ret_conv = CResult_TrustedClosingTransactionNoneZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NonePaymentSendFailureZ_err(uint32_t e) {
-       void* e_ptr = (void*)(((uint64_t)e) & ~1);
-       CHECK_ACCESS(e_ptr);
-       LDKPaymentSendFailure e_conv = *(LDKPaymentSendFailure*)(e_ptr);
-       e_conv = PaymentSendFailure_clone((LDKPaymentSendFailure*)(((uint64_t)e) & ~1));
-       LDKCResult_NonePaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePaymentSendFailureZ), "LDKCResult_NonePaymentSendFailureZ");
-       *ret_conv = CResult_NonePaymentSendFailureZ_err(e_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_TrustedClosingTransactionNoneZ_err() {
+       LDKCResult_TrustedClosingTransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TrustedClosingTransactionNoneZ), "LDKCResult_TrustedClosingTransactionNoneZ");
+       *ret_conv = CResult_TrustedClosingTransactionNoneZ_err();
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_NonePaymentSendFailureZ_is_ok(uint32_t o) {
-       LDKCResult_NonePaymentSendFailureZ* o_conv = (LDKCResult_NonePaymentSendFailureZ*)(o & ~1);
-       jboolean ret_val = CResult_NonePaymentSendFailureZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_TrustedClosingTransactionNoneZ_is_ok(uint32_t o) {
+       LDKCResult_TrustedClosingTransactionNoneZ* o_conv = (LDKCResult_TrustedClosingTransactionNoneZ*)(o & ~1);
+       jboolean ret_val = CResult_TrustedClosingTransactionNoneZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_NonePaymentSendFailureZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_TrustedClosingTransactionNoneZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_NonePaymentSendFailureZ _res_conv = *(LDKCResult_NonePaymentSendFailureZ*)(_res_ptr);
+       LDKCResult_TrustedClosingTransactionNoneZ _res_conv = *(LDKCResult_TrustedClosingTransactionNoneZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_NonePaymentSendFailureZ_free(_res_conv);
+       CResult_TrustedClosingTransactionNoneZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_NonePaymentSendFailureZ_clone_ptr(LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR arg) {
-       LDKCResult_NonePaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePaymentSendFailureZ), "LDKCResult_NonePaymentSendFailureZ");
-       *ret_conv = CResult_NonePaymentSendFailureZ_clone(arg);
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = CommitmentTransaction_clone(&o_conv);
+       LDKCResult_CommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ), "LDKCResult_CommitmentTransactionDecodeErrorZ");
+       *ret_conv = CResult_CommitmentTransactionDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_NonePaymentSendFailureZ_clone_ptr(uint32_t arg) {
-       LDKCResult_NonePaymentSendFailureZ* arg_conv = (LDKCResult_NonePaymentSendFailureZ*)(arg & ~1);
-       int64_t ret_val = CResult_NonePaymentSendFailureZ_clone_ptr(arg_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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_CommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ), "LDKCResult_CommitmentTransactionDecodeErrorZ");
+       *ret_conv = CResult_CommitmentTransactionDecodeErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
+}
+
+jboolean  __attribute__((visibility("default"))) TS_CResult_CommitmentTransactionDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_CommitmentTransactionDecodeErrorZ* o_conv = (LDKCResult_CommitmentTransactionDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_CommitmentTransactionDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-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 (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_CResult_CommitmentTransactionDecodeErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_CommitmentTransactionDecodeErrorZ _res_conv = *(LDKCResult_CommitmentTransactionDecodeErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_CommitmentTransactionDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t C2Tuple_PaymentHashPaymentIdZ_clone_ptr(LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR arg) {
-       LDKC2Tuple_PaymentHashPaymentIdZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentIdZ), "LDKC2Tuple_PaymentHashPaymentIdZ");
-       *ret_conv = C2Tuple_PaymentHashPaymentIdZ_clone(arg);
-       return ((uint64_t)ret_conv);
+static inline uint64_t CResult_CommitmentTransactionDecodeErrorZ_clone_ptr(LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_CommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ), "LDKCResult_CommitmentTransactionDecodeErrorZ");
+       *ret_conv = CResult_CommitmentTransactionDecodeErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentIdZ_clone_ptr(uint32_t arg) {
-       LDKC2Tuple_PaymentHashPaymentIdZ* arg_conv = (LDKC2Tuple_PaymentHashPaymentIdZ*)(arg & ~1);
-       int64_t ret_val = C2Tuple_PaymentHashPaymentIdZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_CommitmentTransactionDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_CommitmentTransactionDecodeErrorZ* arg_conv = (LDKCResult_CommitmentTransactionDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_CommitmentTransactionDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentIdZ_clone(uint32_t orig) {
-       LDKC2Tuple_PaymentHashPaymentIdZ* orig_conv = (LDKC2Tuple_PaymentHashPaymentIdZ*)(orig & ~1);
-       LDKC2Tuple_PaymentHashPaymentIdZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentIdZ), "LDKC2Tuple_PaymentHashPaymentIdZ");
-       *ret_conv = C2Tuple_PaymentHashPaymentIdZ_clone(orig_conv);
-       return ((uint64_t)ret_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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentIdZ_new(int8_tArray a, int8_tArray b) {
-       LDKThirtyTwoBytes a_ref;
-       CHECK(*((uint32_t*)a) == 32);
-       memcpy(a_ref.data, (uint8_t*)(a + 4), 32);
-       LDKThirtyTwoBytes b_ref;
-       CHECK(*((uint32_t*)b) == 32);
-       memcpy(b_ref.data, (uint8_t*)(b + 4), 32);
-       LDKC2Tuple_PaymentHashPaymentIdZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentIdZ), "LDKC2Tuple_PaymentHashPaymentIdZ");
-       *ret_conv = C2Tuple_PaymentHashPaymentIdZ_new(a_ref, b_ref);
-       return ((uint64_t)ret_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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       // 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 (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentIdZ_free(uint32_t _res) {
+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 (uint64_t)ret_conv;
+}
+
+jboolean  __attribute__((visibility("default"))) TS_CResult_TrustedCommitmentTransactionNoneZ_is_ok(uint32_t o) {
+       LDKCResult_TrustedCommitmentTransactionNoneZ* o_conv = (LDKCResult_TrustedCommitmentTransactionNoneZ*)(o & ~1);
+       jboolean ret_val = CResult_TrustedCommitmentTransactionNoneZ_is_ok(o_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_CResult_TrustedCommitmentTransactionNoneZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKC2Tuple_PaymentHashPaymentIdZ _res_conv = *(LDKC2Tuple_PaymentHashPaymentIdZ*)(_res_ptr);
+       LDKCResult_TrustedCommitmentTransactionNoneZ _res_conv = *(LDKCResult_TrustedCommitmentTransactionNoneZ*)(_res_ptr);
        FREE((void*)_res);
-       C2Tuple_PaymentHashPaymentIdZ_free(_res_conv);
+       CResult_TrustedCommitmentTransactionNoneZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_ok(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKC2Tuple_PaymentHashPaymentIdZ o_conv = *(LDKC2Tuple_PaymentHashPaymentIdZ*)(o_ptr);
-       o_conv = C2Tuple_PaymentHashPaymentIdZ_clone((LDKC2Tuple_PaymentHashPaymentIdZ*)(((uint64_t)o) & ~1));
-       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ), "LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ");
-       *ret_conv = CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_ok(o_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_CVec_SignatureZNoneZ_ok(ptrArray o) {
+       LDKCVec_SignatureZ o_constr;
+       o_constr.datalen = o->arr_len;
+       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 = (void*) o->elems;
+       for (size_t m = 0; m < o_constr.datalen; m++) {
+               int8_tArray o_conv_12 = o_vals[m];
+               LDKSignature o_conv_12_ref;
+               CHECK(o_conv_12->arr_len == 64);
+               memcpy(o_conv_12_ref.compact_form, o_conv_12->elems, 64);
+               o_constr.data[m] = o_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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_err(uint32_t e) {
-       void* e_ptr = (void*)(((uint64_t)e) & ~1);
-       CHECK_ACCESS(e_ptr);
-       LDKPaymentSendFailure e_conv = *(LDKPaymentSendFailure*)(e_ptr);
-       e_conv = PaymentSendFailure_clone((LDKPaymentSendFailure*)(((uint64_t)e) & ~1));
-       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ), "LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ");
-       *ret_conv = CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_err(e_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 (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_is_ok(uint32_t o) {
-       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* o_conv = (LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ*)(o & ~1);
-       jboolean ret_val = CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_CVec_SignatureZNoneZ_is_ok(uint32_t o) {
+       LDKCResult_CVec_SignatureZNoneZ* o_conv = (LDKCResult_CVec_SignatureZNoneZ*)(o & ~1);
+       jboolean ret_val = CResult_CVec_SignatureZNoneZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_CVec_SignatureZNoneZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ _res_conv = *(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ*)(_res_ptr);
+       LDKCResult_CVec_SignatureZNoneZ _res_conv = *(LDKCResult_CVec_SignatureZNoneZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(_res_conv);
+       CResult_CVec_SignatureZNoneZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone_ptr(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR arg) {
-       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ), "LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ");
-       *ret_conv = CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone(arg);
+static inline uint64_t CResult_CVec_SignatureZNoneZ_clone_ptr(LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR arg) {
+       LDKCResult_CVec_SignatureZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_SignatureZNoneZ), "LDKCResult_CVec_SignatureZNoneZ");
+       *ret_conv = CResult_CVec_SignatureZNoneZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone_ptr(uint32_t arg) {
-       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* arg_conv = (LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ*)(arg & ~1);
-       int64_t ret_val = CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_CVec_SignatureZNoneZ_clone_ptr(uint32_t arg) {
+       LDKCResult_CVec_SignatureZNoneZ* arg_conv = (LDKCResult_CVec_SignatureZNoneZ*)(arg & ~1);
+       int64_t ret_val = CResult_CVec_SignatureZNoneZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone(uint32_t orig) {
-       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* orig_conv = (LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ*)(orig & ~1);
-       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ), "LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ");
-       *ret_conv = CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone(orig_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 (uint64_t)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 _res_conv_12 = _res_vals[m];
-               void* _res_conv_12_ptr = (void*)(((uint64_t)_res_conv_12) & ~1);
-               CHECK_ACCESS(_res_conv_12_ptr);
-               LDKNetAddress _res_conv_12_conv = *(LDKNetAddress*)(_res_conv_12_ptr);
-               FREE((void*)_res_conv_12);
-               _res_constr.data[m] = _res_conv_12_conv;
-       }
-       CVec_NetAddressZ_free(_res_constr);
-}
-
-static inline uint64_t C2Tuple_PaymentHashPaymentSecretZ_clone_ptr(LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR arg) {
-       LDKC2Tuple_PaymentHashPaymentSecretZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ), "LDKC2Tuple_PaymentHashPaymentSecretZ");
-       *ret_conv = C2Tuple_PaymentHashPaymentSecretZ_clone(arg);
-       return ((uint64_t)ret_conv);
-}
-int64_t  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentSecretZ_clone_ptr(uint32_t arg) {
-       LDKC2Tuple_PaymentHashPaymentSecretZ* arg_conv = (LDKC2Tuple_PaymentHashPaymentSecretZ*)(arg & ~1);
-       int64_t ret_val = C2Tuple_PaymentHashPaymentSecretZ_clone_ptr(arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptDecodeErrorZ_ok(uint32_t o) {
+       LDKShutdownScript o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = (o & 1) || (o == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = ShutdownScript_clone(&o_conv);
+       LDKCResult_ShutdownScriptDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptDecodeErrorZ), "LDKCResult_ShutdownScriptDecodeErrorZ");
+       *ret_conv = CResult_ShutdownScriptDecodeErrorZ_ok(o_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentSecretZ_clone(uint32_t orig) {
-       LDKC2Tuple_PaymentHashPaymentSecretZ* orig_conv = (LDKC2Tuple_PaymentHashPaymentSecretZ*)(orig & ~1);
-       LDKC2Tuple_PaymentHashPaymentSecretZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ), "LDKC2Tuple_PaymentHashPaymentSecretZ");
-       *ret_conv = C2Tuple_PaymentHashPaymentSecretZ_clone(orig_conv);
-       return ((uint64_t)ret_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptDecodeErrorZ_err(uint32_t e) {
+       LDKDecodeError e_conv;
+       e_conv.inner = (void*)(e & (~1));
+       e_conv.is_owned = (e & 1) || (e == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_ShutdownScriptDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptDecodeErrorZ), "LDKCResult_ShutdownScriptDecodeErrorZ");
+       *ret_conv = CResult_ShutdownScriptDecodeErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentSecretZ_new(int8_tArray a, int8_tArray b) {
-       LDKThirtyTwoBytes a_ref;
-       CHECK(*((uint32_t*)a) == 32);
-       memcpy(a_ref.data, (uint8_t*)(a + 4), 32);
-       LDKThirtyTwoBytes b_ref;
-       CHECK(*((uint32_t*)b) == 32);
-       memcpy(b_ref.data, (uint8_t*)(b + 4), 32);
-       LDKC2Tuple_PaymentHashPaymentSecretZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ), "LDKC2Tuple_PaymentHashPaymentSecretZ");
-       *ret_conv = C2Tuple_PaymentHashPaymentSecretZ_new(a_ref, b_ref);
-       return ((uint64_t)ret_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ShutdownScriptDecodeErrorZ* o_conv = (LDKCResult_ShutdownScriptDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ShutdownScriptDecodeErrorZ_is_ok(o_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentSecretZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKC2Tuple_PaymentHashPaymentSecretZ _res_conv = *(LDKC2Tuple_PaymentHashPaymentSecretZ*)(_res_ptr);
+       LDKCResult_ShutdownScriptDecodeErrorZ _res_conv = *(LDKCResult_ShutdownScriptDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       C2Tuple_PaymentHashPaymentSecretZ_free(_res_conv);
+       CResult_ShutdownScriptDecodeErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_ok(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKC2Tuple_PaymentHashPaymentSecretZ o_conv = *(LDKC2Tuple_PaymentHashPaymentSecretZ*)(o_ptr);
-       o_conv = C2Tuple_PaymentHashPaymentSecretZ_clone((LDKC2Tuple_PaymentHashPaymentSecretZ*)(((uint64_t)o) & ~1));
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ");
-       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_ok(o_conv);
+static inline uint64_t CResult_ShutdownScriptDecodeErrorZ_clone_ptr(LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_ShutdownScriptDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptDecodeErrorZ), "LDKCResult_ShutdownScriptDecodeErrorZ");
+       *ret_conv = CResult_ShutdownScriptDecodeErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ShutdownScriptDecodeErrorZ* arg_conv = (LDKCResult_ShutdownScriptDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_ShutdownScriptDecodeErrorZ_clone_ptr(arg_conv);
+       return ret_val;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_ShutdownScriptDecodeErrorZ* orig_conv = (LDKCResult_ShutdownScriptDecodeErrorZ*)(orig & ~1);
+       LDKCResult_ShutdownScriptDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptDecodeErrorZ), "LDKCResult_ShutdownScriptDecodeErrorZ");
+       *ret_conv = CResult_ShutdownScriptDecodeErrorZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_err() {
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ");
-       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_err();
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptInvalidShutdownScriptZ_ok(uint32_t o) {
+       LDKShutdownScript o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = (o & 1) || (o == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = ShutdownScript_clone(&o_conv);
+       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ), "LDKCResult_ShutdownScriptInvalidShutdownScriptZ");
+       *ret_conv = CResult_ShutdownScriptInvalidShutdownScriptZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_is_ok(uint32_t o) {
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* o_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_is_ok(o_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptInvalidShutdownScriptZ_err(uint32_t e) {
+       LDKInvalidShutdownScript e_conv;
+       e_conv.inner = (void*)(e & (~1));
+       e_conv.is_owned = (e & 1) || (e == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = InvalidShutdownScript_clone(&e_conv);
+       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ), "LDKCResult_ShutdownScriptInvalidShutdownScriptZ");
+       *ret_conv = CResult_ShutdownScriptInvalidShutdownScriptZ_err(e_conv);
+       return (uint64_t)ret_conv;
+}
+
+jboolean  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptInvalidShutdownScriptZ_is_ok(uint32_t o) {
+       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* o_conv = (LDKCResult_ShutdownScriptInvalidShutdownScriptZ*)(o & ~1);
+       jboolean ret_val = CResult_ShutdownScriptInvalidShutdownScriptZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptInvalidShutdownScriptZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ _res_conv = *(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ*)(_res_ptr);
+       LDKCResult_ShutdownScriptInvalidShutdownScriptZ _res_conv = *(LDKCResult_ShutdownScriptInvalidShutdownScriptZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(_res_conv);
+       CResult_ShutdownScriptInvalidShutdownScriptZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone_ptr(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *NONNULL_PTR arg) {
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ");
-       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone(arg);
+static inline uint64_t CResult_ShutdownScriptInvalidShutdownScriptZ_clone_ptr(LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR arg) {
+       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ), "LDKCResult_ShutdownScriptInvalidShutdownScriptZ");
+       *ret_conv = CResult_ShutdownScriptInvalidShutdownScriptZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone_ptr(uint32_t arg) {
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* arg_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ*)(arg & ~1);
-       int64_t ret_val = CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptInvalidShutdownScriptZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* arg_conv = (LDKCResult_ShutdownScriptInvalidShutdownScriptZ*)(arg & ~1);
+       int64_t ret_val = CResult_ShutdownScriptInvalidShutdownScriptZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone(uint32_t orig) {
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* orig_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ*)(orig & ~1);
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ");
-       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone(orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownScriptInvalidShutdownScriptZ_clone(uint32_t orig) {
+       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* orig_conv = (LDKCResult_ShutdownScriptInvalidShutdownScriptZ*)(orig & ~1);
+       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ), "LDKCResult_ShutdownScriptInvalidShutdownScriptZ");
+       *ret_conv = CResult_ShutdownScriptInvalidShutdownScriptZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_ok(uint32_t o) {
+uint32_t  __attribute__((visibility("default"))) TS_COption_TypeZ_some(uint32_t o) {
        void* o_ptr = (void*)(((uint64_t)o) & ~1);
        CHECK_ACCESS(o_ptr);
-       LDKC2Tuple_PaymentHashPaymentSecretZ o_conv = *(LDKC2Tuple_PaymentHashPaymentSecretZ*)(o_ptr);
-       o_conv = C2Tuple_PaymentHashPaymentSecretZ_clone((LDKC2Tuple_PaymentHashPaymentSecretZ*)(((uint64_t)o) & ~1));
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ");
-       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_err(uint32_t e) {
-       void* e_ptr = (void*)(((uint64_t)e) & ~1);
-       CHECK_ACCESS(e_ptr);
-       LDKAPIError e_conv = *(LDKAPIError*)(e_ptr);
-       e_conv = APIError_clone((LDKAPIError*)(((uint64_t)e) & ~1));
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ");
-       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+       LDKType o_conv = *(LDKType*)(o_ptr);
+       LDKCOption_TypeZ *ret_copy = MALLOC(sizeof(LDKCOption_TypeZ), "LDKCOption_TypeZ");
+       *ret_copy = COption_TypeZ_some(o_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_is_ok(uint32_t o) {
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* o_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_is_ok(o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_COption_TypeZ_none() {
+       LDKCOption_TypeZ *ret_copy = MALLOC(sizeof(LDKCOption_TypeZ), "LDKCOption_TypeZ");
+       *ret_copy = COption_TypeZ_none();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_COption_TypeZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ _res_conv = *(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ*)(_res_ptr);
+       LDKCOption_TypeZ _res_conv = *(LDKCOption_TypeZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(_res_conv);
+       COption_TypeZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone_ptr(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *NONNULL_PTR arg) {
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ");
-       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline uint64_t COption_TypeZ_clone_ptr(LDKCOption_TypeZ *NONNULL_PTR arg) {
+       LDKCOption_TypeZ *ret_copy = MALLOC(sizeof(LDKCOption_TypeZ), "LDKCOption_TypeZ");
+       *ret_copy = COption_TypeZ_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* arg_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_COption_TypeZ_clone_ptr(uint32_t arg) {
+       LDKCOption_TypeZ* arg_conv = (LDKCOption_TypeZ*)arg;
+       int64_t ret_val = COption_TypeZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone(uint32_t orig) {
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* orig_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ*)(orig & ~1);
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ");
-       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_COption_TypeZ_clone(uint32_t orig) {
+       LDKCOption_TypeZ* orig_conv = (LDKCOption_TypeZ*)orig;
+       LDKCOption_TypeZ *ret_copy = MALLOC(sizeof(LDKCOption_TypeZ), "LDKCOption_TypeZ");
+       *ret_copy = COption_TypeZ_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretNoneZ_ok(int8_tArray o) {
-       LDKThirtyTwoBytes o_ref;
-       CHECK(*((uint32_t*)o) == 32);
-       memcpy(o_ref.data, (uint8_t*)(o + 4), 32);
-       LDKCResult_PaymentSecretNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretNoneZ), "LDKCResult_PaymentSecretNoneZ");
-       *ret_conv = CResult_PaymentSecretNoneZ_ok(o_ref);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_TypeZDecodeErrorZ_ok(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKCOption_TypeZ o_conv = *(LDKCOption_TypeZ*)(o_ptr);
+       o_conv = COption_TypeZ_clone((LDKCOption_TypeZ*)(((uint64_t)o) & ~1));
+       LDKCResult_COption_TypeZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_TypeZDecodeErrorZ), "LDKCResult_COption_TypeZDecodeErrorZ");
+       *ret_conv = CResult_COption_TypeZDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretNoneZ_err() {
-       LDKCResult_PaymentSecretNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretNoneZ), "LDKCResult_PaymentSecretNoneZ");
-       *ret_conv = CResult_PaymentSecretNoneZ_err();
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_TypeZDecodeErrorZ_err(uint32_t e) {
+       LDKDecodeError e_conv;
+       e_conv.inner = (void*)(e & (~1));
+       e_conv.is_owned = (e & 1) || (e == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_COption_TypeZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_TypeZDecodeErrorZ), "LDKCResult_COption_TypeZDecodeErrorZ");
+       *ret_conv = CResult_COption_TypeZDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_PaymentSecretNoneZ_is_ok(uint32_t o) {
-       LDKCResult_PaymentSecretNoneZ* o_conv = (LDKCResult_PaymentSecretNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_PaymentSecretNoneZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_COption_TypeZDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_COption_TypeZDecodeErrorZ* o_conv = (LDKCResult_COption_TypeZDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_COption_TypeZDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_PaymentSecretNoneZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_COption_TypeZDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_PaymentSecretNoneZ _res_conv = *(LDKCResult_PaymentSecretNoneZ*)(_res_ptr);
+       LDKCResult_COption_TypeZDecodeErrorZ _res_conv = *(LDKCResult_COption_TypeZDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_PaymentSecretNoneZ_free(_res_conv);
+       CResult_COption_TypeZDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_PaymentSecretNoneZ_clone_ptr(LDKCResult_PaymentSecretNoneZ *NONNULL_PTR arg) {
-       LDKCResult_PaymentSecretNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretNoneZ), "LDKCResult_PaymentSecretNoneZ");
-       *ret_conv = CResult_PaymentSecretNoneZ_clone(arg);
+static inline uint64_t CResult_COption_TypeZDecodeErrorZ_clone_ptr(LDKCResult_COption_TypeZDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_COption_TypeZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_TypeZDecodeErrorZ), "LDKCResult_COption_TypeZDecodeErrorZ");
+       *ret_conv = CResult_COption_TypeZDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretNoneZ_clone_ptr(uint32_t arg) {
-       LDKCResult_PaymentSecretNoneZ* arg_conv = (LDKCResult_PaymentSecretNoneZ*)(arg & ~1);
-       int64_t ret_val = CResult_PaymentSecretNoneZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_COption_TypeZDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_COption_TypeZDecodeErrorZ* arg_conv = (LDKCResult_COption_TypeZDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_COption_TypeZDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretNoneZ_clone(uint32_t orig) {
-       LDKCResult_PaymentSecretNoneZ* orig_conv = (LDKCResult_PaymentSecretNoneZ*)(orig & ~1);
-       LDKCResult_PaymentSecretNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretNoneZ), "LDKCResult_PaymentSecretNoneZ");
-       *ret_conv = CResult_PaymentSecretNoneZ_clone(orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_TypeZDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_COption_TypeZDecodeErrorZ* orig_conv = (LDKCResult_COption_TypeZDecodeErrorZ*)(orig & ~1);
+       LDKCResult_COption_TypeZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_TypeZDecodeErrorZ), "LDKCResult_COption_TypeZDecodeErrorZ");
+       *ret_conv = CResult_COption_TypeZDecodeErrorZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretAPIErrorZ_ok(int8_tArray o) {
-       LDKThirtyTwoBytes o_ref;
-       CHECK(*((uint32_t*)o) == 32);
-       memcpy(o_ref.data, (uint8_t*)(o + 4), 32);
-       LDKCResult_PaymentSecretAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretAPIErrorZ), "LDKCResult_PaymentSecretAPIErrorZ");
-       *ret_conv = CResult_PaymentSecretAPIErrorZ_ok(o_ref);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_StringErrorZ_ok(jstring o) {
+       LDKStr o_conv = str_ref_to_owned_c(o);
+       LDKCResult_StringErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StringErrorZ), "LDKCResult_StringErrorZ");
+       *ret_conv = CResult_StringErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretAPIErrorZ_err(uint32_t e) {
-       void* e_ptr = (void*)(((uint64_t)e) & ~1);
-       CHECK_ACCESS(e_ptr);
-       LDKAPIError e_conv = *(LDKAPIError*)(e_ptr);
-       e_conv = APIError_clone((LDKAPIError*)(((uint64_t)e) & ~1));
-       LDKCResult_PaymentSecretAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretAPIErrorZ), "LDKCResult_PaymentSecretAPIErrorZ");
-       *ret_conv = CResult_PaymentSecretAPIErrorZ_err(e_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_StringErrorZ_err(uint32_t e) {
+       LDKSecp256k1Error e_conv = LDKSecp256k1Error_from_js(e);
+       LDKCResult_StringErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StringErrorZ), "LDKCResult_StringErrorZ");
+       *ret_conv = CResult_StringErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_PaymentSecretAPIErrorZ_is_ok(uint32_t o) {
-       LDKCResult_PaymentSecretAPIErrorZ* o_conv = (LDKCResult_PaymentSecretAPIErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_PaymentSecretAPIErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_StringErrorZ_is_ok(uint32_t o) {
+       LDKCResult_StringErrorZ* o_conv = (LDKCResult_StringErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_StringErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_PaymentSecretAPIErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_StringErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_PaymentSecretAPIErrorZ _res_conv = *(LDKCResult_PaymentSecretAPIErrorZ*)(_res_ptr);
+       LDKCResult_StringErrorZ _res_conv = *(LDKCResult_StringErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_PaymentSecretAPIErrorZ_free(_res_conv);
-}
-
-static inline uint64_t CResult_PaymentSecretAPIErrorZ_clone_ptr(LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR arg) {
-       LDKCResult_PaymentSecretAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretAPIErrorZ), "LDKCResult_PaymentSecretAPIErrorZ");
-       *ret_conv = CResult_PaymentSecretAPIErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
-}
-int64_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretAPIErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_PaymentSecretAPIErrorZ* arg_conv = (LDKCResult_PaymentSecretAPIErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_PaymentSecretAPIErrorZ_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretAPIErrorZ_clone(uint32_t orig) {
-       LDKCResult_PaymentSecretAPIErrorZ* orig_conv = (LDKCResult_PaymentSecretAPIErrorZ*)(orig & ~1);
-       LDKCResult_PaymentSecretAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretAPIErrorZ), "LDKCResult_PaymentSecretAPIErrorZ");
-       *ret_conv = CResult_PaymentSecretAPIErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+       CResult_StringErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentPreimageAPIErrorZ_ok(int8_tArray o) {
-       LDKThirtyTwoBytes o_ref;
-       CHECK(*((uint32_t*)o) == 32);
-       memcpy(o_ref.data, (uint8_t*)(o + 4), 32);
-       LDKCResult_PaymentPreimageAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentPreimageAPIErrorZ), "LDKCResult_PaymentPreimageAPIErrorZ");
-       *ret_conv = CResult_PaymentPreimageAPIErrorZ_ok(o_ref);
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = ChannelMonitorUpdate_clone(&o_conv);
+       LDKCResult_ChannelMonitorUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ), "LDKCResult_ChannelMonitorUpdateDecodeErrorZ");
+       *ret_conv = CResult_ChannelMonitorUpdateDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentPreimageAPIErrorZ_err(uint32_t e) {
-       void* e_ptr = (void*)(((uint64_t)e) & ~1);
-       CHECK_ACCESS(e_ptr);
-       LDKAPIError e_conv = *(LDKAPIError*)(e_ptr);
-       e_conv = APIError_clone((LDKAPIError*)(((uint64_t)e) & ~1));
-       LDKCResult_PaymentPreimageAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentPreimageAPIErrorZ), "LDKCResult_PaymentPreimageAPIErrorZ");
-       *ret_conv = CResult_PaymentPreimageAPIErrorZ_err(e_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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_ChannelMonitorUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ), "LDKCResult_ChannelMonitorUpdateDecodeErrorZ");
+       *ret_conv = CResult_ChannelMonitorUpdateDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_PaymentPreimageAPIErrorZ_is_ok(uint32_t o) {
-       LDKCResult_PaymentPreimageAPIErrorZ* o_conv = (LDKCResult_PaymentPreimageAPIErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_PaymentPreimageAPIErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelMonitorUpdateDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ChannelMonitorUpdateDecodeErrorZ* o_conv = (LDKCResult_ChannelMonitorUpdateDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ChannelMonitorUpdateDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_PaymentPreimageAPIErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ChannelMonitorUpdateDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_PaymentPreimageAPIErrorZ _res_conv = *(LDKCResult_PaymentPreimageAPIErrorZ*)(_res_ptr);
+       LDKCResult_ChannelMonitorUpdateDecodeErrorZ _res_conv = *(LDKCResult_ChannelMonitorUpdateDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_PaymentPreimageAPIErrorZ_free(_res_conv);
+       CResult_ChannelMonitorUpdateDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_PaymentPreimageAPIErrorZ_clone_ptr(LDKCResult_PaymentPreimageAPIErrorZ *NONNULL_PTR arg) {
-       LDKCResult_PaymentPreimageAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentPreimageAPIErrorZ), "LDKCResult_PaymentPreimageAPIErrorZ");
-       *ret_conv = CResult_PaymentPreimageAPIErrorZ_clone(arg);
+static inline uint64_t CResult_ChannelMonitorUpdateDecodeErrorZ_clone_ptr(LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_ChannelMonitorUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ), "LDKCResult_ChannelMonitorUpdateDecodeErrorZ");
+       *ret_conv = CResult_ChannelMonitorUpdateDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_PaymentPreimageAPIErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_PaymentPreimageAPIErrorZ* arg_conv = (LDKCResult_PaymentPreimageAPIErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_PaymentPreimageAPIErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_ChannelMonitorUpdateDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ChannelMonitorUpdateDecodeErrorZ* arg_conv = (LDKCResult_ChannelMonitorUpdateDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_ChannelMonitorUpdateDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentPreimageAPIErrorZ_clone(uint32_t orig) {
-       LDKCResult_PaymentPreimageAPIErrorZ* orig_conv = (LDKCResult_PaymentPreimageAPIErrorZ*)(orig & ~1);
-       LDKCResult_PaymentPreimageAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentPreimageAPIErrorZ), "LDKCResult_PaymentPreimageAPIErrorZ");
-       *ret_conv = CResult_PaymentPreimageAPIErrorZ_clone(orig_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 (uint64_t)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 _res_conv_16 = _res_vals[q];
-               LDKChannelMonitor _res_conv_16_conv;
-               _res_conv_16_conv.inner = (void*)(_res_conv_16 & (~1));
-               _res_conv_16_conv.is_owned = (_res_conv_16 & 1) || (_res_conv_16 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_16_conv);
-               _res_constr.data[q] = _res_conv_16_conv;
-       }
-       CVec_ChannelMonitorZ_free(_res_constr);
+uint32_t  __attribute__((visibility("default"))) TS_COption_MonitorEventZ_some(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKMonitorEvent o_conv = *(LDKMonitorEvent*)(o_ptr);
+       o_conv = MonitorEvent_clone((LDKMonitorEvent*)(((uint64_t)o) & ~1));
+       LDKCOption_MonitorEventZ *ret_copy = MALLOC(sizeof(LDKCOption_MonitorEventZ), "LDKCOption_MonitorEventZ");
+       *ret_copy = COption_MonitorEventZ_some(o_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       // Warning: we need a move here but no clone is available for LDKChannelManager
-       LDKC2Tuple_BlockHashChannelManagerZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelManagerZ), "LDKC2Tuple_BlockHashChannelManagerZ");
-       *ret_conv = C2Tuple_BlockHashChannelManagerZ_new(a_ref, b_conv);
-       return ((uint64_t)ret_conv);
+uint32_t  __attribute__((visibility("default"))) TS_COption_MonitorEventZ_none() {
+       LDKCOption_MonitorEventZ *ret_copy = MALLOC(sizeof(LDKCOption_MonitorEventZ), "LDKCOption_MonitorEventZ");
+       *ret_copy = COption_MonitorEventZ_none();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelManagerZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_COption_MonitorEventZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKC2Tuple_BlockHashChannelManagerZ _res_conv = *(LDKC2Tuple_BlockHashChannelManagerZ*)(_res_ptr);
+       LDKCOption_MonitorEventZ _res_conv = *(LDKCOption_MonitorEventZ*)(_res_ptr);
        FREE((void*)_res);
-       C2Tuple_BlockHashChannelManagerZ_free(_res_conv);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKC2Tuple_BlockHashChannelManagerZ o_conv = *(LDKC2Tuple_BlockHashChannelManagerZ*)(o_ptr);
-       // Warning: we may need a move here but no clone is available for LDKC2Tuple_BlockHashChannelManagerZ
-       LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ");
-       *ret_conv = CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+       COption_MonitorEventZ_free(_res_conv);
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       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);
-       return (uint64_t)ret_conv;
+static inline uint64_t COption_MonitorEventZ_clone_ptr(LDKCOption_MonitorEventZ *NONNULL_PTR arg) {
+       LDKCOption_MonitorEventZ *ret_copy = MALLOC(sizeof(LDKCOption_MonitorEventZ), "LDKCOption_MonitorEventZ");
+       *ret_copy = COption_MonitorEventZ_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* o_conv = (LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_is_ok(o_conv);
+int64_t  __attribute__((visibility("default"))) TS_COption_MonitorEventZ_clone_ptr(uint32_t arg) {
+       LDKCOption_MonitorEventZ* arg_conv = (LDKCOption_MonitorEventZ*)arg;
+       int64_t ret_val = COption_MonitorEventZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ _res_conv = *(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(_res_conv);
-}
-
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = ChannelConfig_clone(&o_conv);
-       LDKCResult_ChannelConfigDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelConfigDecodeErrorZ), "LDKCResult_ChannelConfigDecodeErrorZ");
-       *ret_conv = CResult_ChannelConfigDecodeErrorZ_ok(o_conv);
+uint32_t  __attribute__((visibility("default"))) TS_COption_MonitorEventZ_clone(uint32_t orig) {
+       LDKCOption_MonitorEventZ* orig_conv = (LDKCOption_MonitorEventZ*)orig;
+       LDKCOption_MonitorEventZ *ret_copy = MALLOC(sizeof(LDKCOption_MonitorEventZ), "LDKCOption_MonitorEventZ");
+       *ret_copy = COption_MonitorEventZ_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_MonitorEventZDecodeErrorZ_ok(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKCOption_MonitorEventZ o_conv = *(LDKCOption_MonitorEventZ*)(o_ptr);
+       o_conv = COption_MonitorEventZ_clone((LDKCOption_MonitorEventZ*)(((uint64_t)o) & ~1));
+       LDKCResult_COption_MonitorEventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ), "LDKCResult_COption_MonitorEventZDecodeErrorZ");
+       *ret_conv = CResult_COption_MonitorEventZDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelConfigDecodeErrorZ_err(uint32_t e) {
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_MonitorEventZDecodeErrorZ_err(uint32_t e) {
        LDKDecodeError e_conv;
        e_conv.inner = (void*)(e & (~1));
        e_conv.is_owned = (e & 1) || (e == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ChannelConfigDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelConfigDecodeErrorZ), "LDKCResult_ChannelConfigDecodeErrorZ");
-       *ret_conv = CResult_ChannelConfigDecodeErrorZ_err(e_conv);
+       LDKCResult_COption_MonitorEventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ), "LDKCResult_COption_MonitorEventZDecodeErrorZ");
+       *ret_conv = CResult_COption_MonitorEventZDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelConfigDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ChannelConfigDecodeErrorZ* o_conv = (LDKCResult_ChannelConfigDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ChannelConfigDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_COption_MonitorEventZDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_COption_MonitorEventZDecodeErrorZ* o_conv = (LDKCResult_COption_MonitorEventZDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_COption_MonitorEventZDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ChannelConfigDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_COption_MonitorEventZDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_ChannelConfigDecodeErrorZ _res_conv = *(LDKCResult_ChannelConfigDecodeErrorZ*)(_res_ptr);
+       LDKCResult_COption_MonitorEventZDecodeErrorZ _res_conv = *(LDKCResult_COption_MonitorEventZDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_ChannelConfigDecodeErrorZ_free(_res_conv);
+       CResult_COption_MonitorEventZDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_ChannelConfigDecodeErrorZ_clone_ptr(LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ChannelConfigDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelConfigDecodeErrorZ), "LDKCResult_ChannelConfigDecodeErrorZ");
-       *ret_conv = CResult_ChannelConfigDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_COption_MonitorEventZDecodeErrorZ_clone_ptr(LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_COption_MonitorEventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ), "LDKCResult_COption_MonitorEventZDecodeErrorZ");
+       *ret_conv = CResult_COption_MonitorEventZDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_ChannelConfigDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ChannelConfigDecodeErrorZ* arg_conv = (LDKCResult_ChannelConfigDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ChannelConfigDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_COption_MonitorEventZDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_COption_MonitorEventZDecodeErrorZ* arg_conv = (LDKCResult_COption_MonitorEventZDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_COption_MonitorEventZDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_MonitorEventZDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_COption_MonitorEventZDecodeErrorZ* orig_conv = (LDKCResult_COption_MonitorEventZDecodeErrorZ*)(orig & ~1);
+       LDKCResult_COption_MonitorEventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ), "LDKCResult_COption_MonitorEventZDecodeErrorZ");
+       *ret_conv = CResult_COption_MonitorEventZDecodeErrorZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_OutPointDecodeErrorZ_ok(uint32_t o) {
-       LDKOutPoint o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = OutPoint_clone(&o_conv);
-       LDKCResult_OutPointDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OutPointDecodeErrorZ), "LDKCResult_OutPointDecodeErrorZ");
-       *ret_conv = CResult_OutPointDecodeErrorZ_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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_OutPointDecodeErrorZ_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_OutPointDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OutPointDecodeErrorZ), "LDKCResult_OutPointDecodeErrorZ");
-       *ret_conv = CResult_OutPointDecodeErrorZ_err(e_conv);
+       LDKCResult_HTLCUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCUpdateDecodeErrorZ), "LDKCResult_HTLCUpdateDecodeErrorZ");
+       *ret_conv = CResult_HTLCUpdateDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_OutPointDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_OutPointDecodeErrorZ* o_conv = (LDKCResult_OutPointDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_OutPointDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_HTLCUpdateDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_HTLCUpdateDecodeErrorZ* o_conv = (LDKCResult_HTLCUpdateDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_HTLCUpdateDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_OutPointDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_HTLCUpdateDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_OutPointDecodeErrorZ _res_conv = *(LDKCResult_OutPointDecodeErrorZ*)(_res_ptr);
+       LDKCResult_HTLCUpdateDecodeErrorZ _res_conv = *(LDKCResult_HTLCUpdateDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_OutPointDecodeErrorZ_free(_res_conv);
+       CResult_HTLCUpdateDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_OutPointDecodeErrorZ_clone_ptr(LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_OutPointDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OutPointDecodeErrorZ), "LDKCResult_OutPointDecodeErrorZ");
-       *ret_conv = CResult_OutPointDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_HTLCUpdateDecodeErrorZ_clone_ptr(LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_HTLCUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCUpdateDecodeErrorZ), "LDKCResult_HTLCUpdateDecodeErrorZ");
+       *ret_conv = CResult_HTLCUpdateDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_OutPointDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_OutPointDecodeErrorZ* arg_conv = (LDKCResult_OutPointDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_OutPointDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_HTLCUpdateDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_HTLCUpdateDecodeErrorZ* arg_conv = (LDKCResult_HTLCUpdateDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_HTLCUpdateDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_TypeZ_some(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKType o_conv = *(LDKType*)(o_ptr);
-       LDKCOption_TypeZ *ret_copy = MALLOC(sizeof(LDKCOption_TypeZ), "LDKCOption_TypeZ");
-       *ret_copy = COption_TypeZ_some(o_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneNoneZ_ok() {
+       LDKCResult_NoneNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneNoneZ), "LDKCResult_NoneNoneZ");
+       *ret_conv = CResult_NoneNoneZ_ok();
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_TypeZ_none() {
-       LDKCOption_TypeZ *ret_copy = MALLOC(sizeof(LDKCOption_TypeZ), "LDKCOption_TypeZ");
-       *ret_copy = COption_TypeZ_none();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneNoneZ_err() {
+       LDKCResult_NoneNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneNoneZ), "LDKCResult_NoneNoneZ");
+       *ret_conv = CResult_NoneNoneZ_err();
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_COption_TypeZ_free(uint32_t _res) {
+jboolean  __attribute__((visibility("default"))) TS_CResult_NoneNoneZ_is_ok(uint32_t o) {
+       LDKCResult_NoneNoneZ* o_conv = (LDKCResult_NoneNoneZ*)(o & ~1);
+       jboolean ret_val = CResult_NoneNoneZ_is_ok(o_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_CResult_NoneNoneZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCOption_TypeZ _res_conv = *(LDKCOption_TypeZ*)(_res_ptr);
+       LDKCResult_NoneNoneZ _res_conv = *(LDKCResult_NoneNoneZ*)(_res_ptr);
        FREE((void*)_res);
-       COption_TypeZ_free(_res_conv);
+       CResult_NoneNoneZ_free(_res_conv);
 }
 
-static inline uint64_t COption_TypeZ_clone_ptr(LDKCOption_TypeZ *NONNULL_PTR arg) {
-       LDKCOption_TypeZ *ret_copy = MALLOC(sizeof(LDKCOption_TypeZ), "LDKCOption_TypeZ");
-       *ret_copy = COption_TypeZ_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+static inline uint64_t CResult_NoneNoneZ_clone_ptr(LDKCResult_NoneNoneZ *NONNULL_PTR arg) {
+       LDKCResult_NoneNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneNoneZ), "LDKCResult_NoneNoneZ");
+       *ret_conv = CResult_NoneNoneZ_clone(arg);
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_COption_TypeZ_clone_ptr(uint32_t arg) {
-       LDKCOption_TypeZ* arg_conv = (LDKCOption_TypeZ*)arg;
-       int64_t ret_val = COption_TypeZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_NoneNoneZ_clone_ptr(uint32_t arg) {
+       LDKCResult_NoneNoneZ* arg_conv = (LDKCResult_NoneNoneZ*)(arg & ~1);
+       int64_t ret_val = CResult_NoneNoneZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_TypeZ_clone(uint32_t orig) {
-       LDKCOption_TypeZ* orig_conv = (LDKCOption_TypeZ*)orig;
-       LDKCOption_TypeZ *ret_copy = MALLOC(sizeof(LDKCOption_TypeZ), "LDKCOption_TypeZ");
-       *ret_copy = COption_TypeZ_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_TypeZDecodeErrorZ_ok(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKCOption_TypeZ o_conv = *(LDKCOption_TypeZ*)(o_ptr);
-       o_conv = COption_TypeZ_clone((LDKCOption_TypeZ*)(((uint64_t)o) & ~1));
-       LDKCResult_COption_TypeZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_TypeZDecodeErrorZ), "LDKCResult_COption_TypeZDecodeErrorZ");
-       *ret_conv = CResult_COption_TypeZDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_TypeZDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_COption_TypeZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_TypeZDecodeErrorZ), "LDKCResult_COption_TypeZDecodeErrorZ");
-       *ret_conv = CResult_COption_TypeZDecodeErrorZ_err(e_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneNoneZ_clone(uint32_t orig) {
+       LDKCResult_NoneNoneZ* orig_conv = (LDKCResult_NoneNoneZ*)(orig & ~1);
+       LDKCResult_NoneNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneNoneZ), "LDKCResult_NoneNoneZ");
+       *ret_conv = CResult_NoneNoneZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_COption_TypeZDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_COption_TypeZDecodeErrorZ* o_conv = (LDKCResult_COption_TypeZDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_COption_TypeZDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_OutPointScriptZ_new(uint32_t a, int8_tArray b) {
+       LDKOutPoint a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = (a & 1) || (a == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       a_conv = OutPoint_clone(&a_conv);
+       LDKCVec_u8Z b_ref;
+       b_ref.datalen = b->arr_len;
+       b_ref.data = MALLOC(b_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(b_ref.data, b->elems, b_ref.datalen);
+       LDKC2Tuple_OutPointScriptZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_OutPointScriptZ), "LDKC2Tuple_OutPointScriptZ");
+       *ret_conv = C2Tuple_OutPointScriptZ_new(a_conv, b_ref);
+       return ((uint64_t)ret_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_COption_TypeZDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_C2Tuple_OutPointScriptZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_COption_TypeZDecodeErrorZ _res_conv = *(LDKCResult_COption_TypeZDecodeErrorZ*)(_res_ptr);
+       LDKC2Tuple_OutPointScriptZ _res_conv = *(LDKC2Tuple_OutPointScriptZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_COption_TypeZDecodeErrorZ_free(_res_conv);
-}
-
-static inline uint64_t CResult_COption_TypeZDecodeErrorZ_clone_ptr(LDKCResult_COption_TypeZDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_COption_TypeZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_TypeZDecodeErrorZ), "LDKCResult_COption_TypeZDecodeErrorZ");
-       *ret_conv = CResult_COption_TypeZDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
-}
-int64_t  __attribute__((visibility("default"))) TS_CResult_COption_TypeZDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_COption_TypeZDecodeErrorZ* arg_conv = (LDKCResult_COption_TypeZDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_COption_TypeZDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+       C2Tuple_OutPointScriptZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_TypeZDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_COption_TypeZDecodeErrorZ* orig_conv = (LDKCResult_COption_TypeZDecodeErrorZ*)(orig & ~1);
-       LDKCResult_COption_TypeZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_TypeZDecodeErrorZ), "LDKCResult_COption_TypeZDecodeErrorZ");
-       *ret_conv = CResult_COption_TypeZDecodeErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_u32ScriptZ_new(int32_t a, int8_tArray b) {
+       LDKCVec_u8Z b_ref;
+       b_ref.datalen = b->arr_len;
+       b_ref.data = MALLOC(b_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(b_ref.data, b->elems, b_ref.datalen);
+       LDKC2Tuple_u32ScriptZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_u32ScriptZ), "LDKC2Tuple_u32ScriptZ");
+       *ret_conv = C2Tuple_u32ScriptZ_new(a, b_ref);
+       return ((uint64_t)ret_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentErrorZ_ok(int8_tArray o) {
-       LDKThirtyTwoBytes o_ref;
-       CHECK(*((uint32_t*)o) == 32);
-       memcpy(o_ref.data, (uint8_t*)(o + 4), 32);
-       LDKCResult_PaymentIdPaymentErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentErrorZ), "LDKCResult_PaymentIdPaymentErrorZ");
-       *ret_conv = CResult_PaymentIdPaymentErrorZ_ok(o_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_C2Tuple_u32ScriptZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKC2Tuple_u32ScriptZ _res_conv = *(LDKC2Tuple_u32ScriptZ*)(_res_ptr);
+       FREE((void*)_res);
+       C2Tuple_u32ScriptZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentErrorZ_err(uint32_t e) {
-       void* e_ptr = (void*)(((uint64_t)e) & ~1);
-       CHECK_ACCESS(e_ptr);
-       LDKPaymentError e_conv = *(LDKPaymentError*)(e_ptr);
-       e_conv = PaymentError_clone((LDKPaymentError*)(((uint64_t)e) & ~1));
-       LDKCResult_PaymentIdPaymentErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentErrorZ), "LDKCResult_PaymentIdPaymentErrorZ");
-       *ret_conv = CResult_PaymentIdPaymentErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_CVec_C2Tuple_u32ScriptZZ_free(uint32_tArray _res) {
+       LDKCVec_C2Tuple_u32ScriptZZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC2Tuple_u32ScriptZ), "LDKCVec_C2Tuple_u32ScriptZZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t v = 0; v < _res_constr.datalen; v++) {
+               uint32_t _res_conv_21 = _res_vals[v];
+               void* _res_conv_21_ptr = (void*)(((uint64_t)_res_conv_21) & ~1);
+               CHECK_ACCESS(_res_conv_21_ptr);
+               LDKC2Tuple_u32ScriptZ _res_conv_21_conv = *(LDKC2Tuple_u32ScriptZ*)(_res_conv_21_ptr);
+               FREE((void*)_res_conv_21);
+               _res_constr.data[v] = _res_conv_21_conv;
+       }
+       CVec_C2Tuple_u32ScriptZZ_free(_res_constr);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentErrorZ_is_ok(uint32_t o) {
-       LDKCResult_PaymentIdPaymentErrorZ* o_conv = (LDKCResult_PaymentIdPaymentErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_PaymentIdPaymentErrorZ_is_ok(o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_new(int8_tArray a, uint32_tArray b) {
+       LDKThirtyTwoBytes a_ref;
+       CHECK(a->arr_len == 32);
+       memcpy(a_ref.data, a->elems, 32);
+       LDKCVec_C2Tuple_u32ScriptZZ b_constr;
+       b_constr.datalen = b->arr_len;
+       if (b_constr.datalen > 0)
+               b_constr.data = MALLOC(b_constr.datalen * sizeof(LDKC2Tuple_u32ScriptZ), "LDKCVec_C2Tuple_u32ScriptZZ Elements");
+       else
+               b_constr.data = NULL;
+       uint32_t* b_vals = b->elems;
+       for (size_t v = 0; v < b_constr.datalen; v++) {
+               uint32_t b_conv_21 = b_vals[v];
+               void* b_conv_21_ptr = (void*)(((uint64_t)b_conv_21) & ~1);
+               CHECK_ACCESS(b_conv_21_ptr);
+               LDKC2Tuple_u32ScriptZ b_conv_21_conv = *(LDKC2Tuple_u32ScriptZ*)(b_conv_21_ptr);
+               // Warning: we may need a move here but no clone is available for LDKC2Tuple_u32ScriptZ
+               b_constr.data[v] = b_conv_21_conv;
+       }
+       LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ");
+       *ret_conv = C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_new(a_ref, b_constr);
+       return ((uint64_t)ret_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_PaymentIdPaymentErrorZ _res_conv = *(LDKCResult_PaymentIdPaymentErrorZ*)(_res_ptr);
+       LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ _res_conv = *(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_PaymentIdPaymentErrorZ_free(_res_conv);
+       C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_PaymentIdPaymentErrorZ_clone_ptr(LDKCResult_PaymentIdPaymentErrorZ *NONNULL_PTR arg) {
-       LDKCResult_PaymentIdPaymentErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentErrorZ), "LDKCResult_PaymentIdPaymentErrorZ");
-       *ret_conv = CResult_PaymentIdPaymentErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
-}
-int64_t  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_PaymentIdPaymentErrorZ* arg_conv = (LDKCResult_PaymentIdPaymentErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_PaymentIdPaymentErrorZ_clone_ptr(arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(uint32_tArray _res) {
+       LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ), "LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t o = 0; o < _res_constr.datalen; o++) {
+               uint32_t _res_conv_40 = _res_vals[o];
+               void* _res_conv_40_ptr = (void*)(((uint64_t)_res_conv_40) & ~1);
+               CHECK_ACCESS(_res_conv_40_ptr);
+               LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ _res_conv_40_conv = *(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ*)(_res_conv_40_ptr);
+               FREE((void*)_res_conv_40);
+               _res_constr.data[o] = _res_conv_40_conv;
+       }
+       CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(_res_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentErrorZ_clone(uint32_t orig) {
-       LDKCResult_PaymentIdPaymentErrorZ* orig_conv = (LDKCResult_PaymentIdPaymentErrorZ*)(orig & ~1);
-       LDKCResult_PaymentIdPaymentErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentErrorZ), "LDKCResult_PaymentIdPaymentErrorZ");
-       *ret_conv = CResult_PaymentIdPaymentErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_CVec_MonitorEventZ_free(uint32_tArray _res) {
+       LDKCVec_MonitorEventZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKMonitorEvent), "LDKCVec_MonitorEventZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t o = 0; o < _res_constr.datalen; o++) {
+               uint32_t _res_conv_14 = _res_vals[o];
+               void* _res_conv_14_ptr = (void*)(((uint64_t)_res_conv_14) & ~1);
+               CHECK_ACCESS(_res_conv_14_ptr);
+               LDKMonitorEvent _res_conv_14_conv = *(LDKMonitorEvent*)(_res_conv_14_ptr);
+               FREE((void*)_res_conv_14);
+               _res_constr.data[o] = _res_conv_14_conv;
+       }
+       CVec_MonitorEventZ_free(_res_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SiPrefixNoneZ_ok(uint32_t o) {
-       LDKSiPrefix o_conv = LDKSiPrefix_from_js(o);
-       LDKCResult_SiPrefixNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SiPrefixNoneZ), "LDKCResult_SiPrefixNoneZ");
-       *ret_conv = CResult_SiPrefixNoneZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_CVec_EventZ_free(uint32_tArray _res) {
+       LDKCVec_EventZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       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 = _res->elems;
+       for (size_t h = 0; h < _res_constr.datalen; h++) {
+               uint32_t _res_conv_7 = _res_vals[h];
+               void* _res_conv_7_ptr = (void*)(((uint64_t)_res_conv_7) & ~1);
+               CHECK_ACCESS(_res_conv_7_ptr);
+               LDKEvent _res_conv_7_conv = *(LDKEvent*)(_res_conv_7_ptr);
+               FREE((void*)_res_conv_7);
+               _res_constr.data[h] = _res_conv_7_conv;
+       }
+       CVec_EventZ_free(_res_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SiPrefixNoneZ_err() {
-       LDKCResult_SiPrefixNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SiPrefixNoneZ), "LDKCResult_SiPrefixNoneZ");
-       *ret_conv = CResult_SiPrefixNoneZ_err();
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_CVec_TransactionZ_free(ptrArray _res) {
+       LDKCVec_TransactionZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKTransaction), "LDKCVec_TransactionZ Elements");
+       else
+               _res_constr.data = NULL;
+       int8_tArray* _res_vals = (void*) _res->elems;
+       for (size_t m = 0; m < _res_constr.datalen; m++) {
+               int8_tArray _res_conv_12 = _res_vals[m];
+               LDKTransaction _res_conv_12_ref;
+               _res_conv_12_ref.datalen = _res_conv_12->arr_len;
+               _res_conv_12_ref.data = MALLOC(_res_conv_12_ref.datalen, "LDKTransaction Bytes");
+               memcpy(_res_conv_12_ref.data, _res_conv_12->elems, _res_conv_12_ref.datalen);
+               _res_conv_12_ref.data_is_owned = true;
+               _res_constr.data[m] = _res_conv_12_ref;
+       }
+       CVec_TransactionZ_free(_res_constr);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_SiPrefixNoneZ_is_ok(uint32_t o) {
-       LDKCResult_SiPrefixNoneZ* o_conv = (LDKCResult_SiPrefixNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_SiPrefixNoneZ_is_ok(o_conv);
+static inline uint64_t C2Tuple_usizeTransactionZ_clone_ptr(LDKC2Tuple_usizeTransactionZ *NONNULL_PTR arg) {
+       LDKC2Tuple_usizeTransactionZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ), "LDKC2Tuple_usizeTransactionZ");
+       *ret_conv = C2Tuple_usizeTransactionZ_clone(arg);
+       return ((uint64_t)ret_conv);
+}
+int64_t  __attribute__((visibility("default"))) TS_C2Tuple_usizeTransactionZ_clone_ptr(uint32_t arg) {
+       LDKC2Tuple_usizeTransactionZ* arg_conv = (LDKC2Tuple_usizeTransactionZ*)(arg & ~1);
+       int64_t ret_val = C2Tuple_usizeTransactionZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_SiPrefixNoneZ_free(uint32_t _res) {
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_usizeTransactionZ_clone(uint32_t orig) {
+       LDKC2Tuple_usizeTransactionZ* orig_conv = (LDKC2Tuple_usizeTransactionZ*)(orig & ~1);
+       LDKC2Tuple_usizeTransactionZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ), "LDKC2Tuple_usizeTransactionZ");
+       *ret_conv = C2Tuple_usizeTransactionZ_clone(orig_conv);
+       return ((uint64_t)ret_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_usizeTransactionZ_new(int64_t a, int8_tArray b) {
+       LDKTransaction b_ref;
+       b_ref.datalen = b->arr_len;
+       b_ref.data = MALLOC(b_ref.datalen, "LDKTransaction Bytes");
+       memcpy(b_ref.data, b->elems, b_ref.datalen);
+       b_ref.data_is_owned = true;
+       LDKC2Tuple_usizeTransactionZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ), "LDKC2Tuple_usizeTransactionZ");
+       *ret_conv = C2Tuple_usizeTransactionZ_new(a, b_ref);
+       return ((uint64_t)ret_conv);
+}
+
+void  __attribute__((visibility("default"))) TS_C2Tuple_usizeTransactionZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_SiPrefixNoneZ _res_conv = *(LDKCResult_SiPrefixNoneZ*)(_res_ptr);
+       LDKC2Tuple_usizeTransactionZ _res_conv = *(LDKC2Tuple_usizeTransactionZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_SiPrefixNoneZ_free(_res_conv);
+       C2Tuple_usizeTransactionZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_SiPrefixNoneZ_clone_ptr(LDKCResult_SiPrefixNoneZ *NONNULL_PTR arg) {
-       LDKCResult_SiPrefixNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SiPrefixNoneZ), "LDKCResult_SiPrefixNoneZ");
-       *ret_conv = CResult_SiPrefixNoneZ_clone(arg);
-       return (uint64_t)ret_conv;
-}
-int64_t  __attribute__((visibility("default"))) TS_CResult_SiPrefixNoneZ_clone_ptr(uint32_t arg) {
-       LDKCResult_SiPrefixNoneZ* arg_conv = (LDKCResult_SiPrefixNoneZ*)(arg & ~1);
-       int64_t ret_val = CResult_SiPrefixNoneZ_clone_ptr(arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_CVec_C2Tuple_usizeTransactionZZ_free(uint32_tArray _res) {
+       LDKCVec_C2Tuple_usizeTransactionZZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC2Tuple_usizeTransactionZ), "LDKCVec_C2Tuple_usizeTransactionZZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t c = 0; c < _res_constr.datalen; c++) {
+               uint32_t _res_conv_28 = _res_vals[c];
+               void* _res_conv_28_ptr = (void*)(((uint64_t)_res_conv_28) & ~1);
+               CHECK_ACCESS(_res_conv_28_ptr);
+               LDKC2Tuple_usizeTransactionZ _res_conv_28_conv = *(LDKC2Tuple_usizeTransactionZ*)(_res_conv_28_ptr);
+               FREE((void*)_res_conv_28);
+               _res_constr.data[c] = _res_conv_28_conv;
+       }
+       CVec_C2Tuple_usizeTransactionZZ_free(_res_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SiPrefixNoneZ_clone(uint32_t orig) {
-       LDKCResult_SiPrefixNoneZ* orig_conv = (LDKCResult_SiPrefixNoneZ*)(orig & ~1);
-       LDKCResult_SiPrefixNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SiPrefixNoneZ), "LDKCResult_SiPrefixNoneZ");
-       *ret_conv = CResult_SiPrefixNoneZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+static inline uint64_t C2Tuple_u32TxOutZ_clone_ptr(LDKC2Tuple_u32TxOutZ *NONNULL_PTR arg) {
+       LDKC2Tuple_u32TxOutZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_u32TxOutZ), "LDKC2Tuple_u32TxOutZ");
+       *ret_conv = C2Tuple_u32TxOutZ_clone(arg);
+       return ((uint64_t)ret_conv);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceNoneZ_ok(uint32_t o) {
-       LDKInvoice o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = Invoice_clone(&o_conv);
-       LDKCResult_InvoiceNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceNoneZ), "LDKCResult_InvoiceNoneZ");
-       *ret_conv = CResult_InvoiceNoneZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+int64_t  __attribute__((visibility("default"))) TS_C2Tuple_u32TxOutZ_clone_ptr(uint32_t arg) {
+       LDKC2Tuple_u32TxOutZ* arg_conv = (LDKC2Tuple_u32TxOutZ*)(arg & ~1);
+       int64_t ret_val = C2Tuple_u32TxOutZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceNoneZ_err() {
-       LDKCResult_InvoiceNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceNoneZ), "LDKCResult_InvoiceNoneZ");
-       *ret_conv = CResult_InvoiceNoneZ_err();
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_u32TxOutZ_clone(uint32_t orig) {
+       LDKC2Tuple_u32TxOutZ* orig_conv = (LDKC2Tuple_u32TxOutZ*)(orig & ~1);
+       LDKC2Tuple_u32TxOutZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_u32TxOutZ), "LDKC2Tuple_u32TxOutZ");
+       *ret_conv = C2Tuple_u32TxOutZ_clone(orig_conv);
+       return ((uint64_t)ret_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_InvoiceNoneZ_is_ok(uint32_t o) {
-       LDKCResult_InvoiceNoneZ* o_conv = (LDKCResult_InvoiceNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_InvoiceNoneZ_is_ok(o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_u32TxOutZ_new(int32_t a, uint32_t b) {
+       void* b_ptr = (void*)(((uint64_t)b) & ~1);
+       CHECK_ACCESS(b_ptr);
+       LDKTxOut b_conv = *(LDKTxOut*)(b_ptr);
+       b_conv = TxOut_clone((LDKTxOut*)(((uint64_t)b) & ~1));
+       LDKC2Tuple_u32TxOutZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_u32TxOutZ), "LDKC2Tuple_u32TxOutZ");
+       *ret_conv = C2Tuple_u32TxOutZ_new(a, b_conv);
+       return ((uint64_t)ret_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_InvoiceNoneZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_C2Tuple_u32TxOutZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_InvoiceNoneZ _res_conv = *(LDKCResult_InvoiceNoneZ*)(_res_ptr);
+       LDKC2Tuple_u32TxOutZ _res_conv = *(LDKC2Tuple_u32TxOutZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_InvoiceNoneZ_free(_res_conv);
+       C2Tuple_u32TxOutZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_InvoiceNoneZ_clone_ptr(LDKCResult_InvoiceNoneZ *NONNULL_PTR arg) {
-       LDKCResult_InvoiceNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceNoneZ), "LDKCResult_InvoiceNoneZ");
-       *ret_conv = CResult_InvoiceNoneZ_clone(arg);
-       return (uint64_t)ret_conv;
-}
-int64_t  __attribute__((visibility("default"))) TS_CResult_InvoiceNoneZ_clone_ptr(uint32_t arg) {
-       LDKCResult_InvoiceNoneZ* arg_conv = (LDKCResult_InvoiceNoneZ*)(arg & ~1);
-       int64_t ret_val = CResult_InvoiceNoneZ_clone_ptr(arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_CVec_C2Tuple_u32TxOutZZ_free(uint32_tArray _res) {
+       LDKCVec_C2Tuple_u32TxOutZZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC2Tuple_u32TxOutZ), "LDKCVec_C2Tuple_u32TxOutZZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t u = 0; u < _res_constr.datalen; u++) {
+               uint32_t _res_conv_20 = _res_vals[u];
+               void* _res_conv_20_ptr = (void*)(((uint64_t)_res_conv_20) & ~1);
+               CHECK_ACCESS(_res_conv_20_ptr);
+               LDKC2Tuple_u32TxOutZ _res_conv_20_conv = *(LDKC2Tuple_u32TxOutZ*)(_res_conv_20_ptr);
+               FREE((void*)_res_conv_20);
+               _res_constr.data[u] = _res_conv_20_conv;
+       }
+       CVec_C2Tuple_u32TxOutZZ_free(_res_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceNoneZ_clone(uint32_t orig) {
-       LDKCResult_InvoiceNoneZ* orig_conv = (LDKCResult_InvoiceNoneZ*)(orig & ~1);
-       LDKCResult_InvoiceNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceNoneZ), "LDKCResult_InvoiceNoneZ");
-       *ret_conv = CResult_InvoiceNoneZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+static inline uint64_t C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone_ptr(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR arg) {
+       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ");
+       *ret_conv = C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone(arg);
+       return ((uint64_t)ret_conv);
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SignedRawInvoiceNoneZ_ok(uint32_t o) {
-       LDKSignedRawInvoice o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = SignedRawInvoice_clone(&o_conv);
-       LDKCResult_SignedRawInvoiceNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignedRawInvoiceNoneZ), "LDKCResult_SignedRawInvoiceNoneZ");
-       *ret_conv = CResult_SignedRawInvoiceNoneZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+int64_t  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone_ptr(uint32_t arg) {
+       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* arg_conv = (LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ*)(arg & ~1);
+       int64_t ret_val = C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SignedRawInvoiceNoneZ_err() {
-       LDKCResult_SignedRawInvoiceNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignedRawInvoiceNoneZ), "LDKCResult_SignedRawInvoiceNoneZ");
-       *ret_conv = CResult_SignedRawInvoiceNoneZ_err();
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone(uint32_t orig) {
+       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* orig_conv = (LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ*)(orig & ~1);
+       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ");
+       *ret_conv = C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone(orig_conv);
+       return ((uint64_t)ret_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_SignedRawInvoiceNoneZ_is_ok(uint32_t o) {
-       LDKCResult_SignedRawInvoiceNoneZ* o_conv = (LDKCResult_SignedRawInvoiceNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_SignedRawInvoiceNoneZ_is_ok(o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new(int8_tArray a, uint32_tArray b) {
+       LDKThirtyTwoBytes a_ref;
+       CHECK(a->arr_len == 32);
+       memcpy(a_ref.data, a->elems, 32);
+       LDKCVec_C2Tuple_u32TxOutZZ b_constr;
+       b_constr.datalen = b->arr_len;
+       if (b_constr.datalen > 0)
+               b_constr.data = MALLOC(b_constr.datalen * sizeof(LDKC2Tuple_u32TxOutZ), "LDKCVec_C2Tuple_u32TxOutZZ Elements");
+       else
+               b_constr.data = NULL;
+       uint32_t* b_vals = b->elems;
+       for (size_t u = 0; u < b_constr.datalen; u++) {
+               uint32_t b_conv_20 = b_vals[u];
+               void* b_conv_20_ptr = (void*)(((uint64_t)b_conv_20) & ~1);
+               CHECK_ACCESS(b_conv_20_ptr);
+               LDKC2Tuple_u32TxOutZ b_conv_20_conv = *(LDKC2Tuple_u32TxOutZ*)(b_conv_20_ptr);
+               b_conv_20_conv = C2Tuple_u32TxOutZ_clone((LDKC2Tuple_u32TxOutZ*)(((uint64_t)b_conv_20) & ~1));
+               b_constr.data[u] = b_conv_20_conv;
+       }
+       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ");
+       *ret_conv = C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new(a_ref, b_constr);
+       return ((uint64_t)ret_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_SignedRawInvoiceNoneZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_SignedRawInvoiceNoneZ _res_conv = *(LDKCResult_SignedRawInvoiceNoneZ*)(_res_ptr);
+       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ _res_conv = *(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_SignedRawInvoiceNoneZ_free(_res_conv);
+       C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_SignedRawInvoiceNoneZ_clone_ptr(LDKCResult_SignedRawInvoiceNoneZ *NONNULL_PTR arg) {
-       LDKCResult_SignedRawInvoiceNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignedRawInvoiceNoneZ), "LDKCResult_SignedRawInvoiceNoneZ");
-       *ret_conv = CResult_SignedRawInvoiceNoneZ_clone(arg);
-       return (uint64_t)ret_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 = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ), "LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t n = 0; n < _res_constr.datalen; n++) {
+               uint32_t _res_conv_39 = _res_vals[n];
+               void* _res_conv_39_ptr = (void*)(((uint64_t)_res_conv_39) & ~1);
+               CHECK_ACCESS(_res_conv_39_ptr);
+               LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ _res_conv_39_conv = *(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ*)(_res_conv_39_ptr);
+               FREE((void*)_res_conv_39);
+               _res_constr.data[n] = _res_conv_39_conv;
+       }
+       CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_free(_res_constr);
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_SignedRawInvoiceNoneZ_clone_ptr(uint32_t arg) {
-       LDKCResult_SignedRawInvoiceNoneZ* arg_conv = (LDKCResult_SignedRawInvoiceNoneZ*)(arg & ~1);
-       int64_t ret_val = CResult_SignedRawInvoiceNoneZ_clone_ptr(arg_conv);
-       return ret_val;
+
+void  __attribute__((visibility("default"))) TS_CVec_TxidZ_free(ptrArray _res) {
+       LDKCVec_TxidZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKThirtyTwoBytes), "LDKCVec_TxidZ Elements");
+       else
+               _res_constr.data = NULL;
+       int8_tArray* _res_vals = (void*) _res->elems;
+       for (size_t m = 0; m < _res_constr.datalen; m++) {
+               int8_tArray _res_conv_12 = _res_vals[m];
+               LDKThirtyTwoBytes _res_conv_12_ref;
+               CHECK(_res_conv_12->arr_len == 32);
+               memcpy(_res_conv_12_ref.data, _res_conv_12->elems, 32);
+               _res_constr.data[m] = _res_conv_12_ref;
+       }
+       CVec_TxidZ_free(_res_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_SignedRawInvoiceNoneZ_clone(uint32_t orig) {
-       LDKCResult_SignedRawInvoiceNoneZ* orig_conv = (LDKCResult_SignedRawInvoiceNoneZ*)(orig & ~1);
-       LDKCResult_SignedRawInvoiceNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignedRawInvoiceNoneZ), "LDKCResult_SignedRawInvoiceNoneZ");
-       *ret_conv = CResult_SignedRawInvoiceNoneZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_CVec_BalanceZ_free(uint32_tArray _res) {
+       LDKCVec_BalanceZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKBalance), "LDKCVec_BalanceZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t j = 0; j < _res_constr.datalen; j++) {
+               uint32_t _res_conv_9 = _res_vals[j];
+               void* _res_conv_9_ptr = (void*)(((uint64_t)_res_conv_9) & ~1);
+               CHECK_ACCESS(_res_conv_9_ptr);
+               LDKBalance _res_conv_9_conv = *(LDKBalance*)(_res_conv_9_ptr);
+               FREE((void*)_res_conv_9);
+               _res_constr.data[j] = _res_conv_9_conv;
+       }
+       CVec_BalanceZ_free(_res_constr);
 }
 
-static inline uint64_t C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone_ptr(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR arg) {
-       LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* ret_conv = MALLOC(sizeof(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ), "LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ");
-       *ret_conv = C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone(arg);
+static inline uint64_t C2Tuple_BlockHashChannelMonitorZ_clone_ptr(LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR arg) {
+       LDKC2Tuple_BlockHashChannelMonitorZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelMonitorZ), "LDKC2Tuple_BlockHashChannelMonitorZ");
+       *ret_conv = C2Tuple_BlockHashChannelMonitorZ_clone(arg);
        return ((uint64_t)ret_conv);
 }
-int64_t  __attribute__((visibility("default"))) TS_C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone_ptr(uint32_t arg) {
-       LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* arg_conv = (LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ*)(arg & ~1);
-       int64_t ret_val = C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_clone_ptr(uint32_t arg) {
+       LDKC2Tuple_BlockHashChannelMonitorZ* arg_conv = (LDKC2Tuple_BlockHashChannelMonitorZ*)(arg & ~1);
+       int64_t ret_val = C2Tuple_BlockHashChannelMonitorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone(uint32_t orig) {
-       LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* orig_conv = (LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ*)(orig & ~1);
-       LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* ret_conv = MALLOC(sizeof(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ), "LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ");
-       *ret_conv = C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone(orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_clone(uint32_t orig) {
+       LDKC2Tuple_BlockHashChannelMonitorZ* orig_conv = (LDKC2Tuple_BlockHashChannelMonitorZ*)(orig & ~1);
+       LDKC2Tuple_BlockHashChannelMonitorZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelMonitorZ), "LDKC2Tuple_BlockHashChannelMonitorZ");
+       *ret_conv = C2Tuple_BlockHashChannelMonitorZ_clone(orig_conv);
        return ((uint64_t)ret_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_RawInvoice_u832InvoiceSignatureZ_new(uint32_t a, int8_tArray b, uint32_t c) {
-       LDKRawInvoice a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = (a & 1) || (a == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       a_conv = RawInvoice_clone(&a_conv);
-       LDKThirtyTwoBytes b_ref;
-       CHECK(*((uint32_t*)b) == 32);
-       memcpy(b_ref.data, (uint8_t*)(b + 4), 32);
-       LDKInvoiceSignature c_conv;
-       c_conv.inner = (void*)(c & (~1));
-       c_conv.is_owned = (c & 1) || (c == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(c_conv);
-       c_conv = InvoiceSignature_clone(&c_conv);
-       LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* ret_conv = MALLOC(sizeof(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ), "LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ");
-       *ret_conv = C3Tuple_RawInvoice_u832InvoiceSignatureZ_new(a_conv, b_ref, c_conv);
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_new(int8_tArray a, uint32_t b) {
+       LDKThirtyTwoBytes a_ref;
+       CHECK(a->arr_len == 32);
+       memcpy(a_ref.data, a->elems, 32);
+       LDKChannelMonitor b_conv;
+       b_conv.inner = (void*)(b & (~1));
+       b_conv.is_owned = (b & 1) || (b == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
+       b_conv = ChannelMonitor_clone(&b_conv);
+       LDKC2Tuple_BlockHashChannelMonitorZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelMonitorZ), "LDKC2Tuple_BlockHashChannelMonitorZ");
+       *ret_conv = C2Tuple_BlockHashChannelMonitorZ_new(a_ref, b_conv);
        return ((uint64_t)ret_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_C3Tuple_RawInvoice_u832InvoiceSignatureZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ _res_conv = *(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ*)(_res_ptr);
+       LDKC2Tuple_BlockHashChannelMonitorZ _res_conv = *(LDKC2Tuple_BlockHashChannelMonitorZ*)(_res_ptr);
        FREE((void*)_res);
-       C3Tuple_RawInvoice_u832InvoiceSignatureZ_free(_res_conv);
+       C2Tuple_BlockHashChannelMonitorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PayeePubKeyErrorZ_ok(uint32_t o) {
-       LDKPayeePubKey o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = PayeePubKey_clone(&o_conv);
-       LDKCResult_PayeePubKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeePubKeyErrorZ), "LDKCResult_PayeePubKeyErrorZ");
-       *ret_conv = CResult_PayeePubKeyErrorZ_ok(o_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKC2Tuple_BlockHashChannelMonitorZ o_conv = *(LDKC2Tuple_BlockHashChannelMonitorZ*)(o_ptr);
+       o_conv = C2Tuple_BlockHashChannelMonitorZ_clone((LDKC2Tuple_BlockHashChannelMonitorZ*)(((uint64_t)o) & ~1));
+       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ");
+       *ret_conv = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PayeePubKeyErrorZ_err(uint32_t e) {
-       LDKSecp256k1Error e_conv = LDKSecp256k1Error_from_js(e);
-       LDKCResult_PayeePubKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeePubKeyErrorZ), "LDKCResult_PayeePubKeyErrorZ");
-       *ret_conv = CResult_PayeePubKeyErrorZ_err(e_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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       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 (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_PayeePubKeyErrorZ_is_ok(uint32_t o) {
-       LDKCResult_PayeePubKeyErrorZ* o_conv = (LDKCResult_PayeePubKeyErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_PayeePubKeyErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* o_conv = (LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_PayeePubKeyErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_PayeePubKeyErrorZ _res_conv = *(LDKCResult_PayeePubKeyErrorZ*)(_res_ptr);
+       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ _res_conv = *(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_PayeePubKeyErrorZ_free(_res_conv);
+       CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_PayeePubKeyErrorZ_clone_ptr(LDKCResult_PayeePubKeyErrorZ *NONNULL_PTR arg) {
-       LDKCResult_PayeePubKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeePubKeyErrorZ), "LDKCResult_PayeePubKeyErrorZ");
-       *ret_conv = CResult_PayeePubKeyErrorZ_clone(arg);
+static inline uint64_t CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone_ptr(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ");
+       *ret_conv = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_PayeePubKeyErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_PayeePubKeyErrorZ* arg_conv = (LDKCResult_PayeePubKeyErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_PayeePubKeyErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* arg_conv = (LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PayeePubKeyErrorZ_clone(uint32_t orig) {
-       LDKCResult_PayeePubKeyErrorZ* orig_conv = (LDKCResult_PayeePubKeyErrorZ*)(orig & ~1);
-       LDKCResult_PayeePubKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeePubKeyErrorZ), "LDKCResult_PayeePubKeyErrorZ");
-       *ret_conv = CResult_PayeePubKeyErrorZ_clone(orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* orig_conv = (LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(orig & ~1);
+       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ");
+       *ret_conv = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_CVec_PrivateRouteZ_free(uint32_tArray _res) {
-       LDKCVec_PrivateRouteZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKPrivateRoute), "LDKCVec_PrivateRouteZ Elements");
-       else
-               _res_constr.data = NULL;
-       uint32_t* _res_vals = (uint32_t*)(_res + 4);
-       for (size_t o = 0; o < _res_constr.datalen; o++) {
-               uint32_t _res_conv_14 = _res_vals[o];
-               LDKPrivateRoute _res_conv_14_conv;
-               _res_conv_14_conv.inner = (void*)(_res_conv_14 & (~1));
-               _res_conv_14_conv.is_owned = (_res_conv_14 & 1) || (_res_conv_14 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_14_conv);
-               _res_constr.data[o] = _res_conv_14_conv;
-       }
-       CVec_PrivateRouteZ_free(_res_constr);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PositiveTimestampCreationErrorZ_ok(uint32_t o) {
-       LDKPositiveTimestamp o_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHopDecodeErrorZ_ok(uint32_t o) {
+       LDKRouteHop o_conv;
        o_conv.inner = (void*)(o & (~1));
        o_conv.is_owned = (o & 1) || (o == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = PositiveTimestamp_clone(&o_conv);
-       LDKCResult_PositiveTimestampCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PositiveTimestampCreationErrorZ), "LDKCResult_PositiveTimestampCreationErrorZ");
-       *ret_conv = CResult_PositiveTimestampCreationErrorZ_ok(o_conv);
+       o_conv = RouteHop_clone(&o_conv);
+       LDKCResult_RouteHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHopDecodeErrorZ), "LDKCResult_RouteHopDecodeErrorZ");
+       *ret_conv = CResult_RouteHopDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PositiveTimestampCreationErrorZ_err(uint32_t e) {
-       LDKCreationError e_conv = LDKCreationError_from_js(e);
-       LDKCResult_PositiveTimestampCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PositiveTimestampCreationErrorZ), "LDKCResult_PositiveTimestampCreationErrorZ");
-       *ret_conv = CResult_PositiveTimestampCreationErrorZ_err(e_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHopDecodeErrorZ_err(uint32_t e) {
+       LDKDecodeError e_conv;
+       e_conv.inner = (void*)(e & (~1));
+       e_conv.is_owned = (e & 1) || (e == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_RouteHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHopDecodeErrorZ), "LDKCResult_RouteHopDecodeErrorZ");
+       *ret_conv = CResult_RouteHopDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_PositiveTimestampCreationErrorZ_is_ok(uint32_t o) {
-       LDKCResult_PositiveTimestampCreationErrorZ* o_conv = (LDKCResult_PositiveTimestampCreationErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_PositiveTimestampCreationErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_RouteHopDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_RouteHopDecodeErrorZ* o_conv = (LDKCResult_RouteHopDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_RouteHopDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_PositiveTimestampCreationErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_RouteHopDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_PositiveTimestampCreationErrorZ _res_conv = *(LDKCResult_PositiveTimestampCreationErrorZ*)(_res_ptr);
+       LDKCResult_RouteHopDecodeErrorZ _res_conv = *(LDKCResult_RouteHopDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_PositiveTimestampCreationErrorZ_free(_res_conv);
+       CResult_RouteHopDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_PositiveTimestampCreationErrorZ_clone_ptr(LDKCResult_PositiveTimestampCreationErrorZ *NONNULL_PTR arg) {
-       LDKCResult_PositiveTimestampCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PositiveTimestampCreationErrorZ), "LDKCResult_PositiveTimestampCreationErrorZ");
-       *ret_conv = CResult_PositiveTimestampCreationErrorZ_clone(arg);
+static inline uint64_t CResult_RouteHopDecodeErrorZ_clone_ptr(LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_RouteHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHopDecodeErrorZ), "LDKCResult_RouteHopDecodeErrorZ");
+       *ret_conv = CResult_RouteHopDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_PositiveTimestampCreationErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_PositiveTimestampCreationErrorZ* arg_conv = (LDKCResult_PositiveTimestampCreationErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_PositiveTimestampCreationErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_RouteHopDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_RouteHopDecodeErrorZ* arg_conv = (LDKCResult_RouteHopDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_RouteHopDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PositiveTimestampCreationErrorZ_clone(uint32_t orig) {
-       LDKCResult_PositiveTimestampCreationErrorZ* orig_conv = (LDKCResult_PositiveTimestampCreationErrorZ*)(orig & ~1);
-       LDKCResult_PositiveTimestampCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PositiveTimestampCreationErrorZ), "LDKCResult_PositiveTimestampCreationErrorZ");
-       *ret_conv = CResult_PositiveTimestampCreationErrorZ_clone(orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHopDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_RouteHopDecodeErrorZ* orig_conv = (LDKCResult_RouteHopDecodeErrorZ*)(orig & ~1);
+       LDKCResult_RouteHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHopDecodeErrorZ), "LDKCResult_RouteHopDecodeErrorZ");
+       *ret_conv = CResult_RouteHopDecodeErrorZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneSemanticErrorZ_ok() {
-       LDKCResult_NoneSemanticErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneSemanticErrorZ), "LDKCResult_NoneSemanticErrorZ");
-       *ret_conv = CResult_NoneSemanticErrorZ_ok();
+void  __attribute__((visibility("default"))) TS_CVec_RouteHopZ_free(uint32_tArray _res) {
+       LDKCVec_RouteHopZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       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 = _res->elems;
+       for (size_t k = 0; k < _res_constr.datalen; k++) {
+               uint32_t _res_conv_10 = _res_vals[k];
+               LDKRouteHop _res_conv_10_conv;
+               _res_conv_10_conv.inner = (void*)(_res_conv_10 & (~1));
+               _res_conv_10_conv.is_owned = (_res_conv_10 & 1) || (_res_conv_10 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_10_conv);
+               _res_constr.data[k] = _res_conv_10_conv;
+       }
+       CVec_RouteHopZ_free(_res_constr);
+}
+
+void  __attribute__((visibility("default"))) TS_CVec_CVec_RouteHopZZ_free(ptrArray _res) {
+       LDKCVec_CVec_RouteHopZZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       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 = (void*) _res->elems;
+       for (size_t m = 0; m < _res_constr.datalen; m++) {
+               uint32_tArray _res_conv_12 = _res_vals[m];
+               LDKCVec_RouteHopZ _res_conv_12_constr;
+               _res_conv_12_constr.datalen = _res_conv_12->arr_len;
+               if (_res_conv_12_constr.datalen > 0)
+                       _res_conv_12_constr.data = MALLOC(_res_conv_12_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements");
+               else
+                       _res_conv_12_constr.data = NULL;
+               uint32_t* _res_conv_12_vals = _res_conv_12->elems;
+               for (size_t k = 0; k < _res_conv_12_constr.datalen; k++) {
+                       uint32_t _res_conv_12_conv_10 = _res_conv_12_vals[k];
+                       LDKRouteHop _res_conv_12_conv_10_conv;
+                       _res_conv_12_conv_10_conv.inner = (void*)(_res_conv_12_conv_10 & (~1));
+                       _res_conv_12_conv_10_conv.is_owned = (_res_conv_12_conv_10 & 1) || (_res_conv_12_conv_10 == 0);
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_12_conv_10_conv);
+                       _res_conv_12_constr.data[k] = _res_conv_12_conv_10_conv;
+               }
+               _res_constr.data[m] = _res_conv_12_constr;
+       }
+       CVec_CVec_RouteHopZZ_free(_res_constr);
+}
+
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = Route_clone(&o_conv);
+       LDKCResult_RouteDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteDecodeErrorZ), "LDKCResult_RouteDecodeErrorZ");
+       *ret_conv = CResult_RouteDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneSemanticErrorZ_err(uint32_t e) {
-       LDKSemanticError e_conv = LDKSemanticError_from_js(e);
-       LDKCResult_NoneSemanticErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneSemanticErrorZ), "LDKCResult_NoneSemanticErrorZ");
-       *ret_conv = CResult_NoneSemanticErrorZ_err(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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(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 (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_NoneSemanticErrorZ_is_ok(uint32_t o) {
-       LDKCResult_NoneSemanticErrorZ* o_conv = (LDKCResult_NoneSemanticErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_NoneSemanticErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_RouteDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_RouteDecodeErrorZ* o_conv = (LDKCResult_RouteDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_RouteDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_NoneSemanticErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_RouteDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_NoneSemanticErrorZ _res_conv = *(LDKCResult_NoneSemanticErrorZ*)(_res_ptr);
+       LDKCResult_RouteDecodeErrorZ _res_conv = *(LDKCResult_RouteDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_NoneSemanticErrorZ_free(_res_conv);
+       CResult_RouteDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_NoneSemanticErrorZ_clone_ptr(LDKCResult_NoneSemanticErrorZ *NONNULL_PTR arg) {
-       LDKCResult_NoneSemanticErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneSemanticErrorZ), "LDKCResult_NoneSemanticErrorZ");
-       *ret_conv = CResult_NoneSemanticErrorZ_clone(arg);
+static inline uint64_t CResult_RouteDecodeErrorZ_clone_ptr(LDKCResult_RouteDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_RouteDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteDecodeErrorZ), "LDKCResult_RouteDecodeErrorZ");
+       *ret_conv = CResult_RouteDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_NoneSemanticErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_NoneSemanticErrorZ* arg_conv = (LDKCResult_NoneSemanticErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_NoneSemanticErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_RouteDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_RouteDecodeErrorZ* arg_conv = (LDKCResult_RouteDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_RouteDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneSemanticErrorZ_clone(uint32_t orig) {
-       LDKCResult_NoneSemanticErrorZ* orig_conv = (LDKCResult_NoneSemanticErrorZ*)(orig & ~1);
-       LDKCResult_NoneSemanticErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneSemanticErrorZ), "LDKCResult_NoneSemanticErrorZ");
-       *ret_conv = CResult_NoneSemanticErrorZ_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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceSemanticErrorZ_ok(uint32_t o) {
-       LDKInvoice o_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteParametersDecodeErrorZ_ok(uint32_t o) {
+       LDKRouteParameters o_conv;
        o_conv.inner = (void*)(o & (~1));
        o_conv.is_owned = (o & 1) || (o == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = Invoice_clone(&o_conv);
-       LDKCResult_InvoiceSemanticErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceSemanticErrorZ), "LDKCResult_InvoiceSemanticErrorZ");
-       *ret_conv = CResult_InvoiceSemanticErrorZ_ok(o_conv);
+       o_conv = RouteParameters_clone(&o_conv);
+       LDKCResult_RouteParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteParametersDecodeErrorZ), "LDKCResult_RouteParametersDecodeErrorZ");
+       *ret_conv = CResult_RouteParametersDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceSemanticErrorZ_err(uint32_t e) {
-       LDKSemanticError e_conv = LDKSemanticError_from_js(e);
-       LDKCResult_InvoiceSemanticErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceSemanticErrorZ), "LDKCResult_InvoiceSemanticErrorZ");
-       *ret_conv = CResult_InvoiceSemanticErrorZ_err(e_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteParametersDecodeErrorZ_err(uint32_t e) {
+       LDKDecodeError e_conv;
+       e_conv.inner = (void*)(e & (~1));
+       e_conv.is_owned = (e & 1) || (e == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_RouteParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteParametersDecodeErrorZ), "LDKCResult_RouteParametersDecodeErrorZ");
+       *ret_conv = CResult_RouteParametersDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_InvoiceSemanticErrorZ_is_ok(uint32_t o) {
-       LDKCResult_InvoiceSemanticErrorZ* o_conv = (LDKCResult_InvoiceSemanticErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_InvoiceSemanticErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_RouteParametersDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_RouteParametersDecodeErrorZ* o_conv = (LDKCResult_RouteParametersDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_RouteParametersDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_InvoiceSemanticErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_RouteParametersDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_InvoiceSemanticErrorZ _res_conv = *(LDKCResult_InvoiceSemanticErrorZ*)(_res_ptr);
+       LDKCResult_RouteParametersDecodeErrorZ _res_conv = *(LDKCResult_RouteParametersDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_InvoiceSemanticErrorZ_free(_res_conv);
+       CResult_RouteParametersDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_InvoiceSemanticErrorZ_clone_ptr(LDKCResult_InvoiceSemanticErrorZ *NONNULL_PTR arg) {
-       LDKCResult_InvoiceSemanticErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceSemanticErrorZ), "LDKCResult_InvoiceSemanticErrorZ");
-       *ret_conv = CResult_InvoiceSemanticErrorZ_clone(arg);
+static inline uint64_t CResult_RouteParametersDecodeErrorZ_clone_ptr(LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_RouteParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteParametersDecodeErrorZ), "LDKCResult_RouteParametersDecodeErrorZ");
+       *ret_conv = CResult_RouteParametersDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_InvoiceSemanticErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_InvoiceSemanticErrorZ* arg_conv = (LDKCResult_InvoiceSemanticErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_InvoiceSemanticErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_RouteParametersDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_RouteParametersDecodeErrorZ* arg_conv = (LDKCResult_RouteParametersDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_RouteParametersDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceSemanticErrorZ_clone(uint32_t orig) {
-       LDKCResult_InvoiceSemanticErrorZ* orig_conv = (LDKCResult_InvoiceSemanticErrorZ*)(orig & ~1);
-       LDKCResult_InvoiceSemanticErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceSemanticErrorZ), "LDKCResult_InvoiceSemanticErrorZ");
-       *ret_conv = CResult_InvoiceSemanticErrorZ_clone(orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteParametersDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_RouteParametersDecodeErrorZ* orig_conv = (LDKCResult_RouteParametersDecodeErrorZ*)(orig & ~1);
+       LDKCResult_RouteParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteParametersDecodeErrorZ), "LDKCResult_RouteParametersDecodeErrorZ");
+       *ret_conv = CResult_RouteParametersDecodeErrorZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_DescriptionCreationErrorZ_ok(uint32_t o) {
-       LDKDescription o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = (o & 1) || (o == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = Description_clone(&o_conv);
-       LDKCResult_DescriptionCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DescriptionCreationErrorZ), "LDKCResult_DescriptionCreationErrorZ");
-       *ret_conv = CResult_DescriptionCreationErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_CVec_RouteHintZ_free(uint32_tArray _res) {
+       LDKCVec_RouteHintZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       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 = _res->elems;
+       for (size_t l = 0; l < _res_constr.datalen; l++) {
+               uint32_t _res_conv_11 = _res_vals[l];
+               LDKRouteHint _res_conv_11_conv;
+               _res_conv_11_conv.inner = (void*)(_res_conv_11 & (~1));
+               _res_conv_11_conv.is_owned = (_res_conv_11 & 1) || (_res_conv_11 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_11_conv);
+               _res_constr.data[l] = _res_conv_11_conv;
+       }
+       CVec_RouteHintZ_free(_res_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_DescriptionCreationErrorZ_err(uint32_t e) {
-       LDKCreationError e_conv = LDKCreationError_from_js(e);
-       LDKCResult_DescriptionCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DescriptionCreationErrorZ), "LDKCResult_DescriptionCreationErrorZ");
-       *ret_conv = CResult_DescriptionCreationErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_COption_u64Z_some(int64_t o) {
+       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
+       *ret_copy = COption_u64Z_some(o);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_DescriptionCreationErrorZ_is_ok(uint32_t o) {
-       LDKCResult_DescriptionCreationErrorZ* o_conv = (LDKCResult_DescriptionCreationErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_DescriptionCreationErrorZ_is_ok(o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_COption_u64Z_none() {
+       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
+       *ret_copy = COption_u64Z_none();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_DescriptionCreationErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_COption_u64Z_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_DescriptionCreationErrorZ _res_conv = *(LDKCResult_DescriptionCreationErrorZ*)(_res_ptr);
+       LDKCOption_u64Z _res_conv = *(LDKCOption_u64Z*)(_res_ptr);
        FREE((void*)_res);
-       CResult_DescriptionCreationErrorZ_free(_res_conv);
+       COption_u64Z_free(_res_conv);
 }
 
-static inline uint64_t CResult_DescriptionCreationErrorZ_clone_ptr(LDKCResult_DescriptionCreationErrorZ *NONNULL_PTR arg) {
-       LDKCResult_DescriptionCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DescriptionCreationErrorZ), "LDKCResult_DescriptionCreationErrorZ");
-       *ret_conv = CResult_DescriptionCreationErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline uint64_t COption_u64Z_clone_ptr(LDKCOption_u64Z *NONNULL_PTR arg) {
+       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
+       *ret_copy = COption_u64Z_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_DescriptionCreationErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_DescriptionCreationErrorZ* arg_conv = (LDKCResult_DescriptionCreationErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_DescriptionCreationErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_COption_u64Z_clone_ptr(uint32_t arg) {
+       LDKCOption_u64Z* arg_conv = (LDKCOption_u64Z*)arg;
+       int64_t ret_val = COption_u64Z_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_DescriptionCreationErrorZ_clone(uint32_t orig) {
-       LDKCResult_DescriptionCreationErrorZ* orig_conv = (LDKCResult_DescriptionCreationErrorZ*)(orig & ~1);
-       LDKCResult_DescriptionCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DescriptionCreationErrorZ), "LDKCResult_DescriptionCreationErrorZ");
-       *ret_conv = CResult_DescriptionCreationErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_COption_u64Z_clone(uint32_t orig) {
+       LDKCOption_u64Z* orig_conv = (LDKCOption_u64Z*)orig;
+       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
+       *ret_copy = COption_u64Z_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ExpiryTimeCreationErrorZ_ok(uint32_t o) {
-       LDKExpiryTime o_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PayeeDecodeErrorZ_ok(uint32_t o) {
+       LDKPayee o_conv;
        o_conv.inner = (void*)(o & (~1));
        o_conv.is_owned = (o & 1) || (o == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = ExpiryTime_clone(&o_conv);
-       LDKCResult_ExpiryTimeCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ExpiryTimeCreationErrorZ), "LDKCResult_ExpiryTimeCreationErrorZ");
-       *ret_conv = CResult_ExpiryTimeCreationErrorZ_ok(o_conv);
+       o_conv = Payee_clone(&o_conv);
+       LDKCResult_PayeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeeDecodeErrorZ), "LDKCResult_PayeeDecodeErrorZ");
+       *ret_conv = CResult_PayeeDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ExpiryTimeCreationErrorZ_err(uint32_t e) {
-       LDKCreationError e_conv = LDKCreationError_from_js(e);
-       LDKCResult_ExpiryTimeCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ExpiryTimeCreationErrorZ), "LDKCResult_ExpiryTimeCreationErrorZ");
-       *ret_conv = CResult_ExpiryTimeCreationErrorZ_err(e_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PayeeDecodeErrorZ_err(uint32_t e) {
+       LDKDecodeError e_conv;
+       e_conv.inner = (void*)(e & (~1));
+       e_conv.is_owned = (e & 1) || (e == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_PayeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeeDecodeErrorZ), "LDKCResult_PayeeDecodeErrorZ");
+       *ret_conv = CResult_PayeeDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ExpiryTimeCreationErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ExpiryTimeCreationErrorZ* o_conv = (LDKCResult_ExpiryTimeCreationErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ExpiryTimeCreationErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_PayeeDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_PayeeDecodeErrorZ* o_conv = (LDKCResult_PayeeDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_PayeeDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ExpiryTimeCreationErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_PayeeDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_ExpiryTimeCreationErrorZ _res_conv = *(LDKCResult_ExpiryTimeCreationErrorZ*)(_res_ptr);
+       LDKCResult_PayeeDecodeErrorZ _res_conv = *(LDKCResult_PayeeDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_ExpiryTimeCreationErrorZ_free(_res_conv);
+       CResult_PayeeDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_ExpiryTimeCreationErrorZ_clone_ptr(LDKCResult_ExpiryTimeCreationErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ExpiryTimeCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ExpiryTimeCreationErrorZ), "LDKCResult_ExpiryTimeCreationErrorZ");
-       *ret_conv = CResult_ExpiryTimeCreationErrorZ_clone(arg);
+static inline uint64_t CResult_PayeeDecodeErrorZ_clone_ptr(LDKCResult_PayeeDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_PayeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeeDecodeErrorZ), "LDKCResult_PayeeDecodeErrorZ");
+       *ret_conv = CResult_PayeeDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_ExpiryTimeCreationErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ExpiryTimeCreationErrorZ* arg_conv = (LDKCResult_ExpiryTimeCreationErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ExpiryTimeCreationErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_PayeeDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_PayeeDecodeErrorZ* arg_conv = (LDKCResult_PayeeDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_PayeeDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ExpiryTimeCreationErrorZ_clone(uint32_t orig) {
-       LDKCResult_ExpiryTimeCreationErrorZ* orig_conv = (LDKCResult_ExpiryTimeCreationErrorZ*)(orig & ~1);
-       LDKCResult_ExpiryTimeCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ExpiryTimeCreationErrorZ), "LDKCResult_ExpiryTimeCreationErrorZ");
-       *ret_conv = CResult_ExpiryTimeCreationErrorZ_clone(orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PayeeDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_PayeeDecodeErrorZ* orig_conv = (LDKCResult_PayeeDecodeErrorZ*)(orig & ~1);
+       LDKCResult_PayeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeeDecodeErrorZ), "LDKCResult_PayeeDecodeErrorZ");
+       *ret_conv = CResult_PayeeDecodeErrorZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PrivateRouteCreationErrorZ_ok(uint32_t o) {
-       LDKPrivateRoute o_conv;
+void  __attribute__((visibility("default"))) TS_CVec_RouteHintHopZ_free(uint32_tArray _res) {
+       LDKCVec_RouteHintHopZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKRouteHintHop), "LDKCVec_RouteHintHopZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t o = 0; o < _res_constr.datalen; o++) {
+               uint32_t _res_conv_14 = _res_vals[o];
+               LDKRouteHintHop _res_conv_14_conv;
+               _res_conv_14_conv.inner = (void*)(_res_conv_14 & (~1));
+               _res_conv_14_conv.is_owned = (_res_conv_14 & 1) || (_res_conv_14 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_14_conv);
+               _res_constr.data[o] = _res_conv_14_conv;
+       }
+       CVec_RouteHintHopZ_free(_res_constr);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintDecodeErrorZ_ok(uint32_t o) {
+       LDKRouteHint o_conv;
        o_conv.inner = (void*)(o & (~1));
        o_conv.is_owned = (o & 1) || (o == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = PrivateRoute_clone(&o_conv);
-       LDKCResult_PrivateRouteCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PrivateRouteCreationErrorZ), "LDKCResult_PrivateRouteCreationErrorZ");
-       *ret_conv = CResult_PrivateRouteCreationErrorZ_ok(o_conv);
+       o_conv = RouteHint_clone(&o_conv);
+       LDKCResult_RouteHintDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintDecodeErrorZ), "LDKCResult_RouteHintDecodeErrorZ");
+       *ret_conv = CResult_RouteHintDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PrivateRouteCreationErrorZ_err(uint32_t e) {
-       LDKCreationError e_conv = LDKCreationError_from_js(e);
-       LDKCResult_PrivateRouteCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PrivateRouteCreationErrorZ), "LDKCResult_PrivateRouteCreationErrorZ");
-       *ret_conv = CResult_PrivateRouteCreationErrorZ_err(e_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintDecodeErrorZ_err(uint32_t e) {
+       LDKDecodeError e_conv;
+       e_conv.inner = (void*)(e & (~1));
+       e_conv.is_owned = (e & 1) || (e == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_RouteHintDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintDecodeErrorZ), "LDKCResult_RouteHintDecodeErrorZ");
+       *ret_conv = CResult_RouteHintDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_PrivateRouteCreationErrorZ_is_ok(uint32_t o) {
-       LDKCResult_PrivateRouteCreationErrorZ* o_conv = (LDKCResult_PrivateRouteCreationErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_PrivateRouteCreationErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_RouteHintDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_RouteHintDecodeErrorZ* o_conv = (LDKCResult_RouteHintDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_RouteHintDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_PrivateRouteCreationErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_RouteHintDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_PrivateRouteCreationErrorZ _res_conv = *(LDKCResult_PrivateRouteCreationErrorZ*)(_res_ptr);
+       LDKCResult_RouteHintDecodeErrorZ _res_conv = *(LDKCResult_RouteHintDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_PrivateRouteCreationErrorZ_free(_res_conv);
+       CResult_RouteHintDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_PrivateRouteCreationErrorZ_clone_ptr(LDKCResult_PrivateRouteCreationErrorZ *NONNULL_PTR arg) {
-       LDKCResult_PrivateRouteCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PrivateRouteCreationErrorZ), "LDKCResult_PrivateRouteCreationErrorZ");
-       *ret_conv = CResult_PrivateRouteCreationErrorZ_clone(arg);
+static inline uint64_t CResult_RouteHintDecodeErrorZ_clone_ptr(LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_RouteHintDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintDecodeErrorZ), "LDKCResult_RouteHintDecodeErrorZ");
+       *ret_conv = CResult_RouteHintDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_PrivateRouteCreationErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_PrivateRouteCreationErrorZ* arg_conv = (LDKCResult_PrivateRouteCreationErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_PrivateRouteCreationErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_RouteHintDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_RouteHintDecodeErrorZ* arg_conv = (LDKCResult_RouteHintDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_RouteHintDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PrivateRouteCreationErrorZ_clone(uint32_t orig) {
-       LDKCResult_PrivateRouteCreationErrorZ* orig_conv = (LDKCResult_PrivateRouteCreationErrorZ*)(orig & ~1);
-       LDKCResult_PrivateRouteCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PrivateRouteCreationErrorZ), "LDKCResult_PrivateRouteCreationErrorZ");
-       *ret_conv = CResult_PrivateRouteCreationErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_StringErrorZ_ok(jstring o) {
-       LDKStr o_conv = str_ref_to_owned_c(o);
-       LDKCResult_StringErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StringErrorZ), "LDKCResult_StringErrorZ");
-       *ret_conv = CResult_StringErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_StringErrorZ_err(uint32_t e) {
-       LDKSecp256k1Error e_conv = LDKSecp256k1Error_from_js(e);
-       LDKCResult_StringErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StringErrorZ), "LDKCResult_StringErrorZ");
-       *ret_conv = CResult_StringErrorZ_err(e_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_RouteHintDecodeErrorZ* orig_conv = (LDKCResult_RouteHintDecodeErrorZ*)(orig & ~1);
+       LDKCResult_RouteHintDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintDecodeErrorZ), "LDKCResult_RouteHintDecodeErrorZ");
+       *ret_conv = CResult_RouteHintDecodeErrorZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_StringErrorZ_is_ok(uint32_t o) {
-       LDKCResult_StringErrorZ* o_conv = (LDKCResult_StringErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_StringErrorZ_is_ok(o_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_CResult_StringErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_StringErrorZ _res_conv = *(LDKCResult_StringErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_StringErrorZ_free(_res_conv);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelMonitorUpdateDecodeErrorZ_ok(uint32_t o) {
-       LDKChannelMonitorUpdate o_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintHopDecodeErrorZ_ok(uint32_t o) {
+       LDKRouteHintHop o_conv;
        o_conv.inner = (void*)(o & (~1));
        o_conv.is_owned = (o & 1) || (o == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       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 = RouteHintHop_clone(&o_conv);
+       LDKCResult_RouteHintHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintHopDecodeErrorZ), "LDKCResult_RouteHintHopDecodeErrorZ");
+       *ret_conv = CResult_RouteHintHopDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelMonitorUpdateDecodeErrorZ_err(uint32_t e) {
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintHopDecodeErrorZ_err(uint32_t e) {
        LDKDecodeError e_conv;
        e_conv.inner = (void*)(e & (~1));
        e_conv.is_owned = (e & 1) || (e == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ChannelMonitorUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ), "LDKCResult_ChannelMonitorUpdateDecodeErrorZ");
-       *ret_conv = CResult_ChannelMonitorUpdateDecodeErrorZ_err(e_conv);
+       LDKCResult_RouteHintHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintHopDecodeErrorZ), "LDKCResult_RouteHintHopDecodeErrorZ");
+       *ret_conv = CResult_RouteHintHopDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelMonitorUpdateDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ChannelMonitorUpdateDecodeErrorZ* o_conv = (LDKCResult_ChannelMonitorUpdateDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ChannelMonitorUpdateDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_RouteHintHopDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_RouteHintHopDecodeErrorZ* o_conv = (LDKCResult_RouteHintHopDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_RouteHintHopDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ChannelMonitorUpdateDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_RouteHintHopDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_ChannelMonitorUpdateDecodeErrorZ _res_conv = *(LDKCResult_ChannelMonitorUpdateDecodeErrorZ*)(_res_ptr);
+       LDKCResult_RouteHintHopDecodeErrorZ _res_conv = *(LDKCResult_RouteHintHopDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_ChannelMonitorUpdateDecodeErrorZ_free(_res_conv);
+       CResult_RouteHintHopDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_ChannelMonitorUpdateDecodeErrorZ_clone_ptr(LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ChannelMonitorUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ), "LDKCResult_ChannelMonitorUpdateDecodeErrorZ");
-       *ret_conv = CResult_ChannelMonitorUpdateDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_RouteHintHopDecodeErrorZ_clone_ptr(LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_RouteHintHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintHopDecodeErrorZ), "LDKCResult_RouteHintHopDecodeErrorZ");
+       *ret_conv = CResult_RouteHintHopDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_ChannelMonitorUpdateDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ChannelMonitorUpdateDecodeErrorZ* arg_conv = (LDKCResult_ChannelMonitorUpdateDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ChannelMonitorUpdateDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_RouteHintHopDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_RouteHintHopDecodeErrorZ* arg_conv = (LDKCResult_RouteHintHopDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_RouteHintHopDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RouteHintHopDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_RouteHintHopDecodeErrorZ* orig_conv = (LDKCResult_RouteHintHopDecodeErrorZ*)(orig & ~1);
+       LDKCResult_RouteHintHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintHopDecodeErrorZ), "LDKCResult_RouteHintHopDecodeErrorZ");
+       *ret_conv = CResult_RouteHintHopDecodeErrorZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_MonitorEventZ_some(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKMonitorEvent o_conv = *(LDKMonitorEvent*)(o_ptr);
-       o_conv = MonitorEvent_clone((LDKMonitorEvent*)(((uint64_t)o) & ~1));
-       LDKCOption_MonitorEventZ *ret_copy = MALLOC(sizeof(LDKCOption_MonitorEventZ), "LDKCOption_MonitorEventZ");
-       *ret_copy = COption_MonitorEventZ_some(o_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_COption_MonitorEventZ_none() {
-       LDKCOption_MonitorEventZ *ret_copy = MALLOC(sizeof(LDKCOption_MonitorEventZ), "LDKCOption_MonitorEventZ");
-       *ret_copy = COption_MonitorEventZ_none();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-void  __attribute__((visibility("default"))) TS_COption_MonitorEventZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCOption_MonitorEventZ _res_conv = *(LDKCOption_MonitorEventZ*)(_res_ptr);
-       FREE((void*)_res);
-       COption_MonitorEventZ_free(_res_conv);
-}
-
-static inline uint64_t COption_MonitorEventZ_clone_ptr(LDKCOption_MonitorEventZ *NONNULL_PTR arg) {
-       LDKCOption_MonitorEventZ *ret_copy = MALLOC(sizeof(LDKCOption_MonitorEventZ), "LDKCOption_MonitorEventZ");
-       *ret_copy = COption_MonitorEventZ_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_COption_MonitorEventZ_clone_ptr(uint32_t arg) {
-       LDKCOption_MonitorEventZ* arg_conv = (LDKCOption_MonitorEventZ*)arg;
-       int64_t ret_val = COption_MonitorEventZ_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_COption_MonitorEventZ_clone(uint32_t orig) {
-       LDKCOption_MonitorEventZ* orig_conv = (LDKCOption_MonitorEventZ*)orig;
-       LDKCOption_MonitorEventZ *ret_copy = MALLOC(sizeof(LDKCOption_MonitorEventZ), "LDKCOption_MonitorEventZ");
-       *ret_copy = COption_MonitorEventZ_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_CVec_ChannelDetailsZ_free(uint32_tArray _res) {
+       LDKCVec_ChannelDetailsZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       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 = _res->elems;
+       for (size_t q = 0; q < _res_constr.datalen; q++) {
+               uint32_t _res_conv_16 = _res_vals[q];
+               LDKChannelDetails _res_conv_16_conv;
+               _res_conv_16_conv.inner = (void*)(_res_conv_16 & (~1));
+               _res_conv_16_conv.is_owned = (_res_conv_16 & 1) || (_res_conv_16 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_16_conv);
+               _res_constr.data[q] = _res_conv_16_conv;
+       }
+       CVec_ChannelDetailsZ_free(_res_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_MonitorEventZDecodeErrorZ_ok(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKCOption_MonitorEventZ o_conv = *(LDKCOption_MonitorEventZ*)(o_ptr);
-       o_conv = COption_MonitorEventZ_clone((LDKCOption_MonitorEventZ*)(((uint64_t)o) & ~1));
-       LDKCResult_COption_MonitorEventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ), "LDKCResult_COption_MonitorEventZDecodeErrorZ");
-       *ret_conv = CResult_COption_MonitorEventZDecodeErrorZ_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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = Route_clone(&o_conv);
+       LDKCResult_RouteLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteLightningErrorZ), "LDKCResult_RouteLightningErrorZ");
+       *ret_conv = CResult_RouteLightningErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_MonitorEventZDecodeErrorZ_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_COption_MonitorEventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ), "LDKCResult_COption_MonitorEventZDecodeErrorZ");
-       *ret_conv = CResult_COption_MonitorEventZDecodeErrorZ_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 (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_COption_MonitorEventZDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_COption_MonitorEventZDecodeErrorZ* o_conv = (LDKCResult_COption_MonitorEventZDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_COption_MonitorEventZDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_RouteLightningErrorZ_is_ok(uint32_t o) {
+       LDKCResult_RouteLightningErrorZ* o_conv = (LDKCResult_RouteLightningErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_RouteLightningErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_COption_MonitorEventZDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_RouteLightningErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_COption_MonitorEventZDecodeErrorZ _res_conv = *(LDKCResult_COption_MonitorEventZDecodeErrorZ*)(_res_ptr);
+       LDKCResult_RouteLightningErrorZ _res_conv = *(LDKCResult_RouteLightningErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_COption_MonitorEventZDecodeErrorZ_free(_res_conv);
+       CResult_RouteLightningErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_COption_MonitorEventZDecodeErrorZ_clone_ptr(LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_COption_MonitorEventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ), "LDKCResult_COption_MonitorEventZDecodeErrorZ");
-       *ret_conv = CResult_COption_MonitorEventZDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_RouteLightningErrorZ_clone_ptr(LDKCResult_RouteLightningErrorZ *NONNULL_PTR arg) {
+       LDKCResult_RouteLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteLightningErrorZ), "LDKCResult_RouteLightningErrorZ");
+       *ret_conv = CResult_RouteLightningErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_COption_MonitorEventZDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_COption_MonitorEventZDecodeErrorZ* arg_conv = (LDKCResult_COption_MonitorEventZDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_COption_MonitorEventZDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_RouteLightningErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_RouteLightningErrorZ* arg_conv = (LDKCResult_RouteLightningErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_RouteLightningErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_MonitorEventZDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_COption_MonitorEventZDecodeErrorZ* orig_conv = (LDKCResult_COption_MonitorEventZDecodeErrorZ*)(orig & ~1);
-       LDKCResult_COption_MonitorEventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ), "LDKCResult_COption_MonitorEventZDecodeErrorZ");
-       *ret_conv = CResult_COption_MonitorEventZDecodeErrorZ_clone(orig_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 (uint64_t)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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneLightningErrorZ_ok() {
+       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
+       *ret_conv = CResult_NoneLightningErrorZ_ok();
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_HTLCUpdateDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_HTLCUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCUpdateDecodeErrorZ), "LDKCResult_HTLCUpdateDecodeErrorZ");
-       *ret_conv = CResult_HTLCUpdateDecodeErrorZ_err(e_conv);
+       e_conv = LightningError_clone(&e_conv);
+       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
+       *ret_conv = CResult_NoneLightningErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_HTLCUpdateDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_HTLCUpdateDecodeErrorZ* o_conv = (LDKCResult_HTLCUpdateDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_HTLCUpdateDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_NoneLightningErrorZ_is_ok(uint32_t o) {
+       LDKCResult_NoneLightningErrorZ* o_conv = (LDKCResult_NoneLightningErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_NoneLightningErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_HTLCUpdateDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_NoneLightningErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_HTLCUpdateDecodeErrorZ _res_conv = *(LDKCResult_HTLCUpdateDecodeErrorZ*)(_res_ptr);
+       LDKCResult_NoneLightningErrorZ _res_conv = *(LDKCResult_NoneLightningErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_HTLCUpdateDecodeErrorZ_free(_res_conv);
+       CResult_NoneLightningErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_HTLCUpdateDecodeErrorZ_clone_ptr(LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_HTLCUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCUpdateDecodeErrorZ), "LDKCResult_HTLCUpdateDecodeErrorZ");
-       *ret_conv = CResult_HTLCUpdateDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_NoneLightningErrorZ_clone_ptr(LDKCResult_NoneLightningErrorZ *NONNULL_PTR arg) {
+       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
+       *ret_conv = CResult_NoneLightningErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_HTLCUpdateDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_HTLCUpdateDecodeErrorZ* arg_conv = (LDKCResult_HTLCUpdateDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_HTLCUpdateDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_NoneLightningErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_NoneLightningErrorZ* arg_conv = (LDKCResult_NoneLightningErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_NoneLightningErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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);
        return (uint64_t)ret_conv;
 }
 
-static inline uint64_t C2Tuple_OutPointScriptZ_clone_ptr(LDKC2Tuple_OutPointScriptZ *NONNULL_PTR arg) {
-       LDKC2Tuple_OutPointScriptZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_OutPointScriptZ), "LDKC2Tuple_OutPointScriptZ");
-       *ret_conv = C2Tuple_OutPointScriptZ_clone(arg);
+static inline uint64_t C2Tuple_PublicKeyTypeZ_clone_ptr(LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR arg) {
+       LDKC2Tuple_PublicKeyTypeZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PublicKeyTypeZ), "LDKC2Tuple_PublicKeyTypeZ");
+       *ret_conv = C2Tuple_PublicKeyTypeZ_clone(arg);
        return ((uint64_t)ret_conv);
 }
-int64_t  __attribute__((visibility("default"))) TS_C2Tuple_OutPointScriptZ_clone_ptr(uint32_t arg) {
-       LDKC2Tuple_OutPointScriptZ* arg_conv = (LDKC2Tuple_OutPointScriptZ*)(arg & ~1);
-       int64_t ret_val = C2Tuple_OutPointScriptZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_C2Tuple_PublicKeyTypeZ_clone_ptr(uint32_t arg) {
+       LDKC2Tuple_PublicKeyTypeZ* arg_conv = (LDKC2Tuple_PublicKeyTypeZ*)(arg & ~1);
+       int64_t ret_val = C2Tuple_PublicKeyTypeZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_OutPointScriptZ_clone(uint32_t orig) {
-       LDKC2Tuple_OutPointScriptZ* orig_conv = (LDKC2Tuple_OutPointScriptZ*)(orig & ~1);
-       LDKC2Tuple_OutPointScriptZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_OutPointScriptZ), "LDKC2Tuple_OutPointScriptZ");
-       *ret_conv = C2Tuple_OutPointScriptZ_clone(orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_PublicKeyTypeZ_clone(uint32_t orig) {
+       LDKC2Tuple_PublicKeyTypeZ* orig_conv = (LDKC2Tuple_PublicKeyTypeZ*)(orig & ~1);
+       LDKC2Tuple_PublicKeyTypeZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PublicKeyTypeZ), "LDKC2Tuple_PublicKeyTypeZ");
+       *ret_conv = C2Tuple_PublicKeyTypeZ_clone(orig_conv);
        return ((uint64_t)ret_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_OutPointScriptZ_new(uint32_t a, int8_tArray b) {
-       LDKOutPoint a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = (a & 1) || (a == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       a_conv = OutPoint_clone(&a_conv);
-       LDKCVec_u8Z b_ref;
-       b_ref.datalen = *((uint32_t*)b);
-       b_ref.data = MALLOC(b_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(b_ref.data, (uint8_t*)(b + 4), b_ref.datalen);
-       LDKC2Tuple_OutPointScriptZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_OutPointScriptZ), "LDKC2Tuple_OutPointScriptZ");
-       *ret_conv = C2Tuple_OutPointScriptZ_new(a_conv, b_ref);
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_PublicKeyTypeZ_new(int8_tArray a, uint32_t b) {
+       LDKPublicKey a_ref;
+       CHECK(a->arr_len == 33);
+       memcpy(a_ref.compressed_form, a->elems, 33);
+       void* b_ptr = (void*)(((uint64_t)b) & ~1);
+       CHECK_ACCESS(b_ptr);
+       LDKType b_conv = *(LDKType*)(b_ptr);
+       LDKC2Tuple_PublicKeyTypeZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PublicKeyTypeZ), "LDKC2Tuple_PublicKeyTypeZ");
+       *ret_conv = C2Tuple_PublicKeyTypeZ_new(a_ref, b_conv);
        return ((uint64_t)ret_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_C2Tuple_OutPointScriptZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_C2Tuple_PublicKeyTypeZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKC2Tuple_OutPointScriptZ _res_conv = *(LDKC2Tuple_OutPointScriptZ*)(_res_ptr);
+       LDKC2Tuple_PublicKeyTypeZ _res_conv = *(LDKC2Tuple_PublicKeyTypeZ*)(_res_ptr);
        FREE((void*)_res);
-       C2Tuple_OutPointScriptZ_free(_res_conv);
+       C2Tuple_PublicKeyTypeZ_free(_res_conv);
 }
 
-static inline uint64_t C2Tuple_u32ScriptZ_clone_ptr(LDKC2Tuple_u32ScriptZ *NONNULL_PTR arg) {
-       LDKC2Tuple_u32ScriptZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_u32ScriptZ), "LDKC2Tuple_u32ScriptZ");
-       *ret_conv = C2Tuple_u32ScriptZ_clone(arg);
-       return ((uint64_t)ret_conv);
+void  __attribute__((visibility("default"))) TS_CVec_C2Tuple_PublicKeyTypeZZ_free(uint32_tArray _res) {
+       LDKCVec_C2Tuple_PublicKeyTypeZZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC2Tuple_PublicKeyTypeZ), "LDKCVec_C2Tuple_PublicKeyTypeZZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t z = 0; z < _res_constr.datalen; z++) {
+               uint32_t _res_conv_25 = _res_vals[z];
+               void* _res_conv_25_ptr = (void*)(((uint64_t)_res_conv_25) & ~1);
+               CHECK_ACCESS(_res_conv_25_ptr);
+               LDKC2Tuple_PublicKeyTypeZ _res_conv_25_conv = *(LDKC2Tuple_PublicKeyTypeZ*)(_res_conv_25_ptr);
+               FREE((void*)_res_conv_25);
+               _res_constr.data[z] = _res_conv_25_conv;
+       }
+       CVec_C2Tuple_PublicKeyTypeZZ_free(_res_constr);
 }
-int64_t  __attribute__((visibility("default"))) TS_C2Tuple_u32ScriptZ_clone_ptr(uint32_t arg) {
-       LDKC2Tuple_u32ScriptZ* arg_conv = (LDKC2Tuple_u32ScriptZ*)(arg & ~1);
-       int64_t ret_val = C2Tuple_u32ScriptZ_clone_ptr(arg_conv);
-       return ret_val;
+
+void  __attribute__((visibility("default"))) TS_CVec_MessageSendEventZ_free(uint32_tArray _res) {
+       LDKCVec_MessageSendEventZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       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 = _res->elems;
+       for (size_t s = 0; s < _res_constr.datalen; s++) {
+               uint32_t _res_conv_18 = _res_vals[s];
+               void* _res_conv_18_ptr = (void*)(((uint64_t)_res_conv_18) & ~1);
+               CHECK_ACCESS(_res_conv_18_ptr);
+               LDKMessageSendEvent _res_conv_18_conv = *(LDKMessageSendEvent*)(_res_conv_18_ptr);
+               FREE((void*)_res_conv_18);
+               _res_constr.data[s] = _res_conv_18_conv;
+       }
+       CVec_MessageSendEventZ_free(_res_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_u32ScriptZ_clone(uint32_t orig) {
-       LDKC2Tuple_u32ScriptZ* orig_conv = (LDKC2Tuple_u32ScriptZ*)(orig & ~1);
-       LDKC2Tuple_u32ScriptZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_u32ScriptZ), "LDKC2Tuple_u32ScriptZ");
-       *ret_conv = C2Tuple_u32ScriptZ_clone(orig_conv);
-       return ((uint64_t)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 = CResult_boolLightningErrorZ_ok(o);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_u32ScriptZ_new(int32_t a, int8_tArray b) {
-       LDKCVec_u8Z b_ref;
-       b_ref.datalen = *((uint32_t*)b);
-       b_ref.data = MALLOC(b_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(b_ref.data, (uint8_t*)(b + 4), b_ref.datalen);
-       LDKC2Tuple_u32ScriptZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_u32ScriptZ), "LDKC2Tuple_u32ScriptZ");
-       *ret_conv = C2Tuple_u32ScriptZ_new(a, b_ref);
-       return ((uint64_t)ret_conv);
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = LightningError_clone(&e_conv);
+       LDKCResult_boolLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolLightningErrorZ), "LDKCResult_boolLightningErrorZ");
+       *ret_conv = CResult_boolLightningErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_C2Tuple_u32ScriptZ_free(uint32_t _res) {
+jboolean  __attribute__((visibility("default"))) TS_CResult_boolLightningErrorZ_is_ok(uint32_t o) {
+       LDKCResult_boolLightningErrorZ* o_conv = (LDKCResult_boolLightningErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_boolLightningErrorZ_is_ok(o_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_CResult_boolLightningErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKC2Tuple_u32ScriptZ _res_conv = *(LDKC2Tuple_u32ScriptZ*)(_res_ptr);
+       LDKCResult_boolLightningErrorZ _res_conv = *(LDKCResult_boolLightningErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       C2Tuple_u32ScriptZ_free(_res_conv);
+       CResult_boolLightningErrorZ_free(_res_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_CVec_C2Tuple_u32ScriptZZ_free(uint32_tArray _res) {
-       LDKCVec_C2Tuple_u32ScriptZZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC2Tuple_u32ScriptZ), "LDKCVec_C2Tuple_u32ScriptZZ Elements");
-       else
-               _res_constr.data = NULL;
-       uint32_t* _res_vals = (uint32_t*)(_res + 4);
-       for (size_t v = 0; v < _res_constr.datalen; v++) {
-               uint32_t _res_conv_21 = _res_vals[v];
-               void* _res_conv_21_ptr = (void*)(((uint64_t)_res_conv_21) & ~1);
-               CHECK_ACCESS(_res_conv_21_ptr);
-               LDKC2Tuple_u32ScriptZ _res_conv_21_conv = *(LDKC2Tuple_u32ScriptZ*)(_res_conv_21_ptr);
-               FREE((void*)_res_conv_21);
-               _res_constr.data[v] = _res_conv_21_conv;
-       }
-       CVec_C2Tuple_u32ScriptZZ_free(_res_constr);
+static inline uint64_t CResult_boolLightningErrorZ_clone_ptr(LDKCResult_boolLightningErrorZ *NONNULL_PTR arg) {
+       LDKCResult_boolLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolLightningErrorZ), "LDKCResult_boolLightningErrorZ");
+       *ret_conv = CResult_boolLightningErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_boolLightningErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_boolLightningErrorZ* arg_conv = (LDKCResult_boolLightningErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_boolLightningErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-static inline uint64_t C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone_ptr(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR arg) {
-       LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ");
-       *ret_conv = C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone(arg);
+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);
+       return (uint64_t)ret_conv;
+}
+
+static inline uint64_t C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone_ptr(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR arg) {
+       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* ret_conv = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ");
+       *ret_conv = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(arg);
        return ((uint64_t)ret_conv);
 }
-int64_t  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone_ptr(uint32_t arg) {
-       LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* arg_conv = (LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ*)(arg & ~1);
-       int64_t ret_val = C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone_ptr(uint32_t arg) {
+       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* arg_conv = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(arg & ~1);
+       int64_t ret_val = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone(uint32_t orig) {
-       LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* orig_conv = (LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ*)(orig & ~1);
-       LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ");
-       *ret_conv = C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone(orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(uint32_t orig) {
+       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* orig_conv = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(orig & ~1);
+       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* ret_conv = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ");
+       *ret_conv = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(orig_conv);
        return ((uint64_t)ret_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_new(int8_tArray a, uint32_tArray b) {
-       LDKThirtyTwoBytes a_ref;
-       CHECK(*((uint32_t*)a) == 32);
-       memcpy(a_ref.data, (uint8_t*)(a + 4), 32);
-       LDKCVec_C2Tuple_u32ScriptZZ b_constr;
-       b_constr.datalen = *((uint32_t*)b);
-       if (b_constr.datalen > 0)
-               b_constr.data = MALLOC(b_constr.datalen * sizeof(LDKC2Tuple_u32ScriptZ), "LDKCVec_C2Tuple_u32ScriptZZ Elements");
-       else
-               b_constr.data = NULL;
-       uint32_t* b_vals = (uint32_t*)(b + 4);
-       for (size_t v = 0; v < b_constr.datalen; v++) {
-               uint32_t b_conv_21 = b_vals[v];
-               void* b_conv_21_ptr = (void*)(((uint64_t)b_conv_21) & ~1);
-               CHECK_ACCESS(b_conv_21_ptr);
-               LDKC2Tuple_u32ScriptZ b_conv_21_conv = *(LDKC2Tuple_u32ScriptZ*)(b_conv_21_ptr);
-               b_conv_21_conv = C2Tuple_u32ScriptZ_clone((LDKC2Tuple_u32ScriptZ*)(((uint64_t)b_conv_21) & ~1));
-               b_constr.data[v] = b_conv_21_conv;
-       }
-       LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ");
-       *ret_conv = C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_new(a_ref, b_constr);
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       a_conv = ChannelAnnouncement_clone(&a_conv);
+       LDKChannelUpdate b_conv;
+       b_conv.inner = (void*)(b & (~1));
+       b_conv.is_owned = (b & 1) || (b == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
+       b_conv = ChannelUpdate_clone(&b_conv);
+       LDKChannelUpdate c_conv;
+       c_conv.inner = (void*)(c & (~1));
+       c_conv.is_owned = (c & 1) || (c == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(c_conv);
+       c_conv = ChannelUpdate_clone(&c_conv);
+       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* ret_conv = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ");
+       *ret_conv = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(a_conv, b_conv, c_conv);
        return ((uint64_t)ret_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ _res_conv = *(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ*)(_res_ptr);
+       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ _res_conv = *(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(_res_ptr);
        FREE((void*)_res);
-       C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(_res_conv);
+       C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(_res_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(uint32_tArray _res) {
-       LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
+void  __attribute__((visibility("default"))) TS_CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(uint32_tArray _res) {
+       LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
        if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ), "LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ Elements");
+               _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 o = 0; o < _res_constr.datalen; o++) {
-               uint32_t _res_conv_40 = _res_vals[o];
-               void* _res_conv_40_ptr = (void*)(((uint64_t)_res_conv_40) & ~1);
-               CHECK_ACCESS(_res_conv_40_ptr);
-               LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ _res_conv_40_conv = *(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ*)(_res_conv_40_ptr);
-               FREE((void*)_res_conv_40);
-               _res_constr.data[o] = _res_conv_40_conv;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t h = 0; h < _res_constr.datalen; h++) {
+               uint32_t _res_conv_59 = _res_vals[h];
+               void* _res_conv_59_ptr = (void*)(((uint64_t)_res_conv_59) & ~1);
+               CHECK_ACCESS(_res_conv_59_ptr);
+               LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ _res_conv_59_conv = *(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(_res_conv_59_ptr);
+               FREE((void*)_res_conv_59);
+               _res_constr.data[h] = _res_conv_59_conv;
        }
-       CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(_res_constr);
+       CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(_res_constr);
 }
 
-void  __attribute__((visibility("default"))) TS_CVec_EventZ_free(uint32_tArray _res) {
-       LDKCVec_EventZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
+void  __attribute__((visibility("default"))) TS_CVec_NodeAnnouncementZ_free(uint32_tArray _res) {
+       LDKCVec_NodeAnnouncementZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
        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(LDKNodeAnnouncement), "LDKCVec_NodeAnnouncementZ 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 _res_conv_7 = _res_vals[h];
-               void* _res_conv_7_ptr = (void*)(((uint64_t)_res_conv_7) & ~1);
-               CHECK_ACCESS(_res_conv_7_ptr);
-               LDKEvent _res_conv_7_conv = *(LDKEvent*)(_res_conv_7_ptr);
-               FREE((void*)_res_conv_7);
-               _res_constr.data[h] = _res_conv_7_conv;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t s = 0; s < _res_constr.datalen; s++) {
+               uint32_t _res_conv_18 = _res_vals[s];
+               LDKNodeAnnouncement _res_conv_18_conv;
+               _res_conv_18_conv.inner = (void*)(_res_conv_18 & (~1));
+               _res_conv_18_conv.is_owned = (_res_conv_18 & 1) || (_res_conv_18 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_18_conv);
+               _res_constr.data[s] = _res_conv_18_conv;
        }
-       CVec_EventZ_free(_res_constr);
+       CVec_NodeAnnouncementZ_free(_res_constr);
 }
 
-void  __attribute__((visibility("default"))) TS_CVec_TransactionZ_free(ptrArray _res) {
-       LDKCVec_TransactionZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
+void  __attribute__((visibility("default"))) TS_CVec_PublicKeyZ_free(ptrArray _res) {
+       LDKCVec_PublicKeyZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
        if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKTransaction), "LDKCVec_TransactionZ Elements");
+               _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);
+       int8_tArray* _res_vals = (void*) _res->elems;
        for (size_t m = 0; m < _res_constr.datalen; m++) {
                int8_tArray _res_conv_12 = _res_vals[m];
-               LDKTransaction _res_conv_12_ref;
-               _res_conv_12_ref.datalen = *((uint32_t*)_res_conv_12);
-               _res_conv_12_ref.data = MALLOC(_res_conv_12_ref.datalen, "LDKTransaction Bytes");
-               memcpy(_res_conv_12_ref.data, (uint8_t*)(_res_conv_12 + 4), _res_conv_12_ref.datalen);
-               _res_conv_12_ref.data_is_owned = true;
+               LDKPublicKey _res_conv_12_ref;
+               CHECK(_res_conv_12->arr_len == 33);
+               memcpy(_res_conv_12_ref.compressed_form, _res_conv_12->elems, 33);
                _res_constr.data[m] = _res_conv_12_ref;
        }
-       CVec_TransactionZ_free(_res_constr);
+       CVec_PublicKeyZ_free(_res_constr);
 }
 
-static inline uint64_t C2Tuple_u32TxOutZ_clone_ptr(LDKC2Tuple_u32TxOutZ *NONNULL_PTR arg) {
-       LDKC2Tuple_u32TxOutZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_u32TxOutZ), "LDKC2Tuple_u32TxOutZ");
-       *ret_conv = C2Tuple_u32TxOutZ_clone(arg);
-       return ((uint64_t)ret_conv);
+void  __attribute__((visibility("default"))) TS_CVec_u8Z_free(int8_tArray _res) {
+       LDKCVec_u8Z _res_ref;
+       _res_ref.datalen = _res->arr_len;
+       _res_ref.data = MALLOC(_res_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(_res_ref.data, _res->elems, _res_ref.datalen);
+       CVec_u8Z_free(_res_ref);
 }
-int64_t  __attribute__((visibility("default"))) TS_C2Tuple_u32TxOutZ_clone_ptr(uint32_t arg) {
-       LDKC2Tuple_u32TxOutZ* arg_conv = (LDKC2Tuple_u32TxOutZ*)(arg & ~1);
-       int64_t ret_val = C2Tuple_u32TxOutZ_clone_ptr(arg_conv);
-       return ret_val;
+
+uint32_t  __attribute__((visibility("default"))) TS_CResult_CVec_u8ZPeerHandleErrorZ_ok(int8_tArray o) {
+       LDKCVec_u8Z o_ref;
+       o_ref.datalen = o->arr_len;
+       o_ref.data = MALLOC(o_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(o_ref.data, o->elems, 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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_u32TxOutZ_clone(uint32_t orig) {
-       LDKC2Tuple_u32TxOutZ* orig_conv = (LDKC2Tuple_u32TxOutZ*)(orig & ~1);
-       LDKC2Tuple_u32TxOutZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_u32TxOutZ), "LDKC2Tuple_u32TxOutZ");
-       *ret_conv = C2Tuple_u32TxOutZ_clone(orig_conv);
-       return ((uint64_t)ret_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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_u32TxOutZ_new(int32_t a, uint32_t b) {
-       void* b_ptr = (void*)(((uint64_t)b) & ~1);
-       CHECK_ACCESS(b_ptr);
-       LDKTxOut b_conv = *(LDKTxOut*)(b_ptr);
-       b_conv = TxOut_clone((LDKTxOut*)(((uint64_t)b) & ~1));
-       LDKC2Tuple_u32TxOutZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_u32TxOutZ), "LDKC2Tuple_u32TxOutZ");
-       *ret_conv = C2Tuple_u32TxOutZ_new(a, b_conv);
-       return ((uint64_t)ret_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_CVec_u8ZPeerHandleErrorZ_is_ok(uint32_t o) {
+       LDKCResult_CVec_u8ZPeerHandleErrorZ* o_conv = (LDKCResult_CVec_u8ZPeerHandleErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_CVec_u8ZPeerHandleErrorZ_is_ok(o_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_C2Tuple_u32TxOutZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_CVec_u8ZPeerHandleErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKC2Tuple_u32TxOutZ _res_conv = *(LDKC2Tuple_u32TxOutZ*)(_res_ptr);
+       LDKCResult_CVec_u8ZPeerHandleErrorZ _res_conv = *(LDKCResult_CVec_u8ZPeerHandleErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       C2Tuple_u32TxOutZ_free(_res_conv);
+       CResult_CVec_u8ZPeerHandleErrorZ_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);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC2Tuple_u32TxOutZ), "LDKCVec_C2Tuple_u32TxOutZZ Elements");
-       else
-               _res_constr.data = NULL;
-       uint32_t* _res_vals = (uint32_t*)(_res + 4);
-       for (size_t u = 0; u < _res_constr.datalen; u++) {
-               uint32_t _res_conv_20 = _res_vals[u];
-               void* _res_conv_20_ptr = (void*)(((uint64_t)_res_conv_20) & ~1);
-               CHECK_ACCESS(_res_conv_20_ptr);
-               LDKC2Tuple_u32TxOutZ _res_conv_20_conv = *(LDKC2Tuple_u32TxOutZ*)(_res_conv_20_ptr);
-               FREE((void*)_res_conv_20);
-               _res_constr.data[u] = _res_conv_20_conv;
-       }
-       CVec_C2Tuple_u32TxOutZZ_free(_res_constr);
+static inline uint64_t CResult_CVec_u8ZPeerHandleErrorZ_clone_ptr(LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR arg) {
+       LDKCResult_CVec_u8ZPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ), "LDKCResult_CVec_u8ZPeerHandleErrorZ");
+       *ret_conv = CResult_CVec_u8ZPeerHandleErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_CVec_u8ZPeerHandleErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_CVec_u8ZPeerHandleErrorZ* arg_conv = (LDKCResult_CVec_u8ZPeerHandleErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_CVec_u8ZPeerHandleErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-static inline uint64_t C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone_ptr(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR arg) {
-       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ");
-       *ret_conv = C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone(arg);
-       return ((uint64_t)ret_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 (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone_ptr(uint32_t arg) {
-       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* arg_conv = (LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ*)(arg & ~1);
-       int64_t ret_val = C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone_ptr(arg_conv);
-       return ret_val;
+
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone(uint32_t orig) {
-       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* orig_conv = (LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ*)(orig & ~1);
-       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ");
-       *ret_conv = C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone(orig_conv);
-       return ((uint64_t)ret_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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = PeerHandleError_clone(&e_conv);
+       LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ");
+       *ret_conv = CResult_NonePeerHandleErrorZ_err(e_conv);
+       return (uint64_t)ret_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);
-       memcpy(a_ref.data, (uint8_t*)(a + 4), 32);
-       LDKCVec_C2Tuple_u32TxOutZZ b_constr;
-       b_constr.datalen = *((uint32_t*)b);
-       if (b_constr.datalen > 0)
-               b_constr.data = MALLOC(b_constr.datalen * sizeof(LDKC2Tuple_u32TxOutZ), "LDKCVec_C2Tuple_u32TxOutZZ Elements");
-       else
-               b_constr.data = NULL;
-       uint32_t* b_vals = (uint32_t*)(b + 4);
-       for (size_t u = 0; u < b_constr.datalen; u++) {
-               uint32_t b_conv_20 = b_vals[u];
-               void* b_conv_20_ptr = (void*)(((uint64_t)b_conv_20) & ~1);
-               CHECK_ACCESS(b_conv_20_ptr);
-               LDKC2Tuple_u32TxOutZ b_conv_20_conv = *(LDKC2Tuple_u32TxOutZ*)(b_conv_20_ptr);
-               b_conv_20_conv = C2Tuple_u32TxOutZ_clone((LDKC2Tuple_u32TxOutZ*)(((uint64_t)b_conv_20) & ~1));
-               b_constr.data[u] = b_conv_20_conv;
-       }
-       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ");
-       *ret_conv = C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new(a_ref, b_constr);
-       return ((uint64_t)ret_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_NonePeerHandleErrorZ_is_ok(uint32_t o) {
+       LDKCResult_NonePeerHandleErrorZ* o_conv = (LDKCResult_NonePeerHandleErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_NonePeerHandleErrorZ_is_ok(o_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_NonePeerHandleErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ _res_conv = *(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ*)(_res_ptr);
+       LDKCResult_NonePeerHandleErrorZ _res_conv = *(LDKCResult_NonePeerHandleErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(_res_conv);
+       CResult_NonePeerHandleErrorZ_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);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ), "LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ Elements");
-       else
-               _res_constr.data = NULL;
-       uint32_t* _res_vals = (uint32_t*)(_res + 4);
-       for (size_t n = 0; n < _res_constr.datalen; n++) {
-               uint32_t _res_conv_39 = _res_vals[n];
-               void* _res_conv_39_ptr = (void*)(((uint64_t)_res_conv_39) & ~1);
-               CHECK_ACCESS(_res_conv_39_ptr);
-               LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ _res_conv_39_conv = *(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ*)(_res_conv_39_ptr);
-               FREE((void*)_res_conv_39);
-               _res_constr.data[n] = _res_conv_39_conv;
-       }
-       CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_free(_res_constr);
+static inline uint64_t CResult_NonePeerHandleErrorZ_clone_ptr(LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR arg) {
+       LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ");
+       *ret_conv = CResult_NonePeerHandleErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_NonePeerHandleErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_NonePeerHandleErrorZ* arg_conv = (LDKCResult_NonePeerHandleErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_NonePeerHandleErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CVec_BalanceZ_free(uint32_tArray _res) {
-       LDKCVec_BalanceZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKBalance), "LDKCVec_BalanceZ Elements");
-       else
-               _res_constr.data = NULL;
-       uint32_t* _res_vals = (uint32_t*)(_res + 4);
-       for (size_t j = 0; j < _res_constr.datalen; j++) {
-               uint32_t _res_conv_9 = _res_vals[j];
-               void* _res_conv_9_ptr = (void*)(((uint64_t)_res_conv_9) & ~1);
-               CHECK_ACCESS(_res_conv_9_ptr);
-               LDKBalance _res_conv_9_conv = *(LDKBalance*)(_res_conv_9_ptr);
-               FREE((void*)_res_conv_9);
-               _res_constr.data[j] = _res_conv_9_conv;
-       }
-       CVec_BalanceZ_free(_res_constr);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKC2Tuple_BlockHashChannelMonitorZ o_conv = *(LDKC2Tuple_BlockHashChannelMonitorZ*)(o_ptr);
-       o_conv = C2Tuple_BlockHashChannelMonitorZ_clone((LDKC2Tuple_BlockHashChannelMonitorZ*)(((uint64_t)o) & ~1));
-       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ");
-       *ret_conv = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(o_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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       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);
+       e_conv = PeerHandleError_clone(&e_conv);
+       LDKCResult_boolPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolPeerHandleErrorZ), "LDKCResult_boolPeerHandleErrorZ");
+       *ret_conv = CResult_boolPeerHandleErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* o_conv = (LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_boolPeerHandleErrorZ_is_ok(uint32_t o) {
+       LDKCResult_boolPeerHandleErrorZ* o_conv = (LDKCResult_boolPeerHandleErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_boolPeerHandleErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_boolPeerHandleErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ _res_conv = *(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(_res_ptr);
+       LDKCResult_boolPeerHandleErrorZ _res_conv = *(LDKCResult_boolPeerHandleErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(_res_conv);
+       CResult_boolPeerHandleErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone_ptr(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ");
-       *ret_conv = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_boolPeerHandleErrorZ_clone_ptr(LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR arg) {
+       LDKCResult_boolPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolPeerHandleErrorZ), "LDKCResult_boolPeerHandleErrorZ");
+       *ret_conv = CResult_boolPeerHandleErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* arg_conv = (LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_boolPeerHandleErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_boolPeerHandleErrorZ* arg_conv = (LDKCResult_boolPeerHandleErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_boolPeerHandleErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* orig_conv = (LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(orig & ~1);
-       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ");
-       *ret_conv = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone(orig_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 (uint64_t)ret_conv;
 }
 
-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_TxOutAccessErrorZ_ok(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKTxOut o_conv = *(LDKTxOut*)(o_ptr);
+       o_conv = TxOut_clone((LDKTxOut*)(((uint64_t)o) & ~1));
+       LDKCResult_TxOutAccessErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxOutAccessErrorZ), "LDKCResult_TxOutAccessErrorZ");
+       *ret_conv = CResult_TxOutAccessErrorZ_ok(o_conv);
        return (uint64_t)ret_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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = LightningError_clone(&e_conv);
-       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
-       *ret_conv = CResult_NoneLightningErrorZ_err(e_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 (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_NoneLightningErrorZ_is_ok(uint32_t o) {
-       LDKCResult_NoneLightningErrorZ* o_conv = (LDKCResult_NoneLightningErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_NoneLightningErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_TxOutAccessErrorZ_is_ok(uint32_t o) {
+       LDKCResult_TxOutAccessErrorZ* o_conv = (LDKCResult_TxOutAccessErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_TxOutAccessErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_NoneLightningErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_TxOutAccessErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_NoneLightningErrorZ _res_conv = *(LDKCResult_NoneLightningErrorZ*)(_res_ptr);
+       LDKCResult_TxOutAccessErrorZ _res_conv = *(LDKCResult_TxOutAccessErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_NoneLightningErrorZ_free(_res_conv);
+       CResult_TxOutAccessErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_NoneLightningErrorZ_clone_ptr(LDKCResult_NoneLightningErrorZ *NONNULL_PTR arg) {
-       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
-       *ret_conv = CResult_NoneLightningErrorZ_clone(arg);
+static inline uint64_t CResult_TxOutAccessErrorZ_clone_ptr(LDKCResult_TxOutAccessErrorZ *NONNULL_PTR arg) {
+       LDKCResult_TxOutAccessErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxOutAccessErrorZ), "LDKCResult_TxOutAccessErrorZ");
+       *ret_conv = CResult_TxOutAccessErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_NoneLightningErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_NoneLightningErrorZ* arg_conv = (LDKCResult_NoneLightningErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_NoneLightningErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_TxOutAccessErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_TxOutAccessErrorZ* arg_conv = (LDKCResult_TxOutAccessErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_TxOutAccessErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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_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 (uint64_t)ret_conv;
 }
 
-static inline uint64_t C2Tuple_PublicKeyTypeZ_clone_ptr(LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR arg) {
-       LDKC2Tuple_PublicKeyTypeZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PublicKeyTypeZ), "LDKC2Tuple_PublicKeyTypeZ");
-       *ret_conv = C2Tuple_PublicKeyTypeZ_clone(arg);
-       return ((uint64_t)ret_conv);
-}
-int64_t  __attribute__((visibility("default"))) TS_C2Tuple_PublicKeyTypeZ_clone_ptr(uint32_t arg) {
-       LDKC2Tuple_PublicKeyTypeZ* arg_conv = (LDKC2Tuple_PublicKeyTypeZ*)(arg & ~1);
-       int64_t ret_val = C2Tuple_PublicKeyTypeZ_clone_ptr(arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneChannelMonitorUpdateErrZ_ok() {
+       LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ");
+       *ret_conv = CResult_NoneChannelMonitorUpdateErrZ_ok();
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_PublicKeyTypeZ_clone(uint32_t orig) {
-       LDKC2Tuple_PublicKeyTypeZ* orig_conv = (LDKC2Tuple_PublicKeyTypeZ*)(orig & ~1);
-       LDKC2Tuple_PublicKeyTypeZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PublicKeyTypeZ), "LDKC2Tuple_PublicKeyTypeZ");
-       *ret_conv = C2Tuple_PublicKeyTypeZ_clone(orig_conv);
-       return ((uint64_t)ret_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneChannelMonitorUpdateErrZ_err(uint32_t e) {
+       LDKChannelMonitorUpdateErr e_conv = LDKChannelMonitorUpdateErr_from_js(e);
+       LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ");
+       *ret_conv = CResult_NoneChannelMonitorUpdateErrZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_PublicKeyTypeZ_new(int8_tArray a, uint32_t b) {
-       LDKPublicKey a_ref;
-       CHECK(*((uint32_t*)a) == 33);
-       memcpy(a_ref.compressed_form, (uint8_t*)(a + 4), 33);
-       void* b_ptr = (void*)(((uint64_t)b) & ~1);
-       CHECK_ACCESS(b_ptr);
-       LDKType b_conv = *(LDKType*)(b_ptr);
-       LDKC2Tuple_PublicKeyTypeZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PublicKeyTypeZ), "LDKC2Tuple_PublicKeyTypeZ");
-       *ret_conv = C2Tuple_PublicKeyTypeZ_new(a_ref, b_conv);
-       return ((uint64_t)ret_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_NoneChannelMonitorUpdateErrZ_is_ok(uint32_t o) {
+       LDKCResult_NoneChannelMonitorUpdateErrZ* o_conv = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(o & ~1);
+       jboolean ret_val = CResult_NoneChannelMonitorUpdateErrZ_is_ok(o_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_C2Tuple_PublicKeyTypeZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_NoneChannelMonitorUpdateErrZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKC2Tuple_PublicKeyTypeZ _res_conv = *(LDKC2Tuple_PublicKeyTypeZ*)(_res_ptr);
+       LDKCResult_NoneChannelMonitorUpdateErrZ _res_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(_res_ptr);
        FREE((void*)_res);
-       C2Tuple_PublicKeyTypeZ_free(_res_conv);
+       CResult_NoneChannelMonitorUpdateErrZ_free(_res_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_CVec_C2Tuple_PublicKeyTypeZZ_free(uint32_tArray _res) {
-       LDKCVec_C2Tuple_PublicKeyTypeZZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC2Tuple_PublicKeyTypeZ), "LDKCVec_C2Tuple_PublicKeyTypeZZ Elements");
-       else
-               _res_constr.data = NULL;
-       uint32_t* _res_vals = (uint32_t*)(_res + 4);
-       for (size_t z = 0; z < _res_constr.datalen; z++) {
-               uint32_t _res_conv_25 = _res_vals[z];
-               void* _res_conv_25_ptr = (void*)(((uint64_t)_res_conv_25) & ~1);
-               CHECK_ACCESS(_res_conv_25_ptr);
-               LDKC2Tuple_PublicKeyTypeZ _res_conv_25_conv = *(LDKC2Tuple_PublicKeyTypeZ*)(_res_conv_25_ptr);
-               FREE((void*)_res_conv_25);
-               _res_constr.data[z] = _res_conv_25_conv;
-       }
-       CVec_C2Tuple_PublicKeyTypeZZ_free(_res_constr);
+static inline uint64_t CResult_NoneChannelMonitorUpdateErrZ_clone_ptr(LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR arg) {
+       LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ");
+       *ret_conv = CResult_NoneChannelMonitorUpdateErrZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_NoneChannelMonitorUpdateErrZ_clone_ptr(uint32_t arg) {
+       LDKCResult_NoneChannelMonitorUpdateErrZ* arg_conv = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(arg & ~1);
+       int64_t ret_val = CResult_NoneChannelMonitorUpdateErrZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-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_NoneChannelMonitorUpdateErrZ_clone(uint32_t orig) {
+       LDKCResult_NoneChannelMonitorUpdateErrZ* orig_conv = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(orig & ~1);
+       LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ");
+       *ret_conv = CResult_NoneChannelMonitorUpdateErrZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = LightningError_clone(&e_conv);
-       LDKCResult_boolLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolLightningErrorZ), "LDKCResult_boolLightningErrorZ");
-       *ret_conv = CResult_boolLightningErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_COption_C2Tuple_usizeTransactionZZ_some(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKC2Tuple_usizeTransactionZ o_conv = *(LDKC2Tuple_usizeTransactionZ*)(o_ptr);
+       o_conv = C2Tuple_usizeTransactionZ_clone((LDKC2Tuple_usizeTransactionZ*)(((uint64_t)o) & ~1));
+       LDKCOption_C2Tuple_usizeTransactionZZ *ret_copy = MALLOC(sizeof(LDKCOption_C2Tuple_usizeTransactionZZ), "LDKCOption_C2Tuple_usizeTransactionZZ");
+       *ret_copy = COption_C2Tuple_usizeTransactionZZ_some(o_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_boolLightningErrorZ_is_ok(uint32_t o) {
-       LDKCResult_boolLightningErrorZ* o_conv = (LDKCResult_boolLightningErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_boolLightningErrorZ_is_ok(o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_COption_C2Tuple_usizeTransactionZZ_none() {
+       LDKCOption_C2Tuple_usizeTransactionZZ *ret_copy = MALLOC(sizeof(LDKCOption_C2Tuple_usizeTransactionZZ), "LDKCOption_C2Tuple_usizeTransactionZZ");
+       *ret_copy = COption_C2Tuple_usizeTransactionZZ_none();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_boolLightningErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_COption_C2Tuple_usizeTransactionZZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_boolLightningErrorZ _res_conv = *(LDKCResult_boolLightningErrorZ*)(_res_ptr);
+       LDKCOption_C2Tuple_usizeTransactionZZ _res_conv = *(LDKCOption_C2Tuple_usizeTransactionZZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_boolLightningErrorZ_free(_res_conv);
-}
-
-static inline uint64_t CResult_boolLightningErrorZ_clone_ptr(LDKCResult_boolLightningErrorZ *NONNULL_PTR arg) {
-       LDKCResult_boolLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolLightningErrorZ), "LDKCResult_boolLightningErrorZ");
-       *ret_conv = CResult_boolLightningErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
-}
-int64_t  __attribute__((visibility("default"))) TS_CResult_boolLightningErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_boolLightningErrorZ* arg_conv = (LDKCResult_boolLightningErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_boolLightningErrorZ_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-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);
-       return (uint64_t)ret_conv;
+       COption_C2Tuple_usizeTransactionZZ_free(_res_conv);
 }
 
-static inline uint64_t C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone_ptr(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR arg) {
-       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* ret_conv = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ");
-       *ret_conv = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(arg);
-       return ((uint64_t)ret_conv);
+static inline uint64_t COption_C2Tuple_usizeTransactionZZ_clone_ptr(LDKCOption_C2Tuple_usizeTransactionZZ *NONNULL_PTR arg) {
+       LDKCOption_C2Tuple_usizeTransactionZZ *ret_copy = MALLOC(sizeof(LDKCOption_C2Tuple_usizeTransactionZZ), "LDKCOption_C2Tuple_usizeTransactionZZ");
+       *ret_copy = COption_C2Tuple_usizeTransactionZZ_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone_ptr(uint32_t arg) {
-       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* arg_conv = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(arg & ~1);
-       int64_t ret_val = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_COption_C2Tuple_usizeTransactionZZ_clone_ptr(uint32_t arg) {
+       LDKCOption_C2Tuple_usizeTransactionZZ* arg_conv = (LDKCOption_C2Tuple_usizeTransactionZZ*)arg;
+       int64_t ret_val = COption_C2Tuple_usizeTransactionZZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(uint32_t orig) {
-       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* orig_conv = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(orig & ~1);
-       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* ret_conv = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ");
-       *ret_conv = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(orig_conv);
-       return ((uint64_t)ret_conv);
+uint32_t  __attribute__((visibility("default"))) TS_COption_C2Tuple_usizeTransactionZZ_clone(uint32_t orig) {
+       LDKCOption_C2Tuple_usizeTransactionZZ* orig_conv = (LDKCOption_C2Tuple_usizeTransactionZZ*)orig;
+       LDKCOption_C2Tuple_usizeTransactionZZ *ret_copy = MALLOC(sizeof(LDKCOption_C2Tuple_usizeTransactionZZ), "LDKCOption_C2Tuple_usizeTransactionZZ");
+       *ret_copy = COption_C2Tuple_usizeTransactionZZ_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return 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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       a_conv = ChannelAnnouncement_clone(&a_conv);
-       LDKChannelUpdate b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = (b & 1) || (b == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       b_conv = ChannelUpdate_clone(&b_conv);
-       LDKChannelUpdate c_conv;
-       c_conv.inner = (void*)(c & (~1));
-       c_conv.is_owned = (c & 1) || (c == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(c_conv);
-       c_conv = ChannelUpdate_clone(&c_conv);
-       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* ret_conv = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ");
-       *ret_conv = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(a_conv, b_conv, c_conv);
-       return ((uint64_t)ret_conv);
+uint32_t  __attribute__((visibility("default"))) TS_COption_ClosureReasonZ_some(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKClosureReason o_conv = *(LDKClosureReason*)(o_ptr);
+       o_conv = ClosureReason_clone((LDKClosureReason*)(((uint64_t)o) & ~1));
+       LDKCOption_ClosureReasonZ *ret_copy = MALLOC(sizeof(LDKCOption_ClosureReasonZ), "LDKCOption_ClosureReasonZ");
+       *ret_copy = COption_ClosureReasonZ_some(o_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(uint32_t _res) {
+uint32_t  __attribute__((visibility("default"))) TS_COption_ClosureReasonZ_none() {
+       LDKCOption_ClosureReasonZ *ret_copy = MALLOC(sizeof(LDKCOption_ClosureReasonZ), "LDKCOption_ClosureReasonZ");
+       *ret_copy = COption_ClosureReasonZ_none();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+void  __attribute__((visibility("default"))) TS_COption_ClosureReasonZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ _res_conv = *(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(_res_ptr);
+       LDKCOption_ClosureReasonZ _res_conv = *(LDKCOption_ClosureReasonZ*)(_res_ptr);
        FREE((void*)_res);
-       C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(_res_conv);
+       COption_ClosureReasonZ_free(_res_conv);
 }
 
-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 h = 0; h < _res_constr.datalen; h++) {
-               uint32_t _res_conv_59 = _res_vals[h];
-               void* _res_conv_59_ptr = (void*)(((uint64_t)_res_conv_59) & ~1);
-               CHECK_ACCESS(_res_conv_59_ptr);
-               LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ _res_conv_59_conv = *(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(_res_conv_59_ptr);
-               FREE((void*)_res_conv_59);
-               _res_constr.data[h] = _res_conv_59_conv;
-       }
-       CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(_res_constr);
+static inline uint64_t COption_ClosureReasonZ_clone_ptr(LDKCOption_ClosureReasonZ *NONNULL_PTR arg) {
+       LDKCOption_ClosureReasonZ *ret_copy = MALLOC(sizeof(LDKCOption_ClosureReasonZ), "LDKCOption_ClosureReasonZ");
+       *ret_copy = COption_ClosureReasonZ_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
-
-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 _res_conv_18 = _res_vals[s];
-               LDKNodeAnnouncement _res_conv_18_conv;
-               _res_conv_18_conv.inner = (void*)(_res_conv_18 & (~1));
-               _res_conv_18_conv.is_owned = (_res_conv_18 & 1) || (_res_conv_18 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_18_conv);
-               _res_constr.data[s] = _res_conv_18_conv;
-       }
-       CVec_NodeAnnouncementZ_free(_res_constr);
+int64_t  __attribute__((visibility("default"))) TS_COption_ClosureReasonZ_clone_ptr(uint32_t arg) {
+       LDKCOption_ClosureReasonZ* arg_conv = (LDKCOption_ClosureReasonZ*)arg;
+       int64_t ret_val = COption_ClosureReasonZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-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 _res_conv_12 = _res_vals[m];
-               LDKPublicKey _res_conv_12_ref;
-               CHECK(*((uint32_t*)_res_conv_12) == 33);
-               memcpy(_res_conv_12_ref.compressed_form, (uint8_t*)(_res_conv_12 + 4), 33);
-               _res_constr.data[m] = _res_conv_12_ref;
-       }
-       CVec_PublicKeyZ_free(_res_constr);
+uint32_t  __attribute__((visibility("default"))) TS_COption_ClosureReasonZ_clone(uint32_t orig) {
+       LDKCOption_ClosureReasonZ* orig_conv = (LDKCOption_ClosureReasonZ*)orig;
+       LDKCOption_ClosureReasonZ *ret_copy = MALLOC(sizeof(LDKCOption_ClosureReasonZ), "LDKCOption_ClosureReasonZ");
+       *ret_copy = COption_ClosureReasonZ_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-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_COption_ClosureReasonZDecodeErrorZ_ok(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKCOption_ClosureReasonZ o_conv = *(LDKCOption_ClosureReasonZ*)(o_ptr);
+       o_conv = COption_ClosureReasonZ_clone((LDKCOption_ClosureReasonZ*)(((uint64_t)o) & ~1));
+       LDKCResult_COption_ClosureReasonZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ), "LDKCResult_COption_ClosureReasonZDecodeErrorZ");
+       *ret_conv = CResult_COption_ClosureReasonZDecodeErrorZ_ok(o_conv);
        return (uint64_t)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_COption_ClosureReasonZDecodeErrorZ_err(uint32_t e) {
+       LDKDecodeError e_conv;
        e_conv.inner = (void*)(e & (~1));
        e_conv.is_owned = (e & 1) || (e == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       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_COption_ClosureReasonZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ), "LDKCResult_COption_ClosureReasonZDecodeErrorZ");
+       *ret_conv = CResult_COption_ClosureReasonZDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_CVec_u8ZPeerHandleErrorZ_is_ok(uint32_t o) {
-       LDKCResult_CVec_u8ZPeerHandleErrorZ* o_conv = (LDKCResult_CVec_u8ZPeerHandleErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_CVec_u8ZPeerHandleErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_COption_ClosureReasonZDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_COption_ClosureReasonZDecodeErrorZ* o_conv = (LDKCResult_COption_ClosureReasonZDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_COption_ClosureReasonZDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_CVec_u8ZPeerHandleErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_COption_ClosureReasonZDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_CVec_u8ZPeerHandleErrorZ _res_conv = *(LDKCResult_CVec_u8ZPeerHandleErrorZ*)(_res_ptr);
+       LDKCResult_COption_ClosureReasonZDecodeErrorZ _res_conv = *(LDKCResult_COption_ClosureReasonZDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_CVec_u8ZPeerHandleErrorZ_free(_res_conv);
+       CResult_COption_ClosureReasonZDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_CVec_u8ZPeerHandleErrorZ_clone_ptr(LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR arg) {
-       LDKCResult_CVec_u8ZPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ), "LDKCResult_CVec_u8ZPeerHandleErrorZ");
-       *ret_conv = CResult_CVec_u8ZPeerHandleErrorZ_clone(arg);
+static inline uint64_t CResult_COption_ClosureReasonZDecodeErrorZ_clone_ptr(LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_COption_ClosureReasonZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ), "LDKCResult_COption_ClosureReasonZDecodeErrorZ");
+       *ret_conv = CResult_COption_ClosureReasonZDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_CVec_u8ZPeerHandleErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_CVec_u8ZPeerHandleErrorZ* arg_conv = (LDKCResult_CVec_u8ZPeerHandleErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_CVec_u8ZPeerHandleErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_COption_ClosureReasonZDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_COption_ClosureReasonZDecodeErrorZ* arg_conv = (LDKCResult_COption_ClosureReasonZDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_COption_ClosureReasonZDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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_COption_ClosureReasonZDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_COption_ClosureReasonZDecodeErrorZ* orig_conv = (LDKCResult_COption_ClosureReasonZDecodeErrorZ*)(orig & ~1);
+       LDKCResult_COption_ClosureReasonZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ), "LDKCResult_COption_ClosureReasonZDecodeErrorZ");
+       *ret_conv = CResult_COption_ClosureReasonZDecodeErrorZ_clone(orig_conv);
        return (uint64_t)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();
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_COption_NetworkUpdateZ_some(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKNetworkUpdate o_conv = *(LDKNetworkUpdate*)(o_ptr);
+       o_conv = NetworkUpdate_clone((LDKNetworkUpdate*)(((uint64_t)o) & ~1));
+       LDKCOption_NetworkUpdateZ *ret_copy = MALLOC(sizeof(LDKCOption_NetworkUpdateZ), "LDKCOption_NetworkUpdateZ");
+       *ret_copy = COption_NetworkUpdateZ_some(o_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = PeerHandleError_clone(&e_conv);
-       LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ");
-       *ret_conv = CResult_NonePeerHandleErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_COption_NetworkUpdateZ_none() {
+       LDKCOption_NetworkUpdateZ *ret_copy = MALLOC(sizeof(LDKCOption_NetworkUpdateZ), "LDKCOption_NetworkUpdateZ");
+       *ret_copy = COption_NetworkUpdateZ_none();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_NonePeerHandleErrorZ_is_ok(uint32_t o) {
-       LDKCResult_NonePeerHandleErrorZ* o_conv = (LDKCResult_NonePeerHandleErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_NonePeerHandleErrorZ_is_ok(o_conv);
+void  __attribute__((visibility("default"))) TS_COption_NetworkUpdateZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCOption_NetworkUpdateZ _res_conv = *(LDKCOption_NetworkUpdateZ*)(_res_ptr);
+       FREE((void*)_res);
+       COption_NetworkUpdateZ_free(_res_conv);
+}
+
+static inline uint64_t COption_NetworkUpdateZ_clone_ptr(LDKCOption_NetworkUpdateZ *NONNULL_PTR arg) {
+       LDKCOption_NetworkUpdateZ *ret_copy = MALLOC(sizeof(LDKCOption_NetworkUpdateZ), "LDKCOption_NetworkUpdateZ");
+       *ret_copy = COption_NetworkUpdateZ_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_COption_NetworkUpdateZ_clone_ptr(uint32_t arg) {
+       LDKCOption_NetworkUpdateZ* arg_conv = (LDKCOption_NetworkUpdateZ*)arg;
+       int64_t ret_val = COption_NetworkUpdateZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_NonePeerHandleErrorZ_free(uint32_t _res) {
+uint32_t  __attribute__((visibility("default"))) TS_COption_NetworkUpdateZ_clone(uint32_t orig) {
+       LDKCOption_NetworkUpdateZ* orig_conv = (LDKCOption_NetworkUpdateZ*)orig;
+       LDKCOption_NetworkUpdateZ *ret_copy = MALLOC(sizeof(LDKCOption_NetworkUpdateZ), "LDKCOption_NetworkUpdateZ");
+       *ret_copy = COption_NetworkUpdateZ_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+void  __attribute__((visibility("default"))) TS_CVec_SpendableOutputDescriptorZ_free(uint32_tArray _res) {
+       LDKCVec_SpendableOutputDescriptorZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       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 = _res->elems;
+       for (size_t b = 0; b < _res_constr.datalen; b++) {
+               uint32_t _res_conv_27 = _res_vals[b];
+               void* _res_conv_27_ptr = (void*)(((uint64_t)_res_conv_27) & ~1);
+               CHECK_ACCESS(_res_conv_27_ptr);
+               LDKSpendableOutputDescriptor _res_conv_27_conv = *(LDKSpendableOutputDescriptor*)(_res_conv_27_ptr);
+               FREE((void*)_res_conv_27);
+               _res_constr.data[b] = _res_conv_27_conv;
+       }
+       CVec_SpendableOutputDescriptorZ_free(_res_constr);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_COption_EventZ_some(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKEvent o_conv = *(LDKEvent*)(o_ptr);
+       o_conv = Event_clone((LDKEvent*)(((uint64_t)o) & ~1));
+       LDKCOption_EventZ *ret_copy = MALLOC(sizeof(LDKCOption_EventZ), "LDKCOption_EventZ");
+       *ret_copy = COption_EventZ_some(o_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_COption_EventZ_none() {
+       LDKCOption_EventZ *ret_copy = MALLOC(sizeof(LDKCOption_EventZ), "LDKCOption_EventZ");
+       *ret_copy = COption_EventZ_none();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+void  __attribute__((visibility("default"))) TS_COption_EventZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_NonePeerHandleErrorZ _res_conv = *(LDKCResult_NonePeerHandleErrorZ*)(_res_ptr);
+       LDKCOption_EventZ _res_conv = *(LDKCOption_EventZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_NonePeerHandleErrorZ_free(_res_conv);
+       COption_EventZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_NonePeerHandleErrorZ_clone_ptr(LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR arg) {
-       LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ");
-       *ret_conv = CResult_NonePeerHandleErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
+static inline uint64_t COption_EventZ_clone_ptr(LDKCOption_EventZ *NONNULL_PTR arg) {
+       LDKCOption_EventZ *ret_copy = MALLOC(sizeof(LDKCOption_EventZ), "LDKCOption_EventZ");
+       *ret_copy = COption_EventZ_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_NonePeerHandleErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_NonePeerHandleErrorZ* arg_conv = (LDKCResult_NonePeerHandleErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_NonePeerHandleErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_COption_EventZ_clone_ptr(uint32_t arg) {
+       LDKCOption_EventZ* arg_conv = (LDKCOption_EventZ*)arg;
+       int64_t ret_val = COption_EventZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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 (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_COption_EventZ_clone(uint32_t orig) {
+       LDKCOption_EventZ* orig_conv = (LDKCOption_EventZ*)orig;
+       LDKCOption_EventZ *ret_copy = MALLOC(sizeof(LDKCOption_EventZ), "LDKCOption_EventZ");
+       *ret_copy = COption_EventZ_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-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_COption_EventZDecodeErrorZ_ok(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKCOption_EventZ o_conv = *(LDKCOption_EventZ*)(o_ptr);
+       o_conv = COption_EventZ_clone((LDKCOption_EventZ*)(((uint64_t)o) & ~1));
+       LDKCResult_COption_EventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_EventZDecodeErrorZ), "LDKCResult_COption_EventZDecodeErrorZ");
+       *ret_conv = CResult_COption_EventZDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_boolPeerHandleErrorZ_err(uint32_t e) {
-       LDKPeerHandleError e_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_COption_EventZDecodeErrorZ_err(uint32_t e) {
+       LDKDecodeError e_conv;
        e_conv.inner = (void*)(e & (~1));
        e_conv.is_owned = (e & 1) || (e == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       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_COption_EventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_EventZDecodeErrorZ), "LDKCResult_COption_EventZDecodeErrorZ");
+       *ret_conv = CResult_COption_EventZDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_boolPeerHandleErrorZ_is_ok(uint32_t o) {
-       LDKCResult_boolPeerHandleErrorZ* o_conv = (LDKCResult_boolPeerHandleErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_boolPeerHandleErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_COption_EventZDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_COption_EventZDecodeErrorZ* o_conv = (LDKCResult_COption_EventZDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_COption_EventZDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_boolPeerHandleErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_COption_EventZDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_boolPeerHandleErrorZ _res_conv = *(LDKCResult_boolPeerHandleErrorZ*)(_res_ptr);
+       LDKCResult_COption_EventZDecodeErrorZ _res_conv = *(LDKCResult_COption_EventZDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_boolPeerHandleErrorZ_free(_res_conv);
+       CResult_COption_EventZDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_boolPeerHandleErrorZ_clone_ptr(LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR arg) {
-       LDKCResult_boolPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolPeerHandleErrorZ), "LDKCResult_boolPeerHandleErrorZ");
-       *ret_conv = CResult_boolPeerHandleErrorZ_clone(arg);
+static inline uint64_t CResult_COption_EventZDecodeErrorZ_clone_ptr(LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_COption_EventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_EventZDecodeErrorZ), "LDKCResult_COption_EventZDecodeErrorZ");
+       *ret_conv = CResult_COption_EventZDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_boolPeerHandleErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_boolPeerHandleErrorZ* arg_conv = (LDKCResult_boolPeerHandleErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_boolPeerHandleErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_COption_EventZDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_COption_EventZDecodeErrorZ* arg_conv = (LDKCResult_COption_EventZDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_COption_EventZDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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_COption_EventZDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_COption_EventZDecodeErrorZ* orig_conv = (LDKCResult_COption_EventZDecodeErrorZ*)(orig & ~1);
+       LDKCResult_COption_EventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_EventZDecodeErrorZ), "LDKCResult_COption_EventZDecodeErrorZ");
+       *ret_conv = CResult_COption_EventZDecodeErrorZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
@@ -14207,6 +12218,25 @@ uint32_t  __attribute__((visibility("default"))) TS_CResult_RoutingFeesDecodeErr
        return (uint64_t)ret_conv;
 }
 
+void  __attribute__((visibility("default"))) TS_CVec_NetAddressZ_free(uint32_tArray _res) {
+       LDKCVec_NetAddressZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       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 = _res->elems;
+       for (size_t m = 0; m < _res_constr.datalen; m++) {
+               uint32_t _res_conv_12 = _res_vals[m];
+               void* _res_conv_12_ptr = (void*)(((uint64_t)_res_conv_12) & ~1);
+               CHECK_ACCESS(_res_conv_12_ptr);
+               LDKNetAddress _res_conv_12_conv = *(LDKNetAddress*)(_res_conv_12_ptr);
+               FREE((void*)_res_conv_12);
+               _res_constr.data[m] = _res_conv_12_conv;
+       }
+       CVec_NetAddressZ_free(_res_constr);
+}
+
 uint32_t  __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementInfoDecodeErrorZ_ok(uint32_t o) {
        LDKNodeAnnouncementInfo o_conv;
        o_conv.inner = (void*)(o & (~1));
@@ -14264,12 +12294,12 @@ uint32_t  __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementInfo
 
 void  __attribute__((visibility("default"))) TS_CVec_u64Z_free(int64_tArray _res) {
        LDKCVec_u64Z _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
+       _res_constr.datalen = _res->arr_len;
        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);
+       int64_t* _res_vals = _res->elems;
        for (size_t i = 0; i < _res_constr.datalen; i++) {
                int64_t _res_conv_8 = _res_vals[i];
                _res_constr.data[i] = _res_conv_8;
@@ -14389,12 +12419,12 @@ uint32_t  __attribute__((visibility("default"))) TS_CResult_NetworkGraphDecodeEr
 
 uint32_t  __attribute__((visibility("default"))) TS_COption_CVec_NetAddressZZ_some(uint32_tArray o) {
        LDKCVec_NetAddressZ o_constr;
-       o_constr.datalen = *((uint32_t*)o);
+       o_constr.datalen = o->arr_len;
        if (o_constr.datalen > 0)
                o_constr.data = MALLOC(o_constr.datalen * sizeof(LDKNetAddress), "LDKCVec_NetAddressZ Elements");
        else
                o_constr.data = NULL;
-       uint32_t* o_vals = (uint32_t*)(o + 4);
+       uint32_t* o_vals = o->elems;
        for (size_t m = 0; m < o_constr.datalen; m++) {
                uint32_t o_conv_12 = o_vals[m];
                void* o_conv_12_ptr = (void*)(((uint64_t)o_conv_12) & ~1);
@@ -14434,5183 +12464,4607 @@ uint64_t ret_ref = (uint64_t)ret_copy;
 int64_t  __attribute__((visibility("default"))) TS_COption_CVec_NetAddressZZ_clone_ptr(uint32_t arg) {
        LDKCOption_CVec_NetAddressZZ* arg_conv = (LDKCOption_CVec_NetAddressZZ*)arg;
        int64_t ret_val = COption_CVec_NetAddressZZ_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_COption_CVec_NetAddressZZ_clone(uint32_t orig) {
-       LDKCOption_CVec_NetAddressZZ* orig_conv = (LDKCOption_CVec_NetAddressZZ*)orig;
-       LDKCOption_CVec_NetAddressZZ *ret_copy = MALLOC(sizeof(LDKCOption_CVec_NetAddressZZ), "LDKCOption_CVec_NetAddressZZ");
-       *ret_copy = COption_CVec_NetAddressZZ_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NetAddressDecodeErrorZ_ok(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKNetAddress o_conv = *(LDKNetAddress*)(o_ptr);
-       o_conv = NetAddress_clone((LDKNetAddress*)(((uint64_t)o) & ~1));
-       LDKCResult_NetAddressDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetAddressDecodeErrorZ), "LDKCResult_NetAddressDecodeErrorZ");
-       *ret_conv = CResult_NetAddressDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NetAddressDecodeErrorZ_err(uint32_t e) {
-       LDKDecodeError e_conv;
-       e_conv.inner = (void*)(e & (~1));
-       e_conv.is_owned = (e & 1) || (e == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
-       e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_NetAddressDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetAddressDecodeErrorZ), "LDKCResult_NetAddressDecodeErrorZ");
-       *ret_conv = CResult_NetAddressDecodeErrorZ_err(e_conv);
-       return (uint64_t)ret_conv;
-}
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_NetAddressDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_NetAddressDecodeErrorZ* o_conv = (LDKCResult_NetAddressDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_NetAddressDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_CResult_NetAddressDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_NetAddressDecodeErrorZ _res_conv = *(LDKCResult_NetAddressDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_NetAddressDecodeErrorZ_free(_res_conv);
-}
-
-static inline uint64_t CResult_NetAddressDecodeErrorZ_clone_ptr(LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_NetAddressDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetAddressDecodeErrorZ), "LDKCResult_NetAddressDecodeErrorZ");
-       *ret_conv = CResult_NetAddressDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
-}
-int64_t  __attribute__((visibility("default"))) TS_CResult_NetAddressDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_NetAddressDecodeErrorZ* arg_conv = (LDKCResult_NetAddressDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_NetAddressDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NetAddressDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_NetAddressDecodeErrorZ* orig_conv = (LDKCResult_NetAddressDecodeErrorZ*)(orig & ~1);
-       LDKCResult_NetAddressDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetAddressDecodeErrorZ), "LDKCResult_NetAddressDecodeErrorZ");
-       *ret_conv = CResult_NetAddressDecodeErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
-}
-
-void  __attribute__((visibility("default"))) TS_CVec_UpdateAddHTLCZ_free(uint32_tArray _res) {
-       LDKCVec_UpdateAddHTLCZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKUpdateAddHTLC), "LDKCVec_UpdateAddHTLCZ Elements");
-       else
-               _res_constr.data = NULL;
-       uint32_t* _res_vals = (uint32_t*)(_res + 4);
-       for (size_t p = 0; p < _res_constr.datalen; p++) {
-               uint32_t _res_conv_15 = _res_vals[p];
-               LDKUpdateAddHTLC _res_conv_15_conv;
-               _res_conv_15_conv.inner = (void*)(_res_conv_15 & (~1));
-               _res_conv_15_conv.is_owned = (_res_conv_15 & 1) || (_res_conv_15 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_15_conv);
-               _res_constr.data[p] = _res_conv_15_conv;
-       }
-       CVec_UpdateAddHTLCZ_free(_res_constr);
-}
-
-void  __attribute__((visibility("default"))) TS_CVec_UpdateFulfillHTLCZ_free(uint32_tArray _res) {
-       LDKCVec_UpdateFulfillHTLCZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKUpdateFulfillHTLC), "LDKCVec_UpdateFulfillHTLCZ Elements");
-       else
-               _res_constr.data = NULL;
-       uint32_t* _res_vals = (uint32_t*)(_res + 4);
-       for (size_t t = 0; t < _res_constr.datalen; t++) {
-               uint32_t _res_conv_19 = _res_vals[t];
-               LDKUpdateFulfillHTLC _res_conv_19_conv;
-               _res_conv_19_conv.inner = (void*)(_res_conv_19 & (~1));
-               _res_conv_19_conv.is_owned = (_res_conv_19 & 1) || (_res_conv_19 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_19_conv);
-               _res_constr.data[t] = _res_conv_19_conv;
-       }
-       CVec_UpdateFulfillHTLCZ_free(_res_constr);
-}
-
-void  __attribute__((visibility("default"))) TS_CVec_UpdateFailHTLCZ_free(uint32_tArray _res) {
-       LDKCVec_UpdateFailHTLCZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKUpdateFailHTLC), "LDKCVec_UpdateFailHTLCZ 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 _res_conv_16 = _res_vals[q];
-               LDKUpdateFailHTLC _res_conv_16_conv;
-               _res_conv_16_conv.inner = (void*)(_res_conv_16 & (~1));
-               _res_conv_16_conv.is_owned = (_res_conv_16 & 1) || (_res_conv_16 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_16_conv);
-               _res_constr.data[q] = _res_conv_16_conv;
-       }
-       CVec_UpdateFailHTLCZ_free(_res_constr);
-}
-
-void  __attribute__((visibility("default"))) TS_CVec_UpdateFailMalformedHTLCZ_free(uint32_tArray _res) {
-       LDKCVec_UpdateFailMalformedHTLCZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKUpdateFailMalformedHTLC), "LDKCVec_UpdateFailMalformedHTLCZ Elements");
-       else
-               _res_constr.data = NULL;
-       uint32_t* _res_vals = (uint32_t*)(_res + 4);
-       for (size_t z = 0; z < _res_constr.datalen; z++) {
-               uint32_t _res_conv_25 = _res_vals[z];
-               LDKUpdateFailMalformedHTLC _res_conv_25_conv;
-               _res_conv_25_conv.inner = (void*)(_res_conv_25 & (~1));
-               _res_conv_25_conv.is_owned = (_res_conv_25 & 1) || (_res_conv_25 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_25_conv);
-               _res_constr.data[z] = _res_conv_25_conv;
-       }
-       CVec_UpdateFailMalformedHTLCZ_free(_res_constr);
-}
-
-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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = AcceptChannel_clone(&o_conv);
-       LDKCResult_AcceptChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AcceptChannelDecodeErrorZ), "LDKCResult_AcceptChannelDecodeErrorZ");
-       *ret_conv = CResult_AcceptChannelDecodeErrorZ_ok(o_conv);
-       return (uint64_t)ret_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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(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 (uint64_t)ret_conv;
-}
-
-jboolean  __attribute__((visibility("default"))) TS_CResult_AcceptChannelDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_AcceptChannelDecodeErrorZ* o_conv = (LDKCResult_AcceptChannelDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_AcceptChannelDecodeErrorZ_is_ok(o_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_CResult_AcceptChannelDecodeErrorZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCResult_AcceptChannelDecodeErrorZ _res_conv = *(LDKCResult_AcceptChannelDecodeErrorZ*)(_res_ptr);
-       FREE((void*)_res);
-       CResult_AcceptChannelDecodeErrorZ_free(_res_conv);
-}
-
-static inline uint64_t CResult_AcceptChannelDecodeErrorZ_clone_ptr(LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_AcceptChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AcceptChannelDecodeErrorZ), "LDKCResult_AcceptChannelDecodeErrorZ");
-       *ret_conv = CResult_AcceptChannelDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
-}
-int64_t  __attribute__((visibility("default"))) TS_CResult_AcceptChannelDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_AcceptChannelDecodeErrorZ* arg_conv = (LDKCResult_AcceptChannelDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_AcceptChannelDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-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 (uint64_t)ret_conv;
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_AnnouncementSignaturesDecodeErrorZ_ok(uint32_t o) {
-       LDKAnnouncementSignatures o_conv;
+uint32_t  __attribute__((visibility("default"))) TS_COption_CVec_NetAddressZZ_clone(uint32_t orig) {
+       LDKCOption_CVec_NetAddressZZ* orig_conv = (LDKCOption_CVec_NetAddressZZ*)orig;
+       LDKCOption_CVec_NetAddressZZ *ret_copy = MALLOC(sizeof(LDKCOption_CVec_NetAddressZZ), "LDKCOption_CVec_NetAddressZZ");
+       *ret_copy = COption_CVec_NetAddressZZ_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ScoringParametersDecodeErrorZ_ok(uint32_t o) {
+       LDKScoringParameters o_conv;
        o_conv.inner = (void*)(o & (~1));
        o_conv.is_owned = (o & 1) || (o == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = AnnouncementSignatures_clone(&o_conv);
-       LDKCResult_AnnouncementSignaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ), "LDKCResult_AnnouncementSignaturesDecodeErrorZ");
-       *ret_conv = CResult_AnnouncementSignaturesDecodeErrorZ_ok(o_conv);
+       // Warning: we need a move here but no clone is available for LDKScoringParameters
+       LDKCResult_ScoringParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ScoringParametersDecodeErrorZ), "LDKCResult_ScoringParametersDecodeErrorZ");
+       *ret_conv = CResult_ScoringParametersDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_AnnouncementSignaturesDecodeErrorZ_err(uint32_t e) {
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ScoringParametersDecodeErrorZ_err(uint32_t e) {
        LDKDecodeError e_conv;
        e_conv.inner = (void*)(e & (~1));
        e_conv.is_owned = (e & 1) || (e == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       LDKCResult_ScoringParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ScoringParametersDecodeErrorZ), "LDKCResult_ScoringParametersDecodeErrorZ");
+       *ret_conv = CResult_ScoringParametersDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_AnnouncementSignaturesDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_AnnouncementSignaturesDecodeErrorZ* o_conv = (LDKCResult_AnnouncementSignaturesDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_AnnouncementSignaturesDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ScoringParametersDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ScoringParametersDecodeErrorZ* o_conv = (LDKCResult_ScoringParametersDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ScoringParametersDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_AnnouncementSignaturesDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ScoringParametersDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_AnnouncementSignaturesDecodeErrorZ _res_conv = *(LDKCResult_AnnouncementSignaturesDecodeErrorZ*)(_res_ptr);
+       LDKCResult_ScoringParametersDecodeErrorZ _res_conv = *(LDKCResult_ScoringParametersDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_AnnouncementSignaturesDecodeErrorZ_free(_res_conv);
-}
-
-static inline uint64_t CResult_AnnouncementSignaturesDecodeErrorZ_clone_ptr(LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_AnnouncementSignaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ), "LDKCResult_AnnouncementSignaturesDecodeErrorZ");
-       *ret_conv = CResult_AnnouncementSignaturesDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
-}
-int64_t  __attribute__((visibility("default"))) TS_CResult_AnnouncementSignaturesDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_AnnouncementSignaturesDecodeErrorZ* arg_conv = (LDKCResult_AnnouncementSignaturesDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_AnnouncementSignaturesDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-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 (uint64_t)ret_conv;
+       CResult_ScoringParametersDecodeErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelReestablishDecodeErrorZ_ok(uint32_t o) {
-       LDKChannelReestablish o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = ChannelReestablish_clone(&o_conv);
-       LDKCResult_ChannelReestablishDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelReestablishDecodeErrorZ), "LDKCResult_ChannelReestablishDecodeErrorZ");
-       *ret_conv = CResult_ChannelReestablishDecodeErrorZ_ok(o_conv);
+       o_conv = InitFeatures_clone(&o_conv);
+       LDKCResult_InitFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitFeaturesDecodeErrorZ), "LDKCResult_InitFeaturesDecodeErrorZ");
+       *ret_conv = CResult_InitFeaturesDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelReestablishDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ChannelReestablishDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelReestablishDecodeErrorZ), "LDKCResult_ChannelReestablishDecodeErrorZ");
-       *ret_conv = CResult_ChannelReestablishDecodeErrorZ_err(e_conv);
+       LDKCResult_InitFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitFeaturesDecodeErrorZ), "LDKCResult_InitFeaturesDecodeErrorZ");
+       *ret_conv = CResult_InitFeaturesDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelReestablishDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ChannelReestablishDecodeErrorZ* o_conv = (LDKCResult_ChannelReestablishDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ChannelReestablishDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_InitFeaturesDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_InitFeaturesDecodeErrorZ* o_conv = (LDKCResult_InitFeaturesDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_InitFeaturesDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ChannelReestablishDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_InitFeaturesDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_ChannelReestablishDecodeErrorZ _res_conv = *(LDKCResult_ChannelReestablishDecodeErrorZ*)(_res_ptr);
+       LDKCResult_InitFeaturesDecodeErrorZ _res_conv = *(LDKCResult_InitFeaturesDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_ChannelReestablishDecodeErrorZ_free(_res_conv);
-}
-
-static inline uint64_t CResult_ChannelReestablishDecodeErrorZ_clone_ptr(LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ChannelReestablishDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelReestablishDecodeErrorZ), "LDKCResult_ChannelReestablishDecodeErrorZ");
-       *ret_conv = CResult_ChannelReestablishDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
-}
-int64_t  __attribute__((visibility("default"))) TS_CResult_ChannelReestablishDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ChannelReestablishDecodeErrorZ* arg_conv = (LDKCResult_ChannelReestablishDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ChannelReestablishDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-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 (uint64_t)ret_conv;
+       CResult_InitFeaturesDecodeErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedDecodeErrorZ_ok(uint32_t o) {
-       LDKClosingSigned o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = ChannelFeatures_clone(&o_conv);
+       LDKCResult_ChannelFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ), "LDKCResult_ChannelFeaturesDecodeErrorZ");
+       *ret_conv = CResult_ChannelFeaturesDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ClosingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedDecodeErrorZ), "LDKCResult_ClosingSignedDecodeErrorZ");
-       *ret_conv = CResult_ClosingSignedDecodeErrorZ_err(e_conv);
+       LDKCResult_ChannelFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ), "LDKCResult_ChannelFeaturesDecodeErrorZ");
+       *ret_conv = CResult_ChannelFeaturesDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ClosingSignedDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ClosingSignedDecodeErrorZ* o_conv = (LDKCResult_ClosingSignedDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ClosingSignedDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelFeaturesDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ChannelFeaturesDecodeErrorZ* o_conv = (LDKCResult_ChannelFeaturesDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ChannelFeaturesDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ClosingSignedDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ChannelFeaturesDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_ClosingSignedDecodeErrorZ _res_conv = *(LDKCResult_ClosingSignedDecodeErrorZ*)(_res_ptr);
+       LDKCResult_ChannelFeaturesDecodeErrorZ _res_conv = *(LDKCResult_ChannelFeaturesDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_ClosingSignedDecodeErrorZ_free(_res_conv);
-}
-
-static inline uint64_t CResult_ClosingSignedDecodeErrorZ_clone_ptr(LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ClosingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedDecodeErrorZ), "LDKCResult_ClosingSignedDecodeErrorZ");
-       *ret_conv = CResult_ClosingSignedDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
-}
-int64_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ClosingSignedDecodeErrorZ* arg_conv = (LDKCResult_ClosingSignedDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ClosingSignedDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-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 (uint64_t)ret_conv;
+       CResult_ChannelFeaturesDecodeErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_ok(uint32_t o) {
-       LDKClosingSignedFeeRange o_conv;
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = ClosingSignedFeeRange_clone(&o_conv);
-       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ), "LDKCResult_ClosingSignedFeeRangeDecodeErrorZ");
-       *ret_conv = CResult_ClosingSignedFeeRangeDecodeErrorZ_ok(o_conv);
+       o_conv = NodeFeatures_clone(&o_conv);
+       LDKCResult_NodeFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeFeaturesDecodeErrorZ), "LDKCResult_NodeFeaturesDecodeErrorZ");
+       *ret_conv = CResult_NodeFeaturesDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ), "LDKCResult_ClosingSignedFeeRangeDecodeErrorZ");
-       *ret_conv = CResult_ClosingSignedFeeRangeDecodeErrorZ_err(e_conv);
+       LDKCResult_NodeFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeFeaturesDecodeErrorZ), "LDKCResult_NodeFeaturesDecodeErrorZ");
+       *ret_conv = CResult_NodeFeaturesDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* o_conv = (LDKCResult_ClosingSignedFeeRangeDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ClosingSignedFeeRangeDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_NodeFeaturesDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_NodeFeaturesDecodeErrorZ* o_conv = (LDKCResult_NodeFeaturesDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_NodeFeaturesDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_NodeFeaturesDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ _res_conv = *(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ*)(_res_ptr);
+       LDKCResult_NodeFeaturesDecodeErrorZ _res_conv = *(LDKCResult_NodeFeaturesDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_ClosingSignedFeeRangeDecodeErrorZ_free(_res_conv);
-}
-
-static inline uint64_t CResult_ClosingSignedFeeRangeDecodeErrorZ_clone_ptr(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ), "LDKCResult_ClosingSignedFeeRangeDecodeErrorZ");
-       *ret_conv = CResult_ClosingSignedFeeRangeDecodeErrorZ_clone(arg);
-       return (uint64_t)ret_conv;
-}
-int64_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* arg_conv = (LDKCResult_ClosingSignedFeeRangeDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ClosingSignedFeeRangeDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_clone(uint32_t orig) {
-       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* orig_conv = (LDKCResult_ClosingSignedFeeRangeDecodeErrorZ*)(orig & ~1);
-       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ), "LDKCResult_ClosingSignedFeeRangeDecodeErrorZ");
-       *ret_conv = CResult_ClosingSignedFeeRangeDecodeErrorZ_clone(orig_conv);
-       return (uint64_t)ret_conv;
+       CResult_NodeFeaturesDecodeErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_CommitmentSignedDecodeErrorZ_ok(uint32_t o) {
-       LDKCommitmentSigned o_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceFeaturesDecodeErrorZ_ok(uint32_t o) {
+       LDKInvoiceFeatures o_conv;
        o_conv.inner = (void*)(o & (~1));
        o_conv.is_owned = (o & 1) || (o == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = InvoiceFeatures_clone(&o_conv);
+       LDKCResult_InvoiceFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ), "LDKCResult_InvoiceFeaturesDecodeErrorZ");
+       *ret_conv = CResult_InvoiceFeaturesDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_CommitmentSignedDecodeErrorZ_err(uint32_t e) {
+uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceFeaturesDecodeErrorZ_err(uint32_t e) {
        LDKDecodeError e_conv;
        e_conv.inner = (void*)(e & (~1));
        e_conv.is_owned = (e & 1) || (e == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_CommitmentSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentSignedDecodeErrorZ), "LDKCResult_CommitmentSignedDecodeErrorZ");
-       *ret_conv = CResult_CommitmentSignedDecodeErrorZ_err(e_conv);
+       LDKCResult_InvoiceFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ), "LDKCResult_InvoiceFeaturesDecodeErrorZ");
+       *ret_conv = CResult_InvoiceFeaturesDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_CommitmentSignedDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_CommitmentSignedDecodeErrorZ* o_conv = (LDKCResult_CommitmentSignedDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_CommitmentSignedDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_InvoiceFeaturesDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_InvoiceFeaturesDecodeErrorZ* o_conv = (LDKCResult_InvoiceFeaturesDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_InvoiceFeaturesDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_CommitmentSignedDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_InvoiceFeaturesDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_CommitmentSignedDecodeErrorZ _res_conv = *(LDKCResult_CommitmentSignedDecodeErrorZ*)(_res_ptr);
+       LDKCResult_InvoiceFeaturesDecodeErrorZ _res_conv = *(LDKCResult_InvoiceFeaturesDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_CommitmentSignedDecodeErrorZ_free(_res_conv);
+       CResult_InvoiceFeaturesDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_CommitmentSignedDecodeErrorZ_clone_ptr(LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_CommitmentSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentSignedDecodeErrorZ), "LDKCResult_CommitmentSignedDecodeErrorZ");
-       *ret_conv = CResult_CommitmentSignedDecodeErrorZ_clone(arg);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelTypeFeaturesDecodeErrorZ_ok(uint32_t o) {
+       LDKChannelTypeFeatures o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = (o & 1) || (o == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = ChannelTypeFeatures_clone(&o_conv);
+       LDKCResult_ChannelTypeFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ), "LDKCResult_ChannelTypeFeaturesDecodeErrorZ");
+       *ret_conv = CResult_ChannelTypeFeaturesDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_CommitmentSignedDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_CommitmentSignedDecodeErrorZ* arg_conv = (LDKCResult_CommitmentSignedDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_CommitmentSignedDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
-}
 
-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);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelTypeFeaturesDecodeErrorZ_err(uint32_t e) {
+       LDKDecodeError e_conv;
+       e_conv.inner = (void*)(e & (~1));
+       e_conv.is_owned = (e & 1) || (e == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_ChannelTypeFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ), "LDKCResult_ChannelTypeFeaturesDecodeErrorZ");
+       *ret_conv = CResult_ChannelTypeFeaturesDecodeErrorZ_err(e_conv);
        return (uint64_t)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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelTypeFeaturesDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ChannelTypeFeaturesDecodeErrorZ* o_conv = (LDKCResult_ChannelTypeFeaturesDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ChannelTypeFeaturesDecodeErrorZ_is_ok(o_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_CResult_ChannelTypeFeaturesDecodeErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_ChannelTypeFeaturesDecodeErrorZ _res_conv = *(LDKCResult_ChannelTypeFeaturesDecodeErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_ChannelTypeFeaturesDecodeErrorZ_free(_res_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NetAddressDecodeErrorZ_ok(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKNetAddress o_conv = *(LDKNetAddress*)(o_ptr);
+       o_conv = NetAddress_clone((LDKNetAddress*)(((uint64_t)o) & ~1));
+       LDKCResult_NetAddressDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetAddressDecodeErrorZ), "LDKCResult_NetAddressDecodeErrorZ");
+       *ret_conv = CResult_NetAddressDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_FundingCreatedDecodeErrorZ_err(uint32_t e) {
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NetAddressDecodeErrorZ_err(uint32_t e) {
        LDKDecodeError e_conv;
        e_conv.inner = (void*)(e & (~1));
        e_conv.is_owned = (e & 1) || (e == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_FundingCreatedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingCreatedDecodeErrorZ), "LDKCResult_FundingCreatedDecodeErrorZ");
-       *ret_conv = CResult_FundingCreatedDecodeErrorZ_err(e_conv);
+       LDKCResult_NetAddressDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetAddressDecodeErrorZ), "LDKCResult_NetAddressDecodeErrorZ");
+       *ret_conv = CResult_NetAddressDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_FundingCreatedDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_FundingCreatedDecodeErrorZ* o_conv = (LDKCResult_FundingCreatedDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_FundingCreatedDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_NetAddressDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_NetAddressDecodeErrorZ* o_conv = (LDKCResult_NetAddressDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_NetAddressDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_FundingCreatedDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_NetAddressDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_FundingCreatedDecodeErrorZ _res_conv = *(LDKCResult_FundingCreatedDecodeErrorZ*)(_res_ptr);
+       LDKCResult_NetAddressDecodeErrorZ _res_conv = *(LDKCResult_NetAddressDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_FundingCreatedDecodeErrorZ_free(_res_conv);
+       CResult_NetAddressDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_FundingCreatedDecodeErrorZ_clone_ptr(LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_FundingCreatedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingCreatedDecodeErrorZ), "LDKCResult_FundingCreatedDecodeErrorZ");
-       *ret_conv = CResult_FundingCreatedDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_NetAddressDecodeErrorZ_clone_ptr(LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_NetAddressDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetAddressDecodeErrorZ), "LDKCResult_NetAddressDecodeErrorZ");
+       *ret_conv = CResult_NetAddressDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_FundingCreatedDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_FundingCreatedDecodeErrorZ* arg_conv = (LDKCResult_FundingCreatedDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_FundingCreatedDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_NetAddressDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_NetAddressDecodeErrorZ* arg_conv = (LDKCResult_NetAddressDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_NetAddressDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NetAddressDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_NetAddressDecodeErrorZ* orig_conv = (LDKCResult_NetAddressDecodeErrorZ*)(orig & ~1);
+       LDKCResult_NetAddressDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetAddressDecodeErrorZ), "LDKCResult_NetAddressDecodeErrorZ");
+       *ret_conv = CResult_NetAddressDecodeErrorZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_FundingSignedDecodeErrorZ_ok(uint32_t o) {
-       LDKFundingSigned o_conv;
+void  __attribute__((visibility("default"))) TS_CVec_UpdateAddHTLCZ_free(uint32_tArray _res) {
+       LDKCVec_UpdateAddHTLCZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKUpdateAddHTLC), "LDKCVec_UpdateAddHTLCZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t p = 0; p < _res_constr.datalen; p++) {
+               uint32_t _res_conv_15 = _res_vals[p];
+               LDKUpdateAddHTLC _res_conv_15_conv;
+               _res_conv_15_conv.inner = (void*)(_res_conv_15 & (~1));
+               _res_conv_15_conv.is_owned = (_res_conv_15 & 1) || (_res_conv_15 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_15_conv);
+               _res_constr.data[p] = _res_conv_15_conv;
+       }
+       CVec_UpdateAddHTLCZ_free(_res_constr);
+}
+
+void  __attribute__((visibility("default"))) TS_CVec_UpdateFulfillHTLCZ_free(uint32_tArray _res) {
+       LDKCVec_UpdateFulfillHTLCZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKUpdateFulfillHTLC), "LDKCVec_UpdateFulfillHTLCZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t t = 0; t < _res_constr.datalen; t++) {
+               uint32_t _res_conv_19 = _res_vals[t];
+               LDKUpdateFulfillHTLC _res_conv_19_conv;
+               _res_conv_19_conv.inner = (void*)(_res_conv_19 & (~1));
+               _res_conv_19_conv.is_owned = (_res_conv_19 & 1) || (_res_conv_19 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_19_conv);
+               _res_constr.data[t] = _res_conv_19_conv;
+       }
+       CVec_UpdateFulfillHTLCZ_free(_res_constr);
+}
+
+void  __attribute__((visibility("default"))) TS_CVec_UpdateFailHTLCZ_free(uint32_tArray _res) {
+       LDKCVec_UpdateFailHTLCZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKUpdateFailHTLC), "LDKCVec_UpdateFailHTLCZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t q = 0; q < _res_constr.datalen; q++) {
+               uint32_t _res_conv_16 = _res_vals[q];
+               LDKUpdateFailHTLC _res_conv_16_conv;
+               _res_conv_16_conv.inner = (void*)(_res_conv_16 & (~1));
+               _res_conv_16_conv.is_owned = (_res_conv_16 & 1) || (_res_conv_16 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_16_conv);
+               _res_constr.data[q] = _res_conv_16_conv;
+       }
+       CVec_UpdateFailHTLCZ_free(_res_constr);
+}
+
+void  __attribute__((visibility("default"))) TS_CVec_UpdateFailMalformedHTLCZ_free(uint32_tArray _res) {
+       LDKCVec_UpdateFailMalformedHTLCZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKUpdateFailMalformedHTLC), "LDKCVec_UpdateFailMalformedHTLCZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t z = 0; z < _res_constr.datalen; z++) {
+               uint32_t _res_conv_25 = _res_vals[z];
+               LDKUpdateFailMalformedHTLC _res_conv_25_conv;
+               _res_conv_25_conv.inner = (void*)(_res_conv_25 & (~1));
+               _res_conv_25_conv.is_owned = (_res_conv_25 & 1) || (_res_conv_25 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_25_conv);
+               _res_constr.data[z] = _res_conv_25_conv;
+       }
+       CVec_UpdateFailMalformedHTLCZ_free(_res_constr);
+}
+
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = AcceptChannel_clone(&o_conv);
+       LDKCResult_AcceptChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AcceptChannelDecodeErrorZ), "LDKCResult_AcceptChannelDecodeErrorZ");
+       *ret_conv = CResult_AcceptChannelDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_FundingSignedDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_FundingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingSignedDecodeErrorZ), "LDKCResult_FundingSignedDecodeErrorZ");
-       *ret_conv = CResult_FundingSignedDecodeErrorZ_err(e_conv);
+       LDKCResult_AcceptChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AcceptChannelDecodeErrorZ), "LDKCResult_AcceptChannelDecodeErrorZ");
+       *ret_conv = CResult_AcceptChannelDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_FundingSignedDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_FundingSignedDecodeErrorZ* o_conv = (LDKCResult_FundingSignedDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_FundingSignedDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_AcceptChannelDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_AcceptChannelDecodeErrorZ* o_conv = (LDKCResult_AcceptChannelDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_AcceptChannelDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_FundingSignedDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_AcceptChannelDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_FundingSignedDecodeErrorZ _res_conv = *(LDKCResult_FundingSignedDecodeErrorZ*)(_res_ptr);
+       LDKCResult_AcceptChannelDecodeErrorZ _res_conv = *(LDKCResult_AcceptChannelDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_FundingSignedDecodeErrorZ_free(_res_conv);
+       CResult_AcceptChannelDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_FundingSignedDecodeErrorZ_clone_ptr(LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_FundingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingSignedDecodeErrorZ), "LDKCResult_FundingSignedDecodeErrorZ");
-       *ret_conv = CResult_FundingSignedDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_AcceptChannelDecodeErrorZ_clone_ptr(LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_AcceptChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AcceptChannelDecodeErrorZ), "LDKCResult_AcceptChannelDecodeErrorZ");
+       *ret_conv = CResult_AcceptChannelDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_FundingSignedDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_FundingSignedDecodeErrorZ* arg_conv = (LDKCResult_FundingSignedDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_FundingSignedDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_AcceptChannelDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_AcceptChannelDecodeErrorZ* arg_conv = (LDKCResult_AcceptChannelDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_AcceptChannelDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_FundingLockedDecodeErrorZ_ok(uint32_t o) {
-       LDKFundingLocked o_conv;
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = AnnouncementSignatures_clone(&o_conv);
+       LDKCResult_AnnouncementSignaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ), "LDKCResult_AnnouncementSignaturesDecodeErrorZ");
+       *ret_conv = CResult_AnnouncementSignaturesDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_FundingLockedDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_FundingLockedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingLockedDecodeErrorZ), "LDKCResult_FundingLockedDecodeErrorZ");
-       *ret_conv = CResult_FundingLockedDecodeErrorZ_err(e_conv);
+       LDKCResult_AnnouncementSignaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ), "LDKCResult_AnnouncementSignaturesDecodeErrorZ");
+       *ret_conv = CResult_AnnouncementSignaturesDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_FundingLockedDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_FundingLockedDecodeErrorZ* o_conv = (LDKCResult_FundingLockedDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_FundingLockedDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_AnnouncementSignaturesDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_AnnouncementSignaturesDecodeErrorZ* o_conv = (LDKCResult_AnnouncementSignaturesDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_AnnouncementSignaturesDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_FundingLockedDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_AnnouncementSignaturesDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_FundingLockedDecodeErrorZ _res_conv = *(LDKCResult_FundingLockedDecodeErrorZ*)(_res_ptr);
+       LDKCResult_AnnouncementSignaturesDecodeErrorZ _res_conv = *(LDKCResult_AnnouncementSignaturesDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_FundingLockedDecodeErrorZ_free(_res_conv);
+       CResult_AnnouncementSignaturesDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_FundingLockedDecodeErrorZ_clone_ptr(LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_FundingLockedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingLockedDecodeErrorZ), "LDKCResult_FundingLockedDecodeErrorZ");
-       *ret_conv = CResult_FundingLockedDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_AnnouncementSignaturesDecodeErrorZ_clone_ptr(LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_AnnouncementSignaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ), "LDKCResult_AnnouncementSignaturesDecodeErrorZ");
+       *ret_conv = CResult_AnnouncementSignaturesDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_FundingLockedDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_FundingLockedDecodeErrorZ* arg_conv = (LDKCResult_FundingLockedDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_FundingLockedDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_AnnouncementSignaturesDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_AnnouncementSignaturesDecodeErrorZ* arg_conv = (LDKCResult_AnnouncementSignaturesDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_AnnouncementSignaturesDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InitDecodeErrorZ_ok(uint32_t o) {
-       LDKInit o_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelReestablishDecodeErrorZ_ok(uint32_t o) {
+       LDKChannelReestablish o_conv;
        o_conv.inner = (void*)(o & (~1));
        o_conv.is_owned = (o & 1) || (o == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       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 = ChannelReestablish_clone(&o_conv);
+       LDKCResult_ChannelReestablishDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelReestablishDecodeErrorZ), "LDKCResult_ChannelReestablishDecodeErrorZ");
+       *ret_conv = CResult_ChannelReestablishDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InitDecodeErrorZ_err(uint32_t e) {
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelReestablishDecodeErrorZ_err(uint32_t e) {
        LDKDecodeError e_conv;
        e_conv.inner = (void*)(e & (~1));
        e_conv.is_owned = (e & 1) || (e == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_InitDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitDecodeErrorZ), "LDKCResult_InitDecodeErrorZ");
-       *ret_conv = CResult_InitDecodeErrorZ_err(e_conv);
+       LDKCResult_ChannelReestablishDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelReestablishDecodeErrorZ), "LDKCResult_ChannelReestablishDecodeErrorZ");
+       *ret_conv = CResult_ChannelReestablishDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_InitDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_InitDecodeErrorZ* o_conv = (LDKCResult_InitDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_InitDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelReestablishDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ChannelReestablishDecodeErrorZ* o_conv = (LDKCResult_ChannelReestablishDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ChannelReestablishDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_InitDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ChannelReestablishDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_InitDecodeErrorZ _res_conv = *(LDKCResult_InitDecodeErrorZ*)(_res_ptr);
+       LDKCResult_ChannelReestablishDecodeErrorZ _res_conv = *(LDKCResult_ChannelReestablishDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_InitDecodeErrorZ_free(_res_conv);
+       CResult_ChannelReestablishDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_InitDecodeErrorZ_clone_ptr(LDKCResult_InitDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_InitDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitDecodeErrorZ), "LDKCResult_InitDecodeErrorZ");
-       *ret_conv = CResult_InitDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_ChannelReestablishDecodeErrorZ_clone_ptr(LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_ChannelReestablishDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelReestablishDecodeErrorZ), "LDKCResult_ChannelReestablishDecodeErrorZ");
+       *ret_conv = CResult_ChannelReestablishDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_InitDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_InitDecodeErrorZ* arg_conv = (LDKCResult_InitDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_InitDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_ChannelReestablishDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ChannelReestablishDecodeErrorZ* arg_conv = (LDKCResult_ChannelReestablishDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_ChannelReestablishDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_OpenChannelDecodeErrorZ_ok(uint32_t o) {
-       LDKOpenChannel o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = OpenChannel_clone(&o_conv);
-       LDKCResult_OpenChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OpenChannelDecodeErrorZ), "LDKCResult_OpenChannelDecodeErrorZ");
-       *ret_conv = CResult_OpenChannelDecodeErrorZ_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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_OpenChannelDecodeErrorZ_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_OpenChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OpenChannelDecodeErrorZ), "LDKCResult_OpenChannelDecodeErrorZ");
-       *ret_conv = CResult_OpenChannelDecodeErrorZ_err(e_conv);
+       LDKCResult_ClosingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedDecodeErrorZ), "LDKCResult_ClosingSignedDecodeErrorZ");
+       *ret_conv = CResult_ClosingSignedDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_OpenChannelDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_OpenChannelDecodeErrorZ* o_conv = (LDKCResult_OpenChannelDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_OpenChannelDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ClosingSignedDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ClosingSignedDecodeErrorZ* o_conv = (LDKCResult_ClosingSignedDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ClosingSignedDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_OpenChannelDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ClosingSignedDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_OpenChannelDecodeErrorZ _res_conv = *(LDKCResult_OpenChannelDecodeErrorZ*)(_res_ptr);
+       LDKCResult_ClosingSignedDecodeErrorZ _res_conv = *(LDKCResult_ClosingSignedDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_OpenChannelDecodeErrorZ_free(_res_conv);
+       CResult_ClosingSignedDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_OpenChannelDecodeErrorZ_clone_ptr(LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_OpenChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OpenChannelDecodeErrorZ), "LDKCResult_OpenChannelDecodeErrorZ");
-       *ret_conv = CResult_OpenChannelDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_ClosingSignedDecodeErrorZ_clone_ptr(LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_ClosingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedDecodeErrorZ), "LDKCResult_ClosingSignedDecodeErrorZ");
+       *ret_conv = CResult_ClosingSignedDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_OpenChannelDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_OpenChannelDecodeErrorZ* arg_conv = (LDKCResult_OpenChannelDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_OpenChannelDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ClosingSignedDecodeErrorZ* arg_conv = (LDKCResult_ClosingSignedDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_ClosingSignedDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RevokeAndACKDecodeErrorZ_ok(uint32_t o) {
-       LDKRevokeAndACK o_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_ok(uint32_t o) {
+       LDKClosingSignedFeeRange o_conv;
        o_conv.inner = (void*)(o & (~1));
        o_conv.is_owned = (o & 1) || (o == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = ClosingSignedFeeRange_clone(&o_conv);
+       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ), "LDKCResult_ClosingSignedFeeRangeDecodeErrorZ");
+       *ret_conv = CResult_ClosingSignedFeeRangeDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_RevokeAndACKDecodeErrorZ_err(uint32_t e) {
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_err(uint32_t e) {
        LDKDecodeError e_conv;
        e_conv.inner = (void*)(e & (~1));
        e_conv.is_owned = (e & 1) || (e == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_RevokeAndACKDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RevokeAndACKDecodeErrorZ), "LDKCResult_RevokeAndACKDecodeErrorZ");
-       *ret_conv = CResult_RevokeAndACKDecodeErrorZ_err(e_conv);
+       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ), "LDKCResult_ClosingSignedFeeRangeDecodeErrorZ");
+       *ret_conv = CResult_ClosingSignedFeeRangeDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_RevokeAndACKDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_RevokeAndACKDecodeErrorZ* o_conv = (LDKCResult_RevokeAndACKDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_RevokeAndACKDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* o_conv = (LDKCResult_ClosingSignedFeeRangeDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ClosingSignedFeeRangeDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_RevokeAndACKDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_RevokeAndACKDecodeErrorZ _res_conv = *(LDKCResult_RevokeAndACKDecodeErrorZ*)(_res_ptr);
+       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ _res_conv = *(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_RevokeAndACKDecodeErrorZ_free(_res_conv);
+       CResult_ClosingSignedFeeRangeDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_RevokeAndACKDecodeErrorZ_clone_ptr(LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_RevokeAndACKDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RevokeAndACKDecodeErrorZ), "LDKCResult_RevokeAndACKDecodeErrorZ");
-       *ret_conv = CResult_RevokeAndACKDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_ClosingSignedFeeRangeDecodeErrorZ_clone_ptr(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ), "LDKCResult_ClosingSignedFeeRangeDecodeErrorZ");
+       *ret_conv = CResult_ClosingSignedFeeRangeDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_RevokeAndACKDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_RevokeAndACKDecodeErrorZ* arg_conv = (LDKCResult_RevokeAndACKDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_RevokeAndACKDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* arg_conv = (LDKCResult_ClosingSignedFeeRangeDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_ClosingSignedFeeRangeDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* orig_conv = (LDKCResult_ClosingSignedFeeRangeDecodeErrorZ*)(orig & ~1);
+       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ), "LDKCResult_ClosingSignedFeeRangeDecodeErrorZ");
+       *ret_conv = CResult_ClosingSignedFeeRangeDecodeErrorZ_clone(orig_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownDecodeErrorZ_ok(uint32_t o) {
-       LDKShutdown o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = CommitmentSigned_clone(&o_conv);
+       LDKCResult_CommitmentSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentSignedDecodeErrorZ), "LDKCResult_CommitmentSignedDecodeErrorZ");
+       *ret_conv = CResult_CommitmentSignedDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ShutdownDecodeErrorZ_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ShutdownDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownDecodeErrorZ), "LDKCResult_ShutdownDecodeErrorZ");
-       *ret_conv = CResult_ShutdownDecodeErrorZ_err(e_conv);
+       LDKCResult_CommitmentSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentSignedDecodeErrorZ), "LDKCResult_CommitmentSignedDecodeErrorZ");
+       *ret_conv = CResult_CommitmentSignedDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ShutdownDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ShutdownDecodeErrorZ* o_conv = (LDKCResult_ShutdownDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ShutdownDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_CommitmentSignedDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_CommitmentSignedDecodeErrorZ* o_conv = (LDKCResult_CommitmentSignedDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_CommitmentSignedDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ShutdownDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_CommitmentSignedDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_ShutdownDecodeErrorZ _res_conv = *(LDKCResult_ShutdownDecodeErrorZ*)(_res_ptr);
+       LDKCResult_CommitmentSignedDecodeErrorZ _res_conv = *(LDKCResult_CommitmentSignedDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_ShutdownDecodeErrorZ_free(_res_conv);
+       CResult_CommitmentSignedDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_ShutdownDecodeErrorZ_clone_ptr(LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ShutdownDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownDecodeErrorZ), "LDKCResult_ShutdownDecodeErrorZ");
-       *ret_conv = CResult_ShutdownDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_CommitmentSignedDecodeErrorZ_clone_ptr(LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_CommitmentSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentSignedDecodeErrorZ), "LDKCResult_CommitmentSignedDecodeErrorZ");
+       *ret_conv = CResult_CommitmentSignedDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_ShutdownDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ShutdownDecodeErrorZ* arg_conv = (LDKCResult_ShutdownDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ShutdownDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_CommitmentSignedDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_CommitmentSignedDecodeErrorZ* arg_conv = (LDKCResult_CommitmentSignedDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_CommitmentSignedDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFailHTLCDecodeErrorZ_ok(uint32_t o) {
-       LDKUpdateFailHTLC o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = FundingCreated_clone(&o_conv);
+       LDKCResult_FundingCreatedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingCreatedDecodeErrorZ), "LDKCResult_FundingCreatedDecodeErrorZ");
+       *ret_conv = CResult_FundingCreatedDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFailHTLCDecodeErrorZ_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_UpdateFailHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ), "LDKCResult_UpdateFailHTLCDecodeErrorZ");
-       *ret_conv = CResult_UpdateFailHTLCDecodeErrorZ_err(e_conv);
+       LDKCResult_FundingCreatedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingCreatedDecodeErrorZ), "LDKCResult_FundingCreatedDecodeErrorZ");
+       *ret_conv = CResult_FundingCreatedDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_UpdateFailHTLCDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_UpdateFailHTLCDecodeErrorZ* o_conv = (LDKCResult_UpdateFailHTLCDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_UpdateFailHTLCDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_FundingCreatedDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_FundingCreatedDecodeErrorZ* o_conv = (LDKCResult_FundingCreatedDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_FundingCreatedDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_UpdateFailHTLCDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_FundingCreatedDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_UpdateFailHTLCDecodeErrorZ _res_conv = *(LDKCResult_UpdateFailHTLCDecodeErrorZ*)(_res_ptr);
+       LDKCResult_FundingCreatedDecodeErrorZ _res_conv = *(LDKCResult_FundingCreatedDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_UpdateFailHTLCDecodeErrorZ_free(_res_conv);
+       CResult_FundingCreatedDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_UpdateFailHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_UpdateFailHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ), "LDKCResult_UpdateFailHTLCDecodeErrorZ");
-       *ret_conv = CResult_UpdateFailHTLCDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_FundingCreatedDecodeErrorZ_clone_ptr(LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_FundingCreatedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingCreatedDecodeErrorZ), "LDKCResult_FundingCreatedDecodeErrorZ");
+       *ret_conv = CResult_FundingCreatedDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_UpdateFailHTLCDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_UpdateFailHTLCDecodeErrorZ* arg_conv = (LDKCResult_UpdateFailHTLCDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_UpdateFailHTLCDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_FundingCreatedDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_FundingCreatedDecodeErrorZ* arg_conv = (LDKCResult_FundingCreatedDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_FundingCreatedDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_ok(uint32_t o) {
-       LDKUpdateFailMalformedHTLC o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = FundingSigned_clone(&o_conv);
+       LDKCResult_FundingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingSignedDecodeErrorZ), "LDKCResult_FundingSignedDecodeErrorZ");
+       *ret_conv = CResult_FundingSignedDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ), "LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ");
-       *ret_conv = CResult_UpdateFailMalformedHTLCDecodeErrorZ_err(e_conv);
+       LDKCResult_FundingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingSignedDecodeErrorZ), "LDKCResult_FundingSignedDecodeErrorZ");
+       *ret_conv = CResult_FundingSignedDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* o_conv = (LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_UpdateFailMalformedHTLCDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_FundingSignedDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_FundingSignedDecodeErrorZ* o_conv = (LDKCResult_FundingSignedDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_FundingSignedDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_FundingSignedDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ _res_conv = *(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ*)(_res_ptr);
+       LDKCResult_FundingSignedDecodeErrorZ _res_conv = *(LDKCResult_FundingSignedDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(_res_conv);
+       CResult_FundingSignedDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ), "LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ");
-       *ret_conv = CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_FundingSignedDecodeErrorZ_clone_ptr(LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_FundingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingSignedDecodeErrorZ), "LDKCResult_FundingSignedDecodeErrorZ");
+       *ret_conv = CResult_FundingSignedDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* arg_conv = (LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_FundingSignedDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_FundingSignedDecodeErrorZ* arg_conv = (LDKCResult_FundingSignedDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_FundingSignedDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFeeDecodeErrorZ_ok(uint32_t o) {
-       LDKUpdateFee o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = FundingLocked_clone(&o_conv);
+       LDKCResult_FundingLockedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingLockedDecodeErrorZ), "LDKCResult_FundingLockedDecodeErrorZ");
+       *ret_conv = CResult_FundingLockedDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFeeDecodeErrorZ_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_UpdateFeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFeeDecodeErrorZ), "LDKCResult_UpdateFeeDecodeErrorZ");
-       *ret_conv = CResult_UpdateFeeDecodeErrorZ_err(e_conv);
+       LDKCResult_FundingLockedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingLockedDecodeErrorZ), "LDKCResult_FundingLockedDecodeErrorZ");
+       *ret_conv = CResult_FundingLockedDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_UpdateFeeDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_UpdateFeeDecodeErrorZ* o_conv = (LDKCResult_UpdateFeeDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_UpdateFeeDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_FundingLockedDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_FundingLockedDecodeErrorZ* o_conv = (LDKCResult_FundingLockedDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_FundingLockedDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_UpdateFeeDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_FundingLockedDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_UpdateFeeDecodeErrorZ _res_conv = *(LDKCResult_UpdateFeeDecodeErrorZ*)(_res_ptr);
+       LDKCResult_FundingLockedDecodeErrorZ _res_conv = *(LDKCResult_FundingLockedDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_UpdateFeeDecodeErrorZ_free(_res_conv);
+       CResult_FundingLockedDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_UpdateFeeDecodeErrorZ_clone_ptr(LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_UpdateFeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFeeDecodeErrorZ), "LDKCResult_UpdateFeeDecodeErrorZ");
-       *ret_conv = CResult_UpdateFeeDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_FundingLockedDecodeErrorZ_clone_ptr(LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_FundingLockedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingLockedDecodeErrorZ), "LDKCResult_FundingLockedDecodeErrorZ");
+       *ret_conv = CResult_FundingLockedDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_UpdateFeeDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_UpdateFeeDecodeErrorZ* arg_conv = (LDKCResult_UpdateFeeDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_UpdateFeeDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_FundingLockedDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_FundingLockedDecodeErrorZ* arg_conv = (LDKCResult_FundingLockedDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_FundingLockedDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFulfillHTLCDecodeErrorZ_ok(uint32_t o) {
-       LDKUpdateFulfillHTLC o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = Init_clone(&o_conv);
+       LDKCResult_InitDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitDecodeErrorZ), "LDKCResult_InitDecodeErrorZ");
+       *ret_conv = CResult_InitDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateFulfillHTLCDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_UpdateFulfillHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ), "LDKCResult_UpdateFulfillHTLCDecodeErrorZ");
-       *ret_conv = CResult_UpdateFulfillHTLCDecodeErrorZ_err(e_conv);
+       LDKCResult_InitDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitDecodeErrorZ), "LDKCResult_InitDecodeErrorZ");
+       *ret_conv = CResult_InitDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_UpdateFulfillHTLCDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_UpdateFulfillHTLCDecodeErrorZ* o_conv = (LDKCResult_UpdateFulfillHTLCDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_UpdateFulfillHTLCDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_InitDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_InitDecodeErrorZ* o_conv = (LDKCResult_InitDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_InitDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_UpdateFulfillHTLCDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_InitDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_UpdateFulfillHTLCDecodeErrorZ _res_conv = *(LDKCResult_UpdateFulfillHTLCDecodeErrorZ*)(_res_ptr);
+       LDKCResult_InitDecodeErrorZ _res_conv = *(LDKCResult_InitDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_UpdateFulfillHTLCDecodeErrorZ_free(_res_conv);
+       CResult_InitDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_UpdateFulfillHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_UpdateFulfillHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ), "LDKCResult_UpdateFulfillHTLCDecodeErrorZ");
-       *ret_conv = CResult_UpdateFulfillHTLCDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_InitDecodeErrorZ_clone_ptr(LDKCResult_InitDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_InitDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitDecodeErrorZ), "LDKCResult_InitDecodeErrorZ");
+       *ret_conv = CResult_InitDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_UpdateFulfillHTLCDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_UpdateFulfillHTLCDecodeErrorZ* arg_conv = (LDKCResult_UpdateFulfillHTLCDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_UpdateFulfillHTLCDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_InitDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_InitDecodeErrorZ* arg_conv = (LDKCResult_InitDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_InitDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateAddHTLCDecodeErrorZ_ok(uint32_t o) {
-       LDKUpdateAddHTLC o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = OpenChannel_clone(&o_conv);
+       LDKCResult_OpenChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OpenChannelDecodeErrorZ), "LDKCResult_OpenChannelDecodeErrorZ");
+       *ret_conv = CResult_OpenChannelDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UpdateAddHTLCDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_UpdateAddHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ), "LDKCResult_UpdateAddHTLCDecodeErrorZ");
-       *ret_conv = CResult_UpdateAddHTLCDecodeErrorZ_err(e_conv);
+       LDKCResult_OpenChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OpenChannelDecodeErrorZ), "LDKCResult_OpenChannelDecodeErrorZ");
+       *ret_conv = CResult_OpenChannelDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_UpdateAddHTLCDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_UpdateAddHTLCDecodeErrorZ* o_conv = (LDKCResult_UpdateAddHTLCDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_UpdateAddHTLCDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_OpenChannelDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_OpenChannelDecodeErrorZ* o_conv = (LDKCResult_OpenChannelDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_OpenChannelDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_UpdateAddHTLCDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_OpenChannelDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_UpdateAddHTLCDecodeErrorZ _res_conv = *(LDKCResult_UpdateAddHTLCDecodeErrorZ*)(_res_ptr);
+       LDKCResult_OpenChannelDecodeErrorZ _res_conv = *(LDKCResult_OpenChannelDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_UpdateAddHTLCDecodeErrorZ_free(_res_conv);
+       CResult_OpenChannelDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_UpdateAddHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_UpdateAddHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ), "LDKCResult_UpdateAddHTLCDecodeErrorZ");
-       *ret_conv = CResult_UpdateAddHTLCDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_OpenChannelDecodeErrorZ_clone_ptr(LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_OpenChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OpenChannelDecodeErrorZ), "LDKCResult_OpenChannelDecodeErrorZ");
+       *ret_conv = CResult_OpenChannelDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_UpdateAddHTLCDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_UpdateAddHTLCDecodeErrorZ* arg_conv = (LDKCResult_UpdateAddHTLCDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_UpdateAddHTLCDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_OpenChannelDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_OpenChannelDecodeErrorZ* arg_conv = (LDKCResult_OpenChannelDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_OpenChannelDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PingDecodeErrorZ_ok(uint32_t o) {
-       LDKPing 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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       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 = RevokeAndACK_clone(&o_conv);
+       LDKCResult_RevokeAndACKDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RevokeAndACKDecodeErrorZ), "LDKCResult_RevokeAndACKDecodeErrorZ");
+       *ret_conv = CResult_RevokeAndACKDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PingDecodeErrorZ_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       LDKCResult_RevokeAndACKDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RevokeAndACKDecodeErrorZ), "LDKCResult_RevokeAndACKDecodeErrorZ");
+       *ret_conv = CResult_RevokeAndACKDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_PingDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_PingDecodeErrorZ* o_conv = (LDKCResult_PingDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_PingDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_RevokeAndACKDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_RevokeAndACKDecodeErrorZ* o_conv = (LDKCResult_RevokeAndACKDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_RevokeAndACKDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_PingDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_RevokeAndACKDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_PingDecodeErrorZ _res_conv = *(LDKCResult_PingDecodeErrorZ*)(_res_ptr);
+       LDKCResult_RevokeAndACKDecodeErrorZ _res_conv = *(LDKCResult_RevokeAndACKDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_PingDecodeErrorZ_free(_res_conv);
+       CResult_RevokeAndACKDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_PingDecodeErrorZ_clone_ptr(LDKCResult_PingDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_PingDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PingDecodeErrorZ), "LDKCResult_PingDecodeErrorZ");
-       *ret_conv = CResult_PingDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_RevokeAndACKDecodeErrorZ_clone_ptr(LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_RevokeAndACKDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RevokeAndACKDecodeErrorZ), "LDKCResult_RevokeAndACKDecodeErrorZ");
+       *ret_conv = CResult_RevokeAndACKDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_PingDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_PingDecodeErrorZ* arg_conv = (LDKCResult_PingDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_PingDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_RevokeAndACKDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_RevokeAndACKDecodeErrorZ* arg_conv = (LDKCResult_RevokeAndACKDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_RevokeAndACKDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PongDecodeErrorZ_ok(uint32_t o) {
-       LDKPong o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       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 = Shutdown_clone(&o_conv);
+       LDKCResult_ShutdownDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownDecodeErrorZ), "LDKCResult_ShutdownDecodeErrorZ");
+       *ret_conv = CResult_ShutdownDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_PongDecodeErrorZ_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       LDKCResult_ShutdownDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownDecodeErrorZ), "LDKCResult_ShutdownDecodeErrorZ");
+       *ret_conv = CResult_ShutdownDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_PongDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_PongDecodeErrorZ* o_conv = (LDKCResult_PongDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_PongDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ShutdownDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ShutdownDecodeErrorZ* o_conv = (LDKCResult_ShutdownDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ShutdownDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_PongDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ShutdownDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_PongDecodeErrorZ _res_conv = *(LDKCResult_PongDecodeErrorZ*)(_res_ptr);
+       LDKCResult_ShutdownDecodeErrorZ _res_conv = *(LDKCResult_ShutdownDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_PongDecodeErrorZ_free(_res_conv);
+       CResult_ShutdownDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_PongDecodeErrorZ_clone_ptr(LDKCResult_PongDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_PongDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PongDecodeErrorZ), "LDKCResult_PongDecodeErrorZ");
-       *ret_conv = CResult_PongDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_ShutdownDecodeErrorZ_clone_ptr(LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_ShutdownDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownDecodeErrorZ), "LDKCResult_ShutdownDecodeErrorZ");
+       *ret_conv = CResult_ShutdownDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_PongDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_PongDecodeErrorZ* arg_conv = (LDKCResult_PongDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_PongDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_ShutdownDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ShutdownDecodeErrorZ* arg_conv = (LDKCResult_ShutdownDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_ShutdownDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(uint32_t o) {
-       LDKUnsignedChannelAnnouncement o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       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 = UpdateFailHTLC_clone(&o_conv);
+       LDKCResult_UpdateFailHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ), "LDKCResult_UpdateFailHTLCDecodeErrorZ");
+       *ret_conv = CResult_UpdateFailHTLCDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       LDKCResult_UpdateFailHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ), "LDKCResult_UpdateFailHTLCDecodeErrorZ");
+       *ret_conv = CResult_UpdateFailHTLCDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* o_conv = (LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_UnsignedChannelAnnouncementDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_UpdateFailHTLCDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_UpdateFailHTLCDecodeErrorZ* o_conv = (LDKCResult_UpdateFailHTLCDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_UpdateFailHTLCDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_UpdateFailHTLCDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ _res_conv = *(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(_res_ptr);
+       LDKCResult_UpdateFailHTLCDecodeErrorZ _res_conv = *(LDKCResult_UpdateFailHTLCDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(_res_conv);
+       CResult_UpdateFailHTLCDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ), "LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ");
-       *ret_conv = CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_UpdateFailHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_UpdateFailHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ), "LDKCResult_UpdateFailHTLCDecodeErrorZ");
+       *ret_conv = CResult_UpdateFailHTLCDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* arg_conv = (LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_UpdateFailHTLCDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_UpdateFailHTLCDecodeErrorZ* arg_conv = (LDKCResult_UpdateFailHTLCDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_UpdateFailHTLCDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelAnnouncementDecodeErrorZ_ok(uint32_t o) {
-       LDKChannelAnnouncement o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = ChannelAnnouncement_clone(&o_conv);
-       LDKCResult_ChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ), "LDKCResult_ChannelAnnouncementDecodeErrorZ");
-       *ret_conv = CResult_ChannelAnnouncementDecodeErrorZ_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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelAnnouncementDecodeErrorZ_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ), "LDKCResult_ChannelAnnouncementDecodeErrorZ");
-       *ret_conv = CResult_ChannelAnnouncementDecodeErrorZ_err(e_conv);
+       LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ), "LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ");
+       *ret_conv = CResult_UpdateFailMalformedHTLCDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelAnnouncementDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ChannelAnnouncementDecodeErrorZ* o_conv = (LDKCResult_ChannelAnnouncementDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ChannelAnnouncementDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* o_conv = (LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_UpdateFailMalformedHTLCDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ChannelAnnouncementDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_ChannelAnnouncementDecodeErrorZ _res_conv = *(LDKCResult_ChannelAnnouncementDecodeErrorZ*)(_res_ptr);
+       LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ _res_conv = *(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_ChannelAnnouncementDecodeErrorZ_free(_res_conv);
+       CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_ChannelAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ), "LDKCResult_ChannelAnnouncementDecodeErrorZ");
-       *ret_conv = CResult_ChannelAnnouncementDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ), "LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ");
+       *ret_conv = CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_ChannelAnnouncementDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ChannelAnnouncementDecodeErrorZ* arg_conv = (LDKCResult_ChannelAnnouncementDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ChannelAnnouncementDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* arg_conv = (LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelUpdateDecodeErrorZ_ok(uint32_t o) {
-       LDKUnsignedChannelUpdate o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       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 = UpdateFee_clone(&o_conv);
+       LDKCResult_UpdateFeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFeeDecodeErrorZ), "LDKCResult_UpdateFeeDecodeErrorZ");
+       *ret_conv = CResult_UpdateFeeDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelUpdateDecodeErrorZ_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_UnsignedChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ), "LDKCResult_UnsignedChannelUpdateDecodeErrorZ");
-       *ret_conv = CResult_UnsignedChannelUpdateDecodeErrorZ_err(e_conv);
+       LDKCResult_UpdateFeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFeeDecodeErrorZ), "LDKCResult_UpdateFeeDecodeErrorZ");
+       *ret_conv = CResult_UpdateFeeDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelUpdateDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_UnsignedChannelUpdateDecodeErrorZ* o_conv = (LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_UnsignedChannelUpdateDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_UpdateFeeDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_UpdateFeeDecodeErrorZ* o_conv = (LDKCResult_UpdateFeeDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_UpdateFeeDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelUpdateDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_UpdateFeeDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_UnsignedChannelUpdateDecodeErrorZ _res_conv = *(LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(_res_ptr);
+       LDKCResult_UpdateFeeDecodeErrorZ _res_conv = *(LDKCResult_UpdateFeeDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_UnsignedChannelUpdateDecodeErrorZ_free(_res_conv);
+       CResult_UpdateFeeDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_UnsignedChannelUpdateDecodeErrorZ_clone_ptr(LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_UnsignedChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ), "LDKCResult_UnsignedChannelUpdateDecodeErrorZ");
-       *ret_conv = CResult_UnsignedChannelUpdateDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_UpdateFeeDecodeErrorZ_clone_ptr(LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_UpdateFeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFeeDecodeErrorZ), "LDKCResult_UpdateFeeDecodeErrorZ");
+       *ret_conv = CResult_UpdateFeeDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelUpdateDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_UnsignedChannelUpdateDecodeErrorZ* arg_conv = (LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_UnsignedChannelUpdateDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_UpdateFeeDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_UpdateFeeDecodeErrorZ* arg_conv = (LDKCResult_UpdateFeeDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_UpdateFeeDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelUpdateDecodeErrorZ_ok(uint32_t o) {
-       LDKChannelUpdate o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = UpdateFulfillHTLC_clone(&o_conv);
+       LDKCResult_UpdateFulfillHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ), "LDKCResult_UpdateFulfillHTLCDecodeErrorZ");
+       *ret_conv = CResult_UpdateFulfillHTLCDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ChannelUpdateDecodeErrorZ_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelUpdateDecodeErrorZ), "LDKCResult_ChannelUpdateDecodeErrorZ");
-       *ret_conv = CResult_ChannelUpdateDecodeErrorZ_err(e_conv);
+       LDKCResult_UpdateFulfillHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ), "LDKCResult_UpdateFulfillHTLCDecodeErrorZ");
+       *ret_conv = CResult_UpdateFulfillHTLCDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelUpdateDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ChannelUpdateDecodeErrorZ* o_conv = (LDKCResult_ChannelUpdateDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ChannelUpdateDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_UpdateFulfillHTLCDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_UpdateFulfillHTLCDecodeErrorZ* o_conv = (LDKCResult_UpdateFulfillHTLCDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_UpdateFulfillHTLCDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ChannelUpdateDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_UpdateFulfillHTLCDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_ChannelUpdateDecodeErrorZ _res_conv = *(LDKCResult_ChannelUpdateDecodeErrorZ*)(_res_ptr);
+       LDKCResult_UpdateFulfillHTLCDecodeErrorZ _res_conv = *(LDKCResult_UpdateFulfillHTLCDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_ChannelUpdateDecodeErrorZ_free(_res_conv);
+       CResult_UpdateFulfillHTLCDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_ChannelUpdateDecodeErrorZ_clone_ptr(LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelUpdateDecodeErrorZ), "LDKCResult_ChannelUpdateDecodeErrorZ");
-       *ret_conv = CResult_ChannelUpdateDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_UpdateFulfillHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_UpdateFulfillHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ), "LDKCResult_UpdateFulfillHTLCDecodeErrorZ");
+       *ret_conv = CResult_UpdateFulfillHTLCDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_ChannelUpdateDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ChannelUpdateDecodeErrorZ* arg_conv = (LDKCResult_ChannelUpdateDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ChannelUpdateDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_UpdateFulfillHTLCDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_UpdateFulfillHTLCDecodeErrorZ* arg_conv = (LDKCResult_UpdateFulfillHTLCDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_UpdateFulfillHTLCDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ErrorMessageDecodeErrorZ_ok(uint32_t o) {
-       LDKErrorMessage o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = UpdateAddHTLC_clone(&o_conv);
+       LDKCResult_UpdateAddHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ), "LDKCResult_UpdateAddHTLCDecodeErrorZ");
+       *ret_conv = CResult_UpdateAddHTLCDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ErrorMessageDecodeErrorZ_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ErrorMessageDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ErrorMessageDecodeErrorZ), "LDKCResult_ErrorMessageDecodeErrorZ");
-       *ret_conv = CResult_ErrorMessageDecodeErrorZ_err(e_conv);
+       LDKCResult_UpdateAddHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ), "LDKCResult_UpdateAddHTLCDecodeErrorZ");
+       *ret_conv = CResult_UpdateAddHTLCDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ErrorMessageDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ErrorMessageDecodeErrorZ* o_conv = (LDKCResult_ErrorMessageDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ErrorMessageDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_UpdateAddHTLCDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_UpdateAddHTLCDecodeErrorZ* o_conv = (LDKCResult_UpdateAddHTLCDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_UpdateAddHTLCDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ErrorMessageDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_UpdateAddHTLCDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_ErrorMessageDecodeErrorZ _res_conv = *(LDKCResult_ErrorMessageDecodeErrorZ*)(_res_ptr);
+       LDKCResult_UpdateAddHTLCDecodeErrorZ _res_conv = *(LDKCResult_UpdateAddHTLCDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_ErrorMessageDecodeErrorZ_free(_res_conv);
+       CResult_UpdateAddHTLCDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_ErrorMessageDecodeErrorZ_clone_ptr(LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ErrorMessageDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ErrorMessageDecodeErrorZ), "LDKCResult_ErrorMessageDecodeErrorZ");
-       *ret_conv = CResult_ErrorMessageDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_UpdateAddHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_UpdateAddHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ), "LDKCResult_UpdateAddHTLCDecodeErrorZ");
+       *ret_conv = CResult_UpdateAddHTLCDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_ErrorMessageDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ErrorMessageDecodeErrorZ* arg_conv = (LDKCResult_ErrorMessageDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ErrorMessageDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_UpdateAddHTLCDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_UpdateAddHTLCDecodeErrorZ* arg_conv = (LDKCResult_UpdateAddHTLCDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_UpdateAddHTLCDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(uint32_t o) {
-       LDKUnsignedNodeAnnouncement o_conv;
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       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 = Ping_clone(&o_conv);
+       LDKCResult_PingDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PingDecodeErrorZ), "LDKCResult_PingDecodeErrorZ");
+       *ret_conv = CResult_PingDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ), "LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ");
-       *ret_conv = CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(e_conv);
+       LDKCResult_PingDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PingDecodeErrorZ), "LDKCResult_PingDecodeErrorZ");
+       *ret_conv = CResult_PingDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* o_conv = (LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_UnsignedNodeAnnouncementDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_PingDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_PingDecodeErrorZ* o_conv = (LDKCResult_PingDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_PingDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_PingDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ _res_conv = *(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(_res_ptr);
+       LDKCResult_PingDecodeErrorZ _res_conv = *(LDKCResult_PingDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(_res_conv);
+       CResult_PingDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ), "LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ");
-       *ret_conv = CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_PingDecodeErrorZ_clone_ptr(LDKCResult_PingDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_PingDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PingDecodeErrorZ), "LDKCResult_PingDecodeErrorZ");
+       *ret_conv = CResult_PingDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* arg_conv = (LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_PingDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_PingDecodeErrorZ* arg_conv = (LDKCResult_PingDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_PingDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementDecodeErrorZ_ok(uint32_t o) {
-       LDKNodeAnnouncement o_conv;
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = Pong_clone(&o_conv);
+       LDKCResult_PongDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PongDecodeErrorZ), "LDKCResult_PongDecodeErrorZ");
+       *ret_conv = CResult_PongDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_NodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ), "LDKCResult_NodeAnnouncementDecodeErrorZ");
-       *ret_conv = CResult_NodeAnnouncementDecodeErrorZ_err(e_conv);
+       LDKCResult_PongDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PongDecodeErrorZ), "LDKCResult_PongDecodeErrorZ");
+       *ret_conv = CResult_PongDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_NodeAnnouncementDecodeErrorZ* o_conv = (LDKCResult_NodeAnnouncementDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_NodeAnnouncementDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_PongDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_PongDecodeErrorZ* o_conv = (LDKCResult_PongDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_PongDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_PongDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_NodeAnnouncementDecodeErrorZ _res_conv = *(LDKCResult_NodeAnnouncementDecodeErrorZ*)(_res_ptr);
+       LDKCResult_PongDecodeErrorZ _res_conv = *(LDKCResult_PongDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_NodeAnnouncementDecodeErrorZ_free(_res_conv);
+       CResult_PongDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_NodeAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_NodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ), "LDKCResult_NodeAnnouncementDecodeErrorZ");
-       *ret_conv = CResult_NodeAnnouncementDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_PongDecodeErrorZ_clone_ptr(LDKCResult_PongDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_PongDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PongDecodeErrorZ), "LDKCResult_PongDecodeErrorZ");
+       *ret_conv = CResult_PongDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_NodeAnnouncementDecodeErrorZ* arg_conv = (LDKCResult_NodeAnnouncementDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_NodeAnnouncementDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_PongDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_PongDecodeErrorZ* arg_conv = (LDKCResult_PongDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_PongDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_QueryShortChannelIdsDecodeErrorZ_ok(uint32_t o) {
-       LDKQueryShortChannelIds o_conv;
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = UnsignedChannelAnnouncement_clone(&o_conv);
+       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ), "LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ");
+       *ret_conv = CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_QueryShortChannelIdsDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ), "LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ");
+       *ret_conv = CResult_UnsignedChannelAnnouncementDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_QueryShortChannelIdsDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_QueryShortChannelIdsDecodeErrorZ* o_conv = (LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_QueryShortChannelIdsDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* o_conv = (LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_UnsignedChannelAnnouncementDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_QueryShortChannelIdsDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_QueryShortChannelIdsDecodeErrorZ _res_conv = *(LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(_res_ptr);
+       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ _res_conv = *(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_QueryShortChannelIdsDecodeErrorZ_free(_res_conv);
+       CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_QueryShortChannelIdsDecodeErrorZ_clone_ptr(LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_QueryShortChannelIdsDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ), "LDKCResult_QueryShortChannelIdsDecodeErrorZ");
-       *ret_conv = CResult_QueryShortChannelIdsDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ), "LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ");
+       *ret_conv = CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_QueryShortChannelIdsDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_QueryShortChannelIdsDecodeErrorZ* arg_conv = (LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_QueryShortChannelIdsDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* arg_conv = (LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(uint32_t o) {
-       LDKReplyShortChannelIdsEnd o_conv;
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = ChannelAnnouncement_clone(&o_conv);
+       LDKCResult_ChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ), "LDKCResult_ChannelAnnouncementDecodeErrorZ");
+       *ret_conv = CResult_ChannelAnnouncementDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ), "LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ");
-       *ret_conv = CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(e_conv);
+       LDKCResult_ChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ), "LDKCResult_ChannelAnnouncementDecodeErrorZ");
+       *ret_conv = CResult_ChannelAnnouncementDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* o_conv = (LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ReplyShortChannelIdsEndDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelAnnouncementDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ChannelAnnouncementDecodeErrorZ* o_conv = (LDKCResult_ChannelAnnouncementDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ChannelAnnouncementDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ChannelAnnouncementDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ _res_conv = *(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(_res_ptr);
+       LDKCResult_ChannelAnnouncementDecodeErrorZ _res_conv = *(LDKCResult_ChannelAnnouncementDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(_res_conv);
+       CResult_ChannelAnnouncementDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone_ptr(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ), "LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ");
-       *ret_conv = CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_ChannelAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_ChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ), "LDKCResult_ChannelAnnouncementDecodeErrorZ");
+       *ret_conv = CResult_ChannelAnnouncementDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* arg_conv = (LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_ChannelAnnouncementDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ChannelAnnouncementDecodeErrorZ* arg_conv = (LDKCResult_ChannelAnnouncementDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_ChannelAnnouncementDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_QueryChannelRangeDecodeErrorZ_ok(uint32_t o) {
-       LDKQueryChannelRange o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = UnsignedChannelUpdate_clone(&o_conv);
+       LDKCResult_UnsignedChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ), "LDKCResult_UnsignedChannelUpdateDecodeErrorZ");
+       *ret_conv = CResult_UnsignedChannelUpdateDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_QueryChannelRangeDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_QueryChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ), "LDKCResult_QueryChannelRangeDecodeErrorZ");
-       *ret_conv = CResult_QueryChannelRangeDecodeErrorZ_err(e_conv);
+       LDKCResult_UnsignedChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ), "LDKCResult_UnsignedChannelUpdateDecodeErrorZ");
+       *ret_conv = CResult_UnsignedChannelUpdateDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_QueryChannelRangeDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_QueryChannelRangeDecodeErrorZ* o_conv = (LDKCResult_QueryChannelRangeDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_QueryChannelRangeDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelUpdateDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_UnsignedChannelUpdateDecodeErrorZ* o_conv = (LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_UnsignedChannelUpdateDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_QueryChannelRangeDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelUpdateDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_QueryChannelRangeDecodeErrorZ _res_conv = *(LDKCResult_QueryChannelRangeDecodeErrorZ*)(_res_ptr);
+       LDKCResult_UnsignedChannelUpdateDecodeErrorZ _res_conv = *(LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_QueryChannelRangeDecodeErrorZ_free(_res_conv);
+       CResult_UnsignedChannelUpdateDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_QueryChannelRangeDecodeErrorZ_clone_ptr(LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_QueryChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ), "LDKCResult_QueryChannelRangeDecodeErrorZ");
-       *ret_conv = CResult_QueryChannelRangeDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_UnsignedChannelUpdateDecodeErrorZ_clone_ptr(LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_UnsignedChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ), "LDKCResult_UnsignedChannelUpdateDecodeErrorZ");
+       *ret_conv = CResult_UnsignedChannelUpdateDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_QueryChannelRangeDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_QueryChannelRangeDecodeErrorZ* arg_conv = (LDKCResult_QueryChannelRangeDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_QueryChannelRangeDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_UnsignedChannelUpdateDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_UnsignedChannelUpdateDecodeErrorZ* arg_conv = (LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_UnsignedChannelUpdateDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ReplyChannelRangeDecodeErrorZ_ok(uint32_t o) {
-       LDKReplyChannelRange 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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = ChannelUpdate_clone(&o_conv);
+       LDKCResult_ChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelUpdateDecodeErrorZ), "LDKCResult_ChannelUpdateDecodeErrorZ");
+       *ret_conv = CResult_ChannelUpdateDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_ReplyChannelRangeDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_ReplyChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ), "LDKCResult_ReplyChannelRangeDecodeErrorZ");
-       *ret_conv = CResult_ReplyChannelRangeDecodeErrorZ_err(e_conv);
+       LDKCResult_ChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelUpdateDecodeErrorZ), "LDKCResult_ChannelUpdateDecodeErrorZ");
+       *ret_conv = CResult_ChannelUpdateDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_ReplyChannelRangeDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_ReplyChannelRangeDecodeErrorZ* o_conv = (LDKCResult_ReplyChannelRangeDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_ReplyChannelRangeDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ChannelUpdateDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ChannelUpdateDecodeErrorZ* o_conv = (LDKCResult_ChannelUpdateDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ChannelUpdateDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_ReplyChannelRangeDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ChannelUpdateDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_ReplyChannelRangeDecodeErrorZ _res_conv = *(LDKCResult_ReplyChannelRangeDecodeErrorZ*)(_res_ptr);
+       LDKCResult_ChannelUpdateDecodeErrorZ _res_conv = *(LDKCResult_ChannelUpdateDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_ReplyChannelRangeDecodeErrorZ_free(_res_conv);
+       CResult_ChannelUpdateDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_ReplyChannelRangeDecodeErrorZ_clone_ptr(LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_ReplyChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ), "LDKCResult_ReplyChannelRangeDecodeErrorZ");
-       *ret_conv = CResult_ReplyChannelRangeDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_ChannelUpdateDecodeErrorZ_clone_ptr(LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_ChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelUpdateDecodeErrorZ), "LDKCResult_ChannelUpdateDecodeErrorZ");
+       *ret_conv = CResult_ChannelUpdateDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_ReplyChannelRangeDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_ReplyChannelRangeDecodeErrorZ* arg_conv = (LDKCResult_ReplyChannelRangeDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_ReplyChannelRangeDecodeErrorZ_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-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);
+int64_t  __attribute__((visibility("default"))) TS_CResult_ChannelUpdateDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ChannelUpdateDecodeErrorZ* arg_conv = (LDKCResult_ChannelUpdateDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_ChannelUpdateDecodeErrorZ_clone_ptr(arg_conv);
+       return ret_val;
+}
+
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_GossipTimestampFilterDecodeErrorZ_ok(uint32_t o) {
-       LDKGossipTimestampFilter o_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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(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);
+       o_conv = ErrorMessage_clone(&o_conv);
+       LDKCResult_ErrorMessageDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ErrorMessageDecodeErrorZ), "LDKCResult_ErrorMessageDecodeErrorZ");
+       *ret_conv = CResult_ErrorMessageDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_GossipTimestampFilterDecodeErrorZ_err(uint32_t e) {
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
        e_conv = DecodeError_clone(&e_conv);
-       LDKCResult_GossipTimestampFilterDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ), "LDKCResult_GossipTimestampFilterDecodeErrorZ");
-       *ret_conv = CResult_GossipTimestampFilterDecodeErrorZ_err(e_conv);
+       LDKCResult_ErrorMessageDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ErrorMessageDecodeErrorZ), "LDKCResult_ErrorMessageDecodeErrorZ");
+       *ret_conv = CResult_ErrorMessageDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_GossipTimestampFilterDecodeErrorZ_is_ok(uint32_t o) {
-       LDKCResult_GossipTimestampFilterDecodeErrorZ* o_conv = (LDKCResult_GossipTimestampFilterDecodeErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_GossipTimestampFilterDecodeErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_ErrorMessageDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ErrorMessageDecodeErrorZ* o_conv = (LDKCResult_ErrorMessageDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ErrorMessageDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_GossipTimestampFilterDecodeErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_ErrorMessageDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_GossipTimestampFilterDecodeErrorZ _res_conv = *(LDKCResult_GossipTimestampFilterDecodeErrorZ*)(_res_ptr);
+       LDKCResult_ErrorMessageDecodeErrorZ _res_conv = *(LDKCResult_ErrorMessageDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_GossipTimestampFilterDecodeErrorZ_free(_res_conv);
+       CResult_ErrorMessageDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_GossipTimestampFilterDecodeErrorZ_clone_ptr(LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR arg) {
-       LDKCResult_GossipTimestampFilterDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ), "LDKCResult_GossipTimestampFilterDecodeErrorZ");
-       *ret_conv = CResult_GossipTimestampFilterDecodeErrorZ_clone(arg);
+static inline uint64_t CResult_ErrorMessageDecodeErrorZ_clone_ptr(LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_ErrorMessageDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ErrorMessageDecodeErrorZ), "LDKCResult_ErrorMessageDecodeErrorZ");
+       *ret_conv = CResult_ErrorMessageDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_GossipTimestampFilterDecodeErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_GossipTimestampFilterDecodeErrorZ* arg_conv = (LDKCResult_GossipTimestampFilterDecodeErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_GossipTimestampFilterDecodeErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_ErrorMessageDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ErrorMessageDecodeErrorZ* arg_conv = (LDKCResult_ErrorMessageDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_ErrorMessageDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceSignOrCreationErrorZ_ok(uint32_t o) {
-       LDKInvoice o_conv;
+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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       o_conv = Invoice_clone(&o_conv);
-       LDKCResult_InvoiceSignOrCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceSignOrCreationErrorZ), "LDKCResult_InvoiceSignOrCreationErrorZ");
-       *ret_conv = CResult_InvoiceSignOrCreationErrorZ_ok(o_conv);
+       o_conv = UnsignedNodeAnnouncement_clone(&o_conv);
+       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ), "LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ");
+       *ret_conv = CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceSignOrCreationErrorZ_err(uint32_t e) {
-       void* e_ptr = (void*)(((uint64_t)e) & ~1);
-       CHECK_ACCESS(e_ptr);
-       LDKSignOrCreationError e_conv = *(LDKSignOrCreationError*)(e_ptr);
-       e_conv = SignOrCreationError_clone((LDKSignOrCreationError*)(((uint64_t)e) & ~1));
-       LDKCResult_InvoiceSignOrCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceSignOrCreationErrorZ), "LDKCResult_InvoiceSignOrCreationErrorZ");
-       *ret_conv = CResult_InvoiceSignOrCreationErrorZ_err(e_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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ), "LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ");
+       *ret_conv = CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_InvoiceSignOrCreationErrorZ_is_ok(uint32_t o) {
-       LDKCResult_InvoiceSignOrCreationErrorZ* o_conv = (LDKCResult_InvoiceSignOrCreationErrorZ*)(o & ~1);
-       jboolean ret_val = CResult_InvoiceSignOrCreationErrorZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* o_conv = (LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_UnsignedNodeAnnouncementDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_InvoiceSignOrCreationErrorZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_InvoiceSignOrCreationErrorZ _res_conv = *(LDKCResult_InvoiceSignOrCreationErrorZ*)(_res_ptr);
+       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ _res_conv = *(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_InvoiceSignOrCreationErrorZ_free(_res_conv);
+       CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t CResult_InvoiceSignOrCreationErrorZ_clone_ptr(LDKCResult_InvoiceSignOrCreationErrorZ *NONNULL_PTR arg) {
-       LDKCResult_InvoiceSignOrCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceSignOrCreationErrorZ), "LDKCResult_InvoiceSignOrCreationErrorZ");
-       *ret_conv = CResult_InvoiceSignOrCreationErrorZ_clone(arg);
+static inline uint64_t CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ), "LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ");
+       *ret_conv = CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CResult_InvoiceSignOrCreationErrorZ_clone_ptr(uint32_t arg) {
-       LDKCResult_InvoiceSignOrCreationErrorZ* arg_conv = (LDKCResult_InvoiceSignOrCreationErrorZ*)(arg & ~1);
-       int64_t ret_val = CResult_InvoiceSignOrCreationErrorZ_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* arg_conv = (LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_InvoiceSignOrCreationErrorZ_clone(uint32_t orig) {
-       LDKCResult_InvoiceSignOrCreationErrorZ* orig_conv = (LDKCResult_InvoiceSignOrCreationErrorZ*)(orig & ~1);
-       LDKCResult_InvoiceSignOrCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceSignOrCreationErrorZ), "LDKCResult_InvoiceSignOrCreationErrorZ");
-       *ret_conv = CResult_InvoiceSignOrCreationErrorZ_clone(orig_conv);
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_COption_FilterZ_some(uint32_t o) {
-       void* o_ptr = (void*)(((uint64_t)o) & ~1);
-       CHECK_ACCESS(o_ptr);
-       LDKFilter o_conv = *(LDKFilter*)(o_ptr);
-       LDKCOption_FilterZ *ret_copy = MALLOC(sizeof(LDKCOption_FilterZ), "LDKCOption_FilterZ");
-       *ret_copy = COption_FilterZ_some(o_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_COption_FilterZ_none() {
-       LDKCOption_FilterZ *ret_copy = MALLOC(sizeof(LDKCOption_FilterZ), "LDKCOption_FilterZ");
-       *ret_copy = COption_FilterZ_none();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-void  __attribute__((visibility("default"))) TS_COption_FilterZ_free(uint32_t _res) {
-       if ((_res & 1) != 0) return;
-       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
-       CHECK_ACCESS(_res_ptr);
-       LDKCOption_FilterZ _res_conv = *(LDKCOption_FilterZ*)(_res_ptr);
-       FREE((void*)_res);
-       COption_FilterZ_free(_res_conv);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CResult_LockedChannelMonitorNoneZ_ok(uint32_t o) {
-       LDKLockedChannelMonitor 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);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       // Warning: we need a move here but no clone is available for LDKLockedChannelMonitor
-       LDKCResult_LockedChannelMonitorNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_LockedChannelMonitorNoneZ), "LDKCResult_LockedChannelMonitorNoneZ");
-       *ret_conv = CResult_LockedChannelMonitorNoneZ_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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CResult_LockedChannelMonitorNoneZ_err() {
-       LDKCResult_LockedChannelMonitorNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_LockedChannelMonitorNoneZ), "LDKCResult_LockedChannelMonitorNoneZ");
-       *ret_conv = CResult_LockedChannelMonitorNoneZ_err();
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_NodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ), "LDKCResult_NodeAnnouncementDecodeErrorZ");
+       *ret_conv = CResult_NodeAnnouncementDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CResult_LockedChannelMonitorNoneZ_is_ok(uint32_t o) {
-       LDKCResult_LockedChannelMonitorNoneZ* o_conv = (LDKCResult_LockedChannelMonitorNoneZ*)(o & ~1);
-       jboolean ret_val = CResult_LockedChannelMonitorNoneZ_is_ok(o_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_NodeAnnouncementDecodeErrorZ* o_conv = (LDKCResult_NodeAnnouncementDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_NodeAnnouncementDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CResult_LockedChannelMonitorNoneZ_free(uint32_t _res) {
+void  __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementDecodeErrorZ_free(uint32_t _res) {
        if ((_res & 1) != 0) return;
        void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
        CHECK_ACCESS(_res_ptr);
-       LDKCResult_LockedChannelMonitorNoneZ _res_conv = *(LDKCResult_LockedChannelMonitorNoneZ*)(_res_ptr);
+       LDKCResult_NodeAnnouncementDecodeErrorZ _res_conv = *(LDKCResult_NodeAnnouncementDecodeErrorZ*)(_res_ptr);
        FREE((void*)_res);
-       CResult_LockedChannelMonitorNoneZ_free(_res_conv);
-}
-
-void  __attribute__((visibility("default"))) TS_CVec_OutPointZ_free(uint32_tArray _res) {
-       LDKCVec_OutPointZ _res_constr;
-       _res_constr.datalen = *((uint32_t*)_res);
-       if (_res_constr.datalen > 0)
-               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKOutPoint), "LDKCVec_OutPointZ 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 _res_conv_10 = _res_vals[k];
-               LDKOutPoint _res_conv_10_conv;
-               _res_conv_10_conv.inner = (void*)(_res_conv_10 & (~1));
-               _res_conv_10_conv.is_owned = (_res_conv_10 & 1) || (_res_conv_10 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_10_conv);
-               _res_constr.data[k] = _res_conv_10_conv;
-       }
-       CVec_OutPointZ_free(_res_constr);
-}
-
-void  __attribute__((visibility("default"))) TS_PaymentPurpose_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKPaymentPurpose this_ptr_conv = *(LDKPaymentPurpose*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       PaymentPurpose_free(this_ptr_conv);
+       CResult_NodeAnnouncementDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t PaymentPurpose_clone_ptr(LDKPaymentPurpose *NONNULL_PTR arg) {
-       LDKPaymentPurpose *ret_copy = MALLOC(sizeof(LDKPaymentPurpose), "LDKPaymentPurpose");
-       *ret_copy = PaymentPurpose_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+static inline uint64_t CResult_NodeAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_NodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ), "LDKCResult_NodeAnnouncementDecodeErrorZ");
+       *ret_conv = CResult_NodeAnnouncementDecodeErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_PaymentPurpose_clone_ptr(uint32_t arg) {
-       LDKPaymentPurpose* arg_conv = (LDKPaymentPurpose*)arg;
-       int64_t ret_val = PaymentPurpose_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_NodeAnnouncementDecodeErrorZ* arg_conv = (LDKCResult_NodeAnnouncementDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_NodeAnnouncementDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PaymentPurpose_clone(uint32_t orig) {
-       LDKPaymentPurpose* orig_conv = (LDKPaymentPurpose*)orig;
-       LDKPaymentPurpose *ret_copy = MALLOC(sizeof(LDKPaymentPurpose), "LDKPaymentPurpose");
-       *ret_copy = PaymentPurpose_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_PaymentPurpose_invoice_payment(int8_tArray payment_preimage, int8_tArray payment_secret) {
-       LDKThirtyTwoBytes payment_preimage_ref;
-       CHECK(*((uint32_t*)payment_preimage) == 32);
-       memcpy(payment_preimage_ref.data, (uint8_t*)(payment_preimage + 4), 32);
-       LDKThirtyTwoBytes payment_secret_ref;
-       CHECK(*((uint32_t*)payment_secret) == 32);
-       memcpy(payment_secret_ref.data, (uint8_t*)(payment_secret + 4), 32);
-       LDKPaymentPurpose *ret_copy = MALLOC(sizeof(LDKPaymentPurpose), "LDKPaymentPurpose");
-       *ret_copy = PaymentPurpose_invoice_payment(payment_preimage_ref, payment_secret_ref);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_PaymentPurpose_spontaneous_payment(int8_tArray a) {
-       LDKThirtyTwoBytes a_ref;
-       CHECK(*((uint32_t*)a) == 32);
-       memcpy(a_ref.data, (uint8_t*)(a + 4), 32);
-       LDKPaymentPurpose *ret_copy = MALLOC(sizeof(LDKPaymentPurpose), "LDKPaymentPurpose");
-       *ret_copy = PaymentPurpose_spontaneous_payment(a_ref);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-void  __attribute__((visibility("default"))) TS_ClosureReason_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKClosureReason this_ptr_conv = *(LDKClosureReason*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       ClosureReason_free(this_ptr_conv);
+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 (uint64_t)ret_conv;
 }
 
-static inline uint64_t ClosureReason_clone_ptr(LDKClosureReason *NONNULL_PTR arg) {
-       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
-       *ret_copy = ClosureReason_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_ClosureReason_clone_ptr(uint32_t arg) {
-       LDKClosureReason* arg_conv = (LDKClosureReason*)arg;
-       int64_t ret_val = ClosureReason_clone_ptr(arg_conv);
-       return ret_val;
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_clone(uint32_t orig) {
-       LDKClosureReason* orig_conv = (LDKClosureReason*)orig;
-       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
-       *ret_copy = ClosureReason_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_counterparty_force_closed(jstring peer_msg) {
-       LDKStr peer_msg_conv = str_ref_to_owned_c(peer_msg);
-       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
-       *ret_copy = ClosureReason_counterparty_force_closed(peer_msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+jboolean  __attribute__((visibility("default"))) TS_CResult_QueryShortChannelIdsDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_QueryShortChannelIdsDecodeErrorZ* o_conv = (LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_QueryShortChannelIdsDecodeErrorZ_is_ok(o_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_holder_force_closed() {
-       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
-       *ret_copy = ClosureReason_holder_force_closed();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_CResult_QueryShortChannelIdsDecodeErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_QueryShortChannelIdsDecodeErrorZ _res_conv = *(LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_QueryShortChannelIdsDecodeErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_cooperative_closure() {
-       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
-       *ret_copy = ClosureReason_cooperative_closure();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+static inline uint64_t CResult_QueryShortChannelIdsDecodeErrorZ_clone_ptr(LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_QueryShortChannelIdsDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ), "LDKCResult_QueryShortChannelIdsDecodeErrorZ");
+       *ret_conv = CResult_QueryShortChannelIdsDecodeErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_QueryShortChannelIdsDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_QueryShortChannelIdsDecodeErrorZ* arg_conv = (LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_QueryShortChannelIdsDecodeErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_commitment_tx_confirmed() {
-       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
-       *ret_copy = ClosureReason_commitment_tx_confirmed();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_funding_timed_out() {
-       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
-       *ret_copy = ClosureReason_funding_timed_out();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_processing_error(jstring err) {
-       LDKStr err_conv = str_ref_to_owned_c(err);
-       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
-       *ret_copy = ClosureReason_processing_error(err_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ), "LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ");
+       *ret_conv = CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_disconnected_peer() {
-       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
-       *ret_copy = ClosureReason_disconnected_peer();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+jboolean  __attribute__((visibility("default"))) TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* o_conv = (LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ReplyShortChannelIdsEndDecodeErrorZ_is_ok(o_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_outdated_channel_manager() {
-       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
-       *ret_copy = ClosureReason_outdated_channel_manager();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ _res_conv = *(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(_res_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ClosureReason_write(uint32_t obj) {
-       LDKClosureReason* obj_conv = (LDKClosureReason*)obj;
-       LDKCVec_u8Z ret_var = ClosureReason_write(obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+static inline uint64_t CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone_ptr(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ), "LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ");
+       *ret_conv = CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* arg_conv = (LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_COption_ClosureReasonZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ), "LDKCResult_COption_ClosureReasonZDecodeErrorZ");
-       *ret_conv = ClosureReason_read(ser_ref);
+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 (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_Event_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKEvent this_ptr_conv = *(LDKEvent*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       Event_free(this_ptr_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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(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 (uint64_t)ret_conv;
 }
 
-static inline uint64_t Event_clone_ptr(LDKEvent *NONNULL_PTR arg) {
-       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
-       *ret_copy = Event_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_QueryChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ), "LDKCResult_QueryChannelRangeDecodeErrorZ");
+       *ret_conv = CResult_QueryChannelRangeDecodeErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_Event_clone_ptr(uint32_t arg) {
-       LDKEvent* arg_conv = (LDKEvent*)arg;
-       int64_t ret_val = Event_clone_ptr(arg_conv);
+
+jboolean  __attribute__((visibility("default"))) TS_CResult_QueryChannelRangeDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_QueryChannelRangeDecodeErrorZ* o_conv = (LDKCResult_QueryChannelRangeDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_QueryChannelRangeDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Event_clone(uint32_t orig) {
-       LDKEvent* orig_conv = (LDKEvent*)orig;
-       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
-       *ret_copy = Event_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_CResult_QueryChannelRangeDecodeErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_QueryChannelRangeDecodeErrorZ _res_conv = *(LDKCResult_QueryChannelRangeDecodeErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_QueryChannelRangeDecodeErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Event_funding_generation_ready(int8_tArray temporary_channel_id, int64_t channel_value_satoshis, int8_tArray output_script, int64_t user_channel_id) {
-       LDKThirtyTwoBytes temporary_channel_id_ref;
-       CHECK(*((uint32_t*)temporary_channel_id) == 32);
-       memcpy(temporary_channel_id_ref.data, (uint8_t*)(temporary_channel_id + 4), 32);
-       LDKCVec_u8Z output_script_ref;
-       output_script_ref.datalen = *((uint32_t*)output_script);
-       output_script_ref.data = MALLOC(output_script_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(output_script_ref.data, (uint8_t*)(output_script + 4), output_script_ref.datalen);
-       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
-       *ret_copy = Event_funding_generation_ready(temporary_channel_id_ref, channel_value_satoshis, output_script_ref, user_channel_id);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+static inline uint64_t CResult_QueryChannelRangeDecodeErrorZ_clone_ptr(LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_QueryChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ), "LDKCResult_QueryChannelRangeDecodeErrorZ");
+       *ret_conv = CResult_QueryChannelRangeDecodeErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_QueryChannelRangeDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_QueryChannelRangeDecodeErrorZ* arg_conv = (LDKCResult_QueryChannelRangeDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_QueryChannelRangeDecodeErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Event_payment_received(int8_tArray payment_hash, int64_t amt, uint32_t purpose) {
-       LDKThirtyTwoBytes payment_hash_ref;
-       CHECK(*((uint32_t*)payment_hash) == 32);
-       memcpy(payment_hash_ref.data, (uint8_t*)(payment_hash + 4), 32);
-       void* purpose_ptr = (void*)(((uint64_t)purpose) & ~1);
-       CHECK_ACCESS(purpose_ptr);
-       LDKPaymentPurpose purpose_conv = *(LDKPaymentPurpose*)(purpose_ptr);
-       purpose_conv = PaymentPurpose_clone((LDKPaymentPurpose*)(((uint64_t)purpose) & ~1));
-       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
-       *ret_copy = Event_payment_received(payment_hash_ref, amt, purpose_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Event_payment_sent(int8_tArray payment_id, int8_tArray payment_preimage, int8_tArray payment_hash, uint32_t fee_paid_msat) {
-       LDKThirtyTwoBytes payment_id_ref;
-       CHECK(*((uint32_t*)payment_id) == 32);
-       memcpy(payment_id_ref.data, (uint8_t*)(payment_id + 4), 32);
-       LDKThirtyTwoBytes payment_preimage_ref;
-       CHECK(*((uint32_t*)payment_preimage) == 32);
-       memcpy(payment_preimage_ref.data, (uint8_t*)(payment_preimage + 4), 32);
-       LDKThirtyTwoBytes payment_hash_ref;
-       CHECK(*((uint32_t*)payment_hash) == 32);
-       memcpy(payment_hash_ref.data, (uint8_t*)(payment_hash + 4), 32);
-       void* fee_paid_msat_ptr = (void*)(((uint64_t)fee_paid_msat) & ~1);
-       CHECK_ACCESS(fee_paid_msat_ptr);
-       LDKCOption_u64Z fee_paid_msat_conv = *(LDKCOption_u64Z*)(fee_paid_msat_ptr);
-       fee_paid_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)fee_paid_msat) & ~1));
-       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
-       *ret_copy = Event_payment_sent(payment_id_ref, payment_preimage_ref, payment_hash_ref, fee_paid_msat_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Event_payment_path_failed(int8_tArray payment_id, int8_tArray payment_hash, jboolean rejected_by_dest, uint32_t network_update, jboolean all_paths_failed, uint32_tArray path, uint32_t short_channel_id, uint32_t retry) {
-       LDKThirtyTwoBytes payment_id_ref;
-       CHECK(*((uint32_t*)payment_id) == 32);
-       memcpy(payment_id_ref.data, (uint8_t*)(payment_id + 4), 32);
-       LDKThirtyTwoBytes payment_hash_ref;
-       CHECK(*((uint32_t*)payment_hash) == 32);
-       memcpy(payment_hash_ref.data, (uint8_t*)(payment_hash + 4), 32);
-       void* network_update_ptr = (void*)(((uint64_t)network_update) & ~1);
-       CHECK_ACCESS(network_update_ptr);
-       LDKCOption_NetworkUpdateZ network_update_conv = *(LDKCOption_NetworkUpdateZ*)(network_update_ptr);
-       network_update_conv = COption_NetworkUpdateZ_clone((LDKCOption_NetworkUpdateZ*)(((uint64_t)network_update) & ~1));
-       LDKCVec_RouteHopZ path_constr;
-       path_constr.datalen = *((uint32_t*)path);
-       if (path_constr.datalen > 0)
-               path_constr.data = MALLOC(path_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements");
-       else
-               path_constr.data = NULL;
-       uint32_t* path_vals = (uint32_t*)(path + 4);
-       for (size_t k = 0; k < path_constr.datalen; k++) {
-               uint32_t path_conv_10 = path_vals[k];
-               LDKRouteHop path_conv_10_conv;
-               path_conv_10_conv.inner = (void*)(path_conv_10 & (~1));
-               path_conv_10_conv.is_owned = (path_conv_10 & 1) || (path_conv_10 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_conv);
-               path_conv_10_conv = RouteHop_clone(&path_conv_10_conv);
-               path_constr.data[k] = path_conv_10_conv;
-       }
-       void* short_channel_id_ptr = (void*)(((uint64_t)short_channel_id) & ~1);
-       CHECK_ACCESS(short_channel_id_ptr);
-       LDKCOption_u64Z short_channel_id_conv = *(LDKCOption_u64Z*)(short_channel_id_ptr);
-       short_channel_id_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)short_channel_id) & ~1));
-       LDKRouteParameters retry_conv;
-       retry_conv.inner = (void*)(retry & (~1));
-       retry_conv.is_owned = (retry & 1) || (retry == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(retry_conv);
-       retry_conv = RouteParameters_clone(&retry_conv);
-       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
-       *ret_copy = Event_payment_path_failed(payment_id_ref, payment_hash_ref, rejected_by_dest, network_update_conv, all_paths_failed, path_constr, short_channel_id_conv, retry_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_ReplyChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ), "LDKCResult_ReplyChannelRangeDecodeErrorZ");
+       *ret_conv = CResult_ReplyChannelRangeDecodeErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Event_payment_failed(int8_tArray payment_id, int8_tArray payment_hash) {
-       LDKThirtyTwoBytes payment_id_ref;
-       CHECK(*((uint32_t*)payment_id) == 32);
-       memcpy(payment_id_ref.data, (uint8_t*)(payment_id + 4), 32);
-       LDKThirtyTwoBytes payment_hash_ref;
-       CHECK(*((uint32_t*)payment_hash) == 32);
-       memcpy(payment_hash_ref.data, (uint8_t*)(payment_hash + 4), 32);
-       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
-       *ret_copy = Event_payment_failed(payment_id_ref, payment_hash_ref);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+jboolean  __attribute__((visibility("default"))) TS_CResult_ReplyChannelRangeDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_ReplyChannelRangeDecodeErrorZ* o_conv = (LDKCResult_ReplyChannelRangeDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_ReplyChannelRangeDecodeErrorZ_is_ok(o_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Event_pending_htlcs_forwardable(int64_t time_forwardable) {
-       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
-       *ret_copy = Event_pending_htlcs_forwardable(time_forwardable);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_CResult_ReplyChannelRangeDecodeErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_ReplyChannelRangeDecodeErrorZ _res_conv = *(LDKCResult_ReplyChannelRangeDecodeErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_ReplyChannelRangeDecodeErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Event_spendable_outputs(uint32_tArray outputs) {
-       LDKCVec_SpendableOutputDescriptorZ outputs_constr;
-       outputs_constr.datalen = *((uint32_t*)outputs);
-       if (outputs_constr.datalen > 0)
-               outputs_constr.data = MALLOC(outputs_constr.datalen * sizeof(LDKSpendableOutputDescriptor), "LDKCVec_SpendableOutputDescriptorZ Elements");
-       else
-               outputs_constr.data = NULL;
-       uint32_t* outputs_vals = (uint32_t*)(outputs + 4);
-       for (size_t b = 0; b < outputs_constr.datalen; b++) {
-               uint32_t outputs_conv_27 = outputs_vals[b];
-               void* outputs_conv_27_ptr = (void*)(((uint64_t)outputs_conv_27) & ~1);
-               CHECK_ACCESS(outputs_conv_27_ptr);
-               LDKSpendableOutputDescriptor outputs_conv_27_conv = *(LDKSpendableOutputDescriptor*)(outputs_conv_27_ptr);
-               outputs_conv_27_conv = SpendableOutputDescriptor_clone((LDKSpendableOutputDescriptor*)(((uint64_t)outputs_conv_27) & ~1));
-               outputs_constr.data[b] = outputs_conv_27_conv;
-       }
-       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
-       *ret_copy = Event_spendable_outputs(outputs_constr);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+static inline uint64_t CResult_ReplyChannelRangeDecodeErrorZ_clone_ptr(LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_ReplyChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ), "LDKCResult_ReplyChannelRangeDecodeErrorZ");
+       *ret_conv = CResult_ReplyChannelRangeDecodeErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_ReplyChannelRangeDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_ReplyChannelRangeDecodeErrorZ* arg_conv = (LDKCResult_ReplyChannelRangeDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_ReplyChannelRangeDecodeErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Event_payment_forwarded(uint32_t fee_earned_msat, jboolean claim_from_onchain_tx) {
-       void* fee_earned_msat_ptr = (void*)(((uint64_t)fee_earned_msat) & ~1);
-       CHECK_ACCESS(fee_earned_msat_ptr);
-       LDKCOption_u64Z fee_earned_msat_conv = *(LDKCOption_u64Z*)(fee_earned_msat_ptr);
-       fee_earned_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)fee_earned_msat) & ~1));
-       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
-       *ret_copy = Event_payment_forwarded(fee_earned_msat_conv, claim_from_onchain_tx);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Event_channel_closed(int8_tArray channel_id, int64_t user_channel_id, uint32_t reason) {
-       LDKThirtyTwoBytes channel_id_ref;
-       CHECK(*((uint32_t*)channel_id) == 32);
-       memcpy(channel_id_ref.data, (uint8_t*)(channel_id + 4), 32);
-       void* reason_ptr = (void*)(((uint64_t)reason) & ~1);
-       CHECK_ACCESS(reason_ptr);
-       LDKClosureReason reason_conv = *(LDKClosureReason*)(reason_ptr);
-       reason_conv = ClosureReason_clone((LDKClosureReason*)(((uint64_t)reason) & ~1));
-       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
-       *ret_copy = Event_channel_closed(channel_id_ref, user_channel_id, reason_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Event_discard_funding(int8_tArray channel_id, int8_tArray transaction) {
-       LDKThirtyTwoBytes channel_id_ref;
-       CHECK(*((uint32_t*)channel_id) == 32);
-       memcpy(channel_id_ref.data, (uint8_t*)(channel_id + 4), 32);
-       LDKTransaction transaction_ref;
-       transaction_ref.datalen = *((uint32_t*)transaction);
-       transaction_ref.data = MALLOC(transaction_ref.datalen, "LDKTransaction Bytes");
-       memcpy(transaction_ref.data, (uint8_t*)(transaction + 4), transaction_ref.datalen);
-       transaction_ref.data_is_owned = true;
-       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
-       *ret_copy = Event_discard_funding(channel_id_ref, transaction_ref);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_GossipTimestampFilterDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ), "LDKCResult_GossipTimestampFilterDecodeErrorZ");
+       *ret_conv = CResult_GossipTimestampFilterDecodeErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Event_payment_path_successful(int8_tArray payment_id, int8_tArray payment_hash, uint32_tArray path) {
-       LDKThirtyTwoBytes payment_id_ref;
-       CHECK(*((uint32_t*)payment_id) == 32);
-       memcpy(payment_id_ref.data, (uint8_t*)(payment_id + 4), 32);
-       LDKThirtyTwoBytes payment_hash_ref;
-       CHECK(*((uint32_t*)payment_hash) == 32);
-       memcpy(payment_hash_ref.data, (uint8_t*)(payment_hash + 4), 32);
-       LDKCVec_RouteHopZ path_constr;
-       path_constr.datalen = *((uint32_t*)path);
-       if (path_constr.datalen > 0)
-               path_constr.data = MALLOC(path_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements");
-       else
-               path_constr.data = NULL;
-       uint32_t* path_vals = (uint32_t*)(path + 4);
-       for (size_t k = 0; k < path_constr.datalen; k++) {
-               uint32_t path_conv_10 = path_vals[k];
-               LDKRouteHop path_conv_10_conv;
-               path_conv_10_conv.inner = (void*)(path_conv_10 & (~1));
-               path_conv_10_conv.is_owned = (path_conv_10 & 1) || (path_conv_10 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_conv);
-               path_conv_10_conv = RouteHop_clone(&path_conv_10_conv);
-               path_constr.data[k] = path_conv_10_conv;
-       }
-       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
-       *ret_copy = Event_payment_path_successful(payment_id_ref, payment_hash_ref, path_constr);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+jboolean  __attribute__((visibility("default"))) TS_CResult_GossipTimestampFilterDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_GossipTimestampFilterDecodeErrorZ* o_conv = (LDKCResult_GossipTimestampFilterDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_GossipTimestampFilterDecodeErrorZ_is_ok(o_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_Event_write(uint32_t obj) {
-       LDKEvent* obj_conv = (LDKEvent*)obj;
-       LDKCVec_u8Z ret_var = Event_write(obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_CResult_GossipTimestampFilterDecodeErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_GossipTimestampFilterDecodeErrorZ _res_conv = *(LDKCResult_GossipTimestampFilterDecodeErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_GossipTimestampFilterDecodeErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Event_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_COption_EventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_EventZDecodeErrorZ), "LDKCResult_COption_EventZDecodeErrorZ");
-       *ret_conv = Event_read(ser_ref);
+static inline uint64_t CResult_GossipTimestampFilterDecodeErrorZ_clone_ptr(LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_GossipTimestampFilterDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ), "LDKCResult_GossipTimestampFilterDecodeErrorZ");
+       *ret_conv = CResult_GossipTimestampFilterDecodeErrorZ_clone(arg);
        return (uint64_t)ret_conv;
 }
-
-void  __attribute__((visibility("default"))) TS_MessageSendEvent_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKMessageSendEvent this_ptr_conv = *(LDKMessageSendEvent*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       MessageSendEvent_free(this_ptr_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_GossipTimestampFilterDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_GossipTimestampFilterDecodeErrorZ* arg_conv = (LDKCResult_GossipTimestampFilterDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_GossipTimestampFilterDecodeErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-static inline uint64_t MessageSendEvent_clone_ptr(LDKMessageSendEvent *NONNULL_PTR arg) {
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+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 (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_MessageSendEvent_clone_ptr(uint32_t arg) {
-       LDKMessageSendEvent* arg_conv = (LDKMessageSendEvent*)arg;
-       int64_t ret_val = MessageSendEvent_clone_ptr(arg_conv);
-       return ret_val;
+
+uint32_t  __attribute__((visibility("default"))) TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_ok(uint32_t o) {
+       LDKDelayedPaymentOutputDescriptor o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = (o & 1) || (o == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = DelayedPaymentOutputDescriptor_clone(&o_conv);
+       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ");
+       *ret_conv = CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_ok(o_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_clone(uint32_t orig) {
-       LDKMessageSendEvent* orig_conv = (LDKMessageSendEvent*)orig;
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_err(uint32_t e) {
+       LDKDecodeError e_conv;
+       e_conv.inner = (void*)(e & (~1));
+       e_conv.is_owned = (e & 1) || (e == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ");
+       *ret_conv = CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_accept_channel(int8_tArray node_id, uint32_t msg) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKAcceptChannel msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = AcceptChannel_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_send_accept_channel(node_id_ref, msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+jboolean  __attribute__((visibility("default"))) TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* o_conv = (LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_is_ok(o_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_open_channel(int8_tArray node_id, uint32_t msg) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKOpenChannel msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = OpenChannel_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_send_open_channel(node_id_ref, msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ _res_conv = *(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_funding_created(int8_tArray node_id, uint32_t msg) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKFundingCreated msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = FundingCreated_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_send_funding_created(node_id_ref, msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+static inline uint64_t CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone_ptr(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ");
+       *ret_conv = CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* arg_conv = (LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_funding_signed(int8_tArray node_id, uint32_t msg) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKFundingSigned msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = FundingSigned_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_send_funding_signed(node_id_ref, msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* orig_conv = (LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ*)(orig & ~1);
+       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ");
+       *ret_conv = CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_funding_locked(int8_tArray node_id, uint32_t msg) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKFundingLocked msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = FundingLocked_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_send_funding_locked(node_id_ref, msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_ok(uint32_t o) {
+       LDKStaticPaymentOutputDescriptor o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = (o & 1) || (o == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = StaticPaymentOutputDescriptor_clone(&o_conv);
+       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ");
+       *ret_conv = CResult_StaticPaymentOutputDescriptorDecodeErrorZ_ok(o_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_announcement_signatures(int8_tArray node_id, uint32_t msg) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKAnnouncementSignatures msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = AnnouncementSignatures_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_send_announcement_signatures(node_id_ref, msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_err(uint32_t e) {
+       LDKDecodeError e_conv;
+       e_conv.inner = (void*)(e & (~1));
+       e_conv.is_owned = (e & 1) || (e == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ");
+       *ret_conv = CResult_StaticPaymentOutputDescriptorDecodeErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_update_htlcs(int8_tArray node_id, uint32_t updates) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKCommitmentUpdate updates_conv;
-       updates_conv.inner = (void*)(updates & (~1));
-       updates_conv.is_owned = (updates & 1) || (updates == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(updates_conv);
-       updates_conv = CommitmentUpdate_clone(&updates_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_update_htlcs(node_id_ref, updates_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+jboolean  __attribute__((visibility("default"))) TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* o_conv = (LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_StaticPaymentOutputDescriptorDecodeErrorZ_is_ok(o_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_revoke_and_ack(int8_tArray node_id, uint32_t msg) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKRevokeAndACK msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = RevokeAndACK_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_send_revoke_and_ack(node_id_ref, msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ _res_conv = *(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_closing_signed(int8_tArray node_id, uint32_t msg) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKClosingSigned msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = ClosingSigned_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_send_closing_signed(node_id_ref, msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+static inline uint64_t CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone_ptr(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ");
+       *ret_conv = CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* arg_conv = (LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_shutdown(int8_tArray node_id, uint32_t msg) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKShutdown msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = Shutdown_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_send_shutdown(node_id_ref, msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* orig_conv = (LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ*)(orig & ~1);
+       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ");
+       *ret_conv = CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_channel_reestablish(int8_tArray node_id, uint32_t msg) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKChannelReestablish msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = ChannelReestablish_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_send_channel_reestablish(node_id_ref, msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescriptorDecodeErrorZ_ok(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKSpendableOutputDescriptor o_conv = *(LDKSpendableOutputDescriptor*)(o_ptr);
+       o_conv = SpendableOutputDescriptor_clone((LDKSpendableOutputDescriptor*)(((uint64_t)o) & ~1));
+       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ), "LDKCResult_SpendableOutputDescriptorDecodeErrorZ");
+       *ret_conv = CResult_SpendableOutputDescriptorDecodeErrorZ_ok(o_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_broadcast_channel_announcement(uint32_t msg, uint32_t update_msg) {
-       LDKChannelAnnouncement msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = ChannelAnnouncement_clone(&msg_conv);
-       LDKChannelUpdate update_msg_conv;
-       update_msg_conv.inner = (void*)(update_msg & (~1));
-       update_msg_conv.is_owned = (update_msg & 1) || (update_msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_msg_conv);
-       update_msg_conv = ChannelUpdate_clone(&update_msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_broadcast_channel_announcement(msg_conv, update_msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescriptorDecodeErrorZ_err(uint32_t e) {
+       LDKDecodeError e_conv;
+       e_conv.inner = (void*)(e & (~1));
+       e_conv.is_owned = (e & 1) || (e == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ), "LDKCResult_SpendableOutputDescriptorDecodeErrorZ");
+       *ret_conv = CResult_SpendableOutputDescriptorDecodeErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_broadcast_node_announcement(uint32_t msg) {
-       LDKNodeAnnouncement msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = NodeAnnouncement_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_broadcast_node_announcement(msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+jboolean  __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescriptorDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* o_conv = (LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_SpendableOutputDescriptorDecodeErrorZ_is_ok(o_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_broadcast_channel_update(uint32_t msg) {
-       LDKChannelUpdate msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = ChannelUpdate_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_broadcast_channel_update(msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescriptorDecodeErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_SpendableOutputDescriptorDecodeErrorZ _res_conv = *(LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_SpendableOutputDescriptorDecodeErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_channel_update(int8_tArray node_id, uint32_t msg) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKChannelUpdate msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = ChannelUpdate_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_send_channel_update(node_id_ref, msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+static inline uint64_t CResult_SpendableOutputDescriptorDecodeErrorZ_clone_ptr(LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ), "LDKCResult_SpendableOutputDescriptorDecodeErrorZ");
+       *ret_conv = CResult_SpendableOutputDescriptorDecodeErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescriptorDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* arg_conv = (LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_SpendableOutputDescriptorDecodeErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_handle_error(int8_tArray node_id, uint32_t action) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       void* action_ptr = (void*)(((uint64_t)action) & ~1);
-       CHECK_ACCESS(action_ptr);
-       LDKErrorAction action_conv = *(LDKErrorAction*)(action_ptr);
-       action_conv = ErrorAction_clone((LDKErrorAction*)(((uint64_t)action) & ~1));
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_handle_error(node_id_ref, action_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescriptorDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* orig_conv = (LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(orig & ~1);
+       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ), "LDKCResult_SpendableOutputDescriptorDecodeErrorZ");
+       *ret_conv = CResult_SpendableOutputDescriptorDecodeErrorZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_channel_range_query(int8_tArray node_id, uint32_t msg) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKQueryChannelRange msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = QueryChannelRange_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_send_channel_range_query(node_id_ref, msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+static inline uint64_t C2Tuple_SignatureCVec_SignatureZZ_clone_ptr(LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR arg) {
+       LDKC2Tuple_SignatureCVec_SignatureZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ), "LDKC2Tuple_SignatureCVec_SignatureZZ");
+       *ret_conv = C2Tuple_SignatureCVec_SignatureZZ_clone(arg);
+       return ((uint64_t)ret_conv);
+}
+int64_t  __attribute__((visibility("default"))) TS_C2Tuple_SignatureCVec_SignatureZZ_clone_ptr(uint32_t arg) {
+       LDKC2Tuple_SignatureCVec_SignatureZZ* arg_conv = (LDKC2Tuple_SignatureCVec_SignatureZZ*)(arg & ~1);
+       int64_t ret_val = C2Tuple_SignatureCVec_SignatureZZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_short_ids_query(int8_tArray node_id, uint32_t msg) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKQueryShortChannelIds msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = QueryShortChannelIds_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_send_short_ids_query(node_id_ref, msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+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_conv = MALLOC(sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ), "LDKC2Tuple_SignatureCVec_SignatureZZ");
+       *ret_conv = C2Tuple_SignatureCVec_SignatureZZ_clone(orig_conv);
+       return ((uint64_t)ret_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_reply_channel_range(int8_tArray node_id, uint32_t msg) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKReplyChannelRange msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = ReplyChannelRange_clone(&msg_conv);
-       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
-       *ret_copy = MessageSendEvent_send_reply_channel_range(node_id_ref, msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_SignatureCVec_SignatureZZ_new(int8_tArray a, ptrArray b) {
+       LDKSignature a_ref;
+       CHECK(a->arr_len == 64);
+       memcpy(a_ref.compact_form, a->elems, 64);
+       LDKCVec_SignatureZ b_constr;
+       b_constr.datalen = b->arr_len;
+       if (b_constr.datalen > 0)
+               b_constr.data = MALLOC(b_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ Elements");
+       else
+               b_constr.data = NULL;
+       int8_tArray* b_vals = (void*) b->elems;
+       for (size_t m = 0; m < b_constr.datalen; m++) {
+               int8_tArray b_conv_12 = b_vals[m];
+               LDKSignature b_conv_12_ref;
+               CHECK(b_conv_12->arr_len == 64);
+               memcpy(b_conv_12_ref.compact_form, b_conv_12->elems, 64);
+               b_constr.data[m] = b_conv_12_ref;
+       }
+       LDKC2Tuple_SignatureCVec_SignatureZZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ), "LDKC2Tuple_SignatureCVec_SignatureZZ");
+       *ret_conv = C2Tuple_SignatureCVec_SignatureZZ_new(a_ref, b_constr);
+       return ((uint64_t)ret_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_MessageSendEventsProvider_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKMessageSendEventsProvider this_ptr_conv = *(LDKMessageSendEventsProvider*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       MessageSendEventsProvider_free(this_ptr_conv);
+void  __attribute__((visibility("default"))) TS_C2Tuple_SignatureCVec_SignatureZZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKC2Tuple_SignatureCVec_SignatureZZ _res_conv = *(LDKC2Tuple_SignatureCVec_SignatureZZ*)(_res_ptr);
+       FREE((void*)_res);
+       C2Tuple_SignatureCVec_SignatureZZ_free(_res_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_EventsProvider_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKEventsProvider this_ptr_conv = *(LDKEventsProvider*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       EventsProvider_free(this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKC2Tuple_SignatureCVec_SignatureZZ o_conv = *(LDKC2Tuple_SignatureCVec_SignatureZZ*)(o_ptr);
+       o_conv = C2Tuple_SignatureCVec_SignatureZZ_clone((LDKC2Tuple_SignatureCVec_SignatureZZ*)(((uint64_t)o) & ~1));
+       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ), "LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ");
+       *ret_conv = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(o_conv);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_EventHandler_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKEventHandler this_ptr_conv = *(LDKEventHandler*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       EventHandler_free(this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err() {
+       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ), "LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ");
+       *ret_conv = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err();
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_APIError_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKAPIError this_ptr_conv = *(LDKAPIError*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       APIError_free(this_ptr_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_is_ok(uint32_t o) {
+       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* o_conv = (LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(o & ~1);
+       jboolean ret_val = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_is_ok(o_conv);
+       return ret_val;
 }
 
-static inline uint64_t APIError_clone_ptr(LDKAPIError *NONNULL_PTR arg) {
-       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
-       *ret_copy = APIError_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ _res_conv = *(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(_res_conv);
 }
-int64_t  __attribute__((visibility("default"))) TS_APIError_clone_ptr(uint32_t arg) {
-       LDKAPIError* arg_conv = (LDKAPIError*)arg;
-       int64_t ret_val = APIError_clone_ptr(arg_conv);
+
+static inline uint64_t CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone_ptr(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR arg) {
+       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ), "LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ");
+       *ret_conv = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone_ptr(uint32_t arg) {
+       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* arg_conv = (LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(arg & ~1);
+       int64_t ret_val = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_APIError_clone(uint32_t orig) {
-       LDKAPIError* orig_conv = (LDKAPIError*)orig;
-       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
-       *ret_copy = APIError_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(uint32_t orig) {
+       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* orig_conv = (LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(orig & ~1);
+       LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ), "LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ");
+       *ret_conv = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_APIError_apimisuse_error(jstring err) {
-       LDKStr err_conv = str_ref_to_owned_c(err);
-       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
-       *ret_copy = APIError_apimisuse_error(err_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_SignatureNoneZ_ok(int8_tArray o) {
+       LDKSignature o_ref;
+       CHECK(o->arr_len == 64);
+       memcpy(o_ref.compact_form, o->elems, 64);
+       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
+       *ret_conv = CResult_SignatureNoneZ_ok(o_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_APIError_fee_rate_too_high(jstring err, int32_t feerate) {
-       LDKStr err_conv = str_ref_to_owned_c(err);
-       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
-       *ret_copy = APIError_fee_rate_too_high(err_conv, feerate);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_SignatureNoneZ_err() {
+       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
+       *ret_conv = CResult_SignatureNoneZ_err();
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_APIError_route_error(jstring err) {
-       LDKStr err_conv = str_ref_to_owned_c(err);
-       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
-       *ret_copy = APIError_route_error(err_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+jboolean  __attribute__((visibility("default"))) TS_CResult_SignatureNoneZ_is_ok(uint32_t o) {
+       LDKCResult_SignatureNoneZ* o_conv = (LDKCResult_SignatureNoneZ*)(o & ~1);
+       jboolean ret_val = CResult_SignatureNoneZ_is_ok(o_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_APIError_channel_unavailable(jstring err) {
-       LDKStr err_conv = str_ref_to_owned_c(err);
-       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
-       *ret_copy = APIError_channel_unavailable(err_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_CResult_SignatureNoneZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_SignatureNoneZ _res_conv = *(LDKCResult_SignatureNoneZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_SignatureNoneZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_APIError_monitor_update_failed() {
-       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
-       *ret_copy = APIError_monitor_update_failed();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+static inline uint64_t CResult_SignatureNoneZ_clone_ptr(LDKCResult_SignatureNoneZ *NONNULL_PTR arg) {
+       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
+       *ret_conv = CResult_SignatureNoneZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_SignatureNoneZ_clone_ptr(uint32_t arg) {
+       LDKCResult_SignatureNoneZ* arg_conv = (LDKCResult_SignatureNoneZ*)(arg & ~1);
+       int64_t ret_val = CResult_SignatureNoneZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_APIError_incompatible_shutdown_script(uint32_t script) {
-       LDKShutdownScript script_conv;
-       script_conv.inner = (void*)(script & (~1));
-       script_conv.is_owned = (script & 1) || (script == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(script_conv);
-       script_conv = ShutdownScript_clone(&script_conv);
-       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
-       *ret_copy = APIError_incompatible_shutdown_script(script_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_SignatureNoneZ_clone(uint32_t orig) {
+       LDKCResult_SignatureNoneZ* orig_conv = (LDKCResult_SignatureNoneZ*)(orig & ~1);
+       LDKCResult_SignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
+       *ret_conv = CResult_SignatureNoneZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_sign(int8_tArray msg, int8_tArray sk) {
-       LDKu8slice msg_ref;
-       msg_ref.datalen = *((uint32_t*)msg);
-       msg_ref.data = (int8_t*)(msg + 4);
-       unsigned char sk_arr[32];
-       CHECK(*((uint32_t*)sk) == 32);
-       memcpy(sk_arr, (uint8_t*)(sk + 4), 32);
-       unsigned char (*sk_ref)[32] = &sk_arr;
-       LDKCResult_StringErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StringErrorZ), "LDKCResult_StringErrorZ");
-       *ret_conv = sign(msg_ref, sk_ref);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_SignDecodeErrorZ_ok(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKSign o_conv = *(LDKSign*)(o_ptr);
+       LDKCResult_SignDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SignDecodeErrorZ), "LDKCResult_SignDecodeErrorZ");
+       *ret_conv = CResult_SignDecodeErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_recover_pk(int8_tArray msg, jstring sig) {
-       LDKu8slice msg_ref;
-       msg_ref.datalen = *((uint32_t*)msg);
-       msg_ref.data = (int8_t*)(msg + 4);
-       LDKStr sig_conv = str_ref_to_owned_c(sig);
-       LDKCResult_PublicKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeyErrorZ), "LDKCResult_PublicKeyErrorZ");
-       *ret_conv = recover_pk(msg_ref, sig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_SignDecodeErrorZ_err(uint32_t e) {
+       LDKDecodeError e_conv;
+       e_conv.inner = (void*)(e & (~1));
+       e_conv.is_owned = (e & 1) || (e == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_SignDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SignDecodeErrorZ), "LDKCResult_SignDecodeErrorZ");
+       *ret_conv = CResult_SignDecodeErrorZ_err(e_conv);
        return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_verify(int8_tArray msg, jstring sig, int8_tArray pk) {
-       LDKu8slice msg_ref;
-       msg_ref.datalen = *((uint32_t*)msg);
-       msg_ref.data = (int8_t*)(msg + 4);
-       LDKStr sig_conv = str_ref_to_owned_c(sig);
-       LDKPublicKey pk_ref;
-       CHECK(*((uint32_t*)pk) == 33);
-       memcpy(pk_ref.compressed_form, (uint8_t*)(pk + 4), 33);
-       jboolean ret_val = verify(msg_ref, sig_conv, pk_ref);
+jboolean  __attribute__((visibility("default"))) TS_CResult_SignDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_SignDecodeErrorZ* o_conv = (LDKCResult_SignDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_SignDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Level_clone(uint32_t orig) {
-       LDKLevel* orig_conv = (LDKLevel*)(orig & ~1);
-       uint32_t ret_conv = LDKLevel_to_js(Level_clone(orig_conv));
-       return ret_conv;
+void  __attribute__((visibility("default"))) TS_CResult_SignDecodeErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_SignDecodeErrorZ _res_conv = *(LDKCResult_SignDecodeErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_SignDecodeErrorZ_free(_res_conv);
+}
+
+static inline uint64_t CResult_SignDecodeErrorZ_clone_ptr(LDKCResult_SignDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_SignDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SignDecodeErrorZ), "LDKCResult_SignDecodeErrorZ");
+       *ret_conv = CResult_SignDecodeErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_SignDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_SignDecodeErrorZ* arg_conv = (LDKCResult_SignDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_SignDecodeErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Level_gossip() {
-       uint32_t ret_conv = LDKLevel_to_js(Level_gossip());
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_SignDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_SignDecodeErrorZ* orig_conv = (LDKCResult_SignDecodeErrorZ*)(orig & ~1);
+       LDKCResult_SignDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SignDecodeErrorZ), "LDKCResult_SignDecodeErrorZ");
+       *ret_conv = CResult_SignDecodeErrorZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Level_trace() {
-       uint32_t ret_conv = LDKLevel_to_js(Level_trace());
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RecoverableSignatureNoneZ_ok(int8_tArray arg) {
+       LDKRecoverableSignature arg_ref;
+       CHECK(arg->arr_len == 68);
+       memcpy(arg_ref.serialized_form, arg->elems, 68);
+       LDKCResult_RecoverableSignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_RecoverableSignatureNoneZ), "LDKCResult_RecoverableSignatureNoneZ");
+       *ret_conv = CResult_RecoverableSignatureNoneZ_ok(arg_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Level_debug() {
-       uint32_t ret_conv = LDKLevel_to_js(Level_debug());
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RecoverableSignatureNoneZ_err() {
+       LDKCResult_RecoverableSignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_RecoverableSignatureNoneZ), "LDKCResult_RecoverableSignatureNoneZ");
+       *ret_conv = CResult_RecoverableSignatureNoneZ_err();
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Level_info() {
-       uint32_t ret_conv = LDKLevel_to_js(Level_info());
-       return ret_conv;
+jboolean  __attribute__((visibility("default"))) TS_CResult_RecoverableSignatureNoneZ_is_ok(uint32_t o) {
+       LDKCResult_RecoverableSignatureNoneZ* o_conv = (LDKCResult_RecoverableSignatureNoneZ*)(o & ~1);
+       jboolean ret_val = CResult_RecoverableSignatureNoneZ_is_ok(o_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Level_warn() {
-       uint32_t ret_conv = LDKLevel_to_js(Level_warn());
-       return ret_conv;
+void  __attribute__((visibility("default"))) TS_CResult_RecoverableSignatureNoneZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_RecoverableSignatureNoneZ _res_conv = *(LDKCResult_RecoverableSignatureNoneZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_RecoverableSignatureNoneZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Level_error() {
-       uint32_t ret_conv = LDKLevel_to_js(Level_error());
-       return ret_conv;
+static inline uint64_t CResult_RecoverableSignatureNoneZ_clone_ptr(LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR arg) {
+       LDKCResult_RecoverableSignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_RecoverableSignatureNoneZ), "LDKCResult_RecoverableSignatureNoneZ");
+       *ret_conv = CResult_RecoverableSignatureNoneZ_clone(arg);
+       return (uint64_t)ret_conv;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_Level_eq(uint32_t a, uint32_t b) {
-       LDKLevel* a_conv = (LDKLevel*)(a & ~1);
-       LDKLevel* b_conv = (LDKLevel*)(b & ~1);
-       jboolean ret_val = Level_eq(a_conv, b_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_RecoverableSignatureNoneZ_clone_ptr(uint32_t arg) {
+       LDKCResult_RecoverableSignatureNoneZ* arg_conv = (LDKCResult_RecoverableSignatureNoneZ*)(arg & ~1);
+       int64_t ret_val = CResult_RecoverableSignatureNoneZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_Level_hash(uint32_t o) {
-       LDKLevel* o_conv = (LDKLevel*)(o & ~1);
-       int64_t ret_val = Level_hash(o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_RecoverableSignatureNoneZ_clone(uint32_t orig) {
+       LDKCResult_RecoverableSignatureNoneZ* orig_conv = (LDKCResult_RecoverableSignatureNoneZ*)(orig & ~1);
+       LDKCResult_RecoverableSignatureNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_RecoverableSignatureNoneZ), "LDKCResult_RecoverableSignatureNoneZ");
+       *ret_conv = CResult_RecoverableSignatureNoneZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Level_max() {
-       uint32_t ret_conv = LDKLevel_to_js(Level_max());
-       return ret_conv;
+void  __attribute__((visibility("default"))) TS_CVec_CVec_u8ZZ_free(ptrArray _res) {
+       LDKCVec_CVec_u8ZZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKCVec_u8Z), "LDKCVec_CVec_u8ZZ Elements");
+       else
+               _res_constr.data = NULL;
+       int8_tArray* _res_vals = (void*) _res->elems;
+       for (size_t m = 0; m < _res_constr.datalen; m++) {
+               int8_tArray _res_conv_12 = _res_vals[m];
+               LDKCVec_u8Z _res_conv_12_ref;
+               _res_conv_12_ref.datalen = _res_conv_12->arr_len;
+               _res_conv_12_ref.data = MALLOC(_res_conv_12_ref.datalen, "LDKCVec_u8Z Bytes");
+               memcpy(_res_conv_12_ref.data, _res_conv_12->elems, _res_conv_12_ref.datalen);
+               _res_constr.data[m] = _res_conv_12_ref;
+       }
+       CVec_CVec_u8ZZ_free(_res_constr);
 }
 
-void  __attribute__((visibility("default"))) TS_Record_free(uint32_t this_obj) {
-       LDKRecord this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       Record_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_CVec_CVec_u8ZZNoneZ_ok(ptrArray o) {
+       LDKCVec_CVec_u8ZZ o_constr;
+       o_constr.datalen = o->arr_len;
+       if (o_constr.datalen > 0)
+               o_constr.data = MALLOC(o_constr.datalen * sizeof(LDKCVec_u8Z), "LDKCVec_CVec_u8ZZ Elements");
+       else
+               o_constr.data = NULL;
+       int8_tArray* o_vals = (void*) o->elems;
+       for (size_t m = 0; m < o_constr.datalen; m++) {
+               int8_tArray o_conv_12 = o_vals[m];
+               LDKCVec_u8Z o_conv_12_ref;
+               o_conv_12_ref.datalen = o_conv_12->arr_len;
+               o_conv_12_ref.data = MALLOC(o_conv_12_ref.datalen, "LDKCVec_u8Z Bytes");
+               memcpy(o_conv_12_ref.data, o_conv_12->elems, o_conv_12_ref.datalen);
+               o_constr.data[m] = o_conv_12_ref;
+       }
+       LDKCResult_CVec_CVec_u8ZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ), "LDKCResult_CVec_CVec_u8ZZNoneZ");
+       *ret_conv = CResult_CVec_CVec_u8ZZNoneZ_ok(o_constr);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Record_get_level(uint32_t this_ptr) {
-       LDKRecord this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       uint32_t ret_conv = LDKLevel_to_js(Record_get_level(&this_ptr_conv));
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_CVec_CVec_u8ZZNoneZ_err() {
+       LDKCResult_CVec_CVec_u8ZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ), "LDKCResult_CVec_CVec_u8ZZNoneZ");
+       *ret_conv = CResult_CVec_CVec_u8ZZNoneZ_err();
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_Record_set_level(uint32_t this_ptr, uint32_t val) {
-       LDKRecord this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKLevel val_conv = LDKLevel_from_js(val);
-       Record_set_level(&this_ptr_conv, val_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_CVec_CVec_u8ZZNoneZ_is_ok(uint32_t o) {
+       LDKCResult_CVec_CVec_u8ZZNoneZ* o_conv = (LDKCResult_CVec_CVec_u8ZZNoneZ*)(o & ~1);
+       jboolean ret_val = CResult_CVec_CVec_u8ZZNoneZ_is_ok(o_conv);
+       return ret_val;
 }
 
-jstring  __attribute__((visibility("default"))) TS_Record_get_args(uint32_t this_ptr) {
-       LDKRecord this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKStr ret_str = Record_get_args(&this_ptr_conv);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
+void  __attribute__((visibility("default"))) TS_CResult_CVec_CVec_u8ZZNoneZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_CVec_CVec_u8ZZNoneZ _res_conv = *(LDKCResult_CVec_CVec_u8ZZNoneZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_CVec_CVec_u8ZZNoneZ_free(_res_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_Record_set_args(uint32_t this_ptr, jstring val) {
-       LDKRecord this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKStr val_conv = str_ref_to_owned_c(val);
-       Record_set_args(&this_ptr_conv, val_conv);
+static inline uint64_t CResult_CVec_CVec_u8ZZNoneZ_clone_ptr(LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR arg) {
+       LDKCResult_CVec_CVec_u8ZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ), "LDKCResult_CVec_CVec_u8ZZNoneZ");
+       *ret_conv = CResult_CVec_CVec_u8ZZNoneZ_clone(arg);
+       return (uint64_t)ret_conv;
 }
-
-jstring  __attribute__((visibility("default"))) TS_Record_get_module_path(uint32_t this_ptr) {
-       LDKRecord this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKStr ret_str = Record_get_module_path(&this_ptr_conv);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
+int64_t  __attribute__((visibility("default"))) TS_CResult_CVec_CVec_u8ZZNoneZ_clone_ptr(uint32_t arg) {
+       LDKCResult_CVec_CVec_u8ZZNoneZ* arg_conv = (LDKCResult_CVec_CVec_u8ZZNoneZ*)(arg & ~1);
+       int64_t ret_val = CResult_CVec_CVec_u8ZZNoneZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_Record_set_module_path(uint32_t this_ptr, jstring val) {
-       LDKRecord this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKStr val_conv = str_ref_to_owned_c(val);
-       Record_set_module_path(&this_ptr_conv, val_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_CVec_CVec_u8ZZNoneZ_clone(uint32_t orig) {
+       LDKCResult_CVec_CVec_u8ZZNoneZ* orig_conv = (LDKCResult_CVec_CVec_u8ZZNoneZ*)(orig & ~1);
+       LDKCResult_CVec_CVec_u8ZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ), "LDKCResult_CVec_CVec_u8ZZNoneZ");
+       *ret_conv = CResult_CVec_CVec_u8ZZNoneZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-jstring  __attribute__((visibility("default"))) TS_Record_get_file(uint32_t this_ptr) {
-       LDKRecord this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKStr ret_str = Record_get_file(&this_ptr_conv);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_InMemorySignerDecodeErrorZ_ok(uint32_t o) {
+       LDKInMemorySigner o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = (o & 1) || (o == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       o_conv = InMemorySigner_clone(&o_conv);
+       LDKCResult_InMemorySignerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InMemorySignerDecodeErrorZ), "LDKCResult_InMemorySignerDecodeErrorZ");
+       *ret_conv = CResult_InMemorySignerDecodeErrorZ_ok(o_conv);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_Record_set_file(uint32_t this_ptr, jstring val) {
-       LDKRecord this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKStr val_conv = str_ref_to_owned_c(val);
-       Record_set_file(&this_ptr_conv, val_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_InMemorySignerDecodeErrorZ_err(uint32_t e) {
+       LDKDecodeError e_conv;
+       e_conv.inner = (void*)(e & (~1));
+       e_conv.is_owned = (e & 1) || (e == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       e_conv = DecodeError_clone(&e_conv);
+       LDKCResult_InMemorySignerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InMemorySignerDecodeErrorZ), "LDKCResult_InMemorySignerDecodeErrorZ");
+       *ret_conv = CResult_InMemorySignerDecodeErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
 
-int32_t  __attribute__((visibility("default"))) TS_Record_get_line(uint32_t this_ptr) {
-       LDKRecord this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = Record_get_line(&this_ptr_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_InMemorySignerDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_InMemorySignerDecodeErrorZ* o_conv = (LDKCResult_InMemorySignerDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_InMemorySignerDecodeErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_Record_set_line(uint32_t this_ptr, int32_t val) {
-       LDKRecord this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       Record_set_line(&this_ptr_conv, val);
+void  __attribute__((visibility("default"))) TS_CResult_InMemorySignerDecodeErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_InMemorySignerDecodeErrorZ _res_conv = *(LDKCResult_InMemorySignerDecodeErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_InMemorySignerDecodeErrorZ_free(_res_conv);
 }
 
-static inline uint64_t Record_clone_ptr(LDKRecord *NONNULL_PTR arg) {
-       LDKRecord ret_var = Record_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
+static inline uint64_t CResult_InMemorySignerDecodeErrorZ_clone_ptr(LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR arg) {
+       LDKCResult_InMemorySignerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InMemorySignerDecodeErrorZ), "LDKCResult_InMemorySignerDecodeErrorZ");
+       *ret_conv = CResult_InMemorySignerDecodeErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_Record_clone_ptr(uint32_t arg) {
-       LDKRecord arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = Record_clone_ptr(&arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_InMemorySignerDecodeErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_InMemorySignerDecodeErrorZ* arg_conv = (LDKCResult_InMemorySignerDecodeErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_InMemorySignerDecodeErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Record_clone(uint32_t orig) {
-       LDKRecord orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKRecord ret_var = Record_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_InMemorySignerDecodeErrorZ_clone(uint32_t orig) {
+       LDKCResult_InMemorySignerDecodeErrorZ* orig_conv = (LDKCResult_InMemorySignerDecodeErrorZ*)(orig & ~1);
+       LDKCResult_InMemorySignerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InMemorySignerDecodeErrorZ), "LDKCResult_InMemorySignerDecodeErrorZ");
+       *ret_conv = CResult_InMemorySignerDecodeErrorZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_CVec_TxOutZ_free(uint32_tArray _res) {
+       LDKCVec_TxOutZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKTxOut), "LDKCVec_TxOutZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t h = 0; h < _res_constr.datalen; h++) {
+               uint32_t _res_conv_7 = _res_vals[h];
+               void* _res_conv_7_ptr = (void*)(((uint64_t)_res_conv_7) & ~1);
+               CHECK_ACCESS(_res_conv_7_ptr);
+               LDKTxOut _res_conv_7_conv = *(LDKTxOut*)(_res_conv_7_ptr);
+               FREE((void*)_res_conv_7);
+               _res_constr.data[h] = _res_conv_7_conv;
        }
-       return ret_ref;
+       CVec_TxOutZ_free(_res_constr);
 }
 
-void  __attribute__((visibility("default"))) TS_Logger_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKLogger this_ptr_conv = *(LDKLogger*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       Logger_free(this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_TransactionNoneZ_ok(int8_tArray o) {
+       LDKTransaction o_ref;
+       o_ref.datalen = o->arr_len;
+       o_ref.data = MALLOC(o_ref.datalen, "LDKTransaction Bytes");
+       memcpy(o_ref.data, o->elems, o_ref.datalen);
+       o_ref.data_is_owned = true;
+       LDKCResult_TransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TransactionNoneZ), "LDKCResult_TransactionNoneZ");
+       *ret_conv = CResult_TransactionNoneZ_ok(o_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_free(uint32_t this_obj) {
-       LDKChannelHandshakeConfig this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelHandshakeConfig_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_TransactionNoneZ_err() {
+       LDKCResult_TransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TransactionNoneZ), "LDKCResult_TransactionNoneZ");
+       *ret_conv = CResult_TransactionNoneZ_err();
+       return (uint64_t)ret_conv;
 }
 
-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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = ChannelHandshakeConfig_get_minimum_depth(&this_ptr_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_TransactionNoneZ_is_ok(uint32_t o) {
+       LDKCResult_TransactionNoneZ* o_conv = (LDKCResult_TransactionNoneZ*)(o & ~1);
+       jboolean ret_val = CResult_TransactionNoneZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_set_minimum_depth(uint32_t this_ptr, int32_t val) {
-       LDKChannelHandshakeConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelHandshakeConfig_set_minimum_depth(&this_ptr_conv, val);
+void  __attribute__((visibility("default"))) TS_CResult_TransactionNoneZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_TransactionNoneZ _res_conv = *(LDKCResult_TransactionNoneZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_TransactionNoneZ_free(_res_conv);
 }
 
-int16_t  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_get_our_to_self_delay(uint32_t this_ptr) {
-       LDKChannelHandshakeConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = ChannelHandshakeConfig_get_our_to_self_delay(&this_ptr_conv);
+static inline uint64_t CResult_TransactionNoneZ_clone_ptr(LDKCResult_TransactionNoneZ *NONNULL_PTR arg) {
+       LDKCResult_TransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TransactionNoneZ), "LDKCResult_TransactionNoneZ");
+       *ret_conv = CResult_TransactionNoneZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_TransactionNoneZ_clone_ptr(uint32_t arg) {
+       LDKCResult_TransactionNoneZ* arg_conv = (LDKCResult_TransactionNoneZ*)(arg & ~1);
+       int64_t ret_val = CResult_TransactionNoneZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_set_our_to_self_delay(uint32_t this_ptr, int16_t val) {
-       LDKChannelHandshakeConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelHandshakeConfig_set_our_to_self_delay(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_TransactionNoneZ_clone(uint32_t orig) {
+       LDKCResult_TransactionNoneZ* orig_conv = (LDKCResult_TransactionNoneZ*)(orig & ~1);
+       LDKCResult_TransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TransactionNoneZ), "LDKCResult_TransactionNoneZ");
+       *ret_conv = CResult_TransactionNoneZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_get_our_htlc_minimum_msat(uint32_t this_ptr) {
-       LDKChannelHandshakeConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelHandshakeConfig_get_our_htlc_minimum_msat(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_COption_FilterZ_some(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKFilter o_conv = *(LDKFilter*)(o_ptr);
+       LDKCOption_FilterZ *ret_copy = MALLOC(sizeof(LDKCOption_FilterZ), "LDKCOption_FilterZ");
+       *ret_copy = COption_FilterZ_some(o_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_set_our_htlc_minimum_msat(uint32_t this_ptr, int64_t val) {
-       LDKChannelHandshakeConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelHandshakeConfig_set_our_htlc_minimum_msat(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_COption_FilterZ_none() {
+       LDKCOption_FilterZ *ret_copy = MALLOC(sizeof(LDKCOption_FilterZ), "LDKCOption_FilterZ");
+       *ret_copy = COption_FilterZ_none();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_new(int32_t minimum_depth_arg, int16_t our_to_self_delay_arg, int64_t our_htlc_minimum_msat_arg) {
-       LDKChannelHandshakeConfig ret_var = ChannelHandshakeConfig_new(minimum_depth_arg, our_to_self_delay_arg, our_htlc_minimum_msat_arg);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_COption_FilterZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCOption_FilterZ _res_conv = *(LDKCOption_FilterZ*)(_res_ptr);
+       FREE((void*)_res);
+       COption_FilterZ_free(_res_conv);
 }
 
-static inline uint64_t ChannelHandshakeConfig_clone_ptr(LDKChannelHandshakeConfig *NONNULL_PTR arg) {
-       LDKChannelHandshakeConfig ret_var = ChannelHandshakeConfig_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_LockedChannelMonitorNoneZ_ok(uint32_t o) {
+       LDKLockedChannelMonitor o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = (o & 1) || (o == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       // Warning: we need a move here but no clone is available for LDKLockedChannelMonitor
+       LDKCResult_LockedChannelMonitorNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_LockedChannelMonitorNoneZ), "LDKCResult_LockedChannelMonitorNoneZ");
+       *ret_conv = CResult_LockedChannelMonitorNoneZ_ok(o_conv);
+       return (uint64_t)ret_conv;
 }
-       return ret_ref;
+
+uint32_t  __attribute__((visibility("default"))) TS_CResult_LockedChannelMonitorNoneZ_err() {
+       LDKCResult_LockedChannelMonitorNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_LockedChannelMonitorNoneZ), "LDKCResult_LockedChannelMonitorNoneZ");
+       *ret_conv = CResult_LockedChannelMonitorNoneZ_err();
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_clone_ptr(uint32_t arg) {
-       LDKChannelHandshakeConfig arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelHandshakeConfig_clone_ptr(&arg_conv);
+
+jboolean  __attribute__((visibility("default"))) TS_CResult_LockedChannelMonitorNoneZ_is_ok(uint32_t o) {
+       LDKCResult_LockedChannelMonitorNoneZ* o_conv = (LDKCResult_LockedChannelMonitorNoneZ*)(o & ~1);
+       jboolean ret_val = CResult_LockedChannelMonitorNoneZ_is_ok(o_conv);
        return ret_val;
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelHandshakeConfig ret_var = ChannelHandshakeConfig_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_CResult_LockedChannelMonitorNoneZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_LockedChannelMonitorNoneZ _res_conv = *(LDKCResult_LockedChannelMonitorNoneZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_LockedChannelMonitorNoneZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_default() {
-       LDKChannelHandshakeConfig ret_var = ChannelHandshakeConfig_default();
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
+void  __attribute__((visibility("default"))) TS_CVec_OutPointZ_free(uint32_tArray _res) {
+       LDKCVec_OutPointZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKOutPoint), "LDKCVec_OutPointZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t k = 0; k < _res_constr.datalen; k++) {
+               uint32_t _res_conv_10 = _res_vals[k];
+               LDKOutPoint _res_conv_10_conv;
+               _res_conv_10_conv.inner = (void*)(_res_conv_10 & (~1));
+               _res_conv_10_conv.is_owned = (_res_conv_10 & 1) || (_res_conv_10 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_10_conv);
+               _res_constr.data[k] = _res_conv_10_conv;
        }
-       return ret_ref;
+       CVec_OutPointZ_free(_res_constr);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_free(uint32_t this_obj) {
-       LDKChannelHandshakeLimits this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelHandshakeLimits_free(this_obj_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 (uint64_t)ret_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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelHandshakeLimits_get_min_funding_satoshis(&this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NoneAPIErrorZ_err(uint32_t e) {
+       void* e_ptr = (void*)(((uint64_t)e) & ~1);
+       CHECK_ACCESS(e_ptr);
+       LDKAPIError e_conv = *(LDKAPIError*)(e_ptr);
+       e_conv = APIError_clone((LDKAPIError*)(((uint64_t)e) & ~1));
+       LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
+       *ret_conv = CResult_NoneAPIErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
+}
+
+jboolean  __attribute__((visibility("default"))) TS_CResult_NoneAPIErrorZ_is_ok(uint32_t o) {
+       LDKCResult_NoneAPIErrorZ* o_conv = (LDKCResult_NoneAPIErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_NoneAPIErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_min_funding_satoshis(uint32_t this_ptr, int64_t val) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelHandshakeLimits_set_min_funding_satoshis(&this_ptr_conv, val);
+void  __attribute__((visibility("default"))) TS_CResult_NoneAPIErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_NoneAPIErrorZ _res_conv = *(LDKCResult_NoneAPIErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_NoneAPIErrorZ_free(_res_conv);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_get_max_htlc_minimum_msat(uint32_t this_ptr) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelHandshakeLimits_get_max_htlc_minimum_msat(&this_ptr_conv);
+static inline uint64_t CResult_NoneAPIErrorZ_clone_ptr(LDKCResult_NoneAPIErrorZ *NONNULL_PTR arg) {
+       LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
+       *ret_conv = CResult_NoneAPIErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_NoneAPIErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_NoneAPIErrorZ* arg_conv = (LDKCResult_NoneAPIErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_NoneAPIErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_max_htlc_minimum_msat(uint32_t this_ptr, int64_t val) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelHandshakeLimits_set_max_htlc_minimum_msat(&this_ptr_conv, val);
+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 (uint64_t)ret_conv;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_get_min_max_htlc_value_in_flight_msat(uint32_t this_ptr) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelHandshakeLimits_get_min_max_htlc_value_in_flight_msat(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_COption_u16Z_some(int16_t o) {
+       LDKCOption_u16Z *ret_copy = MALLOC(sizeof(LDKCOption_u16Z), "LDKCOption_u16Z");
+       *ret_copy = COption_u16Z_some(o);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_min_max_htlc_value_in_flight_msat(uint32_t this_ptr, int64_t val) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelHandshakeLimits_set_min_max_htlc_value_in_flight_msat(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_COption_u16Z_none() {
+       LDKCOption_u16Z *ret_copy = MALLOC(sizeof(LDKCOption_u16Z), "LDKCOption_u16Z");
+       *ret_copy = COption_u16Z_none();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_get_max_channel_reserve_satoshis(uint32_t this_ptr) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelHandshakeLimits_get_max_channel_reserve_satoshis(&this_ptr_conv);
+void  __attribute__((visibility("default"))) TS_COption_u16Z_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCOption_u16Z _res_conv = *(LDKCOption_u16Z*)(_res_ptr);
+       FREE((void*)_res);
+       COption_u16Z_free(_res_conv);
+}
+
+static inline uint64_t COption_u16Z_clone_ptr(LDKCOption_u16Z *NONNULL_PTR arg) {
+       LDKCOption_u16Z *ret_copy = MALLOC(sizeof(LDKCOption_u16Z), "LDKCOption_u16Z");
+       *ret_copy = COption_u16Z_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_COption_u16Z_clone_ptr(uint32_t arg) {
+       LDKCOption_u16Z* arg_conv = (LDKCOption_u16Z*)arg;
+       int64_t ret_val = COption_u16Z_clone_ptr(arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_max_channel_reserve_satoshis(uint32_t this_ptr, int64_t val) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelHandshakeLimits_set_max_channel_reserve_satoshis(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_COption_u16Z_clone(uint32_t orig) {
+       LDKCOption_u16Z* orig_conv = (LDKCOption_u16Z*)orig;
+       LDKCOption_u16Z *ret_copy = MALLOC(sizeof(LDKCOption_u16Z), "LDKCOption_u16Z");
+       *ret_copy = COption_u16Z_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-int16_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_get_min_max_accepted_htlcs(uint32_t this_ptr) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = ChannelHandshakeLimits_get_min_max_accepted_htlcs(&this_ptr_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_CVec_CResult_NoneAPIErrorZZ_free(uint32_tArray _res) {
+       LDKCVec_CResult_NoneAPIErrorZZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKCResult_NoneAPIErrorZ), "LDKCVec_CResult_NoneAPIErrorZZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t w = 0; w < _res_constr.datalen; w++) {
+               uint32_t _res_conv_22 = _res_vals[w];
+               void* _res_conv_22_ptr = (void*)(((uint64_t)_res_conv_22) & ~1);
+               CHECK_ACCESS(_res_conv_22_ptr);
+               LDKCResult_NoneAPIErrorZ _res_conv_22_conv = *(LDKCResult_NoneAPIErrorZ*)(_res_conv_22_ptr);
+               FREE((void*)_res_conv_22);
+               _res_constr.data[w] = _res_conv_22_conv;
+       }
+       CVec_CResult_NoneAPIErrorZZ_free(_res_constr);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_min_max_accepted_htlcs(uint32_t this_ptr, int16_t val) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelHandshakeLimits_set_min_max_accepted_htlcs(&this_ptr_conv, val);
+void  __attribute__((visibility("default"))) TS_CVec_APIErrorZ_free(uint32_tArray _res) {
+       LDKCVec_APIErrorZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       if (_res_constr.datalen > 0)
+               _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKAPIError), "LDKCVec_APIErrorZ Elements");
+       else
+               _res_constr.data = NULL;
+       uint32_t* _res_vals = _res->elems;
+       for (size_t k = 0; k < _res_constr.datalen; k++) {
+               uint32_t _res_conv_10 = _res_vals[k];
+               void* _res_conv_10_ptr = (void*)(((uint64_t)_res_conv_10) & ~1);
+               CHECK_ACCESS(_res_conv_10_ptr);
+               LDKAPIError _res_conv_10_conv = *(LDKAPIError*)(_res_conv_10_ptr);
+               FREE((void*)_res_conv_10);
+               _res_constr.data[k] = _res_conv_10_conv;
+       }
+       CVec_APIErrorZ_free(_res_constr);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_get_max_minimum_depth(uint32_t this_ptr) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = ChannelHandshakeLimits_get_max_minimum_depth(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_CResult__u832APIErrorZ_ok(int8_tArray o) {
+       LDKThirtyTwoBytes o_ref;
+       CHECK(o->arr_len == 32);
+       memcpy(o_ref.data, o->elems, 32);
+       LDKCResult__u832APIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult__u832APIErrorZ), "LDKCResult__u832APIErrorZ");
+       *ret_conv = CResult__u832APIErrorZ_ok(o_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_max_minimum_depth(uint32_t this_ptr, int32_t val) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelHandshakeLimits_set_max_minimum_depth(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_CResult__u832APIErrorZ_err(uint32_t e) {
+       void* e_ptr = (void*)(((uint64_t)e) & ~1);
+       CHECK_ACCESS(e_ptr);
+       LDKAPIError e_conv = *(LDKAPIError*)(e_ptr);
+       e_conv = APIError_clone((LDKAPIError*)(((uint64_t)e) & ~1));
+       LDKCResult__u832APIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult__u832APIErrorZ), "LDKCResult__u832APIErrorZ");
+       *ret_conv = CResult__u832APIErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_get_force_announced_channel_preference(uint32_t this_ptr) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = ChannelHandshakeLimits_get_force_announced_channel_preference(&this_ptr_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult__u832APIErrorZ_is_ok(uint32_t o) {
+       LDKCResult__u832APIErrorZ* o_conv = (LDKCResult__u832APIErrorZ*)(o & ~1);
+       jboolean ret_val = CResult__u832APIErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_force_announced_channel_preference(uint32_t this_ptr, jboolean val) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelHandshakeLimits_set_force_announced_channel_preference(&this_ptr_conv, val);
+void  __attribute__((visibility("default"))) TS_CResult__u832APIErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult__u832APIErrorZ _res_conv = *(LDKCResult__u832APIErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult__u832APIErrorZ_free(_res_conv);
 }
 
-int16_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_get_their_to_self_delay(uint32_t this_ptr) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = ChannelHandshakeLimits_get_their_to_self_delay(&this_ptr_conv);
+static inline uint64_t CResult__u832APIErrorZ_clone_ptr(LDKCResult__u832APIErrorZ *NONNULL_PTR arg) {
+       LDKCResult__u832APIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult__u832APIErrorZ), "LDKCResult__u832APIErrorZ");
+       *ret_conv = CResult__u832APIErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult__u832APIErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult__u832APIErrorZ* arg_conv = (LDKCResult__u832APIErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult__u832APIErrorZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_their_to_self_delay(uint32_t this_ptr, int16_t val) {
-       LDKChannelHandshakeLimits this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelHandshakeLimits_set_their_to_self_delay(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_CResult__u832APIErrorZ_clone(uint32_t orig) {
+       LDKCResult__u832APIErrorZ* orig_conv = (LDKCResult__u832APIErrorZ*)(orig & ~1);
+       LDKCResult__u832APIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult__u832APIErrorZ), "LDKCResult__u832APIErrorZ");
+       *ret_conv = CResult__u832APIErrorZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_new(int64_t min_funding_satoshis_arg, int64_t max_htlc_minimum_msat_arg, int64_t min_max_htlc_value_in_flight_msat_arg, int64_t max_channel_reserve_satoshis_arg, int16_t min_max_accepted_htlcs_arg, int32_t max_minimum_depth_arg, jboolean force_announced_channel_preference_arg, int16_t their_to_self_delay_arg) {
-       LDKChannelHandshakeLimits ret_var = 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, max_minimum_depth_arg, force_announced_channel_preference_arg, their_to_self_delay_arg);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentSendFailureZ_ok(int8_tArray o) {
+       LDKThirtyTwoBytes o_ref;
+       CHECK(o->arr_len == 32);
+       memcpy(o_ref.data, o->elems, 32);
+       LDKCResult_PaymentIdPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentSendFailureZ), "LDKCResult_PaymentIdPaymentSendFailureZ");
+       *ret_conv = CResult_PaymentIdPaymentSendFailureZ_ok(o_ref);
+       return (uint64_t)ret_conv;
 }
 
-static inline uint64_t ChannelHandshakeLimits_clone_ptr(LDKChannelHandshakeLimits *NONNULL_PTR arg) {
-       LDKChannelHandshakeLimits ret_var = ChannelHandshakeLimits_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentSendFailureZ_err(uint32_t e) {
+       void* e_ptr = (void*)(((uint64_t)e) & ~1);
+       CHECK_ACCESS(e_ptr);
+       LDKPaymentSendFailure e_conv = *(LDKPaymentSendFailure*)(e_ptr);
+       e_conv = PaymentSendFailure_clone((LDKPaymentSendFailure*)(((uint64_t)e) & ~1));
+       LDKCResult_PaymentIdPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentSendFailureZ), "LDKCResult_PaymentIdPaymentSendFailureZ");
+       *ret_conv = CResult_PaymentIdPaymentSendFailureZ_err(e_conv);
+       return (uint64_t)ret_conv;
+}
+
+jboolean  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentSendFailureZ_is_ok(uint32_t o) {
+       LDKCResult_PaymentIdPaymentSendFailureZ* o_conv = (LDKCResult_PaymentIdPaymentSendFailureZ*)(o & ~1);
+       jboolean ret_val = CResult_PaymentIdPaymentSendFailureZ_is_ok(o_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentSendFailureZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_PaymentIdPaymentSendFailureZ _res_conv = *(LDKCResult_PaymentIdPaymentSendFailureZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_PaymentIdPaymentSendFailureZ_free(_res_conv);
 }
-       return ret_ref;
+
+static inline uint64_t CResult_PaymentIdPaymentSendFailureZ_clone_ptr(LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR arg) {
+       LDKCResult_PaymentIdPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentSendFailureZ), "LDKCResult_PaymentIdPaymentSendFailureZ");
+       *ret_conv = CResult_PaymentIdPaymentSendFailureZ_clone(arg);
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_clone_ptr(uint32_t arg) {
-       LDKChannelHandshakeLimits arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelHandshakeLimits_clone_ptr(&arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentSendFailureZ_clone_ptr(uint32_t arg) {
+       LDKCResult_PaymentIdPaymentSendFailureZ* arg_conv = (LDKCResult_PaymentIdPaymentSendFailureZ*)(arg & ~1);
+       int64_t ret_val = CResult_PaymentIdPaymentSendFailureZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelHandshakeLimits ret_var = ChannelHandshakeLimits_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentIdPaymentSendFailureZ_clone(uint32_t orig) {
+       LDKCResult_PaymentIdPaymentSendFailureZ* orig_conv = (LDKCResult_PaymentIdPaymentSendFailureZ*)(orig & ~1);
+       LDKCResult_PaymentIdPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentSendFailureZ), "LDKCResult_PaymentIdPaymentSendFailureZ");
+       *ret_conv = CResult_PaymentIdPaymentSendFailureZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_default() {
-       LDKChannelHandshakeLimits ret_var = ChannelHandshakeLimits_default();
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+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 (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelConfig_free(uint32_t this_obj) {
-       LDKChannelConfig this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelConfig_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_NonePaymentSendFailureZ_err(uint32_t e) {
+       void* e_ptr = (void*)(((uint64_t)e) & ~1);
+       CHECK_ACCESS(e_ptr);
+       LDKPaymentSendFailure e_conv = *(LDKPaymentSendFailure*)(e_ptr);
+       e_conv = PaymentSendFailure_clone((LDKPaymentSendFailure*)(((uint64_t)e) & ~1));
+       LDKCResult_NonePaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePaymentSendFailureZ), "LDKCResult_NonePaymentSendFailureZ");
+       *ret_conv = CResult_NonePaymentSendFailureZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
 
-int32_t  __attribute__((visibility("default"))) TS_ChannelConfig_get_forwarding_fee_proportional_millionths(uint32_t this_ptr) {
-       LDKChannelConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = ChannelConfig_get_forwarding_fee_proportional_millionths(&this_ptr_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_NonePaymentSendFailureZ_is_ok(uint32_t o) {
+       LDKCResult_NonePaymentSendFailureZ* o_conv = (LDKCResult_NonePaymentSendFailureZ*)(o & ~1);
+       jboolean ret_val = CResult_NonePaymentSendFailureZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelConfig_set_forwarding_fee_proportional_millionths(uint32_t this_ptr, int32_t val) {
-       LDKChannelConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelConfig_set_forwarding_fee_proportional_millionths(&this_ptr_conv, val);
+void  __attribute__((visibility("default"))) TS_CResult_NonePaymentSendFailureZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_NonePaymentSendFailureZ _res_conv = *(LDKCResult_NonePaymentSendFailureZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_NonePaymentSendFailureZ_free(_res_conv);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_ChannelConfig_get_forwarding_fee_base_msat(uint32_t this_ptr) {
-       LDKChannelConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = ChannelConfig_get_forwarding_fee_base_msat(&this_ptr_conv);
+static inline uint64_t CResult_NonePaymentSendFailureZ_clone_ptr(LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR arg) {
+       LDKCResult_NonePaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePaymentSendFailureZ), "LDKCResult_NonePaymentSendFailureZ");
+       *ret_conv = CResult_NonePaymentSendFailureZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_NonePaymentSendFailureZ_clone_ptr(uint32_t arg) {
+       LDKCResult_NonePaymentSendFailureZ* arg_conv = (LDKCResult_NonePaymentSendFailureZ*)(arg & ~1);
+       int64_t ret_val = CResult_NonePaymentSendFailureZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelConfig_set_forwarding_fee_base_msat(uint32_t this_ptr, int32_t val) {
-       LDKChannelConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelConfig_set_forwarding_fee_base_msat(&this_ptr_conv, val);
+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 (uint64_t)ret_conv;
 }
 
-int16_t  __attribute__((visibility("default"))) TS_ChannelConfig_get_cltv_expiry_delta(uint32_t this_ptr) {
-       LDKChannelConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = ChannelConfig_get_cltv_expiry_delta(&this_ptr_conv);
+static inline uint64_t C2Tuple_PaymentHashPaymentIdZ_clone_ptr(LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR arg) {
+       LDKC2Tuple_PaymentHashPaymentIdZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentIdZ), "LDKC2Tuple_PaymentHashPaymentIdZ");
+       *ret_conv = C2Tuple_PaymentHashPaymentIdZ_clone(arg);
+       return ((uint64_t)ret_conv);
+}
+int64_t  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentIdZ_clone_ptr(uint32_t arg) {
+       LDKC2Tuple_PaymentHashPaymentIdZ* arg_conv = (LDKC2Tuple_PaymentHashPaymentIdZ*)(arg & ~1);
+       int64_t ret_val = C2Tuple_PaymentHashPaymentIdZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelConfig_set_cltv_expiry_delta(uint32_t this_ptr, int16_t val) {
-       LDKChannelConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelConfig_set_cltv_expiry_delta(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentIdZ_clone(uint32_t orig) {
+       LDKC2Tuple_PaymentHashPaymentIdZ* orig_conv = (LDKC2Tuple_PaymentHashPaymentIdZ*)(orig & ~1);
+       LDKC2Tuple_PaymentHashPaymentIdZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentIdZ), "LDKC2Tuple_PaymentHashPaymentIdZ");
+       *ret_conv = C2Tuple_PaymentHashPaymentIdZ_clone(orig_conv);
+       return ((uint64_t)ret_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelConfig_get_announced_channel(uint32_t this_ptr) {
-       LDKChannelConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = ChannelConfig_get_announced_channel(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentIdZ_new(int8_tArray a, int8_tArray b) {
+       LDKThirtyTwoBytes a_ref;
+       CHECK(a->arr_len == 32);
+       memcpy(a_ref.data, a->elems, 32);
+       LDKThirtyTwoBytes b_ref;
+       CHECK(b->arr_len == 32);
+       memcpy(b_ref.data, b->elems, 32);
+       LDKC2Tuple_PaymentHashPaymentIdZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentIdZ), "LDKC2Tuple_PaymentHashPaymentIdZ");
+       *ret_conv = C2Tuple_PaymentHashPaymentIdZ_new(a_ref, b_ref);
+       return ((uint64_t)ret_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelConfig_set_announced_channel(uint32_t this_ptr, jboolean val) {
-       LDKChannelConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelConfig_set_announced_channel(&this_ptr_conv, val);
+void  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentIdZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKC2Tuple_PaymentHashPaymentIdZ _res_conv = *(LDKC2Tuple_PaymentHashPaymentIdZ*)(_res_ptr);
+       FREE((void*)_res);
+       C2Tuple_PaymentHashPaymentIdZ_free(_res_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelConfig_get_commit_upfront_shutdown_pubkey(uint32_t this_ptr) {
-       LDKChannelConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = ChannelConfig_get_commit_upfront_shutdown_pubkey(&this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_ok(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKC2Tuple_PaymentHashPaymentIdZ o_conv = *(LDKC2Tuple_PaymentHashPaymentIdZ*)(o_ptr);
+       o_conv = C2Tuple_PaymentHashPaymentIdZ_clone((LDKC2Tuple_PaymentHashPaymentIdZ*)(((uint64_t)o) & ~1));
+       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ), "LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_ok(o_conv);
+       return (uint64_t)ret_conv;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_err(uint32_t e) {
+       void* e_ptr = (void*)(((uint64_t)e) & ~1);
+       CHECK_ACCESS(e_ptr);
+       LDKPaymentSendFailure e_conv = *(LDKPaymentSendFailure*)(e_ptr);
+       e_conv = PaymentSendFailure_clone((LDKPaymentSendFailure*)(((uint64_t)e) & ~1));
+       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ), "LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_err(e_conv);
+       return (uint64_t)ret_conv;
+}
+
+jboolean  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_is_ok(uint32_t o) {
+       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* o_conv = (LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ*)(o & ~1);
+       jboolean ret_val = CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelConfig_set_commit_upfront_shutdown_pubkey(uint32_t this_ptr, jboolean val) {
-       LDKChannelConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelConfig_set_commit_upfront_shutdown_pubkey(&this_ptr_conv, val);
+void  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ _res_conv = *(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(_res_conv);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ChannelConfig_get_max_dust_htlc_exposure_msat(uint32_t this_ptr) {
-       LDKChannelConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelConfig_get_max_dust_htlc_exposure_msat(&this_ptr_conv);
+static inline uint64_t CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone_ptr(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR arg) {
+       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ), "LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone_ptr(uint32_t arg) {
+       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* arg_conv = (LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ*)(arg & ~1);
+       int64_t ret_val = CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelConfig_set_max_dust_htlc_exposure_msat(uint32_t this_ptr, int64_t val) {
-       LDKChannelConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelConfig_set_max_dust_htlc_exposure_msat(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone(uint32_t orig) {
+       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* orig_conv = (LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ*)(orig & ~1);
+       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ), "LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ChannelConfig_get_force_close_avoidance_max_fee_satoshis(uint32_t this_ptr) {
-       LDKChannelConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelConfig_get_force_close_avoidance_max_fee_satoshis(&this_ptr_conv);
+static inline uint64_t C2Tuple_PaymentHashPaymentSecretZ_clone_ptr(LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR arg) {
+       LDKC2Tuple_PaymentHashPaymentSecretZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ), "LDKC2Tuple_PaymentHashPaymentSecretZ");
+       *ret_conv = C2Tuple_PaymentHashPaymentSecretZ_clone(arg);
+       return ((uint64_t)ret_conv);
+}
+int64_t  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentSecretZ_clone_ptr(uint32_t arg) {
+       LDKC2Tuple_PaymentHashPaymentSecretZ* arg_conv = (LDKC2Tuple_PaymentHashPaymentSecretZ*)(arg & ~1);
+       int64_t ret_val = C2Tuple_PaymentHashPaymentSecretZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelConfig_set_force_close_avoidance_max_fee_satoshis(uint32_t this_ptr, int64_t val) {
-       LDKChannelConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelConfig_set_force_close_avoidance_max_fee_satoshis(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentSecretZ_clone(uint32_t orig) {
+       LDKC2Tuple_PaymentHashPaymentSecretZ* orig_conv = (LDKC2Tuple_PaymentHashPaymentSecretZ*)(orig & ~1);
+       LDKC2Tuple_PaymentHashPaymentSecretZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ), "LDKC2Tuple_PaymentHashPaymentSecretZ");
+       *ret_conv = C2Tuple_PaymentHashPaymentSecretZ_clone(orig_conv);
+       return ((uint64_t)ret_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentSecretZ_new(int8_tArray a, int8_tArray b) {
+       LDKThirtyTwoBytes a_ref;
+       CHECK(a->arr_len == 32);
+       memcpy(a_ref.data, a->elems, 32);
+       LDKThirtyTwoBytes b_ref;
+       CHECK(b->arr_len == 32);
+       memcpy(b_ref.data, b->elems, 32);
+       LDKC2Tuple_PaymentHashPaymentSecretZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_PaymentHashPaymentSecretZ), "LDKC2Tuple_PaymentHashPaymentSecretZ");
+       *ret_conv = C2Tuple_PaymentHashPaymentSecretZ_new(a_ref, b_ref);
+       return ((uint64_t)ret_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelConfig_new(int32_t forwarding_fee_proportional_millionths_arg, int32_t forwarding_fee_base_msat_arg, int16_t cltv_expiry_delta_arg, jboolean announced_channel_arg, jboolean commit_upfront_shutdown_pubkey_arg, int64_t max_dust_htlc_exposure_msat_arg, int64_t force_close_avoidance_max_fee_satoshis_arg) {
-       LDKChannelConfig ret_var = ChannelConfig_new(forwarding_fee_proportional_millionths_arg, forwarding_fee_base_msat_arg, cltv_expiry_delta_arg, announced_channel_arg, commit_upfront_shutdown_pubkey_arg, max_dust_htlc_exposure_msat_arg, force_close_avoidance_max_fee_satoshis_arg);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_C2Tuple_PaymentHashPaymentSecretZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKC2Tuple_PaymentHashPaymentSecretZ _res_conv = *(LDKC2Tuple_PaymentHashPaymentSecretZ*)(_res_ptr);
+       FREE((void*)_res);
+       C2Tuple_PaymentHashPaymentSecretZ_free(_res_conv);
 }
 
-static inline uint64_t ChannelConfig_clone_ptr(LDKChannelConfig *NONNULL_PTR arg) {
-       LDKChannelConfig ret_var = ChannelConfig_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_ok(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKC2Tuple_PaymentHashPaymentSecretZ o_conv = *(LDKC2Tuple_PaymentHashPaymentSecretZ*)(o_ptr);
+       o_conv = C2Tuple_PaymentHashPaymentSecretZ_clone((LDKC2Tuple_PaymentHashPaymentSecretZ*)(((uint64_t)o) & ~1));
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_ok(o_conv);
+       return (uint64_t)ret_conv;
 }
-       return ret_ref;
+
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_err() {
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_err();
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_ChannelConfig_clone_ptr(uint32_t arg) {
-       LDKChannelConfig arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelConfig_clone_ptr(&arg_conv);
+
+jboolean  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_is_ok(uint32_t o) {
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* o_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ*)(o & ~1);
+       jboolean ret_val = CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_is_ok(o_conv);
        return ret_val;
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelConfig ret_var = ChannelConfig_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ _res_conv = *(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelConfig_default() {
-       LDKChannelConfig ret_var = ChannelConfig_default();
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+static inline uint64_t CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone_ptr(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *NONNULL_PTR arg) {
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone_ptr(uint32_t arg) {
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* arg_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ*)(arg & ~1);
+       int64_t ret_val = CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelConfig_write(uint32_t obj) {
-       LDKChannelConfig obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ChannelConfig_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone(uint32_t orig) {
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* orig_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ*)(orig & ~1);
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelConfig_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ChannelConfigDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelConfigDecodeErrorZ), "LDKCResult_ChannelConfigDecodeErrorZ");
-       *ret_conv = ChannelConfig_read(ser_ref);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_ok(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKC2Tuple_PaymentHashPaymentSecretZ o_conv = *(LDKC2Tuple_PaymentHashPaymentSecretZ*)(o_ptr);
+       o_conv = C2Tuple_PaymentHashPaymentSecretZ_clone((LDKC2Tuple_PaymentHashPaymentSecretZ*)(((uint64_t)o) & ~1));
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_ok(o_conv);
        return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_UserConfig_free(uint32_t this_obj) {
-       LDKUserConfig this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       UserConfig_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_err(uint32_t e) {
+       void* e_ptr = (void*)(((uint64_t)e) & ~1);
+       CHECK_ACCESS(e_ptr);
+       LDKAPIError e_conv = *(LDKAPIError*)(e_ptr);
+       e_conv = APIError_clone((LDKAPIError*)(((uint64_t)e) & ~1));
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
 
-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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelHandshakeConfig ret_var = UserConfig_get_own_channel_config(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+jboolean  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_is_ok(uint32_t o) {
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* o_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_is_ok(o_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_UserConfig_set_own_channel_config(uint32_t this_ptr, uint32_t val) {
-       LDKUserConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelHandshakeConfig val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = ChannelHandshakeConfig_clone(&val_conv);
-       UserConfig_set_own_channel_config(&this_ptr_conv, val_conv);
+void  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ _res_conv = *(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UserConfig_get_peer_channel_config_limits(uint32_t this_ptr) {
-       LDKUserConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelHandshakeLimits ret_var = UserConfig_get_peer_channel_config_limits(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+static inline uint64_t CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone_ptr(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *NONNULL_PTR arg) {
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* arg_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_UserConfig_set_peer_channel_config_limits(uint32_t this_ptr, uint32_t val) {
-       LDKUserConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelHandshakeLimits val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = ChannelHandshakeLimits_clone(&val_conv);
-       UserConfig_set_peer_channel_config_limits(&this_ptr_conv, val_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone(uint32_t orig) {
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* orig_conv = (LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ*)(orig & ~1);
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ");
+       *ret_conv = CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UserConfig_get_channel_options(uint32_t this_ptr) {
-       LDKUserConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelConfig ret_var = UserConfig_get_channel_options(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretNoneZ_ok(int8_tArray o) {
+       LDKThirtyTwoBytes o_ref;
+       CHECK(o->arr_len == 32);
+       memcpy(o_ref.data, o->elems, 32);
+       LDKCResult_PaymentSecretNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretNoneZ), "LDKCResult_PaymentSecretNoneZ");
+       *ret_conv = CResult_PaymentSecretNoneZ_ok(o_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_UserConfig_set_channel_options(uint32_t this_ptr, uint32_t val) {
-       LDKUserConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelConfig val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = ChannelConfig_clone(&val_conv);
-       UserConfig_set_channel_options(&this_ptr_conv, val_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretNoneZ_err() {
+       LDKCResult_PaymentSecretNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretNoneZ), "LDKCResult_PaymentSecretNoneZ");
+       *ret_conv = CResult_PaymentSecretNoneZ_err();
+       return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_UserConfig_get_accept_forwards_to_priv_channels(uint32_t this_ptr) {
-       LDKUserConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = UserConfig_get_accept_forwards_to_priv_channels(&this_ptr_conv);
+jboolean  __attribute__((visibility("default"))) TS_CResult_PaymentSecretNoneZ_is_ok(uint32_t o) {
+       LDKCResult_PaymentSecretNoneZ* o_conv = (LDKCResult_PaymentSecretNoneZ*)(o & ~1);
+       jboolean ret_val = CResult_PaymentSecretNoneZ_is_ok(o_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_UserConfig_set_accept_forwards_to_priv_channels(uint32_t this_ptr, jboolean val) {
-       LDKUserConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UserConfig_set_accept_forwards_to_priv_channels(&this_ptr_conv, val);
+void  __attribute__((visibility("default"))) TS_CResult_PaymentSecretNoneZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_PaymentSecretNoneZ _res_conv = *(LDKCResult_PaymentSecretNoneZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_PaymentSecretNoneZ_free(_res_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_UserConfig_get_accept_inbound_channels(uint32_t this_ptr) {
-       LDKUserConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = UserConfig_get_accept_inbound_channels(&this_ptr_conv);
+static inline uint64_t CResult_PaymentSecretNoneZ_clone_ptr(LDKCResult_PaymentSecretNoneZ *NONNULL_PTR arg) {
+       LDKCResult_PaymentSecretNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretNoneZ), "LDKCResult_PaymentSecretNoneZ");
+       *ret_conv = CResult_PaymentSecretNoneZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretNoneZ_clone_ptr(uint32_t arg) {
+       LDKCResult_PaymentSecretNoneZ* arg_conv = (LDKCResult_PaymentSecretNoneZ*)(arg & ~1);
+       int64_t ret_val = CResult_PaymentSecretNoneZ_clone_ptr(arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_UserConfig_set_accept_inbound_channels(uint32_t this_ptr, jboolean val) {
-       LDKUserConfig this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UserConfig_set_accept_inbound_channels(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretNoneZ_clone(uint32_t orig) {
+       LDKCResult_PaymentSecretNoneZ* orig_conv = (LDKCResult_PaymentSecretNoneZ*)(orig & ~1);
+       LDKCResult_PaymentSecretNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretNoneZ), "LDKCResult_PaymentSecretNoneZ");
+       *ret_conv = CResult_PaymentSecretNoneZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UserConfig_new(uint32_t own_channel_config_arg, uint32_t peer_channel_config_limits_arg, uint32_t channel_options_arg, jboolean accept_forwards_to_priv_channels_arg, jboolean accept_inbound_channels_arg) {
-       LDKChannelHandshakeConfig own_channel_config_arg_conv;
-       own_channel_config_arg_conv.inner = (void*)(own_channel_config_arg & (~1));
-       own_channel_config_arg_conv.is_owned = (own_channel_config_arg & 1) || (own_channel_config_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(own_channel_config_arg_conv);
-       own_channel_config_arg_conv = ChannelHandshakeConfig_clone(&own_channel_config_arg_conv);
-       LDKChannelHandshakeLimits peer_channel_config_limits_arg_conv;
-       peer_channel_config_limits_arg_conv.inner = (void*)(peer_channel_config_limits_arg & (~1));
-       peer_channel_config_limits_arg_conv.is_owned = (peer_channel_config_limits_arg & 1) || (peer_channel_config_limits_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(peer_channel_config_limits_arg_conv);
-       peer_channel_config_limits_arg_conv = ChannelHandshakeLimits_clone(&peer_channel_config_limits_arg_conv);
-       LDKChannelConfig channel_options_arg_conv;
-       channel_options_arg_conv.inner = (void*)(channel_options_arg & (~1));
-       channel_options_arg_conv.is_owned = (channel_options_arg & 1) || (channel_options_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_options_arg_conv);
-       channel_options_arg_conv = ChannelConfig_clone(&channel_options_arg_conv);
-       LDKUserConfig ret_var = UserConfig_new(own_channel_config_arg_conv, peer_channel_config_limits_arg_conv, channel_options_arg_conv, accept_forwards_to_priv_channels_arg, accept_inbound_channels_arg);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretAPIErrorZ_ok(int8_tArray o) {
+       LDKThirtyTwoBytes o_ref;
+       CHECK(o->arr_len == 32);
+       memcpy(o_ref.data, o->elems, 32);
+       LDKCResult_PaymentSecretAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretAPIErrorZ), "LDKCResult_PaymentSecretAPIErrorZ");
+       *ret_conv = CResult_PaymentSecretAPIErrorZ_ok(o_ref);
+       return (uint64_t)ret_conv;
 }
 
-static inline uint64_t UserConfig_clone_ptr(LDKUserConfig *NONNULL_PTR arg) {
-       LDKUserConfig ret_var = UserConfig_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretAPIErrorZ_err(uint32_t e) {
+       void* e_ptr = (void*)(((uint64_t)e) & ~1);
+       CHECK_ACCESS(e_ptr);
+       LDKAPIError e_conv = *(LDKAPIError*)(e_ptr);
+       e_conv = APIError_clone((LDKAPIError*)(((uint64_t)e) & ~1));
+       LDKCResult_PaymentSecretAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretAPIErrorZ), "LDKCResult_PaymentSecretAPIErrorZ");
+       *ret_conv = CResult_PaymentSecretAPIErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_UserConfig_clone_ptr(uint32_t arg) {
-       LDKUserConfig arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = UserConfig_clone_ptr(&arg_conv);
+
+jboolean  __attribute__((visibility("default"))) TS_CResult_PaymentSecretAPIErrorZ_is_ok(uint32_t o) {
+       LDKCResult_PaymentSecretAPIErrorZ* o_conv = (LDKCResult_PaymentSecretAPIErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_PaymentSecretAPIErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKUserConfig ret_var = UserConfig_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_CResult_PaymentSecretAPIErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_PaymentSecretAPIErrorZ _res_conv = *(LDKCResult_PaymentSecretAPIErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_PaymentSecretAPIErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UserConfig_default() {
-       LDKUserConfig ret_var = UserConfig_default();
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+static inline uint64_t CResult_PaymentSecretAPIErrorZ_clone_ptr(LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR arg) {
+       LDKCResult_PaymentSecretAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretAPIErrorZ), "LDKCResult_PaymentSecretAPIErrorZ");
+       *ret_conv = CResult_PaymentSecretAPIErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretAPIErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_PaymentSecretAPIErrorZ* arg_conv = (LDKCResult_PaymentSecretAPIErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_PaymentSecretAPIErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_BestBlock_free(uint32_t this_obj) {
-       LDKBestBlock this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       BestBlock_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentSecretAPIErrorZ_clone(uint32_t orig) {
+       LDKCResult_PaymentSecretAPIErrorZ* orig_conv = (LDKCResult_PaymentSecretAPIErrorZ*)(orig & ~1);
+       LDKCResult_PaymentSecretAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretAPIErrorZ), "LDKCResult_PaymentSecretAPIErrorZ");
+       *ret_conv = CResult_PaymentSecretAPIErrorZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
 }
 
-static inline uint64_t BestBlock_clone_ptr(LDKBestBlock *NONNULL_PTR arg) {
-       LDKBestBlock ret_var = BestBlock_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentPreimageAPIErrorZ_ok(int8_tArray o) {
+       LDKThirtyTwoBytes o_ref;
+       CHECK(o->arr_len == 32);
+       memcpy(o_ref.data, o->elems, 32);
+       LDKCResult_PaymentPreimageAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentPreimageAPIErrorZ), "LDKCResult_PaymentPreimageAPIErrorZ");
+       *ret_conv = CResult_PaymentPreimageAPIErrorZ_ok(o_ref);
+       return (uint64_t)ret_conv;
 }
-       return ret_ref;
+
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentPreimageAPIErrorZ_err(uint32_t e) {
+       void* e_ptr = (void*)(((uint64_t)e) & ~1);
+       CHECK_ACCESS(e_ptr);
+       LDKAPIError e_conv = *(LDKAPIError*)(e_ptr);
+       e_conv = APIError_clone((LDKAPIError*)(((uint64_t)e) & ~1));
+       LDKCResult_PaymentPreimageAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentPreimageAPIErrorZ), "LDKCResult_PaymentPreimageAPIErrorZ");
+       *ret_conv = CResult_PaymentPreimageAPIErrorZ_err(e_conv);
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_BestBlock_clone_ptr(uint32_t arg) {
-       LDKBestBlock arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = BestBlock_clone_ptr(&arg_conv);
+
+jboolean  __attribute__((visibility("default"))) TS_CResult_PaymentPreimageAPIErrorZ_is_ok(uint32_t o) {
+       LDKCResult_PaymentPreimageAPIErrorZ* o_conv = (LDKCResult_PaymentPreimageAPIErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_PaymentPreimageAPIErrorZ_is_ok(o_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_BestBlock_clone(uint32_t orig) {
-       LDKBestBlock orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKBestBlock ret_var = BestBlock_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_CResult_PaymentPreimageAPIErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_PaymentPreimageAPIErrorZ _res_conv = *(LDKCResult_PaymentPreimageAPIErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_PaymentPreimageAPIErrorZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_BestBlock_from_genesis(uint32_t network) {
-       LDKNetwork network_conv = LDKNetwork_from_js(network);
-       LDKBestBlock ret_var = BestBlock_from_genesis(network_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+static inline uint64_t CResult_PaymentPreimageAPIErrorZ_clone_ptr(LDKCResult_PaymentPreimageAPIErrorZ *NONNULL_PTR arg) {
+       LDKCResult_PaymentPreimageAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentPreimageAPIErrorZ), "LDKCResult_PaymentPreimageAPIErrorZ");
+       *ret_conv = CResult_PaymentPreimageAPIErrorZ_clone(arg);
+       return (uint64_t)ret_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CResult_PaymentPreimageAPIErrorZ_clone_ptr(uint32_t arg) {
+       LDKCResult_PaymentPreimageAPIErrorZ* arg_conv = (LDKCResult_PaymentPreimageAPIErrorZ*)(arg & ~1);
+       int64_t ret_val = CResult_PaymentPreimageAPIErrorZ_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_BestBlock_new(int8_tArray block_hash, int32_t height) {
-       LDKThirtyTwoBytes block_hash_ref;
-       CHECK(*((uint32_t*)block_hash) == 32);
-       memcpy(block_hash_ref.data, (uint8_t*)(block_hash + 4), 32);
-       LDKBestBlock ret_var = BestBlock_new(block_hash_ref, height);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_PaymentPreimageAPIErrorZ_clone(uint32_t orig) {
+       LDKCResult_PaymentPreimageAPIErrorZ* orig_conv = (LDKCResult_PaymentPreimageAPIErrorZ*)(orig & ~1);
+       LDKCResult_PaymentPreimageAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentPreimageAPIErrorZ), "LDKCResult_PaymentPreimageAPIErrorZ");
+       *ret_conv = CResult_PaymentPreimageAPIErrorZ_clone(orig_conv);
+       return (uint64_t)ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_CVec_ChannelMonitorZ_free(uint32_tArray _res) {
+       LDKCVec_ChannelMonitorZ _res_constr;
+       _res_constr.datalen = _res->arr_len;
+       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 = _res->elems;
+       for (size_t q = 0; q < _res_constr.datalen; q++) {
+               uint32_t _res_conv_16 = _res_vals[q];
+               LDKChannelMonitor _res_conv_16_conv;
+               _res_conv_16_conv.inner = (void*)(_res_conv_16 & (~1));
+               _res_conv_16_conv.is_owned = (_res_conv_16 & 1) || (_res_conv_16 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(_res_conv_16_conv);
+               _res_constr.data[q] = _res_conv_16_conv;
        }
-       return ret_ref;
+       CVec_ChannelMonitorZ_free(_res_constr);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_BestBlock_block_hash(uint32_t this_arg) {
-       LDKBestBlock this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), BestBlock_block_hash(&this_arg_conv).data, 32);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelManagerZ_new(int8_tArray a, uint32_t b) {
+       LDKThirtyTwoBytes a_ref;
+       CHECK(a->arr_len == 32);
+       memcpy(a_ref.data, a->elems, 32);
+       LDKChannelManager b_conv;
+       b_conv.inner = (void*)(b & (~1));
+       b_conv.is_owned = (b & 1) || (b == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
+       // Warning: we need a move here but no clone is available for LDKChannelManager
+       LDKC2Tuple_BlockHashChannelManagerZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelManagerZ), "LDKC2Tuple_BlockHashChannelManagerZ");
+       *ret_conv = C2Tuple_BlockHashChannelManagerZ_new(a_ref, b_conv);
+       return ((uint64_t)ret_conv);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_BestBlock_height(uint32_t this_arg) {
-       LDKBestBlock this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int32_t ret_val = BestBlock_height(&this_arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelManagerZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKC2Tuple_BlockHashChannelManagerZ _res_conv = *(LDKC2Tuple_BlockHashChannelManagerZ*)(_res_ptr);
+       FREE((void*)_res);
+       C2Tuple_BlockHashChannelManagerZ_free(_res_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_AccessError_clone(uint32_t orig) {
-       LDKAccessError* orig_conv = (LDKAccessError*)(orig & ~1);
-       uint32_t ret_conv = LDKAccessError_to_js(AccessError_clone(orig_conv));
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(uint32_t o) {
+       void* o_ptr = (void*)(((uint64_t)o) & ~1);
+       CHECK_ACCESS(o_ptr);
+       LDKC2Tuple_BlockHashChannelManagerZ o_conv = *(LDKC2Tuple_BlockHashChannelManagerZ*)(o_ptr);
+       // Warning: we may need a move here but no clone is available for LDKC2Tuple_BlockHashChannelManagerZ
+       LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ");
+       *ret_conv = CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(o_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_AccessError_unknown_chain() {
-       uint32_t ret_conv = LDKAccessError_to_js(AccessError_unknown_chain());
-       return ret_conv;
+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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv);
+       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);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_AccessError_unknown_tx() {
-       uint32_t ret_conv = LDKAccessError_to_js(AccessError_unknown_tx());
-       return ret_conv;
+jboolean  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_is_ok(uint32_t o) {
+       LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* o_conv = (LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ*)(o & ~1);
+       jboolean ret_val = CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_is_ok(o_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_Access_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKAccess this_ptr_conv = *(LDKAccess*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       Access_free(this_ptr_conv);
+void  __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(uint32_t _res) {
+       if ((_res & 1) != 0) return;
+       void* _res_ptr = (void*)(((uint64_t)_res) & ~1);
+       CHECK_ACCESS(_res_ptr);
+       LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ _res_conv = *(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ*)(_res_ptr);
+       FREE((void*)_res);
+       CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(_res_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_Listen_free(uint32_t this_ptr) {
+void  __attribute__((visibility("default"))) TS_PaymentPurpose_free(uint32_t this_ptr) {
        if ((this_ptr & 1) != 0) return;
        void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
        CHECK_ACCESS(this_ptr_ptr);
-       LDKListen this_ptr_conv = *(LDKListen*)(this_ptr_ptr);
+       LDKPaymentPurpose this_ptr_conv = *(LDKPaymentPurpose*)(this_ptr_ptr);
        FREE((void*)this_ptr);
-       Listen_free(this_ptr_conv);
+       PaymentPurpose_free(this_ptr_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_Confirm_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKConfirm this_ptr_conv = *(LDKConfirm*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       Confirm_free(this_ptr_conv);
+static inline uint64_t PaymentPurpose_clone_ptr(LDKPaymentPurpose *NONNULL_PTR arg) {
+       LDKPaymentPurpose *ret_copy = MALLOC(sizeof(LDKPaymentPurpose), "LDKPaymentPurpose");
+       *ret_copy = PaymentPurpose_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitorUpdateErr_clone(uint32_t orig) {
-       LDKChannelMonitorUpdateErr* orig_conv = (LDKChannelMonitorUpdateErr*)(orig & ~1);
-       uint32_t ret_conv = LDKChannelMonitorUpdateErr_to_js(ChannelMonitorUpdateErr_clone(orig_conv));
-       return ret_conv;
+int64_t  __attribute__((visibility("default"))) TS_PaymentPurpose_clone_ptr(uint32_t arg) {
+       LDKPaymentPurpose* arg_conv = (LDKPaymentPurpose*)arg;
+       int64_t ret_val = PaymentPurpose_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitorUpdateErr_temporary_failure() {
-       uint32_t ret_conv = LDKChannelMonitorUpdateErr_to_js(ChannelMonitorUpdateErr_temporary_failure());
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_PaymentPurpose_clone(uint32_t orig) {
+       LDKPaymentPurpose* orig_conv = (LDKPaymentPurpose*)orig;
+       LDKPaymentPurpose *ret_copy = MALLOC(sizeof(LDKPaymentPurpose), "LDKPaymentPurpose");
+       *ret_copy = PaymentPurpose_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitorUpdateErr_permanent_failure() {
-       uint32_t ret_conv = LDKChannelMonitorUpdateErr_to_js(ChannelMonitorUpdateErr_permanent_failure());
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_PaymentPurpose_invoice_payment(int8_tArray payment_preimage, int8_tArray payment_secret) {
+       LDKThirtyTwoBytes payment_preimage_ref;
+       CHECK(payment_preimage->arr_len == 32);
+       memcpy(payment_preimage_ref.data, payment_preimage->elems, 32);
+       LDKThirtyTwoBytes payment_secret_ref;
+       CHECK(payment_secret->arr_len == 32);
+       memcpy(payment_secret_ref.data, payment_secret->elems, 32);
+       LDKPaymentPurpose *ret_copy = MALLOC(sizeof(LDKPaymentPurpose), "LDKPaymentPurpose");
+       *ret_copy = PaymentPurpose_invoice_payment(payment_preimage_ref, payment_secret_ref);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_Watch_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKWatch this_ptr_conv = *(LDKWatch*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       Watch_free(this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_PaymentPurpose_spontaneous_payment(int8_tArray a) {
+       LDKThirtyTwoBytes a_ref;
+       CHECK(a->arr_len == 32);
+       memcpy(a_ref.data, a->elems, 32);
+       LDKPaymentPurpose *ret_copy = MALLOC(sizeof(LDKPaymentPurpose), "LDKPaymentPurpose");
+       *ret_copy = PaymentPurpose_spontaneous_payment(a_ref);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_Filter_free(uint32_t this_ptr) {
+void  __attribute__((visibility("default"))) TS_ClosureReason_free(uint32_t this_ptr) {
        if ((this_ptr & 1) != 0) return;
        void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
        CHECK_ACCESS(this_ptr_ptr);
-       LDKFilter this_ptr_conv = *(LDKFilter*)(this_ptr_ptr);
+       LDKClosureReason this_ptr_conv = *(LDKClosureReason*)(this_ptr_ptr);
        FREE((void*)this_ptr);
-       Filter_free(this_ptr_conv);
-}
-
-void  __attribute__((visibility("default"))) TS_WatchedOutput_free(uint32_t this_obj) {
-       LDKWatchedOutput this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       WatchedOutput_free(this_obj_conv);
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_WatchedOutput_get_block_hash(uint32_t this_ptr) {
-       LDKWatchedOutput this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), WatchedOutput_get_block_hash(&this_ptr_conv).data, 32);
-       return ret_arr;
-}
-
-void  __attribute__((visibility("default"))) TS_WatchedOutput_set_block_hash(uint32_t this_ptr, int8_tArray val) {
-       LDKWatchedOutput this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       WatchedOutput_set_block_hash(&this_ptr_conv, val_ref);
+       ClosureReason_free(this_ptr_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_WatchedOutput_get_outpoint(uint32_t this_ptr) {
-       LDKWatchedOutput this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKOutPoint ret_var = WatchedOutput_get_outpoint(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
+static inline uint64_t ClosureReason_clone_ptr(LDKClosureReason *NONNULL_PTR arg) {
+       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
+       *ret_copy = ClosureReason_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
-
-void  __attribute__((visibility("default"))) TS_WatchedOutput_set_outpoint(uint32_t this_ptr, uint32_t val) {
-       LDKWatchedOutput this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKOutPoint val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = OutPoint_clone(&val_conv);
-       WatchedOutput_set_outpoint(&this_ptr_conv, val_conv);
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_WatchedOutput_get_script_pubkey(uint32_t this_ptr) {
-       LDKWatchedOutput this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKu8slice ret_var = WatchedOutput_get_script_pubkey(&this_ptr_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       return ret_arr;
+int64_t  __attribute__((visibility("default"))) TS_ClosureReason_clone_ptr(uint32_t arg) {
+       LDKClosureReason* arg_conv = (LDKClosureReason*)arg;
+       int64_t ret_val = ClosureReason_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_WatchedOutput_set_script_pubkey(uint32_t this_ptr, int8_tArray val) {
-       LDKWatchedOutput this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_u8Z val_ref;
-       val_ref.datalen = *((uint32_t*)val);
-       val_ref.data = MALLOC(val_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(val_ref.data, (uint8_t*)(val + 4), val_ref.datalen);
-       WatchedOutput_set_script_pubkey(&this_ptr_conv, val_ref);
+uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_clone(uint32_t orig) {
+       LDKClosureReason* orig_conv = (LDKClosureReason*)orig;
+       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
+       *ret_copy = ClosureReason_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_WatchedOutput_new(int8_tArray block_hash_arg, uint32_t outpoint_arg, int8_tArray script_pubkey_arg) {
-       LDKThirtyTwoBytes block_hash_arg_ref;
-       CHECK(*((uint32_t*)block_hash_arg) == 32);
-       memcpy(block_hash_arg_ref.data, (uint8_t*)(block_hash_arg + 4), 32);
-       LDKOutPoint outpoint_arg_conv;
-       outpoint_arg_conv.inner = (void*)(outpoint_arg & (~1));
-       outpoint_arg_conv.is_owned = (outpoint_arg & 1) || (outpoint_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(outpoint_arg_conv);
-       outpoint_arg_conv = OutPoint_clone(&outpoint_arg_conv);
-       LDKCVec_u8Z script_pubkey_arg_ref;
-       script_pubkey_arg_ref.datalen = *((uint32_t*)script_pubkey_arg);
-       script_pubkey_arg_ref.data = MALLOC(script_pubkey_arg_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(script_pubkey_arg_ref.data, (uint8_t*)(script_pubkey_arg + 4), script_pubkey_arg_ref.datalen);
-       LDKWatchedOutput ret_var = WatchedOutput_new(block_hash_arg_ref, outpoint_arg_conv, script_pubkey_arg_ref);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
+uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_counterparty_force_closed(jstring peer_msg) {
+       LDKStr peer_msg_conv = str_ref_to_owned_c(peer_msg);
+       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
+       *ret_copy = ClosureReason_counterparty_force_closed(peer_msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-static inline uint64_t WatchedOutput_clone_ptr(LDKWatchedOutput *NONNULL_PTR arg) {
-       LDKWatchedOutput ret_var = WatchedOutput_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
+uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_holder_force_closed() {
+       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
+       *ret_copy = ClosureReason_holder_force_closed();
+       uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_WatchedOutput_clone_ptr(uint32_t arg) {
-       LDKWatchedOutput arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = WatchedOutput_clone_ptr(&arg_conv);
-       return ret_val;
-}
 
-uint32_t  __attribute__((visibility("default"))) TS_WatchedOutput_clone(uint32_t orig) {
-       LDKWatchedOutput orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKWatchedOutput ret_var = WatchedOutput_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
+uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_cooperative_closure() {
+       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
+       *ret_copy = ClosureReason_cooperative_closure();
+       uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_WatchedOutput_hash(uint32_t o) {
-       LDKWatchedOutput o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = WatchedOutput_hash(&o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_commitment_tx_confirmed() {
+       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
+       *ret_copy = ClosureReason_commitment_tx_confirmed();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_BroadcasterInterface_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKBroadcasterInterface this_ptr_conv = *(LDKBroadcasterInterface*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       BroadcasterInterface_free(this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_funding_timed_out() {
+       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
+       *ret_copy = ClosureReason_funding_timed_out();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ConfirmationTarget_clone(uint32_t orig) {
-       LDKConfirmationTarget* orig_conv = (LDKConfirmationTarget*)(orig & ~1);
-       uint32_t ret_conv = LDKConfirmationTarget_to_js(ConfirmationTarget_clone(orig_conv));
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_processing_error(jstring err) {
+       LDKStr err_conv = str_ref_to_owned_c(err);
+       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
+       *ret_copy = ClosureReason_processing_error(err_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ConfirmationTarget_background() {
-       uint32_t ret_conv = LDKConfirmationTarget_to_js(ConfirmationTarget_background());
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_disconnected_peer() {
+       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
+       *ret_copy = ClosureReason_disconnected_peer();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ConfirmationTarget_normal() {
-       uint32_t ret_conv = LDKConfirmationTarget_to_js(ConfirmationTarget_normal());
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_outdated_channel_manager() {
+       LDKClosureReason *ret_copy = MALLOC(sizeof(LDKClosureReason), "LDKClosureReason");
+       *ret_copy = ClosureReason_outdated_channel_manager();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ConfirmationTarget_high_priority() {
-       uint32_t ret_conv = LDKConfirmationTarget_to_js(ConfirmationTarget_high_priority());
-       return ret_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_ClosureReason_write(uint32_t obj) {
+       LDKClosureReason* obj_conv = (LDKClosureReason*)obj;
+       LDKCVec_u8Z ret_var = ClosureReason_write(obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ConfirmationTarget_eq(uint32_t a, uint32_t b) {
-       LDKConfirmationTarget* a_conv = (LDKConfirmationTarget*)(a & ~1);
-       LDKConfirmationTarget* b_conv = (LDKConfirmationTarget*)(b & ~1);
-       jboolean ret_val = ConfirmationTarget_eq(a_conv, b_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_ClosureReason_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_COption_ClosureReasonZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_ClosureReasonZDecodeErrorZ), "LDKCResult_COption_ClosureReasonZDecodeErrorZ");
+       *ret_conv = ClosureReason_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_FeeEstimator_free(uint32_t this_ptr) {
+void  __attribute__((visibility("default"))) TS_Event_free(uint32_t this_ptr) {
        if ((this_ptr & 1) != 0) return;
        void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
        CHECK_ACCESS(this_ptr_ptr);
-       LDKFeeEstimator this_ptr_conv = *(LDKFeeEstimator*)(this_ptr_ptr);
+       LDKEvent this_ptr_conv = *(LDKEvent*)(this_ptr_ptr);
        FREE((void*)this_ptr);
-       FeeEstimator_free(this_ptr_conv);
-}
-
-void  __attribute__((visibility("default"))) TS_MonitorUpdateId_free(uint32_t this_obj) {
-       LDKMonitorUpdateId this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       MonitorUpdateId_free(this_obj_conv);
+       Event_free(this_ptr_conv);
 }
 
-static inline uint64_t MonitorUpdateId_clone_ptr(LDKMonitorUpdateId *NONNULL_PTR arg) {
-       LDKMonitorUpdateId ret_var = MonitorUpdateId_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
+static inline uint64_t Event_clone_ptr(LDKEvent *NONNULL_PTR arg) {
+       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+       *ret_copy = Event_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_MonitorUpdateId_clone_ptr(uint32_t arg) {
-       LDKMonitorUpdateId arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = MonitorUpdateId_clone_ptr(&arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_Event_clone_ptr(uint32_t arg) {
+       LDKEvent* arg_conv = (LDKEvent*)arg;
+       int64_t ret_val = Event_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MonitorUpdateId_clone(uint32_t orig) {
-       LDKMonitorUpdateId orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKMonitorUpdateId ret_var = MonitorUpdateId_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
+uint32_t  __attribute__((visibility("default"))) TS_Event_clone(uint32_t orig) {
+       LDKEvent* orig_conv = (LDKEvent*)orig;
+       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+       *ret_copy = Event_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_MonitorUpdateId_hash(uint32_t o) {
-       LDKMonitorUpdateId o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = MonitorUpdateId_hash(&o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_Event_funding_generation_ready(int8_tArray temporary_channel_id, int64_t channel_value_satoshis, int8_tArray output_script, int64_t user_channel_id) {
+       LDKThirtyTwoBytes temporary_channel_id_ref;
+       CHECK(temporary_channel_id->arr_len == 32);
+       memcpy(temporary_channel_id_ref.data, temporary_channel_id->elems, 32);
+       LDKCVec_u8Z output_script_ref;
+       output_script_ref.datalen = output_script->arr_len;
+       output_script_ref.data = MALLOC(output_script_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(output_script_ref.data, output_script->elems, output_script_ref.datalen);
+       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+       *ret_copy = Event_funding_generation_ready(temporary_channel_id_ref, channel_value_satoshis, output_script_ref, user_channel_id);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_MonitorUpdateId_eq(uint32_t a, uint32_t b) {
-       LDKMonitorUpdateId a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKMonitorUpdateId b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = MonitorUpdateId_eq(&a_conv, &b_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_Event_payment_received(int8_tArray payment_hash, int64_t amt, uint32_t purpose) {
+       LDKThirtyTwoBytes payment_hash_ref;
+       CHECK(payment_hash->arr_len == 32);
+       memcpy(payment_hash_ref.data, payment_hash->elems, 32);
+       void* purpose_ptr = (void*)(((uint64_t)purpose) & ~1);
+       CHECK_ACCESS(purpose_ptr);
+       LDKPaymentPurpose purpose_conv = *(LDKPaymentPurpose*)(purpose_ptr);
+       purpose_conv = PaymentPurpose_clone((LDKPaymentPurpose*)(((uint64_t)purpose) & ~1));
+       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+       *ret_copy = Event_payment_received(payment_hash_ref, amt, purpose_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_Persist_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKPersist this_ptr_conv = *(LDKPersist*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       Persist_free(this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_Event_payment_sent(int8_tArray payment_id, int8_tArray payment_preimage, int8_tArray payment_hash, uint32_t fee_paid_msat) {
+       LDKThirtyTwoBytes payment_id_ref;
+       CHECK(payment_id->arr_len == 32);
+       memcpy(payment_id_ref.data, payment_id->elems, 32);
+       LDKThirtyTwoBytes payment_preimage_ref;
+       CHECK(payment_preimage->arr_len == 32);
+       memcpy(payment_preimage_ref.data, payment_preimage->elems, 32);
+       LDKThirtyTwoBytes payment_hash_ref;
+       CHECK(payment_hash->arr_len == 32);
+       memcpy(payment_hash_ref.data, payment_hash->elems, 32);
+       void* fee_paid_msat_ptr = (void*)(((uint64_t)fee_paid_msat) & ~1);
+       CHECK_ACCESS(fee_paid_msat_ptr);
+       LDKCOption_u64Z fee_paid_msat_conv = *(LDKCOption_u64Z*)(fee_paid_msat_ptr);
+       fee_paid_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)fee_paid_msat) & ~1));
+       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+       *ret_copy = Event_payment_sent(payment_id_ref, payment_preimage_ref, payment_hash_ref, fee_paid_msat_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_Event_payment_path_failed(int8_tArray payment_id, int8_tArray payment_hash, jboolean rejected_by_dest, uint32_t network_update, jboolean all_paths_failed, uint32_tArray path, uint32_t short_channel_id, uint32_t retry) {
+       LDKThirtyTwoBytes payment_id_ref;
+       CHECK(payment_id->arr_len == 32);
+       memcpy(payment_id_ref.data, payment_id->elems, 32);
+       LDKThirtyTwoBytes payment_hash_ref;
+       CHECK(payment_hash->arr_len == 32);
+       memcpy(payment_hash_ref.data, payment_hash->elems, 32);
+       void* network_update_ptr = (void*)(((uint64_t)network_update) & ~1);
+       CHECK_ACCESS(network_update_ptr);
+       LDKCOption_NetworkUpdateZ network_update_conv = *(LDKCOption_NetworkUpdateZ*)(network_update_ptr);
+       network_update_conv = COption_NetworkUpdateZ_clone((LDKCOption_NetworkUpdateZ*)(((uint64_t)network_update) & ~1));
+       LDKCVec_RouteHopZ path_constr;
+       path_constr.datalen = path->arr_len;
+       if (path_constr.datalen > 0)
+               path_constr.data = MALLOC(path_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements");
+       else
+               path_constr.data = NULL;
+       uint32_t* path_vals = path->elems;
+       for (size_t k = 0; k < path_constr.datalen; k++) {
+               uint32_t path_conv_10 = path_vals[k];
+               LDKRouteHop path_conv_10_conv;
+               path_conv_10_conv.inner = (void*)(path_conv_10 & (~1));
+               path_conv_10_conv.is_owned = (path_conv_10 & 1) || (path_conv_10 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_conv);
+               path_conv_10_conv = RouteHop_clone(&path_conv_10_conv);
+               path_constr.data[k] = path_conv_10_conv;
+       }
+       void* short_channel_id_ptr = (void*)(((uint64_t)short_channel_id) & ~1);
+       CHECK_ACCESS(short_channel_id_ptr);
+       LDKCOption_u64Z short_channel_id_conv = *(LDKCOption_u64Z*)(short_channel_id_ptr);
+       short_channel_id_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)short_channel_id) & ~1));
+       LDKRouteParameters retry_conv;
+       retry_conv.inner = (void*)(retry & (~1));
+       retry_conv.is_owned = (retry & 1) || (retry == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(retry_conv);
+       retry_conv = RouteParameters_clone(&retry_conv);
+       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+       *ret_copy = Event_payment_path_failed(payment_id_ref, payment_hash_ref, rejected_by_dest, network_update_conv, all_paths_failed, path_constr, short_channel_id_conv, retry_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_LockedChannelMonitor_free(uint32_t this_obj) {
-       LDKLockedChannelMonitor this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       LockedChannelMonitor_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_Event_payment_failed(int8_tArray payment_id, int8_tArray payment_hash) {
+       LDKThirtyTwoBytes payment_id_ref;
+       CHECK(payment_id->arr_len == 32);
+       memcpy(payment_id_ref.data, payment_id->elems, 32);
+       LDKThirtyTwoBytes payment_hash_ref;
+       CHECK(payment_hash->arr_len == 32);
+       memcpy(payment_hash_ref.data, payment_hash->elems, 32);
+       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+       *ret_copy = Event_payment_failed(payment_id_ref, payment_hash_ref);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChainMonitor_free(uint32_t this_obj) {
-       LDKChainMonitor this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChainMonitor_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_Event_pending_htlcs_forwardable(int64_t time_forwardable) {
+       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+       *ret_copy = Event_pending_htlcs_forwardable(time_forwardable);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChainMonitor_new(uint32_t chain_source, uint32_t broadcaster, uint32_t logger, uint32_t feeest, uint32_t persister) {
-       void* chain_source_ptr = (void*)(((uint64_t)chain_source) & ~1);
-       CHECK_ACCESS(chain_source_ptr);
-       LDKCOption_FilterZ chain_source_conv = *(LDKCOption_FilterZ*)(chain_source_ptr);
-       // Warning: we may need a move here but no clone is available for LDKCOption_FilterZ
-       if (chain_source_conv.tag == LDKCOption_FilterZ_Some) {
-               // Manually implement clone for Java trait instances
-       }
-       void* broadcaster_ptr = (void*)(((uint64_t)broadcaster) & ~1);
-       CHECK_ACCESS(broadcaster_ptr);
-       LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(broadcaster_ptr);
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       CHECK_ACCESS(logger_ptr);
-       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
-       void* feeest_ptr = (void*)(((uint64_t)feeest) & ~1);
-       CHECK_ACCESS(feeest_ptr);
-       LDKFeeEstimator feeest_conv = *(LDKFeeEstimator*)(feeest_ptr);
-       void* persister_ptr = (void*)(((uint64_t)persister) & ~1);
-       CHECK_ACCESS(persister_ptr);
-       LDKPersist persister_conv = *(LDKPersist*)(persister_ptr);
-       LDKChainMonitor ret_var = ChainMonitor_new(chain_source_conv, broadcaster_conv, logger_conv, feeest_conv, persister_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_Event_spendable_outputs(uint32_tArray outputs) {
+       LDKCVec_SpendableOutputDescriptorZ outputs_constr;
+       outputs_constr.datalen = outputs->arr_len;
+       if (outputs_constr.datalen > 0)
+               outputs_constr.data = MALLOC(outputs_constr.datalen * sizeof(LDKSpendableOutputDescriptor), "LDKCVec_SpendableOutputDescriptorZ Elements");
+       else
+               outputs_constr.data = NULL;
+       uint32_t* outputs_vals = outputs->elems;
+       for (size_t b = 0; b < outputs_constr.datalen; b++) {
+               uint32_t outputs_conv_27 = outputs_vals[b];
+               void* outputs_conv_27_ptr = (void*)(((uint64_t)outputs_conv_27) & ~1);
+               CHECK_ACCESS(outputs_conv_27_ptr);
+               LDKSpendableOutputDescriptor outputs_conv_27_conv = *(LDKSpendableOutputDescriptor*)(outputs_conv_27_ptr);
+               outputs_conv_27_conv = SpendableOutputDescriptor_clone((LDKSpendableOutputDescriptor*)(((uint64_t)outputs_conv_27) & ~1));
+               outputs_constr.data[b] = outputs_conv_27_conv;
        }
+       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+       *ret_copy = Event_spendable_outputs(outputs_constr);
+       uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_ChainMonitor_get_claimable_balances(uint32_t this_arg, uint32_tArray ignored_channels) {
-       LDKChainMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCVec_ChannelDetailsZ ignored_channels_constr;
-       ignored_channels_constr.datalen = *((uint32_t*)ignored_channels);
-       if (ignored_channels_constr.datalen > 0)
-               ignored_channels_constr.data = MALLOC(ignored_channels_constr.datalen * sizeof(LDKChannelDetails), "LDKCVec_ChannelDetailsZ Elements");
-       else
-               ignored_channels_constr.data = NULL;
-       uint32_t* ignored_channels_vals = (uint32_t*)(ignored_channels + 4);
-       for (size_t q = 0; q < ignored_channels_constr.datalen; q++) {
-               uint32_t ignored_channels_conv_16 = ignored_channels_vals[q];
-               LDKChannelDetails ignored_channels_conv_16_conv;
-               ignored_channels_conv_16_conv.inner = (void*)(ignored_channels_conv_16 & (~1));
-               ignored_channels_conv_16_conv.is_owned = (ignored_channels_conv_16 & 1) || (ignored_channels_conv_16 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ignored_channels_conv_16_conv);
-               ignored_channels_conv_16_conv = ChannelDetails_clone(&ignored_channels_conv_16_conv);
-               ignored_channels_constr.data[q] = ignored_channels_conv_16_conv;
-       }
-       LDKCVec_BalanceZ ret_var = ChainMonitor_get_claimable_balances(&this_arg_conv, ignored_channels_constr);
-       uint32_tArray ret_arr = NULL;
-       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 j = 0; j < ret_var.datalen; j++) {
-               LDKBalance *ret_conv_9_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
-               *ret_conv_9_copy = ret_var.data[j];
-               uint64_t ret_conv_9_ref = (uint64_t)ret_conv_9_copy;
-               ret_arr_ptr[j] = ret_conv_9_ref;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_Event_payment_forwarded(uint32_t fee_earned_msat, jboolean claim_from_onchain_tx) {
+       void* fee_earned_msat_ptr = (void*)(((uint64_t)fee_earned_msat) & ~1);
+       CHECK_ACCESS(fee_earned_msat_ptr);
+       LDKCOption_u64Z fee_earned_msat_conv = *(LDKCOption_u64Z*)(fee_earned_msat_ptr);
+       fee_earned_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)fee_earned_msat) & ~1));
+       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+       *ret_copy = Event_payment_forwarded(fee_earned_msat_conv, claim_from_onchain_tx);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChainMonitor_get_monitor(uint32_t this_arg, uint32_t funding_txo) {
-       LDKChainMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKOutPoint funding_txo_conv;
-       funding_txo_conv.inner = (void*)(funding_txo & (~1));
-       funding_txo_conv.is_owned = (funding_txo & 1) || (funding_txo == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_conv);
-       funding_txo_conv = OutPoint_clone(&funding_txo_conv);
-       LDKCResult_LockedChannelMonitorNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_LockedChannelMonitorNoneZ), "LDKCResult_LockedChannelMonitorNoneZ");
-       *ret_conv = ChainMonitor_get_monitor(&this_arg_conv, funding_txo_conv);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_Event_channel_closed(int8_tArray channel_id, int64_t user_channel_id, uint32_t reason) {
+       LDKThirtyTwoBytes channel_id_ref;
+       CHECK(channel_id->arr_len == 32);
+       memcpy(channel_id_ref.data, channel_id->elems, 32);
+       void* reason_ptr = (void*)(((uint64_t)reason) & ~1);
+       CHECK_ACCESS(reason_ptr);
+       LDKClosureReason reason_conv = *(LDKClosureReason*)(reason_ptr);
+       reason_conv = ClosureReason_clone((LDKClosureReason*)(((uint64_t)reason) & ~1));
+       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+       *ret_copy = Event_channel_closed(channel_id_ref, user_channel_id, reason_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_ChainMonitor_list_monitors(uint32_t this_arg) {
-       LDKChainMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCVec_OutPointZ ret_var = ChainMonitor_list_monitors(&this_arg_conv);
-       uint32_tArray ret_arr = NULL;
-       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 k = 0; k < ret_var.datalen; k++) {
-               LDKOutPoint ret_conv_10_var = ret_var.data[k];
-               uint64_t ret_conv_10_ref = 0;
-               CHECK((((uint64_t)ret_conv_10_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_conv_10_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_10_var);
-               ret_conv_10_ref = (uint64_t)ret_conv_10_var.inner;
-               if (ret_conv_10_var.is_owned) {
-                       ret_conv_10_ref |= 1;
-               }
-               ret_arr_ptr[k] = ret_conv_10_ref;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_Event_discard_funding(int8_tArray channel_id, int8_tArray transaction) {
+       LDKThirtyTwoBytes channel_id_ref;
+       CHECK(channel_id->arr_len == 32);
+       memcpy(channel_id_ref.data, channel_id->elems, 32);
+       LDKTransaction transaction_ref;
+       transaction_ref.datalen = transaction->arr_len;
+       transaction_ref.data = MALLOC(transaction_ref.datalen, "LDKTransaction Bytes");
+       memcpy(transaction_ref.data, transaction->elems, transaction_ref.datalen);
+       transaction_ref.data_is_owned = true;
+       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+       *ret_copy = Event_discard_funding(channel_id_ref, transaction_ref);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChainMonitor_channel_monitor_updated(uint32_t this_arg, uint32_t funding_txo, uint32_t completed_update_id) {
-       LDKChainMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKOutPoint funding_txo_conv;
-       funding_txo_conv.inner = (void*)(funding_txo & (~1));
-       funding_txo_conv.is_owned = (funding_txo & 1) || (funding_txo == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_conv);
-       funding_txo_conv = OutPoint_clone(&funding_txo_conv);
-       LDKMonitorUpdateId completed_update_id_conv;
-       completed_update_id_conv.inner = (void*)(completed_update_id & (~1));
-       completed_update_id_conv.is_owned = (completed_update_id & 1) || (completed_update_id == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(completed_update_id_conv);
-       completed_update_id_conv = MonitorUpdateId_clone(&completed_update_id_conv);
-       LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
-       *ret_conv = ChainMonitor_channel_monitor_updated(&this_arg_conv, funding_txo_conv, completed_update_id_conv);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_Event_payment_path_successful(int8_tArray payment_id, int8_tArray payment_hash, uint32_tArray path) {
+       LDKThirtyTwoBytes payment_id_ref;
+       CHECK(payment_id->arr_len == 32);
+       memcpy(payment_id_ref.data, payment_id->elems, 32);
+       LDKThirtyTwoBytes payment_hash_ref;
+       CHECK(payment_hash->arr_len == 32);
+       memcpy(payment_hash_ref.data, payment_hash->elems, 32);
+       LDKCVec_RouteHopZ path_constr;
+       path_constr.datalen = path->arr_len;
+       if (path_constr.datalen > 0)
+               path_constr.data = MALLOC(path_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements");
+       else
+               path_constr.data = NULL;
+       uint32_t* path_vals = path->elems;
+       for (size_t k = 0; k < path_constr.datalen; k++) {
+               uint32_t path_conv_10 = path_vals[k];
+               LDKRouteHop path_conv_10_conv;
+               path_conv_10_conv.inner = (void*)(path_conv_10 & (~1));
+               path_conv_10_conv.is_owned = (path_conv_10 & 1) || (path_conv_10 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(path_conv_10_conv);
+               path_conv_10_conv = RouteHop_clone(&path_conv_10_conv);
+               path_constr.data[k] = path_conv_10_conv;
+       }
+       LDKEvent *ret_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+       *ret_copy = Event_payment_path_successful(payment_id_ref, payment_hash_ref, path_constr);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChainMonitor_as_Listen(uint32_t this_arg) {
-       LDKChainMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKListen* ret_ret = MALLOC(sizeof(LDKListen), "LDKListen");
-       *ret_ret = ChainMonitor_as_Listen(&this_arg_conv);
-       return (uint64_t)ret_ret;
+int8_tArray  __attribute__((visibility("default"))) TS_Event_write(uint32_t obj) {
+       LDKEvent* obj_conv = (LDKEvent*)obj;
+       LDKCVec_u8Z ret_var = Event_write(obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChainMonitor_as_Confirm(uint32_t this_arg) {
-       LDKChainMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKConfirm* ret_ret = MALLOC(sizeof(LDKConfirm), "LDKConfirm");
-       *ret_ret = ChainMonitor_as_Confirm(&this_arg_conv);
-       return (uint64_t)ret_ret;
+uint32_t  __attribute__((visibility("default"))) TS_Event_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_COption_EventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_EventZDecodeErrorZ), "LDKCResult_COption_EventZDecodeErrorZ");
+       *ret_conv = Event_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChainMonitor_as_Watch(uint32_t this_arg) {
-       LDKChainMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKWatch* ret_ret = MALLOC(sizeof(LDKWatch), "LDKWatch");
-       *ret_ret = ChainMonitor_as_Watch(&this_arg_conv);
-       return (uint64_t)ret_ret;
+void  __attribute__((visibility("default"))) TS_MessageSendEvent_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKMessageSendEvent this_ptr_conv = *(LDKMessageSendEvent*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       MessageSendEvent_free(this_ptr_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChainMonitor_as_EventsProvider(uint32_t this_arg) {
-       LDKChainMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKEventsProvider* ret_ret = MALLOC(sizeof(LDKEventsProvider), "LDKEventsProvider");
-       *ret_ret = ChainMonitor_as_EventsProvider(&this_arg_conv);
-       return (uint64_t)ret_ret;
+static inline uint64_t MessageSendEvent_clone_ptr(LDKMessageSendEvent *NONNULL_PTR arg) {
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_MessageSendEvent_clone_ptr(uint32_t arg) {
+       LDKMessageSendEvent* arg_conv = (LDKMessageSendEvent*)arg;
+       int64_t ret_val = MessageSendEvent_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMonitorUpdate_free(uint32_t this_obj) {
-       LDKChannelMonitorUpdate this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelMonitorUpdate_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_clone(uint32_t orig) {
+       LDKMessageSendEvent* orig_conv = (LDKMessageSendEvent*)orig;
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelMonitorUpdate_get_update_id(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_accept_channel(int8_tArray node_id, uint32_t msg) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKAcceptChannel msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = AcceptChannel_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_send_accept_channel(node_id_ref, msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMonitorUpdate_set_update_id(uint32_t this_ptr, int64_t val) {
-       LDKChannelMonitorUpdate this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelMonitorUpdate_set_update_id(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_open_channel(int8_tArray node_id, uint32_t msg) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKOpenChannel msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = OpenChannel_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_send_open_channel(node_id_ref, msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-static inline uint64_t ChannelMonitorUpdate_clone_ptr(LDKChannelMonitorUpdate *NONNULL_PTR arg) {
-       LDKChannelMonitorUpdate ret_var = ChannelMonitorUpdate_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_funding_created(int8_tArray node_id, uint32_t msg) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKFundingCreated msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = FundingCreated_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_send_funding_created(node_id_ref, msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
+
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_funding_signed(int8_tArray node_id, uint32_t msg) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKFundingSigned msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = FundingSigned_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_send_funding_signed(node_id_ref, msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_ChannelMonitorUpdate_clone_ptr(uint32_t arg) {
-       LDKChannelMonitorUpdate arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelMonitorUpdate_clone_ptr(&arg_conv);
-       return ret_val;
+
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_funding_locked(int8_tArray node_id, uint32_t msg) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKFundingLocked msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = FundingLocked_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_send_funding_locked(node_id_ref, msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelMonitorUpdate ret_var = ChannelMonitorUpdate_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_announcement_signatures(int8_tArray node_id, uint32_t msg) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKAnnouncementSignatures msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = AnnouncementSignatures_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_send_announcement_signatures(node_id_ref, msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelMonitorUpdate_write(uint32_t obj) {
-       LDKChannelMonitorUpdate obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ChannelMonitorUpdate_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_update_htlcs(int8_tArray node_id, uint32_t updates) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKCommitmentUpdate updates_conv;
+       updates_conv.inner = (void*)(updates & (~1));
+       updates_conv.is_owned = (updates & 1) || (updates == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(updates_conv);
+       updates_conv = CommitmentUpdate_clone(&updates_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_update_htlcs(node_id_ref, updates_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitorUpdate_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ChannelMonitorUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ), "LDKCResult_ChannelMonitorUpdateDecodeErrorZ");
-       *ret_conv = ChannelMonitorUpdate_read(ser_ref);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_revoke_and_ack(int8_tArray node_id, uint32_t msg) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKRevokeAndACK msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = RevokeAndACK_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_send_revoke_and_ack(node_id_ref, msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_MonitorEvent_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKMonitorEvent this_ptr_conv = *(LDKMonitorEvent*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       MonitorEvent_free(this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_closing_signed(int8_tArray node_id, uint32_t msg) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKClosingSigned msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = ClosingSigned_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_send_closing_signed(node_id_ref, msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-static inline uint64_t MonitorEvent_clone_ptr(LDKMonitorEvent *NONNULL_PTR arg) {
-       LDKMonitorEvent *ret_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
-       *ret_copy = MonitorEvent_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_shutdown(int8_tArray node_id, uint32_t msg) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKShutdown msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = Shutdown_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_send_shutdown(node_id_ref, msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_MonitorEvent_clone_ptr(uint32_t arg) {
-       LDKMonitorEvent* arg_conv = (LDKMonitorEvent*)arg;
-       int64_t ret_val = MonitorEvent_clone_ptr(arg_conv);
-       return ret_val;
+
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_channel_reestablish(int8_tArray node_id, uint32_t msg) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKChannelReestablish msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = ChannelReestablish_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_send_channel_reestablish(node_id_ref, msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MonitorEvent_clone(uint32_t orig) {
-       LDKMonitorEvent* orig_conv = (LDKMonitorEvent*)orig;
-       LDKMonitorEvent *ret_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
-       *ret_copy = MonitorEvent_clone(orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_broadcast_channel_announcement(uint32_t msg, uint32_t update_msg) {
+       LDKChannelAnnouncement msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = ChannelAnnouncement_clone(&msg_conv);
+       LDKChannelUpdate update_msg_conv;
+       update_msg_conv.inner = (void*)(update_msg & (~1));
+       update_msg_conv.is_owned = (update_msg & 1) || (update_msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_msg_conv);
+       update_msg_conv = ChannelUpdate_clone(&update_msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_broadcast_channel_announcement(msg_conv, update_msg_conv);
        uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MonitorEvent_htlcevent(uint32_t a) {
-       LDKHTLCUpdate a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = (a & 1) || (a == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       a_conv = HTLCUpdate_clone(&a_conv);
-       LDKMonitorEvent *ret_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
-       *ret_copy = MonitorEvent_htlcevent(a_conv);
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_broadcast_node_announcement(uint32_t msg) {
+       LDKNodeAnnouncement msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = NodeAnnouncement_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_broadcast_node_announcement(msg_conv);
        uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MonitorEvent_commitment_tx_confirmed(uint32_t a) {
-       LDKOutPoint a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = (a & 1) || (a == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       a_conv = OutPoint_clone(&a_conv);
-       LDKMonitorEvent *ret_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
-       *ret_copy = MonitorEvent_commitment_tx_confirmed(a_conv);
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_broadcast_channel_update(uint32_t msg) {
+       LDKChannelUpdate msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = ChannelUpdate_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_broadcast_channel_update(msg_conv);
        uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MonitorEvent_update_completed(uint32_t funding_txo, int64_t monitor_update_id) {
-       LDKOutPoint funding_txo_conv;
-       funding_txo_conv.inner = (void*)(funding_txo & (~1));
-       funding_txo_conv.is_owned = (funding_txo & 1) || (funding_txo == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_conv);
-       funding_txo_conv = OutPoint_clone(&funding_txo_conv);
-       LDKMonitorEvent *ret_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
-       *ret_copy = MonitorEvent_update_completed(funding_txo_conv, monitor_update_id);
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_channel_update(int8_tArray node_id, uint32_t msg) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKChannelUpdate msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = ChannelUpdate_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_send_channel_update(node_id_ref, msg_conv);
        uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MonitorEvent_update_failed(uint32_t a) {
-       LDKOutPoint a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = (a & 1) || (a == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       a_conv = OutPoint_clone(&a_conv);
-       LDKMonitorEvent *ret_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
-       *ret_copy = MonitorEvent_update_failed(a_conv);
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_handle_error(int8_tArray node_id, uint32_t action) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       void* action_ptr = (void*)(((uint64_t)action) & ~1);
+       CHECK_ACCESS(action_ptr);
+       LDKErrorAction action_conv = *(LDKErrorAction*)(action_ptr);
+       action_conv = ErrorAction_clone((LDKErrorAction*)(((uint64_t)action) & ~1));
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_handle_error(node_id_ref, action_conv);
        uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_MonitorEvent_write(uint32_t obj) {
-       LDKMonitorEvent* obj_conv = (LDKMonitorEvent*)obj;
-       LDKCVec_u8Z ret_var = MonitorEvent_write(obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_MonitorEvent_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_COption_MonitorEventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ), "LDKCResult_COption_MonitorEventZDecodeErrorZ");
-       *ret_conv = MonitorEvent_read(ser_ref);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_channel_range_query(int8_tArray node_id, uint32_t msg) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKQueryChannelRange msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = QueryChannelRange_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_send_channel_range_query(node_id_ref, msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_HTLCUpdate_free(uint32_t this_obj) {
-       LDKHTLCUpdate this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       HTLCUpdate_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_short_ids_query(int8_tArray node_id, uint32_t msg) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKQueryShortChannelIds msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = QueryShortChannelIds_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_send_short_ids_query(node_id_ref, msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-static inline uint64_t HTLCUpdate_clone_ptr(LDKHTLCUpdate *NONNULL_PTR arg) {
-       LDKHTLCUpdate ret_var = HTLCUpdate_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
+uint32_t  __attribute__((visibility("default"))) TS_MessageSendEvent_send_reply_channel_range(int8_tArray node_id, uint32_t msg) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKReplyChannelRange msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = ReplyChannelRange_clone(&msg_conv);
+       LDKMessageSendEvent *ret_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+       *ret_copy = MessageSendEvent_send_reply_channel_range(node_id_ref, msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_HTLCUpdate_clone_ptr(uint32_t arg) {
-       LDKHTLCUpdate arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = HTLCUpdate_clone_ptr(&arg_conv);
-       return ret_val;
-}
 
-uint32_t  __attribute__((visibility("default"))) TS_HTLCUpdate_clone(uint32_t orig) {
-       LDKHTLCUpdate orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKHTLCUpdate ret_var = HTLCUpdate_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_MessageSendEventsProvider_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKMessageSendEventsProvider this_ptr_conv = *(LDKMessageSendEventsProvider*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       MessageSendEventsProvider_free(this_ptr_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_HTLCUpdate_write(uint32_t obj) {
-       LDKHTLCUpdate obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = HTLCUpdate_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_EventsProvider_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKEventsProvider this_ptr_conv = *(LDKEventsProvider*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       EventsProvider_free(this_ptr_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_HTLCUpdate_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_HTLCUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCUpdateDecodeErrorZ), "LDKCResult_HTLCUpdateDecodeErrorZ");
-       *ret_conv = HTLCUpdate_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_EventHandler_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKEventHandler this_ptr_conv = *(LDKEventHandler*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       EventHandler_free(this_ptr_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_Balance_free(uint32_t this_ptr) {
+void  __attribute__((visibility("default"))) TS_APIError_free(uint32_t this_ptr) {
        if ((this_ptr & 1) != 0) return;
        void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
        CHECK_ACCESS(this_ptr_ptr);
-       LDKBalance this_ptr_conv = *(LDKBalance*)(this_ptr_ptr);
+       LDKAPIError this_ptr_conv = *(LDKAPIError*)(this_ptr_ptr);
        FREE((void*)this_ptr);
-       Balance_free(this_ptr_conv);
+       APIError_free(this_ptr_conv);
 }
 
-static inline uint64_t Balance_clone_ptr(LDKBalance *NONNULL_PTR arg) {
-       LDKBalance *ret_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
-       *ret_copy = Balance_clone(arg);
+static inline uint64_t APIError_clone_ptr(LDKAPIError *NONNULL_PTR arg) {
+       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
+       *ret_copy = APIError_clone(arg);
 uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_Balance_clone_ptr(uint32_t arg) {
-       LDKBalance* arg_conv = (LDKBalance*)arg;
-       int64_t ret_val = Balance_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_APIError_clone_ptr(uint32_t arg) {
+       LDKAPIError* arg_conv = (LDKAPIError*)arg;
+       int64_t ret_val = APIError_clone_ptr(arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Balance_clone(uint32_t orig) {
-       LDKBalance* orig_conv = (LDKBalance*)orig;
-       LDKBalance *ret_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
-       *ret_copy = Balance_clone(orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_APIError_clone(uint32_t orig) {
+       LDKAPIError* orig_conv = (LDKAPIError*)orig;
+       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
+       *ret_copy = APIError_clone(orig_conv);
        uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Balance_claimable_on_channel_close(int64_t claimable_amount_satoshis) {
-       LDKBalance *ret_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
-       *ret_copy = Balance_claimable_on_channel_close(claimable_amount_satoshis);
+uint32_t  __attribute__((visibility("default"))) TS_APIError_apimisuse_error(jstring err) {
+       LDKStr err_conv = str_ref_to_owned_c(err);
+       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
+       *ret_copy = APIError_apimisuse_error(err_conv);
        uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Balance_claimable_awaiting_confirmations(int64_t claimable_amount_satoshis, int32_t confirmation_height) {
-       LDKBalance *ret_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
-       *ret_copy = Balance_claimable_awaiting_confirmations(claimable_amount_satoshis, confirmation_height);
+uint32_t  __attribute__((visibility("default"))) TS_APIError_fee_rate_too_high(jstring err, int32_t feerate) {
+       LDKStr err_conv = str_ref_to_owned_c(err);
+       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
+       *ret_copy = APIError_fee_rate_too_high(err_conv, feerate);
        uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Balance_contentious_claimable(int64_t claimable_amount_satoshis, int32_t timeout_height) {
-       LDKBalance *ret_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
-       *ret_copy = Balance_contentious_claimable(claimable_amount_satoshis, timeout_height);
+uint32_t  __attribute__((visibility("default"))) TS_APIError_route_error(jstring err) {
+       LDKStr err_conv = str_ref_to_owned_c(err);
+       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
+       *ret_copy = APIError_route_error(err_conv);
        uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Balance_maybe_claimable_htlcawaiting_timeout(int64_t claimable_amount_satoshis, int32_t claimable_height) {
-       LDKBalance *ret_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
-       *ret_copy = Balance_maybe_claimable_htlcawaiting_timeout(claimable_amount_satoshis, claimable_height);
+uint32_t  __attribute__((visibility("default"))) TS_APIError_channel_unavailable(jstring err) {
+       LDKStr err_conv = str_ref_to_owned_c(err);
+       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
+       *ret_copy = APIError_channel_unavailable(err_conv);
        uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_Balance_eq(uint32_t a, uint32_t b) {
-       LDKBalance* a_conv = (LDKBalance*)a;
-       LDKBalance* b_conv = (LDKBalance*)b;
-       jboolean ret_val = Balance_eq(a_conv, b_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_APIError_monitor_update_failed() {
+       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
+       *ret_copy = APIError_monitor_update_failed();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMonitor_free(uint32_t this_obj) {
-       LDKChannelMonitor this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelMonitor_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_APIError_incompatible_shutdown_script(uint32_t script) {
+       LDKShutdownScript script_conv;
+       script_conv.inner = (void*)(script & (~1));
+       script_conv.is_owned = (script & 1) || (script == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(script_conv);
+       script_conv = ShutdownScript_clone(&script_conv);
+       LDKAPIError *ret_copy = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
+       *ret_copy = APIError_incompatible_shutdown_script(script_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_sign(int8_tArray msg, int8_tArray sk) {
+       LDKu8slice msg_ref;
+       msg_ref.datalen = msg->arr_len;
+       msg_ref.data = msg->elems;
+       unsigned char sk_arr[32];
+       CHECK(sk->arr_len == 32);
+       memcpy(sk_arr, sk->elems, 32);
+       unsigned char (*sk_ref)[32] = &sk_arr;
+       LDKCResult_StringErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StringErrorZ), "LDKCResult_StringErrorZ");
+       *ret_conv = sign(msg_ref, sk_ref);
+       return (uint64_t)ret_conv;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_recover_pk(int8_tArray msg, jstring sig) {
+       LDKu8slice msg_ref;
+       msg_ref.datalen = msg->arr_len;
+       msg_ref.data = msg->elems;
+       LDKStr sig_conv = str_ref_to_owned_c(sig);
+       LDKCResult_PublicKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeyErrorZ), "LDKCResult_PublicKeyErrorZ");
+       *ret_conv = recover_pk(msg_ref, sig_conv);
+       return (uint64_t)ret_conv;
+}
+
+jboolean  __attribute__((visibility("default"))) TS_verify(int8_tArray msg, jstring sig, int8_tArray pk) {
+       LDKu8slice msg_ref;
+       msg_ref.datalen = msg->arr_len;
+       msg_ref.data = msg->elems;
+       LDKStr sig_conv = str_ref_to_owned_c(sig);
+       LDKPublicKey pk_ref;
+       CHECK(pk->arr_len == 33);
+       memcpy(pk_ref.compressed_form, pk->elems, 33);
+       jboolean ret_val = verify(msg_ref, sig_conv, pk_ref);
+       return ret_val;
 }
 
-static inline uint64_t ChannelMonitor_clone_ptr(LDKChannelMonitor *NONNULL_PTR arg) {
-       LDKChannelMonitor ret_var = ChannelMonitor_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_Level_clone(uint32_t orig) {
+       LDKLevel* orig_conv = (LDKLevel*)(orig & ~1);
+       uint32_t ret_conv = LDKLevel_to_js(Level_clone(orig_conv));
+       return ret_conv;
 }
-       return ret_ref;
+
+uint32_t  __attribute__((visibility("default"))) TS_Level_gossip() {
+       uint32_t ret_conv = LDKLevel_to_js(Level_gossip());
+       return ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_ChannelMonitor_clone_ptr(uint32_t arg) {
-       LDKChannelMonitor arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelMonitor_clone_ptr(&arg_conv);
-       return ret_val;
+
+uint32_t  __attribute__((visibility("default"))) TS_Level_trace() {
+       uint32_t ret_conv = LDKLevel_to_js(Level_trace());
+       return ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitor_clone(uint32_t orig) {
-       LDKChannelMonitor orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelMonitor ret_var = ChannelMonitor_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_Level_debug() {
+       uint32_t ret_conv = LDKLevel_to_js(Level_debug());
+       return ret_conv;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_write(uint32_t obj) {
-       LDKChannelMonitor obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ChannelMonitor_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_Level_info() {
+       uint32_t ret_conv = LDKLevel_to_js(Level_info());
+       return ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitor_update_monitor(uint32_t this_arg, uint32_t updates, uint32_t broadcaster, uint32_t fee_estimator, uint32_t logger) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKChannelMonitorUpdate updates_conv;
-       updates_conv.inner = (void*)(updates & (~1));
-       updates_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(updates_conv);
-       void* broadcaster_ptr = (void*)(((uint64_t)broadcaster) & ~1);
-       if (!(broadcaster & 1)) { CHECK_ACCESS(broadcaster_ptr); }
-       LDKBroadcasterInterface* broadcaster_conv = (LDKBroadcasterInterface*)broadcaster_ptr;
-       void* fee_estimator_ptr = (void*)(((uint64_t)fee_estimator) & ~1);
-       if (!(fee_estimator & 1)) { CHECK_ACCESS(fee_estimator_ptr); }
-       LDKFeeEstimator* fee_estimator_conv = (LDKFeeEstimator*)fee_estimator_ptr;
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       if (!(logger & 1)) { CHECK_ACCESS(logger_ptr); }
-       LDKLogger* logger_conv = (LDKLogger*)logger_ptr;
-       LDKCResult_NoneNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneNoneZ), "LDKCResult_NoneNoneZ");
-       *ret_conv = ChannelMonitor_update_monitor(&this_arg_conv, &updates_conv, broadcaster_conv, fee_estimator_conv, logger_conv);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_Level_warn() {
+       uint32_t ret_conv = LDKLevel_to_js(Level_warn());
+       return ret_conv;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ChannelMonitor_get_latest_update_id(uint32_t this_arg) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = ChannelMonitor_get_latest_update_id(&this_arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_Level_error() {
+       uint32_t ret_conv = LDKLevel_to_js(Level_error());
+       return ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitor_get_funding_txo(uint32_t this_arg) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKC2Tuple_OutPointScriptZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_OutPointScriptZ), "LDKC2Tuple_OutPointScriptZ");
-       *ret_conv = ChannelMonitor_get_funding_txo(&this_arg_conv);
-       return ((uint64_t)ret_conv);
+jboolean  __attribute__((visibility("default"))) TS_Level_eq(uint32_t a, uint32_t b) {
+       LDKLevel* a_conv = (LDKLevel*)(a & ~1);
+       LDKLevel* b_conv = (LDKLevel*)(b & ~1);
+       jboolean ret_val = Level_eq(a_conv, b_conv);
+       return ret_val;
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_get_outputs_to_watch(uint32_t this_arg) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ ret_var = ChannelMonitor_get_outputs_to_watch(&this_arg_conv);
-       uint32_tArray ret_arr = NULL;
-       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 o = 0; o < ret_var.datalen; o++) {
-               LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* ret_conv_40_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ");
-               *ret_conv_40_conv = ret_var.data[o];
-               ret_arr_ptr[o] = ((uint64_t)ret_conv_40_conv);
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+int64_t  __attribute__((visibility("default"))) TS_Level_hash(uint32_t o) {
+       LDKLevel* o_conv = (LDKLevel*)(o & ~1);
+       int64_t ret_val = Level_hash(o_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMonitor_load_outputs_to_watch(uint32_t this_arg, uint32_t filter) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       void* filter_ptr = (void*)(((uint64_t)filter) & ~1);
-       if (!(filter & 1)) { CHECK_ACCESS(filter_ptr); }
-       LDKFilter* filter_conv = (LDKFilter*)filter_ptr;
-       ChannelMonitor_load_outputs_to_watch(&this_arg_conv, filter_conv);
+uint32_t  __attribute__((visibility("default"))) TS_Level_max() {
+       uint32_t ret_conv = LDKLevel_to_js(Level_max());
+       return ret_conv;
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_get_and_clear_pending_monitor_events(uint32_t this_arg) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCVec_MonitorEventZ ret_var = ChannelMonitor_get_and_clear_pending_monitor_events(&this_arg_conv);
-       uint32_tArray ret_arr = NULL;
-       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 o = 0; o < ret_var.datalen; o++) {
-               LDKMonitorEvent *ret_conv_14_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
-               *ret_conv_14_copy = ret_var.data[o];
-               uint64_t ret_conv_14_ref = (uint64_t)ret_conv_14_copy;
-               ret_arr_ptr[o] = ret_conv_14_ref;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_Record_free(uint32_t this_obj) {
+       LDKRecord this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       Record_free(this_obj_conv);
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_get_and_clear_pending_events(uint32_t this_arg) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCVec_EventZ ret_var = ChannelMonitor_get_and_clear_pending_events(&this_arg_conv);
-       uint32_tArray ret_arr = NULL;
-       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 *ret_conv_7_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
-               *ret_conv_7_copy = ret_var.data[h];
-               uint64_t ret_conv_7_ref = (uint64_t)ret_conv_7_copy;
-               ret_arr_ptr[h] = ret_conv_7_ref;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_Record_get_level(uint32_t this_ptr) {
+       LDKRecord this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       uint32_t ret_conv = LDKLevel_to_js(Record_get_level(&this_ptr_conv));
+       return ret_conv;
 }
 
-ptrArray  __attribute__((visibility("default"))) TS_ChannelMonitor_get_latest_holder_commitment_txn(uint32_t this_arg, uint32_t logger) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       if (!(logger & 1)) { CHECK_ACCESS(logger_ptr); }
-       LDKLogger* logger_conv = (LDKLogger*)logger_ptr;
-       LDKCVec_TransactionZ ret_var = ChannelMonitor_get_latest_holder_commitment_txn(&this_arg_conv, logger_conv);
-       ptrArray ret_arr = NULL;
-       ret_arr = init_arr(ret_var.datalen, sizeof(uint32_t), "Native ptrArray Bytes");
-       int8_tArray *ret_arr_ptr = (int8_tArray*)(ret_arr + 4);
-       for (size_t m = 0; m < ret_var.datalen; m++) {
-               LDKTransaction ret_conv_12_var = ret_var.data[m];
-               int8_tArray ret_conv_12_arr = init_arr(ret_conv_12_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-               memcpy((uint8_t*)(ret_conv_12_arr + 4), ret_conv_12_var.data, ret_conv_12_var.datalen);
-               Transaction_free(ret_conv_12_var);
-               ret_arr_ptr[m] = ret_conv_12_arr;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_Record_set_level(uint32_t this_ptr, uint32_t val) {
+       LDKRecord this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKLevel val_conv = LDKLevel_from_js(val);
+       Record_set_level(&this_ptr_conv, val_conv);
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_block_connected(uint32_t this_arg, int8_tArray header, uint32_tArray txdata, int32_t height, uint32_t broadcaster, uint32_t fee_estimator, uint32_t logger) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       unsigned char header_arr[80];
-       CHECK(*((uint32_t*)header) == 80);
-       memcpy(header_arr, (uint8_t*)(header + 4), 80);
-       unsigned char (*header_ref)[80] = &header_arr;
-       LDKCVec_C2Tuple_usizeTransactionZZ txdata_constr;
-       txdata_constr.datalen = *((uint32_t*)txdata);
-       if (txdata_constr.datalen > 0)
-               txdata_constr.data = MALLOC(txdata_constr.datalen * sizeof(LDKC2Tuple_usizeTransactionZ), "LDKCVec_C2Tuple_usizeTransactionZZ Elements");
-       else
-               txdata_constr.data = NULL;
-       uint32_t* txdata_vals = (uint32_t*)(txdata + 4);
-       for (size_t c = 0; c < txdata_constr.datalen; c++) {
-               uint32_t txdata_conv_28 = txdata_vals[c];
-               void* txdata_conv_28_ptr = (void*)(((uint64_t)txdata_conv_28) & ~1);
-               CHECK_ACCESS(txdata_conv_28_ptr);
-               LDKC2Tuple_usizeTransactionZ txdata_conv_28_conv = *(LDKC2Tuple_usizeTransactionZ*)(txdata_conv_28_ptr);
-               txdata_conv_28_conv = C2Tuple_usizeTransactionZ_clone((LDKC2Tuple_usizeTransactionZ*)(((uint64_t)txdata_conv_28) & ~1));
-               txdata_constr.data[c] = txdata_conv_28_conv;
-       }
-       void* broadcaster_ptr = (void*)(((uint64_t)broadcaster) & ~1);
-       CHECK_ACCESS(broadcaster_ptr);
-       LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(broadcaster_ptr);
-       void* fee_estimator_ptr = (void*)(((uint64_t)fee_estimator) & ~1);
-       CHECK_ACCESS(fee_estimator_ptr);
-       LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(fee_estimator_ptr);
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       CHECK_ACCESS(logger_ptr);
-       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
-       LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ret_var = ChannelMonitor_block_connected(&this_arg_conv, header_ref, txdata_constr, height, broadcaster_conv, fee_estimator_conv, logger_conv);
-       uint32_tArray ret_arr = NULL;
-       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 n = 0; n < ret_var.datalen; n++) {
-               LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* ret_conv_39_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ");
-               *ret_conv_39_conv = ret_var.data[n];
-               ret_arr_ptr[n] = ((uint64_t)ret_conv_39_conv);
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+jstring  __attribute__((visibility("default"))) TS_Record_get_args(uint32_t this_ptr) {
+       LDKRecord this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKStr ret_str = Record_get_args(&this_ptr_conv);
+       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
+       Str_free(ret_str);
+       return ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMonitor_block_disconnected(uint32_t this_arg, int8_tArray header, int32_t height, uint32_t broadcaster, uint32_t fee_estimator, uint32_t logger) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       unsigned char header_arr[80];
-       CHECK(*((uint32_t*)header) == 80);
-       memcpy(header_arr, (uint8_t*)(header + 4), 80);
-       unsigned char (*header_ref)[80] = &header_arr;
-       void* broadcaster_ptr = (void*)(((uint64_t)broadcaster) & ~1);
-       CHECK_ACCESS(broadcaster_ptr);
-       LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(broadcaster_ptr);
-       void* fee_estimator_ptr = (void*)(((uint64_t)fee_estimator) & ~1);
-       CHECK_ACCESS(fee_estimator_ptr);
-       LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(fee_estimator_ptr);
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       CHECK_ACCESS(logger_ptr);
-       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
-       ChannelMonitor_block_disconnected(&this_arg_conv, header_ref, height, broadcaster_conv, fee_estimator_conv, logger_conv);
+void  __attribute__((visibility("default"))) TS_Record_set_args(uint32_t this_ptr, jstring val) {
+       LDKRecord this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKStr val_conv = str_ref_to_owned_c(val);
+       Record_set_args(&this_ptr_conv, val_conv);
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_transactions_confirmed(uint32_t this_arg, int8_tArray header, uint32_tArray txdata, int32_t height, uint32_t broadcaster, uint32_t fee_estimator, uint32_t logger) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       unsigned char header_arr[80];
-       CHECK(*((uint32_t*)header) == 80);
-       memcpy(header_arr, (uint8_t*)(header + 4), 80);
-       unsigned char (*header_ref)[80] = &header_arr;
-       LDKCVec_C2Tuple_usizeTransactionZZ txdata_constr;
-       txdata_constr.datalen = *((uint32_t*)txdata);
-       if (txdata_constr.datalen > 0)
-               txdata_constr.data = MALLOC(txdata_constr.datalen * sizeof(LDKC2Tuple_usizeTransactionZ), "LDKCVec_C2Tuple_usizeTransactionZZ Elements");
-       else
-               txdata_constr.data = NULL;
-       uint32_t* txdata_vals = (uint32_t*)(txdata + 4);
-       for (size_t c = 0; c < txdata_constr.datalen; c++) {
-               uint32_t txdata_conv_28 = txdata_vals[c];
-               void* txdata_conv_28_ptr = (void*)(((uint64_t)txdata_conv_28) & ~1);
-               CHECK_ACCESS(txdata_conv_28_ptr);
-               LDKC2Tuple_usizeTransactionZ txdata_conv_28_conv = *(LDKC2Tuple_usizeTransactionZ*)(txdata_conv_28_ptr);
-               txdata_conv_28_conv = C2Tuple_usizeTransactionZ_clone((LDKC2Tuple_usizeTransactionZ*)(((uint64_t)txdata_conv_28) & ~1));
-               txdata_constr.data[c] = txdata_conv_28_conv;
-       }
-       void* broadcaster_ptr = (void*)(((uint64_t)broadcaster) & ~1);
-       CHECK_ACCESS(broadcaster_ptr);
-       LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(broadcaster_ptr);
-       void* fee_estimator_ptr = (void*)(((uint64_t)fee_estimator) & ~1);
-       CHECK_ACCESS(fee_estimator_ptr);
-       LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(fee_estimator_ptr);
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       CHECK_ACCESS(logger_ptr);
-       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
-       LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ret_var = ChannelMonitor_transactions_confirmed(&this_arg_conv, header_ref, txdata_constr, height, broadcaster_conv, fee_estimator_conv, logger_conv);
-       uint32_tArray ret_arr = NULL;
-       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 n = 0; n < ret_var.datalen; n++) {
-               LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* ret_conv_39_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ");
-               *ret_conv_39_conv = ret_var.data[n];
-               ret_arr_ptr[n] = ((uint64_t)ret_conv_39_conv);
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+jstring  __attribute__((visibility("default"))) TS_Record_get_module_path(uint32_t this_ptr) {
+       LDKRecord this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKStr ret_str = Record_get_module_path(&this_ptr_conv);
+       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
+       Str_free(ret_str);
+       return ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMonitor_transaction_unconfirmed(uint32_t this_arg, int8_tArray txid, uint32_t broadcaster, uint32_t fee_estimator, uint32_t logger) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       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;
-       void* broadcaster_ptr = (void*)(((uint64_t)broadcaster) & ~1);
-       CHECK_ACCESS(broadcaster_ptr);
-       LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(broadcaster_ptr);
-       void* fee_estimator_ptr = (void*)(((uint64_t)fee_estimator) & ~1);
-       CHECK_ACCESS(fee_estimator_ptr);
-       LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(fee_estimator_ptr);
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       CHECK_ACCESS(logger_ptr);
-       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
-       ChannelMonitor_transaction_unconfirmed(&this_arg_conv, txid_ref, broadcaster_conv, fee_estimator_conv, logger_conv);
+void  __attribute__((visibility("default"))) TS_Record_set_module_path(uint32_t this_ptr, jstring val) {
+       LDKRecord this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKStr val_conv = str_ref_to_owned_c(val);
+       Record_set_module_path(&this_ptr_conv, val_conv);
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_best_block_updated(uint32_t this_arg, int8_tArray header, int32_t height, uint32_t broadcaster, uint32_t fee_estimator, uint32_t logger) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       unsigned char header_arr[80];
-       CHECK(*((uint32_t*)header) == 80);
-       memcpy(header_arr, (uint8_t*)(header + 4), 80);
-       unsigned char (*header_ref)[80] = &header_arr;
-       void* broadcaster_ptr = (void*)(((uint64_t)broadcaster) & ~1);
-       CHECK_ACCESS(broadcaster_ptr);
-       LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(broadcaster_ptr);
-       void* fee_estimator_ptr = (void*)(((uint64_t)fee_estimator) & ~1);
-       CHECK_ACCESS(fee_estimator_ptr);
-       LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(fee_estimator_ptr);
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       CHECK_ACCESS(logger_ptr);
-       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
-       LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ret_var = ChannelMonitor_best_block_updated(&this_arg_conv, header_ref, height, broadcaster_conv, fee_estimator_conv, logger_conv);
-       uint32_tArray ret_arr = NULL;
-       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 n = 0; n < ret_var.datalen; n++) {
-               LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* ret_conv_39_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ");
-               *ret_conv_39_conv = ret_var.data[n];
-               ret_arr_ptr[n] = ((uint64_t)ret_conv_39_conv);
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+jstring  __attribute__((visibility("default"))) TS_Record_get_file(uint32_t this_ptr) {
+       LDKRecord this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKStr ret_str = Record_get_file(&this_ptr_conv);
+       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
+       Str_free(ret_str);
+       return ret_conv;
 }
 
-ptrArray  __attribute__((visibility("default"))) TS_ChannelMonitor_get_relevant_txids(uint32_t this_arg) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCVec_TxidZ ret_var = ChannelMonitor_get_relevant_txids(&this_arg_conv);
-       ptrArray ret_arr = NULL;
-       ret_arr = init_arr(ret_var.datalen, sizeof(uint32_t), "Native ptrArray Bytes");
-       int8_tArray *ret_arr_ptr = (int8_tArray*)(ret_arr + 4);
-       for (size_t m = 0; m < ret_var.datalen; m++) {
-               int8_tArray ret_conv_12_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-               memcpy((uint8_t*)(ret_conv_12_arr + 4), ret_var.data[m].data, 32);
-               ret_arr_ptr[m] = ret_conv_12_arr;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_Record_set_file(uint32_t this_ptr, jstring val) {
+       LDKRecord this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKStr val_conv = str_ref_to_owned_c(val);
+       Record_set_file(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitor_current_best_block(uint32_t this_arg) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKBestBlock ret_var = ChannelMonitor_current_best_block(&this_arg_conv);
+int32_t  __attribute__((visibility("default"))) TS_Record_get_line(uint32_t this_ptr) {
+       LDKRecord this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = Record_get_line(&this_ptr_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_Record_set_line(uint32_t this_ptr, int32_t val) {
+       LDKRecord this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       Record_set_line(&this_ptr_conv, val);
+}
+
+static inline uint64_t Record_clone_ptr(LDKRecord *NONNULL_PTR arg) {
+       LDKRecord ret_var = Record_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_Record_clone_ptr(uint32_t arg) {
+       LDKRecord arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = Record_clone_ptr(&arg_conv);
+       return ret_val;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_Record_clone(uint32_t orig) {
+       LDKRecord orig_conv;
+       orig_conv.inner = (void*)(orig & (~1));
+       orig_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKRecord ret_var = Record_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -19622,89 +17076,76 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitor_current_best_
        return ret_ref;
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_get_claimable_balances(uint32_t this_arg) {
-       LDKChannelMonitor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCVec_BalanceZ ret_var = ChannelMonitor_get_claimable_balances(&this_arg_conv);
-       uint32_tArray ret_arr = NULL;
-       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 j = 0; j < ret_var.datalen; j++) {
-               LDKBalance *ret_conv_9_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
-               *ret_conv_9_copy = ret_var.data[j];
-               uint64_t ret_conv_9_ref = (uint64_t)ret_conv_9_copy;
-               ret_arr_ptr[j] = ret_conv_9_ref;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_read(int8_tArray ser, uint32_t arg) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       void* arg_ptr = (void*)(((uint64_t)arg) & ~1);
-       if (!(arg & 1)) { CHECK_ACCESS(arg_ptr); }
-       LDKKeysInterface* arg_conv = (LDKKeysInterface*)arg_ptr;
-       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ");
-       *ret_conv = C2Tuple_BlockHashChannelMonitorZ_read(ser_ref, arg_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_Logger_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKLogger this_ptr_conv = *(LDKLogger*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       Logger_free(this_ptr_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_OutPoint_free(uint32_t this_obj) {
-       LDKOutPoint this_obj_conv;
+void  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_free(uint32_t this_obj) {
+       LDKChannelHandshakeConfig this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       OutPoint_free(this_obj_conv);
+       ChannelHandshakeConfig_free(this_obj_conv);
+}
+
+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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = ChannelHandshakeConfig_get_minimum_depth(&this_ptr_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_OutPoint_get_txid(uint32_t this_ptr) {
-       LDKOutPoint this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_set_minimum_depth(uint32_t this_ptr, int32_t val) {
+       LDKChannelHandshakeConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *OutPoint_get_txid(&this_ptr_conv), 32);
-       return ret_arr;
+       ChannelHandshakeConfig_set_minimum_depth(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_OutPoint_set_txid(uint32_t this_ptr, int8_tArray val) {
-       LDKOutPoint this_ptr_conv;
+int16_t  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_get_our_to_self_delay(uint32_t this_ptr) {
+       LDKChannelHandshakeConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       OutPoint_set_txid(&this_ptr_conv, val_ref);
+       int16_t ret_val = ChannelHandshakeConfig_get_our_to_self_delay(&this_ptr_conv);
+       return ret_val;
 }
 
-int16_t  __attribute__((visibility("default"))) TS_OutPoint_get_index(uint32_t this_ptr) {
-       LDKOutPoint this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_set_our_to_self_delay(uint32_t this_ptr, int16_t val) {
+       LDKChannelHandshakeConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = OutPoint_get_index(&this_ptr_conv);
+       ChannelHandshakeConfig_set_our_to_self_delay(&this_ptr_conv, val);
+}
+
+int64_t  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_get_our_htlc_minimum_msat(uint32_t this_ptr) {
+       LDKChannelHandshakeConfig this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = ChannelHandshakeConfig_get_our_htlc_minimum_msat(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_OutPoint_set_index(uint32_t this_ptr, int16_t val) {
-       LDKOutPoint this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_set_our_htlc_minimum_msat(uint32_t this_ptr, int64_t val) {
+       LDKChannelHandshakeConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       OutPoint_set_index(&this_ptr_conv, val);
+       ChannelHandshakeConfig_set_our_htlc_minimum_msat(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_OutPoint_new(int8_tArray txid_arg, int16_t index_arg) {
-       LDKThirtyTwoBytes txid_arg_ref;
-       CHECK(*((uint32_t*)txid_arg) == 32);
-       memcpy(txid_arg_ref.data, (uint8_t*)(txid_arg + 4), 32);
-       LDKOutPoint ret_var = OutPoint_new(txid_arg_ref, index_arg);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_new(int32_t minimum_depth_arg, int16_t our_to_self_delay_arg, int64_t our_htlc_minimum_msat_arg) {
+       LDKChannelHandshakeConfig ret_var = ChannelHandshakeConfig_new(minimum_depth_arg, our_to_self_delay_arg, our_htlc_minimum_msat_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -19716,8 +17157,8 @@ uint32_t  __attribute__((visibility("default"))) TS_OutPoint_new(int8_tArray txi
        return ret_ref;
 }
 
-static inline uint64_t OutPoint_clone_ptr(LDKOutPoint *NONNULL_PTR arg) {
-       LDKOutPoint ret_var = OutPoint_clone(arg);
+static inline uint64_t ChannelHandshakeConfig_clone_ptr(LDKChannelHandshakeConfig *NONNULL_PTR arg) {
+       LDKChannelHandshakeConfig ret_var = ChannelHandshakeConfig_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -19728,21 +17169,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_OutPoint_clone_ptr(uint32_t arg) {
-       LDKOutPoint arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_clone_ptr(uint32_t arg) {
+       LDKChannelHandshakeConfig arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = OutPoint_clone_ptr(&arg_conv);
+       int64_t ret_val = ChannelHandshakeConfig_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_OutPoint_clone(uint32_t orig) {
-       LDKOutPoint orig_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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKOutPoint ret_var = OutPoint_clone(&orig_conv);
+       LDKChannelHandshakeConfig ret_var = ChannelHandshakeConfig_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -19754,73 +17195,216 @@ uint32_t  __attribute__((visibility("default"))) TS_OutPoint_clone(uint32_t orig
        return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_OutPoint_eq(uint32_t a, uint32_t b) {
-       LDKOutPoint a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKOutPoint b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = OutPoint_eq(&a_conv, &b_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_default() {
+       LDKChannelHandshakeConfig ret_var = ChannelHandshakeConfig_default();
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_free(uint32_t this_obj) {
+       LDKChannelHandshakeLimits this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       ChannelHandshakeLimits_free(this_obj_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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = ChannelHandshakeLimits_get_min_funding_satoshis(&this_ptr_conv);
        return ret_val;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_OutPoint_hash(uint32_t o) {
-       LDKOutPoint o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = OutPoint_hash(&o_conv);
+void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_min_funding_satoshis(uint32_t this_ptr, int64_t val) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ChannelHandshakeLimits_set_min_funding_satoshis(&this_ptr_conv, val);
+}
+
+int64_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_get_max_htlc_minimum_msat(uint32_t this_ptr) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = ChannelHandshakeLimits_get_max_htlc_minimum_msat(&this_ptr_conv);
        return ret_val;
 }
 
-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));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), OutPoint_to_channel_id(&this_arg_conv).data, 32);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_max_htlc_minimum_msat(uint32_t this_ptr, int64_t val) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ChannelHandshakeLimits_set_max_htlc_minimum_msat(&this_ptr_conv, val);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_OutPoint_write(uint32_t obj) {
-       LDKOutPoint obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = OutPoint_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+int64_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_get_min_max_htlc_value_in_flight_msat(uint32_t this_ptr) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = ChannelHandshakeLimits_get_min_max_htlc_value_in_flight_msat(&this_ptr_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_min_max_htlc_value_in_flight_msat(uint32_t this_ptr, int64_t val) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ChannelHandshakeLimits_set_min_max_htlc_value_in_flight_msat(&this_ptr_conv, val);
+}
+
+int64_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_get_max_channel_reserve_satoshis(uint32_t this_ptr) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = ChannelHandshakeLimits_get_max_channel_reserve_satoshis(&this_ptr_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_max_channel_reserve_satoshis(uint32_t this_ptr, int64_t val) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ChannelHandshakeLimits_set_max_channel_reserve_satoshis(&this_ptr_conv, val);
+}
+
+int16_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_get_min_max_accepted_htlcs(uint32_t this_ptr) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int16_t ret_val = ChannelHandshakeLimits_get_min_max_accepted_htlcs(&this_ptr_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_min_max_accepted_htlcs(uint32_t this_ptr, int16_t val) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ChannelHandshakeLimits_set_min_max_accepted_htlcs(&this_ptr_conv, val);
+}
+
+int32_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_get_max_minimum_depth(uint32_t this_ptr) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = ChannelHandshakeLimits_get_max_minimum_depth(&this_ptr_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_max_minimum_depth(uint32_t this_ptr, int32_t val) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ChannelHandshakeLimits_set_max_minimum_depth(&this_ptr_conv, val);
+}
+
+jboolean  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_get_force_announced_channel_preference(uint32_t this_ptr) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       jboolean ret_val = ChannelHandshakeLimits_get_force_announced_channel_preference(&this_ptr_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_force_announced_channel_preference(uint32_t this_ptr, jboolean val) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ChannelHandshakeLimits_set_force_announced_channel_preference(&this_ptr_conv, val);
+}
+
+int16_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_get_their_to_self_delay(uint32_t this_ptr) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int16_t ret_val = ChannelHandshakeLimits_get_their_to_self_delay(&this_ptr_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_set_their_to_self_delay(uint32_t this_ptr, int16_t val) {
+       LDKChannelHandshakeLimits this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ChannelHandshakeLimits_set_their_to_self_delay(&this_ptr_conv, val);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_new(int64_t min_funding_satoshis_arg, int64_t max_htlc_minimum_msat_arg, int64_t min_max_htlc_value_in_flight_msat_arg, int64_t max_channel_reserve_satoshis_arg, int16_t min_max_accepted_htlcs_arg, int32_t max_minimum_depth_arg, jboolean force_announced_channel_preference_arg, int16_t their_to_self_delay_arg) {
+       LDKChannelHandshakeLimits ret_var = 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, max_minimum_depth_arg, force_announced_channel_preference_arg, their_to_self_delay_arg);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+static inline uint64_t ChannelHandshakeLimits_clone_ptr(LDKChannelHandshakeLimits *NONNULL_PTR arg) {
+       LDKChannelHandshakeLimits ret_var = ChannelHandshakeLimits_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_OutPoint_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_OutPointDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OutPointDecodeErrorZ), "LDKCResult_OutPointDecodeErrorZ");
-       *ret_conv = OutPoint_read(ser_ref);
-       return (uint64_t)ret_conv;
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_clone_ptr(uint32_t arg) {
+       LDKChannelHandshakeLimits arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ChannelHandshakeLimits_clone_ptr(&arg_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_free(uint32_t this_obj) {
-       LDKDelayedPaymentOutputDescriptor this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       DelayedPaymentOutputDescriptor_free(this_obj_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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKChannelHandshakeLimits ret_var = ChannelHandshakeLimits_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_get_outpoint(uint32_t this_ptr) {
-       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKOutPoint ret_var = DelayedPaymentOutputDescriptor_get_outpoint(&this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_default() {
+       LDKChannelHandshakeLimits ret_var = ChannelHandshakeLimits_default();
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -19832,148 +17416,135 @@ uint32_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescript
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_set_outpoint(uint32_t this_ptr, uint32_t val) {
-       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelConfig_free(uint32_t this_obj) {
+       LDKChannelConfig this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       ChannelConfig_free(this_obj_conv);
+}
+
+int32_t  __attribute__((visibility("default"))) TS_ChannelConfig_get_forwarding_fee_proportional_millionths(uint32_t this_ptr) {
+       LDKChannelConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKOutPoint val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = OutPoint_clone(&val_conv);
-       DelayedPaymentOutputDescriptor_set_outpoint(&this_ptr_conv, val_conv);
+       int32_t ret_val = ChannelConfig_get_forwarding_fee_proportional_millionths(&this_ptr_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_get_per_commitment_point(uint32_t this_ptr) {
-       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelConfig_set_forwarding_fee_proportional_millionths(uint32_t this_ptr, int32_t val) {
+       LDKChannelConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), DelayedPaymentOutputDescriptor_get_per_commitment_point(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       ChannelConfig_set_forwarding_fee_proportional_millionths(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_set_per_commitment_point(uint32_t this_ptr, int8_tArray val) {
-       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
+int32_t  __attribute__((visibility("default"))) TS_ChannelConfig_get_forwarding_fee_base_msat(uint32_t this_ptr) {
+       LDKChannelConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       DelayedPaymentOutputDescriptor_set_per_commitment_point(&this_ptr_conv, val_ref);
+       int32_t ret_val = ChannelConfig_get_forwarding_fee_base_msat(&this_ptr_conv);
+       return ret_val;
 }
 
-int16_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_get_to_self_delay(uint32_t this_ptr) {
-       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelConfig_set_forwarding_fee_base_msat(uint32_t this_ptr, int32_t val) {
+       LDKChannelConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = DelayedPaymentOutputDescriptor_get_to_self_delay(&this_ptr_conv);
+       ChannelConfig_set_forwarding_fee_base_msat(&this_ptr_conv, val);
+}
+
+int16_t  __attribute__((visibility("default"))) TS_ChannelConfig_get_cltv_expiry_delta(uint32_t this_ptr) {
+       LDKChannelConfig this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int16_t ret_val = ChannelConfig_get_cltv_expiry_delta(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_set_to_self_delay(uint32_t this_ptr, int16_t val) {
-       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelConfig_set_cltv_expiry_delta(uint32_t this_ptr, int16_t val) {
+       LDKChannelConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       DelayedPaymentOutputDescriptor_set_to_self_delay(&this_ptr_conv, val);
+       ChannelConfig_set_cltv_expiry_delta(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_set_output(uint32_t this_ptr, uint32_t val) {
-       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
+jboolean  __attribute__((visibility("default"))) TS_ChannelConfig_get_announced_channel(uint32_t this_ptr) {
+       LDKChannelConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKTxOut val_conv = *(LDKTxOut*)(val_ptr);
-       val_conv = TxOut_clone((LDKTxOut*)(((uint64_t)val) & ~1));
-       DelayedPaymentOutputDescriptor_set_output(&this_ptr_conv, val_conv);
+       jboolean ret_val = ChannelConfig_get_announced_channel(&this_ptr_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_get_revocation_pubkey(uint32_t this_ptr) {
-       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelConfig_set_announced_channel(uint32_t this_ptr, jboolean val) {
+       LDKChannelConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), DelayedPaymentOutputDescriptor_get_revocation_pubkey(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       ChannelConfig_set_announced_channel(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_set_revocation_pubkey(uint32_t this_ptr, int8_tArray val) {
-       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
+jboolean  __attribute__((visibility("default"))) TS_ChannelConfig_get_commit_upfront_shutdown_pubkey(uint32_t this_ptr) {
+       LDKChannelConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       DelayedPaymentOutputDescriptor_set_revocation_pubkey(&this_ptr_conv, val_ref);
+       jboolean ret_val = ChannelConfig_get_commit_upfront_shutdown_pubkey(&this_ptr_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_get_channel_keys_id(uint32_t this_ptr) {
-       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelConfig_set_commit_upfront_shutdown_pubkey(uint32_t this_ptr, jboolean val) {
+       LDKChannelConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *DelayedPaymentOutputDescriptor_get_channel_keys_id(&this_ptr_conv), 32);
-       return ret_arr;
+       ChannelConfig_set_commit_upfront_shutdown_pubkey(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_set_channel_keys_id(uint32_t this_ptr, int8_tArray val) {
-       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelConfig_get_max_dust_htlc_exposure_msat(uint32_t this_ptr) {
+       LDKChannelConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       DelayedPaymentOutputDescriptor_set_channel_keys_id(&this_ptr_conv, val_ref);
+       int64_t ret_val = ChannelConfig_get_max_dust_htlc_exposure_msat(&this_ptr_conv);
+       return ret_val;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_get_channel_value_satoshis(uint32_t this_ptr) {
-       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelConfig_set_max_dust_htlc_exposure_msat(uint32_t this_ptr, int64_t val) {
+       LDKChannelConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = DelayedPaymentOutputDescriptor_get_channel_value_satoshis(&this_ptr_conv);
+       ChannelConfig_set_max_dust_htlc_exposure_msat(&this_ptr_conv, val);
+}
+
+int64_t  __attribute__((visibility("default"))) TS_ChannelConfig_get_force_close_avoidance_max_fee_satoshis(uint32_t this_ptr) {
+       LDKChannelConfig this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = ChannelConfig_get_force_close_avoidance_max_fee_satoshis(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_set_channel_value_satoshis(uint32_t this_ptr, int64_t val) {
-       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelConfig_set_force_close_avoidance_max_fee_satoshis(uint32_t this_ptr, int64_t val) {
+       LDKChannelConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       DelayedPaymentOutputDescriptor_set_channel_value_satoshis(&this_ptr_conv, val);
+       ChannelConfig_set_force_close_avoidance_max_fee_satoshis(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_new(uint32_t outpoint_arg, int8_tArray per_commitment_point_arg, int16_t to_self_delay_arg, uint32_t output_arg, int8_tArray revocation_pubkey_arg, int8_tArray channel_keys_id_arg, int64_t channel_value_satoshis_arg) {
-       LDKOutPoint outpoint_arg_conv;
-       outpoint_arg_conv.inner = (void*)(outpoint_arg & (~1));
-       outpoint_arg_conv.is_owned = (outpoint_arg & 1) || (outpoint_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(outpoint_arg_conv);
-       outpoint_arg_conv = OutPoint_clone(&outpoint_arg_conv);
-       LDKPublicKey per_commitment_point_arg_ref;
-       CHECK(*((uint32_t*)per_commitment_point_arg) == 33);
-       memcpy(per_commitment_point_arg_ref.compressed_form, (uint8_t*)(per_commitment_point_arg + 4), 33);
-       void* output_arg_ptr = (void*)(((uint64_t)output_arg) & ~1);
-       CHECK_ACCESS(output_arg_ptr);
-       LDKTxOut output_arg_conv = *(LDKTxOut*)(output_arg_ptr);
-       output_arg_conv = TxOut_clone((LDKTxOut*)(((uint64_t)output_arg) & ~1));
-       LDKPublicKey revocation_pubkey_arg_ref;
-       CHECK(*((uint32_t*)revocation_pubkey_arg) == 33);
-       memcpy(revocation_pubkey_arg_ref.compressed_form, (uint8_t*)(revocation_pubkey_arg + 4), 33);
-       LDKThirtyTwoBytes channel_keys_id_arg_ref;
-       CHECK(*((uint32_t*)channel_keys_id_arg) == 32);
-       memcpy(channel_keys_id_arg_ref.data, (uint8_t*)(channel_keys_id_arg + 4), 32);
-       LDKDelayedPaymentOutputDescriptor ret_var = DelayedPaymentOutputDescriptor_new(outpoint_arg_conv, per_commitment_point_arg_ref, to_self_delay_arg, output_arg_conv, revocation_pubkey_arg_ref, channel_keys_id_arg_ref, channel_value_satoshis_arg);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelConfig_new(int32_t forwarding_fee_proportional_millionths_arg, int32_t forwarding_fee_base_msat_arg, int16_t cltv_expiry_delta_arg, jboolean announced_channel_arg, jboolean commit_upfront_shutdown_pubkey_arg, int64_t max_dust_htlc_exposure_msat_arg, int64_t force_close_avoidance_max_fee_satoshis_arg) {
+       LDKChannelConfig ret_var = ChannelConfig_new(forwarding_fee_proportional_millionths_arg, forwarding_fee_base_msat_arg, cltv_expiry_delta_arg, announced_channel_arg, commit_upfront_shutdown_pubkey_arg, max_dust_htlc_exposure_msat_arg, force_close_avoidance_max_fee_satoshis_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -19985,8 +17556,8 @@ uint32_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescript
        return ret_ref;
 }
 
-static inline uint64_t DelayedPaymentOutputDescriptor_clone_ptr(LDKDelayedPaymentOutputDescriptor *NONNULL_PTR arg) {
-       LDKDelayedPaymentOutputDescriptor ret_var = DelayedPaymentOutputDescriptor_clone(arg);
+static inline uint64_t ChannelConfig_clone_ptr(LDKChannelConfig *NONNULL_PTR arg) {
+       LDKChannelConfig ret_var = ChannelConfig_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -19997,21 +17568,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_clone_ptr(uint32_t arg) {
-       LDKDelayedPaymentOutputDescriptor arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelConfig_clone_ptr(uint32_t arg) {
+       LDKChannelConfig arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = DelayedPaymentOutputDescriptor_clone_ptr(&arg_conv);
+       int64_t ret_val = ChannelConfig_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_clone(uint32_t orig) {
-       LDKDelayedPaymentOutputDescriptor orig_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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKDelayedPaymentOutputDescriptor ret_var = DelayedPaymentOutputDescriptor_clone(&orig_conv);
+       LDKChannelConfig ret_var = ChannelConfig_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -20023,41 +17594,84 @@ uint32_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescript
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_write(uint32_t obj) {
-       LDKDelayedPaymentOutputDescriptor obj_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelConfig_default() {
+       LDKChannelConfig ret_var = ChannelConfig_default();
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelConfig_write(uint32_t obj) {
+       LDKChannelConfig obj_conv;
        obj_conv.inner = (void*)(obj & (~1));
        obj_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = DelayedPaymentOutputDescriptor_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       LDKCVec_u8Z ret_var = ChannelConfig_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_read(int8_tArray ser) {
+uint32_t  __attribute__((visibility("default"))) TS_ChannelConfig_read(int8_tArray ser) {
        LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ");
-       *ret_conv = DelayedPaymentOutputDescriptor_read(ser_ref);
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ChannelConfigDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelConfigDecodeErrorZ), "LDKCResult_ChannelConfigDecodeErrorZ");
+       *ret_conv = ChannelConfig_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_free(uint32_t this_obj) {
-       LDKStaticPaymentOutputDescriptor this_obj_conv;
+void  __attribute__((visibility("default"))) TS_UserConfig_free(uint32_t this_obj) {
+       LDKUserConfig this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       StaticPaymentOutputDescriptor_free(this_obj_conv);
+       UserConfig_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_get_outpoint(uint32_t this_ptr) {
-       LDKStaticPaymentOutputDescriptor this_ptr_conv;
+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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKChannelHandshakeConfig ret_var = UserConfig_get_own_channel_config(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+void  __attribute__((visibility("default"))) TS_UserConfig_set_own_channel_config(uint32_t this_ptr, uint32_t val) {
+       LDKUserConfig this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKChannelHandshakeConfig val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = ChannelHandshakeConfig_clone(&val_conv);
+       UserConfig_set_own_channel_config(&this_ptr_conv, val_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_UserConfig_get_peer_channel_config_limits(uint32_t this_ptr) {
+       LDKUserConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKOutPoint ret_var = StaticPaymentOutputDescriptor_get_outpoint(&this_ptr_conv);
+       LDKChannelHandshakeLimits ret_var = UserConfig_get_peer_channel_config_limits(&this_ptr_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -20069,83 +17683,100 @@ uint32_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescripto
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_set_outpoint(uint32_t this_ptr, uint32_t val) {
-       LDKStaticPaymentOutputDescriptor this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UserConfig_set_peer_channel_config_limits(uint32_t this_ptr, uint32_t val) {
+       LDKUserConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKOutPoint val_conv;
+       LDKChannelHandshakeLimits val_conv;
        val_conv.inner = (void*)(val & (~1));
        val_conv.is_owned = (val & 1) || (val == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = OutPoint_clone(&val_conv);
-       StaticPaymentOutputDescriptor_set_outpoint(&this_ptr_conv, val_conv);
+       val_conv = ChannelHandshakeLimits_clone(&val_conv);
+       UserConfig_set_peer_channel_config_limits(&this_ptr_conv, val_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_set_output(uint32_t this_ptr, uint32_t val) {
-       LDKStaticPaymentOutputDescriptor this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_UserConfig_get_channel_options(uint32_t this_ptr) {
+       LDKUserConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKTxOut val_conv = *(LDKTxOut*)(val_ptr);
-       val_conv = TxOut_clone((LDKTxOut*)(((uint64_t)val) & ~1));
-       StaticPaymentOutputDescriptor_set_output(&this_ptr_conv, val_conv);
+       LDKChannelConfig ret_var = UserConfig_get_channel_options(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_get_channel_keys_id(uint32_t this_ptr) {
-       LDKStaticPaymentOutputDescriptor this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UserConfig_set_channel_options(uint32_t this_ptr, uint32_t val) {
+       LDKUserConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *StaticPaymentOutputDescriptor_get_channel_keys_id(&this_ptr_conv), 32);
-       return ret_arr;
+       LDKChannelConfig val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = ChannelConfig_clone(&val_conv);
+       UserConfig_set_channel_options(&this_ptr_conv, val_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_set_channel_keys_id(uint32_t this_ptr, int8_tArray val) {
-       LDKStaticPaymentOutputDescriptor this_ptr_conv;
+jboolean  __attribute__((visibility("default"))) TS_UserConfig_get_accept_forwards_to_priv_channels(uint32_t this_ptr) {
+       LDKUserConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       StaticPaymentOutputDescriptor_set_channel_keys_id(&this_ptr_conv, val_ref);
+       jboolean ret_val = UserConfig_get_accept_forwards_to_priv_channels(&this_ptr_conv);
+       return ret_val;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_get_channel_value_satoshis(uint32_t this_ptr) {
-       LDKStaticPaymentOutputDescriptor this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UserConfig_set_accept_forwards_to_priv_channels(uint32_t this_ptr, jboolean val) {
+       LDKUserConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = StaticPaymentOutputDescriptor_get_channel_value_satoshis(&this_ptr_conv);
+       UserConfig_set_accept_forwards_to_priv_channels(&this_ptr_conv, val);
+}
+
+jboolean  __attribute__((visibility("default"))) TS_UserConfig_get_accept_inbound_channels(uint32_t this_ptr) {
+       LDKUserConfig this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       jboolean ret_val = UserConfig_get_accept_inbound_channels(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_set_channel_value_satoshis(uint32_t this_ptr, int64_t val) {
-       LDKStaticPaymentOutputDescriptor this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UserConfig_set_accept_inbound_channels(uint32_t this_ptr, jboolean val) {
+       LDKUserConfig this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       StaticPaymentOutputDescriptor_set_channel_value_satoshis(&this_ptr_conv, val);
+       UserConfig_set_accept_inbound_channels(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_new(uint32_t outpoint_arg, uint32_t output_arg, int8_tArray channel_keys_id_arg, int64_t channel_value_satoshis_arg) {
-       LDKOutPoint outpoint_arg_conv;
-       outpoint_arg_conv.inner = (void*)(outpoint_arg & (~1));
-       outpoint_arg_conv.is_owned = (outpoint_arg & 1) || (outpoint_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(outpoint_arg_conv);
-       outpoint_arg_conv = OutPoint_clone(&outpoint_arg_conv);
-       void* output_arg_ptr = (void*)(((uint64_t)output_arg) & ~1);
-       CHECK_ACCESS(output_arg_ptr);
-       LDKTxOut output_arg_conv = *(LDKTxOut*)(output_arg_ptr);
-       output_arg_conv = TxOut_clone((LDKTxOut*)(((uint64_t)output_arg) & ~1));
-       LDKThirtyTwoBytes channel_keys_id_arg_ref;
-       CHECK(*((uint32_t*)channel_keys_id_arg) == 32);
-       memcpy(channel_keys_id_arg_ref.data, (uint8_t*)(channel_keys_id_arg + 4), 32);
-       LDKStaticPaymentOutputDescriptor ret_var = StaticPaymentOutputDescriptor_new(outpoint_arg_conv, output_arg_conv, channel_keys_id_arg_ref, channel_value_satoshis_arg);
+uint32_t  __attribute__((visibility("default"))) TS_UserConfig_new(uint32_t own_channel_config_arg, uint32_t peer_channel_config_limits_arg, uint32_t channel_options_arg, jboolean accept_forwards_to_priv_channels_arg, jboolean accept_inbound_channels_arg) {
+       LDKChannelHandshakeConfig own_channel_config_arg_conv;
+       own_channel_config_arg_conv.inner = (void*)(own_channel_config_arg & (~1));
+       own_channel_config_arg_conv.is_owned = (own_channel_config_arg & 1) || (own_channel_config_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(own_channel_config_arg_conv);
+       own_channel_config_arg_conv = ChannelHandshakeConfig_clone(&own_channel_config_arg_conv);
+       LDKChannelHandshakeLimits peer_channel_config_limits_arg_conv;
+       peer_channel_config_limits_arg_conv.inner = (void*)(peer_channel_config_limits_arg & (~1));
+       peer_channel_config_limits_arg_conv.is_owned = (peer_channel_config_limits_arg & 1) || (peer_channel_config_limits_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(peer_channel_config_limits_arg_conv);
+       peer_channel_config_limits_arg_conv = ChannelHandshakeLimits_clone(&peer_channel_config_limits_arg_conv);
+       LDKChannelConfig channel_options_arg_conv;
+       channel_options_arg_conv.inner = (void*)(channel_options_arg & (~1));
+       channel_options_arg_conv.is_owned = (channel_options_arg & 1) || (channel_options_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_options_arg_conv);
+       channel_options_arg_conv = ChannelConfig_clone(&channel_options_arg_conv);
+       LDKUserConfig ret_var = UserConfig_new(own_channel_config_arg_conv, peer_channel_config_limits_arg_conv, channel_options_arg_conv, accept_forwards_to_priv_channels_arg, accept_inbound_channels_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -20157,8 +17788,8 @@ uint32_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescripto
        return ret_ref;
 }
 
-static inline uint64_t StaticPaymentOutputDescriptor_clone_ptr(LDKStaticPaymentOutputDescriptor *NONNULL_PTR arg) {
-       LDKStaticPaymentOutputDescriptor ret_var = StaticPaymentOutputDescriptor_clone(arg);
+static inline uint64_t UserConfig_clone_ptr(LDKUserConfig *NONNULL_PTR arg) {
+       LDKUserConfig ret_var = UserConfig_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -20169,21 +17800,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_clone_ptr(uint32_t arg) {
-       LDKStaticPaymentOutputDescriptor arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_UserConfig_clone_ptr(uint32_t arg) {
+       LDKUserConfig arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = StaticPaymentOutputDescriptor_clone_ptr(&arg_conv);
+       int64_t ret_val = UserConfig_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_clone(uint32_t orig) {
-       LDKStaticPaymentOutputDescriptor orig_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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKStaticPaymentOutputDescriptor ret_var = StaticPaymentOutputDescriptor_clone(&orig_conv);
+       LDKUserConfig ret_var = UserConfig_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -20195,299 +17826,401 @@ uint32_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescripto
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_write(uint32_t obj) {
-       LDKStaticPaymentOutputDescriptor obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = StaticPaymentOutputDescriptor_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_UserConfig_default() {
+       LDKUserConfig ret_var = UserConfig_default();
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ");
-       *ret_conv = StaticPaymentOutputDescriptor_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_BestBlock_free(uint32_t this_obj) {
+       LDKBestBlock this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       BestBlock_free(this_obj_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKSpendableOutputDescriptor this_ptr_conv = *(LDKSpendableOutputDescriptor*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       SpendableOutputDescriptor_free(this_ptr_conv);
+static inline uint64_t BestBlock_clone_ptr(LDKBestBlock *NONNULL_PTR arg) {
+       LDKBestBlock ret_var = BestBlock_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-static inline uint64_t SpendableOutputDescriptor_clone_ptr(LDKSpendableOutputDescriptor *NONNULL_PTR arg) {
-       LDKSpendableOutputDescriptor *ret_copy = MALLOC(sizeof(LDKSpendableOutputDescriptor), "LDKSpendableOutputDescriptor");
-       *ret_copy = SpendableOutputDescriptor_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_clone_ptr(uint32_t arg) {
-       LDKSpendableOutputDescriptor* arg_conv = (LDKSpendableOutputDescriptor*)arg;
-       int64_t ret_val = SpendableOutputDescriptor_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_BestBlock_clone_ptr(uint32_t arg) {
+       LDKBestBlock arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = BestBlock_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_clone(uint32_t orig) {
-       LDKSpendableOutputDescriptor* orig_conv = (LDKSpendableOutputDescriptor*)orig;
-       LDKSpendableOutputDescriptor *ret_copy = MALLOC(sizeof(LDKSpendableOutputDescriptor), "LDKSpendableOutputDescriptor");
-       *ret_copy = SpendableOutputDescriptor_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
+uint32_t  __attribute__((visibility("default"))) TS_BestBlock_clone(uint32_t orig) {
+       LDKBestBlock orig_conv;
+       orig_conv.inner = (void*)(orig & (~1));
+       orig_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKBestBlock ret_var = BestBlock_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_static_output(uint32_t outpoint, uint32_t output) {
-       LDKOutPoint outpoint_conv;
-       outpoint_conv.inner = (void*)(outpoint & (~1));
-       outpoint_conv.is_owned = (outpoint & 1) || (outpoint == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(outpoint_conv);
-       outpoint_conv = OutPoint_clone(&outpoint_conv);
-       void* output_ptr = (void*)(((uint64_t)output) & ~1);
-       CHECK_ACCESS(output_ptr);
-       LDKTxOut output_conv = *(LDKTxOut*)(output_ptr);
-       output_conv = TxOut_clone((LDKTxOut*)(((uint64_t)output) & ~1));
-       LDKSpendableOutputDescriptor *ret_copy = MALLOC(sizeof(LDKSpendableOutputDescriptor), "LDKSpendableOutputDescriptor");
-       *ret_copy = SpendableOutputDescriptor_static_output(outpoint_conv, output_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
+uint32_t  __attribute__((visibility("default"))) TS_BestBlock_from_genesis(uint32_t network) {
+       LDKNetwork network_conv = LDKNetwork_from_js(network);
+       LDKBestBlock ret_var = BestBlock_from_genesis(network_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_delayed_payment_output(uint32_t a) {
-       LDKDelayedPaymentOutputDescriptor a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = (a & 1) || (a == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       a_conv = DelayedPaymentOutputDescriptor_clone(&a_conv);
-       LDKSpendableOutputDescriptor *ret_copy = MALLOC(sizeof(LDKSpendableOutputDescriptor), "LDKSpendableOutputDescriptor");
-       *ret_copy = SpendableOutputDescriptor_delayed_payment_output(a_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
+uint32_t  __attribute__((visibility("default"))) TS_BestBlock_new(int8_tArray block_hash, int32_t height) {
+       LDKThirtyTwoBytes block_hash_ref;
+       CHECK(block_hash->arr_len == 32);
+       memcpy(block_hash_ref.data, block_hash->elems, 32);
+       LDKBestBlock ret_var = BestBlock_new(block_hash_ref, height);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_static_payment_output(uint32_t a) {
-       LDKStaticPaymentOutputDescriptor a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = (a & 1) || (a == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       a_conv = StaticPaymentOutputDescriptor_clone(&a_conv);
-       LDKSpendableOutputDescriptor *ret_copy = MALLOC(sizeof(LDKSpendableOutputDescriptor), "LDKSpendableOutputDescriptor");
-       *ret_copy = SpendableOutputDescriptor_static_payment_output(a_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_BestBlock_block_hash(uint32_t this_arg) {
+       LDKBestBlock this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, BestBlock_block_hash(&this_arg_conv).data, 32);
+       return ret_arr;
+}
+
+int32_t  __attribute__((visibility("default"))) TS_BestBlock_height(uint32_t this_arg) {
+       LDKBestBlock this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int32_t ret_val = BestBlock_height(&this_arg_conv);
+       return ret_val;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_AccessError_clone(uint32_t orig) {
+       LDKAccessError* orig_conv = (LDKAccessError*)(orig & ~1);
+       uint32_t ret_conv = LDKAccessError_to_js(AccessError_clone(orig_conv));
+       return ret_conv;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_write(uint32_t obj) {
-       LDKSpendableOutputDescriptor* obj_conv = (LDKSpendableOutputDescriptor*)obj;
-       LDKCVec_u8Z ret_var = SpendableOutputDescriptor_write(obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_AccessError_unknown_chain() {
+       uint32_t ret_conv = LDKAccessError_to_js(AccessError_unknown_chain());
+       return ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ), "LDKCResult_SpendableOutputDescriptorDecodeErrorZ");
-       *ret_conv = SpendableOutputDescriptor_read(ser_ref);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_AccessError_unknown_tx() {
+       uint32_t ret_conv = LDKAccessError_to_js(AccessError_unknown_tx());
+       return ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_BaseSign_free(uint32_t this_ptr) {
+void  __attribute__((visibility("default"))) TS_Access_free(uint32_t this_ptr) {
        if ((this_ptr & 1) != 0) return;
        void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
        CHECK_ACCESS(this_ptr_ptr);
-       LDKBaseSign this_ptr_conv = *(LDKBaseSign*)(this_ptr_ptr);
+       LDKAccess this_ptr_conv = *(LDKAccess*)(this_ptr_ptr);
        FREE((void*)this_ptr);
-       BaseSign_free(this_ptr_conv);
+       Access_free(this_ptr_conv);
 }
 
-static inline uint64_t Sign_clone_ptr(LDKSign *NONNULL_PTR arg) {
-       LDKSign* ret_ret = MALLOC(sizeof(LDKSign), "LDKSign");
-       *ret_ret = Sign_clone(arg);
-       return (uint64_t)ret_ret;
+void  __attribute__((visibility("default"))) TS_Listen_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKListen this_ptr_conv = *(LDKListen*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       Listen_free(this_ptr_conv);
 }
-int64_t  __attribute__((visibility("default"))) TS_Sign_clone_ptr(uint32_t arg) {
-       void* arg_ptr = (void*)(((uint64_t)arg) & ~1);
-       if (!(arg & 1)) { CHECK_ACCESS(arg_ptr); }
-       LDKSign* arg_conv = (LDKSign*)arg_ptr;
-       int64_t ret_val = Sign_clone_ptr(arg_conv);
-       return ret_val;
+
+void  __attribute__((visibility("default"))) TS_Confirm_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKConfirm this_ptr_conv = *(LDKConfirm*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       Confirm_free(this_ptr_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Sign_clone(uint32_t orig) {
-       void* orig_ptr = (void*)(((uint64_t)orig) & ~1);
-       if (!(orig & 1)) { CHECK_ACCESS(orig_ptr); }
-       LDKSign* orig_conv = (LDKSign*)orig_ptr;
-       LDKSign* ret_ret = MALLOC(sizeof(LDKSign), "LDKSign");
-       *ret_ret = Sign_clone(orig_conv);
-       return (uint64_t)ret_ret;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitorUpdateErr_clone(uint32_t orig) {
+       LDKChannelMonitorUpdateErr* orig_conv = (LDKChannelMonitorUpdateErr*)(orig & ~1);
+       uint32_t ret_conv = LDKChannelMonitorUpdateErr_to_js(ChannelMonitorUpdateErr_clone(orig_conv));
+       return ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_Sign_free(uint32_t this_ptr) {
+uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitorUpdateErr_temporary_failure() {
+       uint32_t ret_conv = LDKChannelMonitorUpdateErr_to_js(ChannelMonitorUpdateErr_temporary_failure());
+       return ret_conv;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitorUpdateErr_permanent_failure() {
+       uint32_t ret_conv = LDKChannelMonitorUpdateErr_to_js(ChannelMonitorUpdateErr_permanent_failure());
+       return ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_Watch_free(uint32_t this_ptr) {
        if ((this_ptr & 1) != 0) return;
        void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
        CHECK_ACCESS(this_ptr_ptr);
-       LDKSign this_ptr_conv = *(LDKSign*)(this_ptr_ptr);
+       LDKWatch this_ptr_conv = *(LDKWatch*)(this_ptr_ptr);
        FREE((void*)this_ptr);
-       Sign_free(this_ptr_conv);
+       Watch_free(this_ptr_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_KeysInterface_free(uint32_t this_ptr) {
+void  __attribute__((visibility("default"))) TS_Filter_free(uint32_t this_ptr) {
        if ((this_ptr & 1) != 0) return;
        void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
        CHECK_ACCESS(this_ptr_ptr);
-       LDKKeysInterface this_ptr_conv = *(LDKKeysInterface*)(this_ptr_ptr);
+       LDKFilter this_ptr_conv = *(LDKFilter*)(this_ptr_ptr);
        FREE((void*)this_ptr);
-       KeysInterface_free(this_ptr_conv);
+       Filter_free(this_ptr_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_InMemorySigner_free(uint32_t this_obj) {
-       LDKInMemorySigner this_obj_conv;
+void  __attribute__((visibility("default"))) TS_WatchedOutput_free(uint32_t this_obj) {
+       LDKWatchedOutput this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       InMemorySigner_free(this_obj_conv);
+       WatchedOutput_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_InMemorySigner_get_funding_key(uint32_t this_ptr) {
-       LDKInMemorySigner this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_WatchedOutput_get_block_hash(uint32_t this_ptr) {
+       LDKWatchedOutput this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *InMemorySigner_get_funding_key(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, WatchedOutput_get_block_hash(&this_ptr_conv).data, 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_InMemorySigner_set_funding_key(uint32_t this_ptr, int8_tArray val) {
-       LDKInMemorySigner this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_WatchedOutput_set_block_hash(uint32_t this_ptr, int8_tArray val) {
+       LDKWatchedOutput this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSecretKey val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.bytes, (uint8_t*)(val + 4), 32);
-       InMemorySigner_set_funding_key(&this_ptr_conv, val_ref);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       WatchedOutput_set_block_hash(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_InMemorySigner_get_revocation_base_key(uint32_t this_ptr) {
-       LDKInMemorySigner this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_WatchedOutput_get_outpoint(uint32_t this_ptr) {
+       LDKWatchedOutput this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *InMemorySigner_get_revocation_base_key(&this_ptr_conv), 32);
-       return ret_arr;
+       LDKOutPoint ret_var = WatchedOutput_get_outpoint(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_InMemorySigner_set_revocation_base_key(uint32_t this_ptr, int8_tArray val) {
-       LDKInMemorySigner this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_WatchedOutput_set_outpoint(uint32_t this_ptr, uint32_t val) {
+       LDKWatchedOutput this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSecretKey val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.bytes, (uint8_t*)(val + 4), 32);
-       InMemorySigner_set_revocation_base_key(&this_ptr_conv, val_ref);
+       LDKOutPoint val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = OutPoint_clone(&val_conv);
+       WatchedOutput_set_outpoint(&this_ptr_conv, val_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_InMemorySigner_get_payment_key(uint32_t this_ptr) {
-       LDKInMemorySigner this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_WatchedOutput_get_script_pubkey(uint32_t this_ptr) {
+       LDKWatchedOutput this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *InMemorySigner_get_payment_key(&this_ptr_conv), 32);
+       LDKu8slice ret_var = WatchedOutput_get_script_pubkey(&this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_InMemorySigner_set_payment_key(uint32_t this_ptr, int8_tArray val) {
-       LDKInMemorySigner this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_WatchedOutput_set_script_pubkey(uint32_t this_ptr, int8_tArray val) {
+       LDKWatchedOutput this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSecretKey val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.bytes, (uint8_t*)(val + 4), 32);
-       InMemorySigner_set_payment_key(&this_ptr_conv, val_ref);
+       LDKCVec_u8Z val_ref;
+       val_ref.datalen = val->arr_len;
+       val_ref.data = MALLOC(val_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(val_ref.data, val->elems, val_ref.datalen);
+       WatchedOutput_set_script_pubkey(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_InMemorySigner_get_delayed_payment_base_key(uint32_t this_ptr) {
-       LDKInMemorySigner this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *InMemorySigner_get_delayed_payment_base_key(&this_ptr_conv), 32);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_WatchedOutput_new(int8_tArray block_hash_arg, uint32_t outpoint_arg, int8_tArray script_pubkey_arg) {
+       LDKThirtyTwoBytes block_hash_arg_ref;
+       CHECK(block_hash_arg->arr_len == 32);
+       memcpy(block_hash_arg_ref.data, block_hash_arg->elems, 32);
+       LDKOutPoint outpoint_arg_conv;
+       outpoint_arg_conv.inner = (void*)(outpoint_arg & (~1));
+       outpoint_arg_conv.is_owned = (outpoint_arg & 1) || (outpoint_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(outpoint_arg_conv);
+       outpoint_arg_conv = OutPoint_clone(&outpoint_arg_conv);
+       LDKCVec_u8Z script_pubkey_arg_ref;
+       script_pubkey_arg_ref.datalen = script_pubkey_arg->arr_len;
+       script_pubkey_arg_ref.data = MALLOC(script_pubkey_arg_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(script_pubkey_arg_ref.data, script_pubkey_arg->elems, script_pubkey_arg_ref.datalen);
+       LDKWatchedOutput ret_var = WatchedOutput_new(block_hash_arg_ref, outpoint_arg_conv, script_pubkey_arg_ref);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_InMemorySigner_set_delayed_payment_base_key(uint32_t this_ptr, int8_tArray val) {
-       LDKInMemorySigner this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSecretKey val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.bytes, (uint8_t*)(val + 4), 32);
-       InMemorySigner_set_delayed_payment_base_key(&this_ptr_conv, val_ref);
+static inline uint64_t WatchedOutput_clone_ptr(LDKWatchedOutput *NONNULL_PTR arg) {
+       LDKWatchedOutput ret_var = WatchedOutput_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_WatchedOutput_clone_ptr(uint32_t arg) {
+       LDKWatchedOutput arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = WatchedOutput_clone_ptr(&arg_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_InMemorySigner_get_htlc_base_key(uint32_t this_ptr) {
-       LDKInMemorySigner this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *InMemorySigner_get_htlc_base_key(&this_ptr_conv), 32);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_WatchedOutput_clone(uint32_t orig) {
+       LDKWatchedOutput orig_conv;
+       orig_conv.inner = (void*)(orig & (~1));
+       orig_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKWatchedOutput ret_var = WatchedOutput_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+int64_t  __attribute__((visibility("default"))) TS_WatchedOutput_hash(uint32_t o) {
+       LDKWatchedOutput o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       int64_t ret_val = WatchedOutput_hash(&o_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_BroadcasterInterface_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKBroadcasterInterface this_ptr_conv = *(LDKBroadcasterInterface*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       BroadcasterInterface_free(this_ptr_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ConfirmationTarget_clone(uint32_t orig) {
+       LDKConfirmationTarget* orig_conv = (LDKConfirmationTarget*)(orig & ~1);
+       uint32_t ret_conv = LDKConfirmationTarget_to_js(ConfirmationTarget_clone(orig_conv));
+       return ret_conv;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ConfirmationTarget_background() {
+       uint32_t ret_conv = LDKConfirmationTarget_to_js(ConfirmationTarget_background());
+       return ret_conv;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ConfirmationTarget_normal() {
+       uint32_t ret_conv = LDKConfirmationTarget_to_js(ConfirmationTarget_normal());
+       return ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_InMemorySigner_set_htlc_base_key(uint32_t this_ptr, int8_tArray val) {
-       LDKInMemorySigner this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSecretKey val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.bytes, (uint8_t*)(val + 4), 32);
-       InMemorySigner_set_htlc_base_key(&this_ptr_conv, val_ref);
+uint32_t  __attribute__((visibility("default"))) TS_ConfirmationTarget_high_priority() {
+       uint32_t ret_conv = LDKConfirmationTarget_to_js(ConfirmationTarget_high_priority());
+       return ret_conv;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_InMemorySigner_get_commitment_seed(uint32_t this_ptr) {
-       LDKInMemorySigner this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *InMemorySigner_get_commitment_seed(&this_ptr_conv), 32);
-       return ret_arr;
+jboolean  __attribute__((visibility("default"))) TS_ConfirmationTarget_eq(uint32_t a, uint32_t b) {
+       LDKConfirmationTarget* a_conv = (LDKConfirmationTarget*)(a & ~1);
+       LDKConfirmationTarget* b_conv = (LDKConfirmationTarget*)(b & ~1);
+       jboolean ret_val = ConfirmationTarget_eq(a_conv, b_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_InMemorySigner_set_commitment_seed(uint32_t this_ptr, int8_tArray val) {
-       LDKInMemorySigner this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       InMemorySigner_set_commitment_seed(&this_ptr_conv, val_ref);
+void  __attribute__((visibility("default"))) TS_FeeEstimator_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKFeeEstimator this_ptr_conv = *(LDKFeeEstimator*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       FeeEstimator_free(this_ptr_conv);
 }
 
-static inline uint64_t InMemorySigner_clone_ptr(LDKInMemorySigner *NONNULL_PTR arg) {
-       LDKInMemorySigner ret_var = InMemorySigner_clone(arg);
+void  __attribute__((visibility("default"))) TS_MonitorUpdateId_free(uint32_t this_obj) {
+       LDKMonitorUpdateId this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       MonitorUpdateId_free(this_obj_conv);
+}
+
+static inline uint64_t MonitorUpdateId_clone_ptr(LDKMonitorUpdateId *NONNULL_PTR arg) {
+       LDKMonitorUpdateId ret_var = MonitorUpdateId_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -20498,21 +18231,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_InMemorySigner_clone_ptr(uint32_t arg) {
-       LDKInMemorySigner arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_MonitorUpdateId_clone_ptr(uint32_t arg) {
+       LDKMonitorUpdateId arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = InMemorySigner_clone_ptr(&arg_conv);
+       int64_t ret_val = MonitorUpdateId_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_clone(uint32_t orig) {
-       LDKInMemorySigner orig_conv;
+uint32_t  __attribute__((visibility("default"))) TS_MonitorUpdateId_clone(uint32_t orig) {
+       LDKMonitorUpdateId orig_conv;
        orig_conv.inner = (void*)(orig & (~1));
        orig_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKInMemorySigner ret_var = InMemorySigner_clone(&orig_conv);
+       LDKMonitorUpdateId ret_var = MonitorUpdateId_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -20524,46 +18257,74 @@ uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_clone(uint32_
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_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, int8_tArray channel_keys_id) {
-       LDKSecretKey funding_key_ref;
-       CHECK(*((uint32_t*)funding_key) == 32);
-       memcpy(funding_key_ref.bytes, (uint8_t*)(funding_key + 4), 32);
-       LDKSecretKey revocation_base_key_ref;
-       CHECK(*((uint32_t*)revocation_base_key) == 32);
-       memcpy(revocation_base_key_ref.bytes, (uint8_t*)(revocation_base_key + 4), 32);
-       LDKSecretKey payment_key_ref;
-       CHECK(*((uint32_t*)payment_key) == 32);
-       memcpy(payment_key_ref.bytes, (uint8_t*)(payment_key + 4), 32);
-       LDKSecretKey delayed_payment_base_key_ref;
-       CHECK(*((uint32_t*)delayed_payment_base_key) == 32);
-       memcpy(delayed_payment_base_key_ref.bytes, (uint8_t*)(delayed_payment_base_key + 4), 32);
-       LDKSecretKey htlc_base_key_ref;
-       CHECK(*((uint32_t*)htlc_base_key) == 32);
-       memcpy(htlc_base_key_ref.bytes, (uint8_t*)(htlc_base_key + 4), 32);
-       LDKThirtyTwoBytes commitment_seed_ref;
-       CHECK(*((uint32_t*)commitment_seed) == 32);
-       memcpy(commitment_seed_ref.data, (uint8_t*)(commitment_seed + 4), 32);
-       LDKThirtyTwoBytes channel_keys_id_ref;
-       CHECK(*((uint32_t*)channel_keys_id) == 32);
-       memcpy(channel_keys_id_ref.data, (uint8_t*)(channel_keys_id + 4), 32);
-       LDKInMemorySigner ret_var = InMemorySigner_new(funding_key_ref, revocation_base_key_ref, payment_key_ref, delayed_payment_base_key_ref, htlc_base_key_ref, commitment_seed_ref, channel_value_satoshis, channel_keys_id_ref);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int64_t  __attribute__((visibility("default"))) TS_MonitorUpdateId_hash(uint32_t o) {
+       LDKMonitorUpdateId o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       int64_t ret_val = MonitorUpdateId_hash(&o_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_counterparty_pubkeys(uint32_t this_arg) {
-       LDKInMemorySigner this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKChannelPublicKeys ret_var = InMemorySigner_counterparty_pubkeys(&this_arg_conv);
+jboolean  __attribute__((visibility("default"))) TS_MonitorUpdateId_eq(uint32_t a, uint32_t b) {
+       LDKMonitorUpdateId a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       LDKMonitorUpdateId b_conv;
+       b_conv.inner = (void*)(b & (~1));
+       b_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
+       jboolean ret_val = MonitorUpdateId_eq(&a_conv, &b_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_Persist_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKPersist this_ptr_conv = *(LDKPersist*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       Persist_free(this_ptr_conv);
+}
+
+void  __attribute__((visibility("default"))) TS_LockedChannelMonitor_free(uint32_t this_obj) {
+       LDKLockedChannelMonitor this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       LockedChannelMonitor_free(this_obj_conv);
+}
+
+void  __attribute__((visibility("default"))) TS_ChainMonitor_free(uint32_t this_obj) {
+       LDKChainMonitor this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       ChainMonitor_free(this_obj_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ChainMonitor_new(uint32_t chain_source, uint32_t broadcaster, uint32_t logger, uint32_t feeest, uint32_t persister) {
+       void* chain_source_ptr = (void*)(((uint64_t)chain_source) & ~1);
+       CHECK_ACCESS(chain_source_ptr);
+       LDKCOption_FilterZ chain_source_conv = *(LDKCOption_FilterZ*)(chain_source_ptr);
+       // Warning: we may need a move here but no clone is available for LDKCOption_FilterZ
+       if (chain_source_conv.tag == LDKCOption_FilterZ_Some) {
+               // Manually implement clone for Java trait instances
+       }
+       void* broadcaster_ptr = (void*)(((uint64_t)broadcaster) & ~1);
+       CHECK_ACCESS(broadcaster_ptr);
+       LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(broadcaster_ptr);
+       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
+       CHECK_ACCESS(logger_ptr);
+       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
+       void* feeest_ptr = (void*)(((uint64_t)feeest) & ~1);
+       CHECK_ACCESS(feeest_ptr);
+       LDKFeeEstimator feeest_conv = *(LDKFeeEstimator*)(feeest_ptr);
+       void* persister_ptr = (void*)(((uint64_t)persister) & ~1);
+       CHECK_ACCESS(persister_ptr);
+       LDKPersist persister_conv = *(LDKPersist*)(persister_ptr);
+       LDKChainMonitor ret_var = ChainMonitor_new(chain_source_conv, broadcaster_conv, logger_conv, feeest_conv, persister_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -20575,190 +18336,195 @@ uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_counterparty_
        return ret_ref;
 }
 
-int16_t  __attribute__((visibility("default"))) TS_InMemorySigner_counterparty_selected_contest_delay(uint32_t this_arg) {
-       LDKInMemorySigner this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int16_t ret_val = InMemorySigner_counterparty_selected_contest_delay(&this_arg_conv);
-       return ret_val;
-}
-
-int16_t  __attribute__((visibility("default"))) TS_InMemorySigner_holder_selected_contest_delay(uint32_t this_arg) {
-       LDKInMemorySigner this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int16_t ret_val = InMemorySigner_holder_selected_contest_delay(&this_arg_conv);
-       return ret_val;
-}
-
-jboolean  __attribute__((visibility("default"))) TS_InMemorySigner_is_outbound(uint32_t this_arg) {
-       LDKInMemorySigner this_arg_conv;
+uint32_tArray  __attribute__((visibility("default"))) TS_ChainMonitor_get_claimable_balances(uint32_t this_arg, uint32_tArray ignored_channels) {
+       LDKChainMonitor this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       jboolean ret_val = InMemorySigner_is_outbound(&this_arg_conv);
-       return ret_val;
+       LDKCVec_ChannelDetailsZ ignored_channels_constr;
+       ignored_channels_constr.datalen = ignored_channels->arr_len;
+       if (ignored_channels_constr.datalen > 0)
+               ignored_channels_constr.data = MALLOC(ignored_channels_constr.datalen * sizeof(LDKChannelDetails), "LDKCVec_ChannelDetailsZ Elements");
+       else
+               ignored_channels_constr.data = NULL;
+       uint32_t* ignored_channels_vals = ignored_channels->elems;
+       for (size_t q = 0; q < ignored_channels_constr.datalen; q++) {
+               uint32_t ignored_channels_conv_16 = ignored_channels_vals[q];
+               LDKChannelDetails ignored_channels_conv_16_conv;
+               ignored_channels_conv_16_conv.inner = (void*)(ignored_channels_conv_16 & (~1));
+               ignored_channels_conv_16_conv.is_owned = (ignored_channels_conv_16 & 1) || (ignored_channels_conv_16 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(ignored_channels_conv_16_conv);
+               ignored_channels_conv_16_conv = ChannelDetails_clone(&ignored_channels_conv_16_conv);
+               ignored_channels_constr.data[q] = ignored_channels_conv_16_conv;
+       }
+       LDKCVec_BalanceZ ret_var = ChainMonitor_get_claimable_balances(&this_arg_conv, ignored_channels_constr);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t j = 0; j < ret_var.datalen; j++) {
+               LDKBalance *ret_conv_9_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
+               *ret_conv_9_copy = ret_var.data[j];
+               uint64_t ret_conv_9_ref = (uint64_t)ret_conv_9_copy;
+               ret_arr_ptr[j] = ret_conv_9_ref;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_funding_outpoint(uint32_t this_arg) {
-       LDKInMemorySigner this_arg_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChainMonitor_get_monitor(uint32_t this_arg, uint32_t funding_txo) {
+       LDKChainMonitor this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKOutPoint ret_var = InMemorySigner_funding_outpoint(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       LDKOutPoint funding_txo_conv;
+       funding_txo_conv.inner = (void*)(funding_txo & (~1));
+       funding_txo_conv.is_owned = (funding_txo & 1) || (funding_txo == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_conv);
+       funding_txo_conv = OutPoint_clone(&funding_txo_conv);
+       LDKCResult_LockedChannelMonitorNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_LockedChannelMonitorNoneZ), "LDKCResult_LockedChannelMonitorNoneZ");
+       *ret_conv = ChainMonitor_get_monitor(&this_arg_conv, funding_txo_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_get_channel_parameters(uint32_t this_arg) {
-       LDKInMemorySigner this_arg_conv;
+uint32_tArray  __attribute__((visibility("default"))) TS_ChainMonitor_list_monitors(uint32_t this_arg) {
+       LDKChainMonitor this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKChannelTransactionParameters ret_var = InMemorySigner_get_channel_parameters(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
+       LDKCVec_OutPointZ ret_var = ChainMonitor_list_monitors(&this_arg_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t k = 0; k < ret_var.datalen; k++) {
+               LDKOutPoint ret_conv_10_var = ret_var.data[k];
+               uint64_t ret_conv_10_ref = 0;
+               CHECK((((uint64_t)ret_conv_10_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_conv_10_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_10_var);
+               ret_conv_10_ref = (uint64_t)ret_conv_10_var.inner;
+               if (ret_conv_10_var.is_owned) {
+                       ret_conv_10_ref |= 1;
+               }
+               ret_arr_ptr[k] = ret_conv_10_ref;
        }
-       return ret_ref;
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_InMemorySigner_opt_anchors(uint32_t this_arg) {
-       LDKInMemorySigner this_arg_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChainMonitor_channel_monitor_updated(uint32_t this_arg, uint32_t funding_txo, uint32_t completed_update_id) {
+       LDKChainMonitor this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       jboolean ret_val = InMemorySigner_opt_anchors(&this_arg_conv);
-       return ret_val;
+       LDKOutPoint funding_txo_conv;
+       funding_txo_conv.inner = (void*)(funding_txo & (~1));
+       funding_txo_conv.is_owned = (funding_txo & 1) || (funding_txo == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_conv);
+       funding_txo_conv = OutPoint_clone(&funding_txo_conv);
+       LDKMonitorUpdateId completed_update_id_conv;
+       completed_update_id_conv.inner = (void*)(completed_update_id & (~1));
+       completed_update_id_conv.is_owned = (completed_update_id & 1) || (completed_update_id == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(completed_update_id_conv);
+       completed_update_id_conv = MonitorUpdateId_clone(&completed_update_id_conv);
+       LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
+       *ret_conv = ChainMonitor_channel_monitor_updated(&this_arg_conv, funding_txo_conv, completed_update_id_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_sign_counterparty_payment_input(uint32_t this_arg, int8_tArray spend_tx, int64_t input_idx, uint32_t descriptor) {
-       LDKInMemorySigner this_arg_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChainMonitor_as_Listen(uint32_t this_arg) {
+       LDKChainMonitor this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKTransaction spend_tx_ref;
-       spend_tx_ref.datalen = *((uint32_t*)spend_tx);
-       spend_tx_ref.data = MALLOC(spend_tx_ref.datalen, "LDKTransaction Bytes");
-       memcpy(spend_tx_ref.data, (uint8_t*)(spend_tx + 4), spend_tx_ref.datalen);
-       spend_tx_ref.data_is_owned = true;
-       LDKStaticPaymentOutputDescriptor descriptor_conv;
-       descriptor_conv.inner = (void*)(descriptor & (~1));
-       descriptor_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(descriptor_conv);
-       LDKCResult_CVec_CVec_u8ZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ), "LDKCResult_CVec_CVec_u8ZZNoneZ");
-       *ret_conv = InMemorySigner_sign_counterparty_payment_input(&this_arg_conv, spend_tx_ref, input_idx, &descriptor_conv);
-       return (uint64_t)ret_conv;
+       LDKListen* ret_ret = MALLOC(sizeof(LDKListen), "LDKListen");
+       *ret_ret = ChainMonitor_as_Listen(&this_arg_conv);
+       return (uint64_t)ret_ret;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_sign_dynamic_p2wsh_input(uint32_t this_arg, int8_tArray spend_tx, int64_t input_idx, uint32_t descriptor) {
-       LDKInMemorySigner this_arg_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChainMonitor_as_Confirm(uint32_t this_arg) {
+       LDKChainMonitor this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKTransaction spend_tx_ref;
-       spend_tx_ref.datalen = *((uint32_t*)spend_tx);
-       spend_tx_ref.data = MALLOC(spend_tx_ref.datalen, "LDKTransaction Bytes");
-       memcpy(spend_tx_ref.data, (uint8_t*)(spend_tx + 4), spend_tx_ref.datalen);
-       spend_tx_ref.data_is_owned = true;
-       LDKDelayedPaymentOutputDescriptor descriptor_conv;
-       descriptor_conv.inner = (void*)(descriptor & (~1));
-       descriptor_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(descriptor_conv);
-       LDKCResult_CVec_CVec_u8ZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ), "LDKCResult_CVec_CVec_u8ZZNoneZ");
-       *ret_conv = InMemorySigner_sign_dynamic_p2wsh_input(&this_arg_conv, spend_tx_ref, input_idx, &descriptor_conv);
-       return (uint64_t)ret_conv;
+       LDKConfirm* ret_ret = MALLOC(sizeof(LDKConfirm), "LDKConfirm");
+       *ret_ret = ChainMonitor_as_Confirm(&this_arg_conv);
+       return (uint64_t)ret_ret;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_as_BaseSign(uint32_t this_arg) {
-       LDKInMemorySigner this_arg_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChainMonitor_as_Watch(uint32_t this_arg) {
+       LDKChainMonitor this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKBaseSign* ret_ret = MALLOC(sizeof(LDKBaseSign), "LDKBaseSign");
-       *ret_ret = InMemorySigner_as_BaseSign(&this_arg_conv);
+       LDKWatch* ret_ret = MALLOC(sizeof(LDKWatch), "LDKWatch");
+       *ret_ret = ChainMonitor_as_Watch(&this_arg_conv);
        return (uint64_t)ret_ret;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_as_Sign(uint32_t this_arg) {
-       LDKInMemorySigner this_arg_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChainMonitor_as_EventsProvider(uint32_t this_arg) {
+       LDKChainMonitor this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKSign* ret_ret = MALLOC(sizeof(LDKSign), "LDKSign");
-       *ret_ret = InMemorySigner_as_Sign(&this_arg_conv);
+       LDKEventsProvider* ret_ret = MALLOC(sizeof(LDKEventsProvider), "LDKEventsProvider");
+       *ret_ret = ChainMonitor_as_EventsProvider(&this_arg_conv);
        return (uint64_t)ret_ret;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_InMemorySigner_write(uint32_t obj) {
-       LDKInMemorySigner obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = InMemorySigner_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_ChannelMonitorUpdate_free(uint32_t this_obj) {
+       LDKChannelMonitorUpdate this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       ChannelMonitorUpdate_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_InMemorySignerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InMemorySignerDecodeErrorZ), "LDKCResult_InMemorySignerDecodeErrorZ");
-       *ret_conv = InMemorySigner_read(ser_ref);
-       return (uint64_t)ret_conv;
+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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = ChannelMonitorUpdate_get_update_id(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_KeysManager_free(uint32_t this_obj) {
-       LDKKeysManager this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       KeysManager_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_ChannelMonitorUpdate_set_update_id(uint32_t this_ptr, int64_t val) {
+       LDKChannelMonitorUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ChannelMonitorUpdate_set_update_id(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_KeysManager_new(int8_tArray seed, int64_t starting_time_secs, int32_t starting_time_nanos) {
-       unsigned char seed_arr[32];
-       CHECK(*((uint32_t*)seed) == 32);
-       memcpy(seed_arr, (uint8_t*)(seed + 4), 32);
-       unsigned char (*seed_ref)[32] = &seed_arr;
-       LDKKeysManager ret_var = KeysManager_new(seed_ref, starting_time_secs, starting_time_nanos);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
+static inline uint64_t ChannelMonitorUpdate_clone_ptr(LDKChannelMonitorUpdate *NONNULL_PTR arg) {
+       LDKChannelMonitorUpdate ret_var = ChannelMonitorUpdate_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
        return ret_ref;
 }
+int64_t  __attribute__((visibility("default"))) TS_ChannelMonitorUpdate_clone_ptr(uint32_t arg) {
+       LDKChannelMonitorUpdate arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ChannelMonitorUpdate_clone_ptr(&arg_conv);
+       return ret_val;
+}
 
-uint32_t  __attribute__((visibility("default"))) TS_KeysManager_derive_channel_keys(uint32_t this_arg, int64_t channel_value_satoshis, int8_tArray params) {
-       LDKKeysManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       unsigned char params_arr[32];
-       CHECK(*((uint32_t*)params) == 32);
-       memcpy(params_arr, (uint8_t*)(params + 4), 32);
-       unsigned char (*params_ref)[32] = &params_arr;
-       LDKInMemorySigner ret_var = KeysManager_derive_channel_keys(&this_arg_conv, channel_value_satoshis, params_ref);
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKChannelMonitorUpdate ret_var = ChannelMonitorUpdate_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -20770,145 +18536,132 @@ uint32_t  __attribute__((visibility("default"))) TS_KeysManager_derive_channel_k
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_KeysManager_spend_spendable_outputs(uint32_t this_arg, uint32_tArray descriptors, uint32_tArray outputs, int8_tArray change_destination_script, int32_t feerate_sat_per_1000_weight) {
-       LDKKeysManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCVec_SpendableOutputDescriptorZ descriptors_constr;
-       descriptors_constr.datalen = *((uint32_t*)descriptors);
-       if (descriptors_constr.datalen > 0)
-               descriptors_constr.data = MALLOC(descriptors_constr.datalen * sizeof(LDKSpendableOutputDescriptor), "LDKCVec_SpendableOutputDescriptorZ Elements");
-       else
-               descriptors_constr.data = NULL;
-       uint32_t* descriptors_vals = (uint32_t*)(descriptors + 4);
-       for (size_t b = 0; b < descriptors_constr.datalen; b++) {
-               uint32_t descriptors_conv_27 = descriptors_vals[b];
-               void* descriptors_conv_27_ptr = (void*)(((uint64_t)descriptors_conv_27) & ~1);
-               CHECK_ACCESS(descriptors_conv_27_ptr);
-               LDKSpendableOutputDescriptor descriptors_conv_27_conv = *(LDKSpendableOutputDescriptor*)(descriptors_conv_27_ptr);
-               descriptors_conv_27_conv = SpendableOutputDescriptor_clone((LDKSpendableOutputDescriptor*)(((uint64_t)descriptors_conv_27) & ~1));
-               descriptors_constr.data[b] = descriptors_conv_27_conv;
-       }
-       LDKCVec_TxOutZ outputs_constr;
-       outputs_constr.datalen = *((uint32_t*)outputs);
-       if (outputs_constr.datalen > 0)
-               outputs_constr.data = MALLOC(outputs_constr.datalen * sizeof(LDKTxOut), "LDKCVec_TxOutZ Elements");
-       else
-               outputs_constr.data = NULL;
-       uint32_t* outputs_vals = (uint32_t*)(outputs + 4);
-       for (size_t h = 0; h < outputs_constr.datalen; h++) {
-               uint32_t outputs_conv_7 = outputs_vals[h];
-               void* outputs_conv_7_ptr = (void*)(((uint64_t)outputs_conv_7) & ~1);
-               CHECK_ACCESS(outputs_conv_7_ptr);
-               LDKTxOut outputs_conv_7_conv = *(LDKTxOut*)(outputs_conv_7_ptr);
-               outputs_conv_7_conv = TxOut_clone((LDKTxOut*)(((uint64_t)outputs_conv_7) & ~1));
-               outputs_constr.data[h] = outputs_conv_7_conv;
-       }
-       LDKCVec_u8Z change_destination_script_ref;
-       change_destination_script_ref.datalen = *((uint32_t*)change_destination_script);
-       change_destination_script_ref.data = MALLOC(change_destination_script_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(change_destination_script_ref.data, (uint8_t*)(change_destination_script + 4), change_destination_script_ref.datalen);
-       LDKCResult_TransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TransactionNoneZ), "LDKCResult_TransactionNoneZ");
-       *ret_conv = KeysManager_spend_spendable_outputs(&this_arg_conv, descriptors_constr, outputs_constr, change_destination_script_ref, feerate_sat_per_1000_weight);
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelMonitorUpdate_write(uint32_t obj) {
+       LDKChannelMonitorUpdate obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ChannelMonitorUpdate_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitorUpdate_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ChannelMonitorUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ), "LDKCResult_ChannelMonitorUpdateDecodeErrorZ");
+       *ret_conv = ChannelMonitorUpdate_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_KeysManager_as_KeysInterface(uint32_t this_arg) {
-       LDKKeysManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKKeysInterface* ret_ret = MALLOC(sizeof(LDKKeysInterface), "LDKKeysInterface");
-       *ret_ret = KeysManager_as_KeysInterface(&this_arg_conv);
-       return (uint64_t)ret_ret;
+void  __attribute__((visibility("default"))) TS_MonitorEvent_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKMonitorEvent this_ptr_conv = *(LDKMonitorEvent*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       MonitorEvent_free(this_ptr_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelManager_free(uint32_t this_obj) {
-       LDKChannelManager this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelManager_free(this_obj_conv);
+static inline uint64_t MonitorEvent_clone_ptr(LDKMonitorEvent *NONNULL_PTR arg) {
+       LDKMonitorEvent *ret_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
+       *ret_copy = MonitorEvent_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_MonitorEvent_clone_ptr(uint32_t arg) {
+       LDKMonitorEvent* arg_conv = (LDKMonitorEvent*)arg;
+       int64_t ret_val = MonitorEvent_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChainParameters_free(uint32_t this_obj) {
-       LDKChainParameters this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChainParameters_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_MonitorEvent_clone(uint32_t orig) {
+       LDKMonitorEvent* orig_conv = (LDKMonitorEvent*)orig;
+       LDKMonitorEvent *ret_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
+       *ret_copy = MonitorEvent_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_MonitorEvent_htlcevent(uint32_t a) {
+       LDKHTLCUpdate a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = (a & 1) || (a == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       a_conv = HTLCUpdate_clone(&a_conv);
+       LDKMonitorEvent *ret_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
+       *ret_copy = MonitorEvent_htlcevent(a_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_MonitorEvent_commitment_tx_confirmed(uint32_t a) {
+       LDKOutPoint a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = (a & 1) || (a == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       a_conv = OutPoint_clone(&a_conv);
+       LDKMonitorEvent *ret_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
+       *ret_copy = MonitorEvent_commitment_tx_confirmed(a_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChainParameters_get_network(uint32_t this_ptr) {
-       LDKChainParameters this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       uint32_t ret_conv = LDKNetwork_to_js(ChainParameters_get_network(&this_ptr_conv));
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_MonitorEvent_update_completed(uint32_t funding_txo, int64_t monitor_update_id) {
+       LDKOutPoint funding_txo_conv;
+       funding_txo_conv.inner = (void*)(funding_txo & (~1));
+       funding_txo_conv.is_owned = (funding_txo & 1) || (funding_txo == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_conv);
+       funding_txo_conv = OutPoint_clone(&funding_txo_conv);
+       LDKMonitorEvent *ret_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
+       *ret_copy = MonitorEvent_update_completed(funding_txo_conv, monitor_update_id);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChainParameters_set_network(uint32_t this_ptr, uint32_t val) {
-       LDKChainParameters this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNetwork val_conv = LDKNetwork_from_js(val);
-       ChainParameters_set_network(&this_ptr_conv, val_conv);
+uint32_t  __attribute__((visibility("default"))) TS_MonitorEvent_update_failed(uint32_t a) {
+       LDKOutPoint a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = (a & 1) || (a == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       a_conv = OutPoint_clone(&a_conv);
+       LDKMonitorEvent *ret_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
+       *ret_copy = MonitorEvent_update_failed(a_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChainParameters_get_best_block(uint32_t this_ptr) {
-       LDKChainParameters this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKBestBlock ret_var = ChainParameters_get_best_block(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_MonitorEvent_write(uint32_t obj) {
+       LDKMonitorEvent* obj_conv = (LDKMonitorEvent*)obj;
+       LDKCVec_u8Z ret_var = MonitorEvent_write(obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChainParameters_set_best_block(uint32_t this_ptr, uint32_t val) {
-       LDKChainParameters this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKBestBlock val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = BestBlock_clone(&val_conv);
-       ChainParameters_set_best_block(&this_ptr_conv, val_conv);
+uint32_t  __attribute__((visibility("default"))) TS_MonitorEvent_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_COption_MonitorEventZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_MonitorEventZDecodeErrorZ), "LDKCResult_COption_MonitorEventZDecodeErrorZ");
+       *ret_conv = MonitorEvent_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChainParameters_new(uint32_t network_arg, uint32_t best_block_arg) {
-       LDKNetwork network_arg_conv = LDKNetwork_from_js(network_arg);
-       LDKBestBlock best_block_arg_conv;
-       best_block_arg_conv.inner = (void*)(best_block_arg & (~1));
-       best_block_arg_conv.is_owned = (best_block_arg & 1) || (best_block_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(best_block_arg_conv);
-       best_block_arg_conv = BestBlock_clone(&best_block_arg_conv);
-       LDKChainParameters ret_var = ChainParameters_new(network_arg_conv, best_block_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_HTLCUpdate_free(uint32_t this_obj) {
+       LDKHTLCUpdate this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       HTLCUpdate_free(this_obj_conv);
 }
 
-static inline uint64_t ChainParameters_clone_ptr(LDKChainParameters *NONNULL_PTR arg) {
-       LDKChainParameters ret_var = ChainParameters_clone(arg);
+static inline uint64_t HTLCUpdate_clone_ptr(LDKHTLCUpdate *NONNULL_PTR arg) {
+       LDKHTLCUpdate ret_var = HTLCUpdate_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -20919,21 +18672,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_ChainParameters_clone_ptr(uint32_t arg) {
-       LDKChainParameters arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_HTLCUpdate_clone_ptr(uint32_t arg) {
+       LDKHTLCUpdate arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChainParameters_clone_ptr(&arg_conv);
+       int64_t ret_val = HTLCUpdate_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChainParameters_clone(uint32_t orig) {
-       LDKChainParameters orig_conv;
+uint32_t  __attribute__((visibility("default"))) TS_HTLCUpdate_clone(uint32_t orig) {
+       LDKHTLCUpdate orig_conv;
        orig_conv.inner = (void*)(orig & (~1));
        orig_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChainParameters ret_var = ChainParameters_clone(&orig_conv);
+       LDKHTLCUpdate ret_var = HTLCUpdate_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -20945,80 +18698,101 @@ uint32_t  __attribute__((visibility("default"))) TS_ChainParameters_clone(uint32
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_free(uint32_t this_obj) {
-       LDKCounterpartyForwardingInfo this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       CounterpartyForwardingInfo_free(this_obj_conv);
+int8_tArray  __attribute__((visibility("default"))) TS_HTLCUpdate_write(uint32_t obj) {
+       LDKHTLCUpdate obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = HTLCUpdate_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-int32_t  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_get_fee_base_msat(uint32_t this_ptr) {
-       LDKCounterpartyForwardingInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = CounterpartyForwardingInfo_get_fee_base_msat(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_HTLCUpdate_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_HTLCUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCUpdateDecodeErrorZ), "LDKCResult_HTLCUpdateDecodeErrorZ");
+       *ret_conv = HTLCUpdate_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_set_fee_base_msat(uint32_t this_ptr, int32_t val) {
-       LDKCounterpartyForwardingInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       CounterpartyForwardingInfo_set_fee_base_msat(&this_ptr_conv, val);
+void  __attribute__((visibility("default"))) TS_Balance_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKBalance this_ptr_conv = *(LDKBalance*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       Balance_free(this_ptr_conv);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_get_fee_proportional_millionths(uint32_t this_ptr) {
-       LDKCounterpartyForwardingInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = CounterpartyForwardingInfo_get_fee_proportional_millionths(&this_ptr_conv);
+static inline uint64_t Balance_clone_ptr(LDKBalance *NONNULL_PTR arg) {
+       LDKBalance *ret_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
+       *ret_copy = Balance_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_Balance_clone_ptr(uint32_t arg) {
+       LDKBalance* arg_conv = (LDKBalance*)arg;
+       int64_t ret_val = Balance_clone_ptr(arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_set_fee_proportional_millionths(uint32_t this_ptr, int32_t val) {
-       LDKCounterpartyForwardingInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       CounterpartyForwardingInfo_set_fee_proportional_millionths(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_Balance_clone(uint32_t orig) {
+       LDKBalance* orig_conv = (LDKBalance*)orig;
+       LDKBalance *ret_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
+       *ret_copy = Balance_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-int16_t  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_get_cltv_expiry_delta(uint32_t this_ptr) {
-       LDKCounterpartyForwardingInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = CounterpartyForwardingInfo_get_cltv_expiry_delta(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_Balance_claimable_on_channel_close(int64_t claimable_amount_satoshis) {
+       LDKBalance *ret_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
+       *ret_copy = Balance_claimable_on_channel_close(claimable_amount_satoshis);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_set_cltv_expiry_delta(uint32_t this_ptr, int16_t val) {
-       LDKCounterpartyForwardingInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       CounterpartyForwardingInfo_set_cltv_expiry_delta(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_Balance_claimable_awaiting_confirmations(int64_t claimable_amount_satoshis, int32_t confirmation_height) {
+       LDKBalance *ret_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
+       *ret_copy = Balance_claimable_awaiting_confirmations(claimable_amount_satoshis, confirmation_height);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_new(int32_t fee_base_msat_arg, int32_t fee_proportional_millionths_arg, int16_t cltv_expiry_delta_arg) {
-       LDKCounterpartyForwardingInfo ret_var = CounterpartyForwardingInfo_new(fee_base_msat_arg, fee_proportional_millionths_arg, cltv_expiry_delta_arg);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
+uint32_t  __attribute__((visibility("default"))) TS_Balance_contentious_claimable(int64_t claimable_amount_satoshis, int32_t timeout_height) {
+       LDKBalance *ret_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
+       *ret_copy = Balance_contentious_claimable(claimable_amount_satoshis, timeout_height);
+       uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-static inline uint64_t CounterpartyForwardingInfo_clone_ptr(LDKCounterpartyForwardingInfo *NONNULL_PTR arg) {
-       LDKCounterpartyForwardingInfo ret_var = CounterpartyForwardingInfo_clone(arg);
+uint32_t  __attribute__((visibility("default"))) TS_Balance_maybe_claimable_htlcawaiting_timeout(int64_t claimable_amount_satoshis, int32_t claimable_height) {
+       LDKBalance *ret_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
+       *ret_copy = Balance_maybe_claimable_htlcawaiting_timeout(claimable_amount_satoshis, claimable_height);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+jboolean  __attribute__((visibility("default"))) TS_Balance_eq(uint32_t a, uint32_t b) {
+       LDKBalance* a_conv = (LDKBalance*)a;
+       LDKBalance* b_conv = (LDKBalance*)b;
+       jboolean ret_val = Balance_eq(a_conv, b_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_ChannelMonitor_free(uint32_t this_obj) {
+       LDKChannelMonitor this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       ChannelMonitor_free(this_obj_conv);
+}
+
+static inline uint64_t ChannelMonitor_clone_ptr(LDKChannelMonitor *NONNULL_PTR arg) {
+       LDKChannelMonitor ret_var = ChannelMonitor_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -21029,21 +18803,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_clone_ptr(uint32_t arg) {
-       LDKCounterpartyForwardingInfo arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelMonitor_clone_ptr(uint32_t arg) {
+       LDKChannelMonitor arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = CounterpartyForwardingInfo_clone_ptr(&arg_conv);
+       int64_t ret_val = ChannelMonitor_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_clone(uint32_t orig) {
-       LDKCounterpartyForwardingInfo orig_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitor_clone(uint32_t orig) {
+       LDKChannelMonitor orig_conv;
        orig_conv.inner = (void*)(orig & (~1));
        orig_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKCounterpartyForwardingInfo ret_var = CounterpartyForwardingInfo_clone(&orig_conv);
+       LDKChannelMonitor ret_var = ChannelMonitor_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -21055,213 +18829,347 @@ uint32_t  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_c
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelCounterparty_free(uint32_t this_obj) {
-       LDKChannelCounterparty this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelCounterparty_free(this_obj_conv);
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_write(uint32_t obj) {
+       LDKChannelMonitor obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ChannelMonitor_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelCounterparty_get_node_id(uint32_t this_ptr) {
-       LDKChannelCounterparty this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ChannelCounterparty_get_node_id(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitor_update_monitor(uint32_t this_arg, uint32_t updates, uint32_t broadcaster, uint32_t fee_estimator, uint32_t logger) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKChannelMonitorUpdate updates_conv;
+       updates_conv.inner = (void*)(updates & (~1));
+       updates_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(updates_conv);
+       void* broadcaster_ptr = (void*)(((uint64_t)broadcaster) & ~1);
+       if (!(broadcaster & 1)) { CHECK_ACCESS(broadcaster_ptr); }
+       LDKBroadcasterInterface* broadcaster_conv = (LDKBroadcasterInterface*)broadcaster_ptr;
+       void* fee_estimator_ptr = (void*)(((uint64_t)fee_estimator) & ~1);
+       if (!(fee_estimator & 1)) { CHECK_ACCESS(fee_estimator_ptr); }
+       LDKFeeEstimator* fee_estimator_conv = (LDKFeeEstimator*)fee_estimator_ptr;
+       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
+       if (!(logger & 1)) { CHECK_ACCESS(logger_ptr); }
+       LDKLogger* logger_conv = (LDKLogger*)logger_ptr;
+       LDKCResult_NoneNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneNoneZ), "LDKCResult_NoneNoneZ");
+       *ret_conv = ChannelMonitor_update_monitor(&this_arg_conv, &updates_conv, broadcaster_conv, fee_estimator_conv, logger_conv);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelCounterparty_set_node_id(uint32_t this_ptr, int8_tArray val) {
-       LDKChannelCounterparty this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       ChannelCounterparty_set_node_id(&this_ptr_conv, val_ref);
+int64_t  __attribute__((visibility("default"))) TS_ChannelMonitor_get_latest_update_id(uint32_t this_arg) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int64_t ret_val = ChannelMonitor_get_latest_update_id(&this_arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelCounterparty_get_features(uint32_t this_ptr) {
-       LDKChannelCounterparty this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKInitFeatures ret_var = ChannelCounterparty_get_features(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitor_get_funding_txo(uint32_t this_arg) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKC2Tuple_OutPointScriptZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_OutPointScriptZ), "LDKC2Tuple_OutPointScriptZ");
+       *ret_conv = ChannelMonitor_get_funding_txo(&this_arg_conv);
+       return ((uint64_t)ret_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelCounterparty_set_features(uint32_t this_ptr, uint32_t val) {
-       LDKChannelCounterparty this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKInitFeatures val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = InitFeatures_clone(&val_conv);
-       ChannelCounterparty_set_features(&this_ptr_conv, val_conv);
+uint32_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_get_outputs_to_watch(uint32_t this_arg) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ ret_var = ChannelMonitor_get_outputs_to_watch(&this_arg_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t o = 0; o < ret_var.datalen; o++) {
+               LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ* ret_conv_40_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ");
+               *ret_conv_40_conv = ret_var.data[o];
+               ret_arr_ptr[o] = ((uint64_t)ret_conv_40_conv);
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ChannelCounterparty_get_unspendable_punishment_reserve(uint32_t this_ptr) {
-       LDKChannelCounterparty this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelCounterparty_get_unspendable_punishment_reserve(&this_ptr_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_ChannelMonitor_load_outputs_to_watch(uint32_t this_arg, uint32_t filter) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       void* filter_ptr = (void*)(((uint64_t)filter) & ~1);
+       if (!(filter & 1)) { CHECK_ACCESS(filter_ptr); }
+       LDKFilter* filter_conv = (LDKFilter*)filter_ptr;
+       ChannelMonitor_load_outputs_to_watch(&this_arg_conv, filter_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelCounterparty_set_unspendable_punishment_reserve(uint32_t this_ptr, int64_t val) {
-       LDKChannelCounterparty this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelCounterparty_set_unspendable_punishment_reserve(&this_ptr_conv, val);
+uint32_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_get_and_clear_pending_monitor_events(uint32_t this_arg) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKCVec_MonitorEventZ ret_var = ChannelMonitor_get_and_clear_pending_monitor_events(&this_arg_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t o = 0; o < ret_var.datalen; o++) {
+               LDKMonitorEvent *ret_conv_14_copy = MALLOC(sizeof(LDKMonitorEvent), "LDKMonitorEvent");
+               *ret_conv_14_copy = ret_var.data[o];
+               uint64_t ret_conv_14_ref = (uint64_t)ret_conv_14_copy;
+               ret_arr_ptr[o] = ret_conv_14_ref;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelCounterparty_get_forwarding_info(uint32_t this_ptr) {
-       LDKChannelCounterparty this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCounterpartyForwardingInfo ret_var = ChannelCounterparty_get_forwarding_info(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
+uint32_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_get_and_clear_pending_events(uint32_t this_arg) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKCVec_EventZ ret_var = ChannelMonitor_get_and_clear_pending_events(&this_arg_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t h = 0; h < ret_var.datalen; h++) {
+               LDKEvent *ret_conv_7_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+               *ret_conv_7_copy = ret_var.data[h];
+               uint64_t ret_conv_7_ref = (uint64_t)ret_conv_7_copy;
+               ret_arr_ptr[h] = ret_conv_7_ref;
        }
-       return ret_ref;
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelCounterparty_set_forwarding_info(uint32_t this_ptr, uint32_t val) {
-       LDKChannelCounterparty this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCounterpartyForwardingInfo val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = CounterpartyForwardingInfo_clone(&val_conv);
-       ChannelCounterparty_set_forwarding_info(&this_ptr_conv, val_conv);
+ptrArray  __attribute__((visibility("default"))) TS_ChannelMonitor_get_latest_holder_commitment_txn(uint32_t this_arg, uint32_t logger) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
+       if (!(logger & 1)) { CHECK_ACCESS(logger_ptr); }
+       LDKLogger* logger_conv = (LDKLogger*)logger_ptr;
+       LDKCVec_TransactionZ ret_var = ChannelMonitor_get_latest_holder_commitment_txn(&this_arg_conv, logger_conv);
+       ptrArray ret_arr = NULL;
+       ret_arr = init_ptrArray(ret_var.datalen);
+       int8_tArray *ret_arr_ptr = (int8_tArray*)(ret_arr + 4);
+       for (size_t m = 0; m < ret_var.datalen; m++) {
+               LDKTransaction ret_conv_12_var = ret_var.data[m];
+               int8_tArray ret_conv_12_arr = init_int8_tArray(ret_conv_12_var.datalen);
+               memcpy(ret_conv_12_arr->elems, ret_conv_12_var.data, ret_conv_12_var.datalen);
+               Transaction_free(ret_conv_12_var);
+               ret_arr_ptr[m] = ret_conv_12_arr;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelCounterparty_new(int8_tArray node_id_arg, uint32_t features_arg, int64_t unspendable_punishment_reserve_arg, uint32_t forwarding_info_arg) {
-       LDKPublicKey node_id_arg_ref;
-       CHECK(*((uint32_t*)node_id_arg) == 33);
-       memcpy(node_id_arg_ref.compressed_form, (uint8_t*)(node_id_arg + 4), 33);
-       LDKInitFeatures features_arg_conv;
-       features_arg_conv.inner = (void*)(features_arg & (~1));
-       features_arg_conv.is_owned = (features_arg & 1) || (features_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(features_arg_conv);
-       features_arg_conv = InitFeatures_clone(&features_arg_conv);
-       LDKCounterpartyForwardingInfo forwarding_info_arg_conv;
-       forwarding_info_arg_conv.inner = (void*)(forwarding_info_arg & (~1));
-       forwarding_info_arg_conv.is_owned = (forwarding_info_arg & 1) || (forwarding_info_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(forwarding_info_arg_conv);
-       forwarding_info_arg_conv = CounterpartyForwardingInfo_clone(&forwarding_info_arg_conv);
-       LDKChannelCounterparty ret_var = ChannelCounterparty_new(node_id_arg_ref, features_arg_conv, unspendable_punishment_reserve_arg, forwarding_info_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
+uint32_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_block_connected(uint32_t this_arg, int8_tArray header, uint32_tArray txdata, int32_t height, uint32_t broadcaster, uint32_t fee_estimator, uint32_t logger) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       unsigned char header_arr[80];
+       CHECK(header->arr_len == 80);
+       memcpy(header_arr, header->elems, 80);
+       unsigned char (*header_ref)[80] = &header_arr;
+       LDKCVec_C2Tuple_usizeTransactionZZ txdata_constr;
+       txdata_constr.datalen = txdata->arr_len;
+       if (txdata_constr.datalen > 0)
+               txdata_constr.data = MALLOC(txdata_constr.datalen * sizeof(LDKC2Tuple_usizeTransactionZ), "LDKCVec_C2Tuple_usizeTransactionZZ Elements");
+       else
+               txdata_constr.data = NULL;
+       uint32_t* txdata_vals = txdata->elems;
+       for (size_t c = 0; c < txdata_constr.datalen; c++) {
+               uint32_t txdata_conv_28 = txdata_vals[c];
+               void* txdata_conv_28_ptr = (void*)(((uint64_t)txdata_conv_28) & ~1);
+               CHECK_ACCESS(txdata_conv_28_ptr);
+               LDKC2Tuple_usizeTransactionZ txdata_conv_28_conv = *(LDKC2Tuple_usizeTransactionZ*)(txdata_conv_28_ptr);
+               txdata_conv_28_conv = C2Tuple_usizeTransactionZ_clone((LDKC2Tuple_usizeTransactionZ*)(((uint64_t)txdata_conv_28) & ~1));
+               txdata_constr.data[c] = txdata_conv_28_conv;
+       }
+       void* broadcaster_ptr = (void*)(((uint64_t)broadcaster) & ~1);
+       CHECK_ACCESS(broadcaster_ptr);
+       LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(broadcaster_ptr);
+       void* fee_estimator_ptr = (void*)(((uint64_t)fee_estimator) & ~1);
+       CHECK_ACCESS(fee_estimator_ptr);
+       LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(fee_estimator_ptr);
+       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
+       CHECK_ACCESS(logger_ptr);
+       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
+       LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ret_var = ChannelMonitor_block_connected(&this_arg_conv, header_ref, txdata_constr, height, broadcaster_conv, fee_estimator_conv, logger_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t n = 0; n < ret_var.datalen; n++) {
+               LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* ret_conv_39_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ");
+               *ret_conv_39_conv = ret_var.data[n];
+               ret_arr_ptr[n] = ((uint64_t)ret_conv_39_conv);
        }
-       return ret_ref;
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-static inline uint64_t ChannelCounterparty_clone_ptr(LDKChannelCounterparty *NONNULL_PTR arg) {
-       LDKChannelCounterparty ret_var = ChannelCounterparty_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_ChannelCounterparty_clone_ptr(uint32_t arg) {
-       LDKChannelCounterparty arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelCounterparty_clone_ptr(&arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_ChannelMonitor_block_disconnected(uint32_t this_arg, int8_tArray header, int32_t height, uint32_t broadcaster, uint32_t fee_estimator, uint32_t logger) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       unsigned char header_arr[80];
+       CHECK(header->arr_len == 80);
+       memcpy(header_arr, header->elems, 80);
+       unsigned char (*header_ref)[80] = &header_arr;
+       void* broadcaster_ptr = (void*)(((uint64_t)broadcaster) & ~1);
+       CHECK_ACCESS(broadcaster_ptr);
+       LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(broadcaster_ptr);
+       void* fee_estimator_ptr = (void*)(((uint64_t)fee_estimator) & ~1);
+       CHECK_ACCESS(fee_estimator_ptr);
+       LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(fee_estimator_ptr);
+       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
+       CHECK_ACCESS(logger_ptr);
+       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
+       ChannelMonitor_block_disconnected(&this_arg_conv, header_ref, height, broadcaster_conv, fee_estimator_conv, logger_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelCounterparty_clone(uint32_t orig) {
-       LDKChannelCounterparty orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelCounterparty ret_var = ChannelCounterparty_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
+uint32_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_transactions_confirmed(uint32_t this_arg, int8_tArray header, uint32_tArray txdata, int32_t height, uint32_t broadcaster, uint32_t fee_estimator, uint32_t logger) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       unsigned char header_arr[80];
+       CHECK(header->arr_len == 80);
+       memcpy(header_arr, header->elems, 80);
+       unsigned char (*header_ref)[80] = &header_arr;
+       LDKCVec_C2Tuple_usizeTransactionZZ txdata_constr;
+       txdata_constr.datalen = txdata->arr_len;
+       if (txdata_constr.datalen > 0)
+               txdata_constr.data = MALLOC(txdata_constr.datalen * sizeof(LDKC2Tuple_usizeTransactionZ), "LDKCVec_C2Tuple_usizeTransactionZZ Elements");
+       else
+               txdata_constr.data = NULL;
+       uint32_t* txdata_vals = txdata->elems;
+       for (size_t c = 0; c < txdata_constr.datalen; c++) {
+               uint32_t txdata_conv_28 = txdata_vals[c];
+               void* txdata_conv_28_ptr = (void*)(((uint64_t)txdata_conv_28) & ~1);
+               CHECK_ACCESS(txdata_conv_28_ptr);
+               LDKC2Tuple_usizeTransactionZ txdata_conv_28_conv = *(LDKC2Tuple_usizeTransactionZ*)(txdata_conv_28_ptr);
+               txdata_conv_28_conv = C2Tuple_usizeTransactionZ_clone((LDKC2Tuple_usizeTransactionZ*)(((uint64_t)txdata_conv_28) & ~1));
+               txdata_constr.data[c] = txdata_conv_28_conv;
        }
-       return ret_ref;
+       void* broadcaster_ptr = (void*)(((uint64_t)broadcaster) & ~1);
+       CHECK_ACCESS(broadcaster_ptr);
+       LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(broadcaster_ptr);
+       void* fee_estimator_ptr = (void*)(((uint64_t)fee_estimator) & ~1);
+       CHECK_ACCESS(fee_estimator_ptr);
+       LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(fee_estimator_ptr);
+       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
+       CHECK_ACCESS(logger_ptr);
+       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
+       LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ret_var = ChannelMonitor_transactions_confirmed(&this_arg_conv, header_ref, txdata_constr, height, broadcaster_conv, fee_estimator_conv, logger_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t n = 0; n < ret_var.datalen; n++) {
+               LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* ret_conv_39_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ");
+               *ret_conv_39_conv = ret_var.data[n];
+               ret_arr_ptr[n] = ((uint64_t)ret_conv_39_conv);
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_free(uint32_t this_obj) {
-       LDKChannelDetails this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelDetails_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_ChannelMonitor_transaction_unconfirmed(uint32_t this_arg, int8_tArray txid, uint32_t broadcaster, uint32_t fee_estimator, uint32_t logger) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       unsigned char txid_arr[32];
+       CHECK(txid->arr_len == 32);
+       memcpy(txid_arr, txid->elems, 32);
+       unsigned char (*txid_ref)[32] = &txid_arr;
+       void* broadcaster_ptr = (void*)(((uint64_t)broadcaster) & ~1);
+       CHECK_ACCESS(broadcaster_ptr);
+       LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(broadcaster_ptr);
+       void* fee_estimator_ptr = (void*)(((uint64_t)fee_estimator) & ~1);
+       CHECK_ACCESS(fee_estimator_ptr);
+       LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(fee_estimator_ptr);
+       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
+       CHECK_ACCESS(logger_ptr);
+       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
+       ChannelMonitor_transaction_unconfirmed(&this_arg_conv, txid_ref, broadcaster_conv, fee_estimator_conv, logger_conv);
 }
 
-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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *ChannelDetails_get_channel_id(&this_ptr_conv), 32);
+uint32_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_best_block_updated(uint32_t this_arg, int8_tArray header, int32_t height, uint32_t broadcaster, uint32_t fee_estimator, uint32_t logger) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       unsigned char header_arr[80];
+       CHECK(header->arr_len == 80);
+       memcpy(header_arr, header->elems, 80);
+       unsigned char (*header_ref)[80] = &header_arr;
+       void* broadcaster_ptr = (void*)(((uint64_t)broadcaster) & ~1);
+       CHECK_ACCESS(broadcaster_ptr);
+       LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(broadcaster_ptr);
+       void* fee_estimator_ptr = (void*)(((uint64_t)fee_estimator) & ~1);
+       CHECK_ACCESS(fee_estimator_ptr);
+       LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(fee_estimator_ptr);
+       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
+       CHECK_ACCESS(logger_ptr);
+       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
+       LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ret_var = ChannelMonitor_best_block_updated(&this_arg_conv, header_ref, height, broadcaster_conv, fee_estimator_conv, logger_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t n = 0; n < ret_var.datalen; n++) {
+               LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ* ret_conv_39_conv = MALLOC(sizeof(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ), "LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ");
+               *ret_conv_39_conv = ret_var.data[n];
+               ret_arr_ptr[n] = ((uint64_t)ret_conv_39_conv);
+       }
+       
+       FREE(ret_var.data);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKChannelDetails this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       ChannelDetails_set_channel_id(&this_ptr_conv, val_ref);
+ptrArray  __attribute__((visibility("default"))) TS_ChannelMonitor_get_relevant_txids(uint32_t this_arg) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKCVec_TxidZ ret_var = ChannelMonitor_get_relevant_txids(&this_arg_conv);
+       ptrArray ret_arr = NULL;
+       ret_arr = init_ptrArray(ret_var.datalen);
+       int8_tArray *ret_arr_ptr = (int8_tArray*)(ret_arr + 4);
+       for (size_t m = 0; m < ret_var.datalen; m++) {
+               int8_tArray ret_conv_12_arr = init_int8_tArray(32);
+               memcpy(ret_conv_12_arr->elems, ret_var.data[m].data, 32);
+               ret_arr_ptr[m] = ret_conv_12_arr;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_counterparty(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelCounterparty ret_var = ChannelDetails_get_counterparty(&this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelMonitor_current_best_block(uint32_t this_arg) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKBestBlock ret_var = ChannelMonitor_current_best_block(&this_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -21273,326 +19181,358 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_counterpa
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_counterparty(uint32_t this_ptr, uint32_t val) {
-       LDKChannelDetails this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelCounterparty val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = ChannelCounterparty_clone(&val_conv);
-       ChannelDetails_set_counterparty(&this_ptr_conv, val_conv);
+uint32_tArray  __attribute__((visibility("default"))) TS_ChannelMonitor_get_claimable_balances(uint32_t this_arg) {
+       LDKChannelMonitor this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKCVec_BalanceZ ret_var = ChannelMonitor_get_claimable_balances(&this_arg_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t j = 0; j < ret_var.datalen; j++) {
+               LDKBalance *ret_conv_9_copy = MALLOC(sizeof(LDKBalance), "LDKBalance");
+               *ret_conv_9_copy = ret_var.data[j];
+               uint64_t ret_conv_9_ref = (uint64_t)ret_conv_9_copy;
+               ret_arr_ptr[j] = ret_conv_9_ref;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_funding_txo(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKOutPoint ret_var = ChannelDetails_get_funding_txo(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_read(int8_tArray ser, uint32_t arg) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       void* arg_ptr = (void*)(((uint64_t)arg) & ~1);
+       if (!(arg & 1)) { CHECK_ACCESS(arg_ptr); }
+       LDKKeysInterface* arg_conv = (LDKKeysInterface*)arg_ptr;
+       LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ");
+       *ret_conv = C2Tuple_BlockHashChannelMonitorZ_read(ser_ref, arg_conv);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_funding_txo(uint32_t this_ptr, uint32_t val) {
-       LDKChannelDetails this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKOutPoint val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = OutPoint_clone(&val_conv);
-       ChannelDetails_set_funding_txo(&this_ptr_conv, val_conv);
+void  __attribute__((visibility("default"))) TS_OutPoint_free(uint32_t this_obj) {
+       LDKOutPoint this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       OutPoint_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_short_channel_id(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
+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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
-       *ret_copy = ChannelDetails_get_short_channel_id(&this_ptr_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *OutPoint_get_txid(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_short_channel_id(uint32_t this_ptr, uint32_t val) {
-       LDKChannelDetails this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OutPoint_set_txid(uint32_t this_ptr, int8_tArray val) {
+       LDKOutPoint this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKCOption_u64Z val_conv = *(LDKCOption_u64Z*)(val_ptr);
-       val_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)val) & ~1));
-       ChannelDetails_set_short_channel_id(&this_ptr_conv, val_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       OutPoint_set_txid(&this_ptr_conv, val_ref);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_channel_value_satoshis(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
+int16_t  __attribute__((visibility("default"))) TS_OutPoint_get_index(uint32_t this_ptr) {
+       LDKOutPoint this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelDetails_get_channel_value_satoshis(&this_ptr_conv);
+       int16_t ret_val = OutPoint_get_index(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_channel_value_satoshis(uint32_t this_ptr, int64_t val) {
-       LDKChannelDetails this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OutPoint_set_index(uint32_t this_ptr, int16_t val) {
+       LDKOutPoint this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelDetails_set_channel_value_satoshis(&this_ptr_conv, val);
+       OutPoint_set_index(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_unspendable_punishment_reserve(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
-       *ret_copy = ChannelDetails_get_unspendable_punishment_reserve(&this_ptr_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
+uint32_t  __attribute__((visibility("default"))) TS_OutPoint_new(int8_tArray txid_arg, int16_t index_arg) {
+       LDKThirtyTwoBytes txid_arg_ref;
+       CHECK(txid_arg->arr_len == 32);
+       memcpy(txid_arg_ref.data, txid_arg->elems, 32);
+       LDKOutPoint ret_var = OutPoint_new(txid_arg_ref, index_arg);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_unspendable_punishment_reserve(uint32_t this_ptr, uint32_t val) {
-       LDKChannelDetails this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKCOption_u64Z val_conv = *(LDKCOption_u64Z*)(val_ptr);
-       val_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)val) & ~1));
-       ChannelDetails_set_unspendable_punishment_reserve(&this_ptr_conv, val_conv);
+static inline uint64_t OutPoint_clone_ptr(LDKOutPoint *NONNULL_PTR arg) {
+       LDKOutPoint ret_var = OutPoint_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-int64_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_user_channel_id(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelDetails_get_user_channel_id(&this_ptr_conv);
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_OutPoint_clone_ptr(uint32_t arg) {
+       LDKOutPoint arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = OutPoint_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_user_channel_id(uint32_t this_ptr, int64_t val) {
-       LDKChannelDetails this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelDetails_set_user_channel_id(&this_ptr_conv, val);
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKOutPoint ret_var = OutPoint_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_balance_msat(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelDetails_get_balance_msat(&this_ptr_conv);
+jboolean  __attribute__((visibility("default"))) TS_OutPoint_eq(uint32_t a, uint32_t b) {
+       LDKOutPoint a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       LDKOutPoint b_conv;
+       b_conv.inner = (void*)(b & (~1));
+       b_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
+       jboolean ret_val = OutPoint_eq(&a_conv, &b_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_balance_msat(uint32_t this_ptr, int64_t val) {
-       LDKChannelDetails this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelDetails_set_balance_msat(&this_ptr_conv, val);
+int64_t  __attribute__((visibility("default"))) TS_OutPoint_hash(uint32_t o) {
+       LDKOutPoint o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       int64_t ret_val = OutPoint_hash(&o_conv);
+       return ret_val;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_outbound_capacity_msat(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelDetails_get_outbound_capacity_msat(&this_ptr_conv);
-       return ret_val;
+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));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, OutPoint_to_channel_id(&this_arg_conv).data, 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_outbound_capacity_msat(uint32_t this_ptr, int64_t val) {
-       LDKChannelDetails this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelDetails_set_outbound_capacity_msat(&this_ptr_conv, val);
+int8_tArray  __attribute__((visibility("default"))) TS_OutPoint_write(uint32_t obj) {
+       LDKOutPoint obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = OutPoint_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_inbound_capacity_msat(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelDetails_get_inbound_capacity_msat(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_OutPoint_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_OutPointDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OutPointDecodeErrorZ), "LDKCResult_OutPointDecodeErrorZ");
+       *ret_conv = OutPoint_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_inbound_capacity_msat(uint32_t this_ptr, int64_t val) {
-       LDKChannelDetails this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_free(uint32_t this_obj) {
+       LDKDelayedPaymentOutputDescriptor this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       DelayedPaymentOutputDescriptor_free(this_obj_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_get_outpoint(uint32_t this_ptr) {
+       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelDetails_set_inbound_capacity_msat(&this_ptr_conv, val);
+       LDKOutPoint ret_var = DelayedPaymentOutputDescriptor_get_outpoint(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_confirmations_required(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_set_outpoint(uint32_t this_ptr, uint32_t val) {
+       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCOption_u32Z *ret_copy = MALLOC(sizeof(LDKCOption_u32Z), "LDKCOption_u32Z");
-       *ret_copy = ChannelDetails_get_confirmations_required(&this_ptr_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+       LDKOutPoint val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = OutPoint_clone(&val_conv);
+       DelayedPaymentOutputDescriptor_set_outpoint(&this_ptr_conv, val_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_confirmations_required(uint32_t this_ptr, uint32_t val) {
-       LDKChannelDetails this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_get_per_commitment_point(uint32_t this_ptr) {
+       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKCOption_u32Z val_conv = *(LDKCOption_u32Z*)(val_ptr);
-       val_conv = COption_u32Z_clone((LDKCOption_u32Z*)(((uint64_t)val) & ~1));
-       ChannelDetails_set_confirmations_required(&this_ptr_conv, val_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, DelayedPaymentOutputDescriptor_get_per_commitment_point(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_force_close_spend_delay(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_set_per_commitment_point(uint32_t this_ptr, int8_tArray val) {
+       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCOption_u16Z *ret_copy = MALLOC(sizeof(LDKCOption_u16Z), "LDKCOption_u16Z");
-       *ret_copy = ChannelDetails_get_force_close_spend_delay(&this_ptr_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       DelayedPaymentOutputDescriptor_set_per_commitment_point(&this_ptr_conv, val_ref);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_force_close_spend_delay(uint32_t this_ptr, uint32_t val) {
-       LDKChannelDetails this_ptr_conv;
+int16_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_get_to_self_delay(uint32_t this_ptr) {
+       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKCOption_u16Z val_conv = *(LDKCOption_u16Z*)(val_ptr);
-       val_conv = COption_u16Z_clone((LDKCOption_u16Z*)(((uint64_t)val) & ~1));
-       ChannelDetails_set_force_close_spend_delay(&this_ptr_conv, val_conv);
+       int16_t ret_val = DelayedPaymentOutputDescriptor_get_to_self_delay(&this_ptr_conv);
+       return ret_val;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelDetails_get_is_outbound(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_set_to_self_delay(uint32_t this_ptr, int16_t val) {
+       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = ChannelDetails_get_is_outbound(&this_ptr_conv);
-       return ret_val;
+       DelayedPaymentOutputDescriptor_set_to_self_delay(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_is_outbound(uint32_t this_ptr, jboolean val) {
-       LDKChannelDetails this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_set_output(uint32_t this_ptr, uint32_t val) {
+       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelDetails_set_is_outbound(&this_ptr_conv, val);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKTxOut val_conv = *(LDKTxOut*)(val_ptr);
+       val_conv = TxOut_clone((LDKTxOut*)(((uint64_t)val) & ~1));
+       DelayedPaymentOutputDescriptor_set_output(&this_ptr_conv, val_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelDetails_get_is_funding_locked(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_get_revocation_pubkey(uint32_t this_ptr) {
+       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = ChannelDetails_get_is_funding_locked(&this_ptr_conv);
-       return ret_val;
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, DelayedPaymentOutputDescriptor_get_revocation_pubkey(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_is_funding_locked(uint32_t this_ptr, jboolean val) {
-       LDKChannelDetails this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_set_revocation_pubkey(uint32_t this_ptr, int8_tArray val) {
+       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelDetails_set_is_funding_locked(&this_ptr_conv, val);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       DelayedPaymentOutputDescriptor_set_revocation_pubkey(&this_ptr_conv, val_ref);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelDetails_get_is_usable(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_get_channel_keys_id(uint32_t this_ptr) {
+       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = ChannelDetails_get_is_usable(&this_ptr_conv);
-       return ret_val;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *DelayedPaymentOutputDescriptor_get_channel_keys_id(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_is_usable(uint32_t this_ptr, jboolean val) {
-       LDKChannelDetails this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_set_channel_keys_id(uint32_t this_ptr, int8_tArray val) {
+       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelDetails_set_is_usable(&this_ptr_conv, val);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       DelayedPaymentOutputDescriptor_set_channel_keys_id(&this_ptr_conv, val_ref);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelDetails_get_is_public(uint32_t this_ptr) {
-       LDKChannelDetails this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_get_channel_value_satoshis(uint32_t this_ptr) {
+       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = ChannelDetails_get_is_public(&this_ptr_conv);
+       int64_t ret_val = DelayedPaymentOutputDescriptor_get_channel_value_satoshis(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelDetails_set_is_public(uint32_t this_ptr, jboolean val) {
-       LDKChannelDetails this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_set_channel_value_satoshis(uint32_t this_ptr, int64_t val) {
+       LDKDelayedPaymentOutputDescriptor this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelDetails_set_is_public(&this_ptr_conv, val);
+       DelayedPaymentOutputDescriptor_set_channel_value_satoshis(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_new(int8_tArray channel_id_arg, uint32_t counterparty_arg, uint32_t funding_txo_arg, uint32_t short_channel_id_arg, int64_t channel_value_satoshis_arg, uint32_t unspendable_punishment_reserve_arg, int64_t user_channel_id_arg, int64_t balance_msat_arg, int64_t outbound_capacity_msat_arg, int64_t inbound_capacity_msat_arg, uint32_t confirmations_required_arg, uint32_t force_close_spend_delay_arg, jboolean is_outbound_arg, jboolean is_funding_locked_arg, jboolean is_usable_arg, jboolean is_public_arg) {
-       LDKThirtyTwoBytes channel_id_arg_ref;
-       CHECK(*((uint32_t*)channel_id_arg) == 32);
-       memcpy(channel_id_arg_ref.data, (uint8_t*)(channel_id_arg + 4), 32);
-       LDKChannelCounterparty counterparty_arg_conv;
-       counterparty_arg_conv.inner = (void*)(counterparty_arg & (~1));
-       counterparty_arg_conv.is_owned = (counterparty_arg & 1) || (counterparty_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(counterparty_arg_conv);
-       counterparty_arg_conv = ChannelCounterparty_clone(&counterparty_arg_conv);
-       LDKOutPoint funding_txo_arg_conv;
-       funding_txo_arg_conv.inner = (void*)(funding_txo_arg & (~1));
-       funding_txo_arg_conv.is_owned = (funding_txo_arg & 1) || (funding_txo_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_arg_conv);
-       funding_txo_arg_conv = OutPoint_clone(&funding_txo_arg_conv);
-       void* short_channel_id_arg_ptr = (void*)(((uint64_t)short_channel_id_arg) & ~1);
-       CHECK_ACCESS(short_channel_id_arg_ptr);
-       LDKCOption_u64Z short_channel_id_arg_conv = *(LDKCOption_u64Z*)(short_channel_id_arg_ptr);
-       short_channel_id_arg_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)short_channel_id_arg) & ~1));
-       void* unspendable_punishment_reserve_arg_ptr = (void*)(((uint64_t)unspendable_punishment_reserve_arg) & ~1);
-       CHECK_ACCESS(unspendable_punishment_reserve_arg_ptr);
-       LDKCOption_u64Z unspendable_punishment_reserve_arg_conv = *(LDKCOption_u64Z*)(unspendable_punishment_reserve_arg_ptr);
-       void* confirmations_required_arg_ptr = (void*)(((uint64_t)confirmations_required_arg) & ~1);
-       CHECK_ACCESS(confirmations_required_arg_ptr);
-       LDKCOption_u32Z confirmations_required_arg_conv = *(LDKCOption_u32Z*)(confirmations_required_arg_ptr);
-       confirmations_required_arg_conv = COption_u32Z_clone((LDKCOption_u32Z*)(((uint64_t)confirmations_required_arg) & ~1));
-       void* force_close_spend_delay_arg_ptr = (void*)(((uint64_t)force_close_spend_delay_arg) & ~1);
-       CHECK_ACCESS(force_close_spend_delay_arg_ptr);
-       LDKCOption_u16Z force_close_spend_delay_arg_conv = *(LDKCOption_u16Z*)(force_close_spend_delay_arg_ptr);
-       force_close_spend_delay_arg_conv = COption_u16Z_clone((LDKCOption_u16Z*)(((uint64_t)force_close_spend_delay_arg) & ~1));
-       LDKChannelDetails ret_var = ChannelDetails_new(channel_id_arg_ref, counterparty_arg_conv, funding_txo_arg_conv, short_channel_id_arg_conv, channel_value_satoshis_arg, unspendable_punishment_reserve_arg_conv, user_channel_id_arg, balance_msat_arg, outbound_capacity_msat_arg, inbound_capacity_msat_arg, confirmations_required_arg_conv, force_close_spend_delay_arg_conv, is_outbound_arg, is_funding_locked_arg, is_usable_arg, is_public_arg);
+uint32_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_new(uint32_t outpoint_arg, int8_tArray per_commitment_point_arg, int16_t to_self_delay_arg, uint32_t output_arg, int8_tArray revocation_pubkey_arg, int8_tArray channel_keys_id_arg, int64_t channel_value_satoshis_arg) {
+       LDKOutPoint outpoint_arg_conv;
+       outpoint_arg_conv.inner = (void*)(outpoint_arg & (~1));
+       outpoint_arg_conv.is_owned = (outpoint_arg & 1) || (outpoint_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(outpoint_arg_conv);
+       outpoint_arg_conv = OutPoint_clone(&outpoint_arg_conv);
+       LDKPublicKey per_commitment_point_arg_ref;
+       CHECK(per_commitment_point_arg->arr_len == 33);
+       memcpy(per_commitment_point_arg_ref.compressed_form, per_commitment_point_arg->elems, 33);
+       void* output_arg_ptr = (void*)(((uint64_t)output_arg) & ~1);
+       CHECK_ACCESS(output_arg_ptr);
+       LDKTxOut output_arg_conv = *(LDKTxOut*)(output_arg_ptr);
+       output_arg_conv = TxOut_clone((LDKTxOut*)(((uint64_t)output_arg) & ~1));
+       LDKPublicKey revocation_pubkey_arg_ref;
+       CHECK(revocation_pubkey_arg->arr_len == 33);
+       memcpy(revocation_pubkey_arg_ref.compressed_form, revocation_pubkey_arg->elems, 33);
+       LDKThirtyTwoBytes channel_keys_id_arg_ref;
+       CHECK(channel_keys_id_arg->arr_len == 32);
+       memcpy(channel_keys_id_arg_ref.data, channel_keys_id_arg->elems, 32);
+       LDKDelayedPaymentOutputDescriptor ret_var = DelayedPaymentOutputDescriptor_new(outpoint_arg_conv, per_commitment_point_arg_ref, to_self_delay_arg, output_arg_conv, revocation_pubkey_arg_ref, channel_keys_id_arg_ref, channel_value_satoshis_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -21604,8 +19544,8 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_new(int8_tArr
        return ret_ref;
 }
 
-static inline uint64_t ChannelDetails_clone_ptr(LDKChannelDetails *NONNULL_PTR arg) {
-       LDKChannelDetails ret_var = ChannelDetails_clone(arg);
+static inline uint64_t DelayedPaymentOutputDescriptor_clone_ptr(LDKDelayedPaymentOutputDescriptor *NONNULL_PTR arg) {
+       LDKDelayedPaymentOutputDescriptor ret_var = DelayedPaymentOutputDescriptor_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -21616,21 +19556,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_ChannelDetails_clone_ptr(uint32_t arg) {
-       LDKChannelDetails arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_clone_ptr(uint32_t arg) {
+       LDKDelayedPaymentOutputDescriptor arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelDetails_clone_ptr(&arg_conv);
+       int64_t ret_val = DelayedPaymentOutputDescriptor_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_clone(uint32_t orig) {
-       LDKChannelDetails orig_conv;
+uint32_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_clone(uint32_t orig) {
+       LDKDelayedPaymentOutputDescriptor orig_conv;
        orig_conv.inner = (void*)(orig & (~1));
        orig_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelDetails ret_var = ChannelDetails_clone(&orig_conv);
+       LDKDelayedPaymentOutputDescriptor ret_var = DelayedPaymentOutputDescriptor_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -21642,163 +19582,41 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_clone(uint32_
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_PaymentSendFailure_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKPaymentSendFailure this_ptr_conv = *(LDKPaymentSendFailure*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       PaymentSendFailure_free(this_ptr_conv);
-}
-
-static inline uint64_t PaymentSendFailure_clone_ptr(LDKPaymentSendFailure *NONNULL_PTR arg) {
-       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
-       *ret_copy = PaymentSendFailure_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_PaymentSendFailure_clone_ptr(uint32_t arg) {
-       LDKPaymentSendFailure* arg_conv = (LDKPaymentSendFailure*)arg;
-       int64_t ret_val = PaymentSendFailure_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_PaymentSendFailure_clone(uint32_t orig) {
-       LDKPaymentSendFailure* orig_conv = (LDKPaymentSendFailure*)orig;
-       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
-       *ret_copy = PaymentSendFailure_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_PaymentSendFailure_parameter_error(uint32_t a) {
-       void* a_ptr = (void*)(((uint64_t)a) & ~1);
-       CHECK_ACCESS(a_ptr);
-       LDKAPIError a_conv = *(LDKAPIError*)(a_ptr);
-       a_conv = APIError_clone((LDKAPIError*)(((uint64_t)a) & ~1));
-       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
-       *ret_copy = PaymentSendFailure_parameter_error(a_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_PaymentSendFailure_path_parameter_error(uint32_tArray a) {
-       LDKCVec_CResult_NoneAPIErrorZZ a_constr;
-       a_constr.datalen = *((uint32_t*)a);
-       if (a_constr.datalen > 0)
-               a_constr.data = MALLOC(a_constr.datalen * sizeof(LDKCResult_NoneAPIErrorZ), "LDKCVec_CResult_NoneAPIErrorZZ Elements");
-       else
-               a_constr.data = NULL;
-       uint32_t* a_vals = (uint32_t*)(a + 4);
-       for (size_t w = 0; w < a_constr.datalen; w++) {
-               uint32_t a_conv_22 = a_vals[w];
-               void* a_conv_22_ptr = (void*)(((uint64_t)a_conv_22) & ~1);
-               CHECK_ACCESS(a_conv_22_ptr);
-               LDKCResult_NoneAPIErrorZ a_conv_22_conv = *(LDKCResult_NoneAPIErrorZ*)(a_conv_22_ptr);
-               a_conv_22_conv = CResult_NoneAPIErrorZ_clone((LDKCResult_NoneAPIErrorZ*)(((uint64_t)a_conv_22) & ~1));
-               a_constr.data[w] = a_conv_22_conv;
-       }
-       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
-       *ret_copy = PaymentSendFailure_path_parameter_error(a_constr);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_PaymentSendFailure_all_failed_retry_safe(uint32_tArray a) {
-       LDKCVec_APIErrorZ a_constr;
-       a_constr.datalen = *((uint32_t*)a);
-       if (a_constr.datalen > 0)
-               a_constr.data = MALLOC(a_constr.datalen * sizeof(LDKAPIError), "LDKCVec_APIErrorZ Elements");
-       else
-               a_constr.data = NULL;
-       uint32_t* a_vals = (uint32_t*)(a + 4);
-       for (size_t k = 0; k < a_constr.datalen; k++) {
-               uint32_t a_conv_10 = a_vals[k];
-               void* a_conv_10_ptr = (void*)(((uint64_t)a_conv_10) & ~1);
-               CHECK_ACCESS(a_conv_10_ptr);
-               LDKAPIError a_conv_10_conv = *(LDKAPIError*)(a_conv_10_ptr);
-               a_conv_10_conv = APIError_clone((LDKAPIError*)(((uint64_t)a_conv_10) & ~1));
-               a_constr.data[k] = a_conv_10_conv;
-       }
-       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
-       *ret_copy = PaymentSendFailure_all_failed_retry_safe(a_constr);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_write(uint32_t obj) {
+       LDKDelayedPaymentOutputDescriptor obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = DelayedPaymentOutputDescriptor_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PaymentSendFailure_partial_failure(uint32_tArray results, uint32_t failed_paths_retry, int8_tArray payment_id) {
-       LDKCVec_CResult_NoneAPIErrorZZ results_constr;
-       results_constr.datalen = *((uint32_t*)results);
-       if (results_constr.datalen > 0)
-               results_constr.data = MALLOC(results_constr.datalen * sizeof(LDKCResult_NoneAPIErrorZ), "LDKCVec_CResult_NoneAPIErrorZZ Elements");
-       else
-               results_constr.data = NULL;
-       uint32_t* results_vals = (uint32_t*)(results + 4);
-       for (size_t w = 0; w < results_constr.datalen; w++) {
-               uint32_t results_conv_22 = results_vals[w];
-               void* results_conv_22_ptr = (void*)(((uint64_t)results_conv_22) & ~1);
-               CHECK_ACCESS(results_conv_22_ptr);
-               LDKCResult_NoneAPIErrorZ results_conv_22_conv = *(LDKCResult_NoneAPIErrorZ*)(results_conv_22_ptr);
-               results_constr.data[w] = results_conv_22_conv;
-       }
-       LDKRouteParameters failed_paths_retry_conv;
-       failed_paths_retry_conv.inner = (void*)(failed_paths_retry & (~1));
-       failed_paths_retry_conv.is_owned = (failed_paths_retry & 1) || (failed_paths_retry == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(failed_paths_retry_conv);
-       failed_paths_retry_conv = RouteParameters_clone(&failed_paths_retry_conv);
-       LDKThirtyTwoBytes payment_id_ref;
-       CHECK(*((uint32_t*)payment_id) == 32);
-       memcpy(payment_id_ref.data, (uint8_t*)(payment_id + 4), 32);
-       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
-       *ret_copy = PaymentSendFailure_partial_failure(results_constr, failed_paths_retry_conv, payment_id_ref);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_DelayedPaymentOutputDescriptor_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ");
+       *ret_conv = DelayedPaymentOutputDescriptor_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_new(uint32_t fee_est, uint32_t chain_monitor, uint32_t tx_broadcaster, uint32_t logger, uint32_t keys_manager, uint32_t config, uint32_t params) {
-       void* fee_est_ptr = (void*)(((uint64_t)fee_est) & ~1);
-       CHECK_ACCESS(fee_est_ptr);
-       LDKFeeEstimator fee_est_conv = *(LDKFeeEstimator*)(fee_est_ptr);
-       void* chain_monitor_ptr = (void*)(((uint64_t)chain_monitor) & ~1);
-       CHECK_ACCESS(chain_monitor_ptr);
-       LDKWatch chain_monitor_conv = *(LDKWatch*)(chain_monitor_ptr);
-       void* tx_broadcaster_ptr = (void*)(((uint64_t)tx_broadcaster) & ~1);
-       CHECK_ACCESS(tx_broadcaster_ptr);
-       LDKBroadcasterInterface tx_broadcaster_conv = *(LDKBroadcasterInterface*)(tx_broadcaster_ptr);
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       CHECK_ACCESS(logger_ptr);
-       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
-       void* keys_manager_ptr = (void*)(((uint64_t)keys_manager) & ~1);
-       CHECK_ACCESS(keys_manager_ptr);
-       LDKKeysInterface keys_manager_conv = *(LDKKeysInterface*)(keys_manager_ptr);
-       LDKUserConfig config_conv;
-       config_conv.inner = (void*)(config & (~1));
-       config_conv.is_owned = (config & 1) || (config == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(config_conv);
-       config_conv = UserConfig_clone(&config_conv);
-       LDKChainParameters params_conv;
-       params_conv.inner = (void*)(params & (~1));
-       params_conv.is_owned = (params & 1) || (params == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(params_conv);
-       params_conv = ChainParameters_clone(&params_conv);
-       LDKChannelManager ret_var = ChannelManager_new(fee_est_conv, chain_monitor_conv, tx_broadcaster_conv, logger_conv, keys_manager_conv, config_conv, params_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_free(uint32_t this_obj) {
+       LDKStaticPaymentOutputDescriptor this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       StaticPaymentOutputDescriptor_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_get_current_default_configuration(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKUserConfig ret_var = ChannelManager_get_current_default_configuration(&this_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_get_outpoint(uint32_t this_ptr) {
+       LDKStaticPaymentOutputDescriptor this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKOutPoint ret_var = StaticPaymentOutputDescriptor_get_outpoint(&this_ptr_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -21810,678 +19628,425 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_get_current_d
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_create_channel(uint32_t this_arg, int8_tArray their_network_key, int64_t channel_value_satoshis, int64_t push_msat, int64_t user_channel_id, uint32_t override_config) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKPublicKey their_network_key_ref;
-       CHECK(*((uint32_t*)their_network_key) == 33);
-       memcpy(their_network_key_ref.compressed_form, (uint8_t*)(their_network_key + 4), 33);
-       LDKUserConfig override_config_conv;
-       override_config_conv.inner = (void*)(override_config & (~1));
-       override_config_conv.is_owned = (override_config & 1) || (override_config == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(override_config_conv);
-       override_config_conv = UserConfig_clone(&override_config_conv);
-       LDKCResult__u832APIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult__u832APIErrorZ), "LDKCResult__u832APIErrorZ");
-       *ret_conv = ChannelManager_create_channel(&this_arg_conv, their_network_key_ref, channel_value_satoshis, push_msat, user_channel_id, override_config_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_set_outpoint(uint32_t this_ptr, uint32_t val) {
+       LDKStaticPaymentOutputDescriptor this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKOutPoint val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = OutPoint_clone(&val_conv);
+       StaticPaymentOutputDescriptor_set_outpoint(&this_ptr_conv, val_conv);
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_ChannelManager_list_channels(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCVec_ChannelDetailsZ ret_var = ChannelManager_list_channels(&this_arg_conv);
-       uint32_tArray ret_arr = NULL;
-       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 q = 0; q < ret_var.datalen; q++) {
-               LDKChannelDetails ret_conv_16_var = ret_var.data[q];
-               uint64_t ret_conv_16_ref = 0;
-               CHECK((((uint64_t)ret_conv_16_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_conv_16_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_16_var);
-               ret_conv_16_ref = (uint64_t)ret_conv_16_var.inner;
-               if (ret_conv_16_var.is_owned) {
-                       ret_conv_16_ref |= 1;
-               }
-               ret_arr_ptr[q] = ret_conv_16_ref;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_set_output(uint32_t this_ptr, uint32_t val) {
+       LDKStaticPaymentOutputDescriptor this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKTxOut val_conv = *(LDKTxOut*)(val_ptr);
+       val_conv = TxOut_clone((LDKTxOut*)(((uint64_t)val) & ~1));
+       StaticPaymentOutputDescriptor_set_output(&this_ptr_conv, val_conv);
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_ChannelManager_list_usable_channels(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCVec_ChannelDetailsZ ret_var = ChannelManager_list_usable_channels(&this_arg_conv);
-       uint32_tArray ret_arr = NULL;
-       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 q = 0; q < ret_var.datalen; q++) {
-               LDKChannelDetails ret_conv_16_var = ret_var.data[q];
-               uint64_t ret_conv_16_ref = 0;
-               CHECK((((uint64_t)ret_conv_16_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_conv_16_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_16_var);
-               ret_conv_16_ref = (uint64_t)ret_conv_16_var.inner;
-               if (ret_conv_16_var.is_owned) {
-                       ret_conv_16_ref |= 1;
-               }
-               ret_arr_ptr[q] = ret_conv_16_ref;
-       }
-       
-       FREE(ret_var.data);
+int8_tArray  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_get_channel_keys_id(uint32_t this_ptr) {
+       LDKStaticPaymentOutputDescriptor this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *StaticPaymentOutputDescriptor_get_channel_keys_id(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_close_channel(uint32_t this_arg, int8_tArray channel_id) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       unsigned char channel_id_arr[32];
-       CHECK(*((uint32_t*)channel_id) == 32);
-       memcpy(channel_id_arr, (uint8_t*)(channel_id + 4), 32);
-       unsigned char (*channel_id_ref)[32] = &channel_id_arr;
-       LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
-       *ret_conv = ChannelManager_close_channel(&this_arg_conv, channel_id_ref);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_close_channel_with_target_feerate(uint32_t this_arg, int8_tArray channel_id, int32_t target_feerate_sats_per_1000_weight) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       unsigned char channel_id_arr[32];
-       CHECK(*((uint32_t*)channel_id) == 32);
-       memcpy(channel_id_arr, (uint8_t*)(channel_id + 4), 32);
-       unsigned char (*channel_id_ref)[32] = &channel_id_arr;
-       LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
-       *ret_conv = ChannelManager_close_channel_with_target_feerate(&this_arg_conv, channel_id_ref, target_feerate_sats_per_1000_weight);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_force_close_channel(uint32_t this_arg, int8_tArray channel_id) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       unsigned char channel_id_arr[32];
-       CHECK(*((uint32_t*)channel_id) == 32);
-       memcpy(channel_id_arr, (uint8_t*)(channel_id + 4), 32);
-       unsigned char (*channel_id_ref)[32] = &channel_id_arr;
-       LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
-       *ret_conv = ChannelManager_force_close_channel(&this_arg_conv, channel_id_ref);
-       return (uint64_t)ret_conv;
-}
-
-void  __attribute__((visibility("default"))) TS_ChannelManager_force_close_all_channels(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       ChannelManager_force_close_all_channels(&this_arg_conv);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_send_payment(uint32_t this_arg, uint32_t route, int8_tArray payment_hash, int8_tArray payment_secret) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKRoute route_conv;
-       route_conv.inner = (void*)(route & (~1));
-       route_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(route_conv);
-       LDKThirtyTwoBytes payment_hash_ref;
-       CHECK(*((uint32_t*)payment_hash) == 32);
-       memcpy(payment_hash_ref.data, (uint8_t*)(payment_hash + 4), 32);
-       LDKThirtyTwoBytes payment_secret_ref;
-       CHECK(*((uint32_t*)payment_secret) == 32);
-       memcpy(payment_secret_ref.data, (uint8_t*)(payment_secret + 4), 32);
-       LDKCResult_PaymentIdPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentSendFailureZ), "LDKCResult_PaymentIdPaymentSendFailureZ");
-       *ret_conv = ChannelManager_send_payment(&this_arg_conv, &route_conv, payment_hash_ref, payment_secret_ref);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_retry_payment(uint32_t this_arg, uint32_t route, int8_tArray payment_id) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKRoute route_conv;
-       route_conv.inner = (void*)(route & (~1));
-       route_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(route_conv);
-       LDKThirtyTwoBytes payment_id_ref;
-       CHECK(*((uint32_t*)payment_id) == 32);
-       memcpy(payment_id_ref.data, (uint8_t*)(payment_id + 4), 32);
-       LDKCResult_NonePaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePaymentSendFailureZ), "LDKCResult_NonePaymentSendFailureZ");
-       *ret_conv = ChannelManager_retry_payment(&this_arg_conv, &route_conv, payment_id_ref);
-       return (uint64_t)ret_conv;
-}
-
-void  __attribute__((visibility("default"))) TS_ChannelManager_abandon_payment(uint32_t this_arg, int8_tArray payment_id) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKThirtyTwoBytes payment_id_ref;
-       CHECK(*((uint32_t*)payment_id) == 32);
-       memcpy(payment_id_ref.data, (uint8_t*)(payment_id + 4), 32);
-       ChannelManager_abandon_payment(&this_arg_conv, payment_id_ref);
+void  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_set_channel_keys_id(uint32_t this_ptr, int8_tArray val) {
+       LDKStaticPaymentOutputDescriptor this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       StaticPaymentOutputDescriptor_set_channel_keys_id(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_send_spontaneous_payment(uint32_t this_arg, uint32_t route, int8_tArray payment_preimage) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKRoute route_conv;
-       route_conv.inner = (void*)(route & (~1));
-       route_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(route_conv);
-       LDKThirtyTwoBytes payment_preimage_ref;
-       CHECK(*((uint32_t*)payment_preimage) == 32);
-       memcpy(payment_preimage_ref.data, (uint8_t*)(payment_preimage + 4), 32);
-       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ), "LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ");
-       *ret_conv = ChannelManager_send_spontaneous_payment(&this_arg_conv, &route_conv, payment_preimage_ref);
-       return (uint64_t)ret_conv;
+int64_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_get_channel_value_satoshis(uint32_t this_ptr) {
+       LDKStaticPaymentOutputDescriptor this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = StaticPaymentOutputDescriptor_get_channel_value_satoshis(&this_ptr_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_funding_transaction_generated(uint32_t this_arg, int8_tArray temporary_channel_id, int8_tArray funding_transaction) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       unsigned char temporary_channel_id_arr[32];
-       CHECK(*((uint32_t*)temporary_channel_id) == 32);
-       memcpy(temporary_channel_id_arr, (uint8_t*)(temporary_channel_id + 4), 32);
-       unsigned char (*temporary_channel_id_ref)[32] = &temporary_channel_id_arr;
-       LDKTransaction funding_transaction_ref;
-       funding_transaction_ref.datalen = *((uint32_t*)funding_transaction);
-       funding_transaction_ref.data = MALLOC(funding_transaction_ref.datalen, "LDKTransaction Bytes");
-       memcpy(funding_transaction_ref.data, (uint8_t*)(funding_transaction + 4), funding_transaction_ref.datalen);
-       funding_transaction_ref.data_is_owned = true;
-       LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
-       *ret_conv = ChannelManager_funding_transaction_generated(&this_arg_conv, temporary_channel_id_ref, funding_transaction_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_set_channel_value_satoshis(uint32_t this_ptr, int64_t val) {
+       LDKStaticPaymentOutputDescriptor this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       StaticPaymentOutputDescriptor_set_channel_value_satoshis(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelManager_broadcast_node_announcement(uint32_t this_arg, int8_tArray rgb, int8_tArray alias, uint32_tArray addresses) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKThreeBytes rgb_ref;
-       CHECK(*((uint32_t*)rgb) == 3);
-       memcpy(rgb_ref.data, (uint8_t*)(rgb + 4), 3);
-       LDKThirtyTwoBytes alias_ref;
-       CHECK(*((uint32_t*)alias) == 32);
-       memcpy(alias_ref.data, (uint8_t*)(alias + 4), 32);
-       LDKCVec_NetAddressZ addresses_constr;
-       addresses_constr.datalen = *((uint32_t*)addresses);
-       if (addresses_constr.datalen > 0)
-               addresses_constr.data = MALLOC(addresses_constr.datalen * sizeof(LDKNetAddress), "LDKCVec_NetAddressZ Elements");
-       else
-               addresses_constr.data = NULL;
-       uint32_t* addresses_vals = (uint32_t*)(addresses + 4);
-       for (size_t m = 0; m < addresses_constr.datalen; m++) {
-               uint32_t addresses_conv_12 = addresses_vals[m];
-               void* addresses_conv_12_ptr = (void*)(((uint64_t)addresses_conv_12) & ~1);
-               CHECK_ACCESS(addresses_conv_12_ptr);
-               LDKNetAddress addresses_conv_12_conv = *(LDKNetAddress*)(addresses_conv_12_ptr);
-               addresses_constr.data[m] = addresses_conv_12_conv;
+uint32_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_new(uint32_t outpoint_arg, uint32_t output_arg, int8_tArray channel_keys_id_arg, int64_t channel_value_satoshis_arg) {
+       LDKOutPoint outpoint_arg_conv;
+       outpoint_arg_conv.inner = (void*)(outpoint_arg & (~1));
+       outpoint_arg_conv.is_owned = (outpoint_arg & 1) || (outpoint_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(outpoint_arg_conv);
+       outpoint_arg_conv = OutPoint_clone(&outpoint_arg_conv);
+       void* output_arg_ptr = (void*)(((uint64_t)output_arg) & ~1);
+       CHECK_ACCESS(output_arg_ptr);
+       LDKTxOut output_arg_conv = *(LDKTxOut*)(output_arg_ptr);
+       output_arg_conv = TxOut_clone((LDKTxOut*)(((uint64_t)output_arg) & ~1));
+       LDKThirtyTwoBytes channel_keys_id_arg_ref;
+       CHECK(channel_keys_id_arg->arr_len == 32);
+       memcpy(channel_keys_id_arg_ref.data, channel_keys_id_arg->elems, 32);
+       LDKStaticPaymentOutputDescriptor ret_var = StaticPaymentOutputDescriptor_new(outpoint_arg_conv, output_arg_conv, channel_keys_id_arg_ref, channel_value_satoshis_arg);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       ChannelManager_broadcast_node_announcement(&this_arg_conv, rgb_ref, alias_ref, addresses_constr);
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelManager_process_pending_htlc_forwards(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       ChannelManager_process_pending_htlc_forwards(&this_arg_conv);
+static inline uint64_t StaticPaymentOutputDescriptor_clone_ptr(LDKStaticPaymentOutputDescriptor *NONNULL_PTR arg) {
+       LDKStaticPaymentOutputDescriptor ret_var = StaticPaymentOutputDescriptor_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-void  __attribute__((visibility("default"))) TS_ChannelManager_timer_tick_occurred(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       ChannelManager_timer_tick_occurred(&this_arg_conv);
+       return ret_ref;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_ChannelManager_fail_htlc_backwards(uint32_t this_arg, int8_tArray payment_hash) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       unsigned char payment_hash_arr[32];
-       CHECK(*((uint32_t*)payment_hash) == 32);
-       memcpy(payment_hash_arr, (uint8_t*)(payment_hash + 4), 32);
-       unsigned char (*payment_hash_ref)[32] = &payment_hash_arr;
-       jboolean ret_val = ChannelManager_fail_htlc_backwards(&this_arg_conv, payment_hash_ref);
+int64_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_clone_ptr(uint32_t arg) {
+       LDKStaticPaymentOutputDescriptor arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = StaticPaymentOutputDescriptor_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelManager_claim_funds(uint32_t this_arg, int8_tArray payment_preimage) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKThirtyTwoBytes payment_preimage_ref;
-       CHECK(*((uint32_t*)payment_preimage) == 32);
-       memcpy(payment_preimage_ref.data, (uint8_t*)(payment_preimage + 4), 32);
-       jboolean ret_val = ChannelManager_claim_funds(&this_arg_conv, payment_preimage_ref);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_clone(uint32_t orig) {
+       LDKStaticPaymentOutputDescriptor orig_conv;
+       orig_conv.inner = (void*)(orig & (~1));
+       orig_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKStaticPaymentOutputDescriptor ret_var = StaticPaymentOutputDescriptor_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelManager_get_our_node_id(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ChannelManager_get_our_node_id(&this_arg_conv).compressed_form, 33);
+int8_tArray  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_write(uint32_t obj) {
+       LDKStaticPaymentOutputDescriptor obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = StaticPaymentOutputDescriptor_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_create_inbound_payment(uint32_t this_arg, uint32_t min_value_msat, int32_t invoice_expiry_delta_secs) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       void* min_value_msat_ptr = (void*)(((uint64_t)min_value_msat) & ~1);
-       CHECK_ACCESS(min_value_msat_ptr);
-       LDKCOption_u64Z min_value_msat_conv = *(LDKCOption_u64Z*)(min_value_msat_ptr);
-       min_value_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)min_value_msat) & ~1));
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ");
-       *ret_conv = ChannelManager_create_inbound_payment(&this_arg_conv, min_value_msat_conv, invoice_expiry_delta_secs);
+uint32_t  __attribute__((visibility("default"))) TS_StaticPaymentOutputDescriptor_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ), "LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ");
+       *ret_conv = StaticPaymentOutputDescriptor_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_create_inbound_payment_legacy(uint32_t this_arg, uint32_t min_value_msat, int32_t invoice_expiry_delta_secs) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       void* min_value_msat_ptr = (void*)(((uint64_t)min_value_msat) & ~1);
-       CHECK_ACCESS(min_value_msat_ptr);
-       LDKCOption_u64Z min_value_msat_conv = *(LDKCOption_u64Z*)(min_value_msat_ptr);
-       min_value_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)min_value_msat) & ~1));
-       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ");
-       *ret_conv = ChannelManager_create_inbound_payment_legacy(&this_arg_conv, min_value_msat_conv, invoice_expiry_delta_secs);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKSpendableOutputDescriptor this_ptr_conv = *(LDKSpendableOutputDescriptor*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       SpendableOutputDescriptor_free(this_ptr_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_create_inbound_payment_for_hash(uint32_t this_arg, int8_tArray payment_hash, uint32_t min_value_msat, int32_t invoice_expiry_delta_secs) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKThirtyTwoBytes payment_hash_ref;
-       CHECK(*((uint32_t*)payment_hash) == 32);
-       memcpy(payment_hash_ref.data, (uint8_t*)(payment_hash + 4), 32);
-       void* min_value_msat_ptr = (void*)(((uint64_t)min_value_msat) & ~1);
-       CHECK_ACCESS(min_value_msat_ptr);
-       LDKCOption_u64Z min_value_msat_conv = *(LDKCOption_u64Z*)(min_value_msat_ptr);
-       min_value_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)min_value_msat) & ~1));
-       LDKCResult_PaymentSecretNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretNoneZ), "LDKCResult_PaymentSecretNoneZ");
-       *ret_conv = ChannelManager_create_inbound_payment_for_hash(&this_arg_conv, payment_hash_ref, min_value_msat_conv, invoice_expiry_delta_secs);
-       return (uint64_t)ret_conv;
+static inline uint64_t SpendableOutputDescriptor_clone_ptr(LDKSpendableOutputDescriptor *NONNULL_PTR arg) {
+       LDKSpendableOutputDescriptor *ret_copy = MALLOC(sizeof(LDKSpendableOutputDescriptor), "LDKSpendableOutputDescriptor");
+       *ret_copy = SpendableOutputDescriptor_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_clone_ptr(uint32_t arg) {
+       LDKSpendableOutputDescriptor* arg_conv = (LDKSpendableOutputDescriptor*)arg;
+       int64_t ret_val = SpendableOutputDescriptor_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_create_inbound_payment_for_hash_legacy(uint32_t this_arg, int8_tArray payment_hash, uint32_t min_value_msat, int32_t invoice_expiry_delta_secs) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKThirtyTwoBytes payment_hash_ref;
-       CHECK(*((uint32_t*)payment_hash) == 32);
-       memcpy(payment_hash_ref.data, (uint8_t*)(payment_hash + 4), 32);
-       void* min_value_msat_ptr = (void*)(((uint64_t)min_value_msat) & ~1);
-       CHECK_ACCESS(min_value_msat_ptr);
-       LDKCOption_u64Z min_value_msat_conv = *(LDKCOption_u64Z*)(min_value_msat_ptr);
-       min_value_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)min_value_msat) & ~1));
-       LDKCResult_PaymentSecretAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretAPIErrorZ), "LDKCResult_PaymentSecretAPIErrorZ");
-       *ret_conv = ChannelManager_create_inbound_payment_for_hash_legacy(&this_arg_conv, payment_hash_ref, min_value_msat_conv, invoice_expiry_delta_secs);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_clone(uint32_t orig) {
+       LDKSpendableOutputDescriptor* orig_conv = (LDKSpendableOutputDescriptor*)orig;
+       LDKSpendableOutputDescriptor *ret_copy = MALLOC(sizeof(LDKSpendableOutputDescriptor), "LDKSpendableOutputDescriptor");
+       *ret_copy = SpendableOutputDescriptor_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_get_payment_preimage(uint32_t this_arg, int8_tArray payment_hash, int8_tArray payment_secret) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKThirtyTwoBytes payment_hash_ref;
-       CHECK(*((uint32_t*)payment_hash) == 32);
-       memcpy(payment_hash_ref.data, (uint8_t*)(payment_hash + 4), 32);
-       LDKThirtyTwoBytes payment_secret_ref;
-       CHECK(*((uint32_t*)payment_secret) == 32);
-       memcpy(payment_secret_ref.data, (uint8_t*)(payment_secret + 4), 32);
-       LDKCResult_PaymentPreimageAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentPreimageAPIErrorZ), "LDKCResult_PaymentPreimageAPIErrorZ");
-       *ret_conv = ChannelManager_get_payment_preimage(&this_arg_conv, payment_hash_ref, payment_secret_ref);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_static_output(uint32_t outpoint, uint32_t output) {
+       LDKOutPoint outpoint_conv;
+       outpoint_conv.inner = (void*)(outpoint & (~1));
+       outpoint_conv.is_owned = (outpoint & 1) || (outpoint == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(outpoint_conv);
+       outpoint_conv = OutPoint_clone(&outpoint_conv);
+       void* output_ptr = (void*)(((uint64_t)output) & ~1);
+       CHECK_ACCESS(output_ptr);
+       LDKTxOut output_conv = *(LDKTxOut*)(output_ptr);
+       output_conv = TxOut_clone((LDKTxOut*)(((uint64_t)output) & ~1));
+       LDKSpendableOutputDescriptor *ret_copy = MALLOC(sizeof(LDKSpendableOutputDescriptor), "LDKSpendableOutputDescriptor");
+       *ret_copy = SpendableOutputDescriptor_static_output(outpoint_conv, output_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_as_MessageSendEventsProvider(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKMessageSendEventsProvider* ret_ret = MALLOC(sizeof(LDKMessageSendEventsProvider), "LDKMessageSendEventsProvider");
-       *ret_ret = ChannelManager_as_MessageSendEventsProvider(&this_arg_conv);
-       return (uint64_t)ret_ret;
+uint32_t  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_delayed_payment_output(uint32_t a) {
+       LDKDelayedPaymentOutputDescriptor a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = (a & 1) || (a == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       a_conv = DelayedPaymentOutputDescriptor_clone(&a_conv);
+       LDKSpendableOutputDescriptor *ret_copy = MALLOC(sizeof(LDKSpendableOutputDescriptor), "LDKSpendableOutputDescriptor");
+       *ret_copy = SpendableOutputDescriptor_delayed_payment_output(a_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_as_EventsProvider(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKEventsProvider* ret_ret = MALLOC(sizeof(LDKEventsProvider), "LDKEventsProvider");
-       *ret_ret = ChannelManager_as_EventsProvider(&this_arg_conv);
-       return (uint64_t)ret_ret;
+uint32_t  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_static_payment_output(uint32_t a) {
+       LDKStaticPaymentOutputDescriptor a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = (a & 1) || (a == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       a_conv = StaticPaymentOutputDescriptor_clone(&a_conv);
+       LDKSpendableOutputDescriptor *ret_copy = MALLOC(sizeof(LDKSpendableOutputDescriptor), "LDKSpendableOutputDescriptor");
+       *ret_copy = SpendableOutputDescriptor_static_payment_output(a_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_as_Listen(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKListen* ret_ret = MALLOC(sizeof(LDKListen), "LDKListen");
-       *ret_ret = ChannelManager_as_Listen(&this_arg_conv);
-       return (uint64_t)ret_ret;
+int8_tArray  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_write(uint32_t obj) {
+       LDKSpendableOutputDescriptor* obj_conv = (LDKSpendableOutputDescriptor*)obj;
+       LDKCVec_u8Z ret_var = SpendableOutputDescriptor_write(obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_as_Confirm(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKConfirm* ret_ret = MALLOC(sizeof(LDKConfirm), "LDKConfirm");
-       *ret_ret = ChannelManager_as_Confirm(&this_arg_conv);
-       return (uint64_t)ret_ret;
+uint32_t  __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_SpendableOutputDescriptorDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SpendableOutputDescriptorDecodeErrorZ), "LDKCResult_SpendableOutputDescriptorDecodeErrorZ");
+       *ret_conv = SpendableOutputDescriptor_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_BaseSign_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKBaseSign this_ptr_conv = *(LDKBaseSign*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       BaseSign_free(this_ptr_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelManager_await_persistable_update_timeout(uint32_t this_arg, int64_t max_wait) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       jboolean ret_val = ChannelManager_await_persistable_update_timeout(&this_arg_conv, max_wait);
-       return ret_val;
+static inline uint64_t Sign_clone_ptr(LDKSign *NONNULL_PTR arg) {
+       LDKSign* ret_ret = MALLOC(sizeof(LDKSign), "LDKSign");
+       *ret_ret = Sign_clone(arg);
+       return (uint64_t)ret_ret;
 }
-
-void  __attribute__((visibility("default"))) TS_ChannelManager_await_persistable_update(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       ChannelManager_await_persistable_update(&this_arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_Sign_clone_ptr(uint32_t arg) {
+       void* arg_ptr = (void*)(((uint64_t)arg) & ~1);
+       if (!(arg & 1)) { CHECK_ACCESS(arg_ptr); }
+       LDKSign* arg_conv = (LDKSign*)arg_ptr;
+       int64_t ret_val = Sign_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_current_best_block(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKBestBlock ret_var = ChannelManager_current_best_block(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_Sign_clone(uint32_t orig) {
+       void* orig_ptr = (void*)(((uint64_t)orig) & ~1);
+       if (!(orig & 1)) { CHECK_ACCESS(orig_ptr); }
+       LDKSign* orig_conv = (LDKSign*)orig_ptr;
+       LDKSign* ret_ret = MALLOC(sizeof(LDKSign), "LDKSign");
+       *ret_ret = Sign_clone(orig_conv);
+       return (uint64_t)ret_ret;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_as_ChannelMessageHandler(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKChannelMessageHandler* ret_ret = MALLOC(sizeof(LDKChannelMessageHandler), "LDKChannelMessageHandler");
-       *ret_ret = ChannelManager_as_ChannelMessageHandler(&this_arg_conv);
-       return (uint64_t)ret_ret;
+void  __attribute__((visibility("default"))) TS_Sign_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKSign this_ptr_conv = *(LDKSign*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       Sign_free(this_ptr_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelManager_write(uint32_t obj) {
-       LDKChannelManager obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ChannelManager_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_KeysInterface_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKKeysInterface this_ptr_conv = *(LDKKeysInterface*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       KeysInterface_free(this_ptr_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_free(uint32_t this_obj) {
-       LDKChannelManagerReadArgs this_obj_conv;
+void  __attribute__((visibility("default"))) TS_InMemorySigner_free(uint32_t this_obj) {
+       LDKInMemorySigner this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelManagerReadArgs_free(this_obj_conv);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_get_keys_manager(uint32_t this_ptr) {
-       LDKChannelManagerReadArgs this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       // WARNING: This object doesn't live past this scope, needs clone!
-       uint64_t ret_ret = ((uint64_t)ChannelManagerReadArgs_get_keys_manager(&this_ptr_conv)) | 1;
-       return ret_ret;
-}
-
-void  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_set_keys_manager(uint32_t this_ptr, uint32_t val) {
-       LDKChannelManagerReadArgs this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKKeysInterface val_conv = *(LDKKeysInterface*)(val_ptr);
-       ChannelManagerReadArgs_set_keys_manager(&this_ptr_conv, val_conv);
+       InMemorySigner_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_get_fee_estimator(uint32_t this_ptr) {
-       LDKChannelManagerReadArgs this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_InMemorySigner_get_funding_key(uint32_t this_ptr) {
+       LDKInMemorySigner this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       // WARNING: This object doesn't live past this scope, needs clone!
-       uint64_t ret_ret = ((uint64_t)ChannelManagerReadArgs_get_fee_estimator(&this_ptr_conv)) | 1;
-       return ret_ret;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *InMemorySigner_get_funding_key(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_set_fee_estimator(uint32_t this_ptr, uint32_t val) {
-       LDKChannelManagerReadArgs this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_InMemorySigner_set_funding_key(uint32_t this_ptr, int8_tArray val) {
+       LDKInMemorySigner this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKFeeEstimator val_conv = *(LDKFeeEstimator*)(val_ptr);
-       ChannelManagerReadArgs_set_fee_estimator(&this_ptr_conv, val_conv);
+       LDKSecretKey val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.bytes, val->elems, 32);
+       InMemorySigner_set_funding_key(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_get_chain_monitor(uint32_t this_ptr) {
-       LDKChannelManagerReadArgs this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_InMemorySigner_get_revocation_base_key(uint32_t this_ptr) {
+       LDKInMemorySigner this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       // WARNING: This object doesn't live past this scope, needs clone!
-       uint64_t ret_ret = ((uint64_t)ChannelManagerReadArgs_get_chain_monitor(&this_ptr_conv)) | 1;
-       return ret_ret;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *InMemorySigner_get_revocation_base_key(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_set_chain_monitor(uint32_t this_ptr, uint32_t val) {
-       LDKChannelManagerReadArgs this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_InMemorySigner_set_revocation_base_key(uint32_t this_ptr, int8_tArray val) {
+       LDKInMemorySigner this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKWatch val_conv = *(LDKWatch*)(val_ptr);
-       ChannelManagerReadArgs_set_chain_monitor(&this_ptr_conv, val_conv);
+       LDKSecretKey val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.bytes, val->elems, 32);
+       InMemorySigner_set_revocation_base_key(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_get_tx_broadcaster(uint32_t this_ptr) {
-       LDKChannelManagerReadArgs this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_InMemorySigner_get_payment_key(uint32_t this_ptr) {
+       LDKInMemorySigner this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       // WARNING: This object doesn't live past this scope, needs clone!
-       uint64_t ret_ret = ((uint64_t)ChannelManagerReadArgs_get_tx_broadcaster(&this_ptr_conv)) | 1;
-       return ret_ret;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *InMemorySigner_get_payment_key(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_set_tx_broadcaster(uint32_t this_ptr, uint32_t val) {
-       LDKChannelManagerReadArgs this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_InMemorySigner_set_payment_key(uint32_t this_ptr, int8_tArray val) {
+       LDKInMemorySigner this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKBroadcasterInterface val_conv = *(LDKBroadcasterInterface*)(val_ptr);
-       ChannelManagerReadArgs_set_tx_broadcaster(&this_ptr_conv, val_conv);
+       LDKSecretKey val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.bytes, val->elems, 32);
+       InMemorySigner_set_payment_key(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_get_logger(uint32_t this_ptr) {
-       LDKChannelManagerReadArgs this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_InMemorySigner_get_delayed_payment_base_key(uint32_t this_ptr) {
+       LDKInMemorySigner this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       // WARNING: This object doesn't live past this scope, needs clone!
-       uint64_t ret_ret = ((uint64_t)ChannelManagerReadArgs_get_logger(&this_ptr_conv)) | 1;
-       return ret_ret;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *InMemorySigner_get_delayed_payment_base_key(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_set_logger(uint32_t this_ptr, uint32_t val) {
-       LDKChannelManagerReadArgs this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_InMemorySigner_set_delayed_payment_base_key(uint32_t this_ptr, int8_tArray val) {
+       LDKInMemorySigner this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKLogger val_conv = *(LDKLogger*)(val_ptr);
-       ChannelManagerReadArgs_set_logger(&this_ptr_conv, val_conv);
+       LDKSecretKey val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.bytes, val->elems, 32);
+       InMemorySigner_set_delayed_payment_base_key(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_get_default_config(uint32_t this_ptr) {
-       LDKChannelManagerReadArgs this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_InMemorySigner_get_htlc_base_key(uint32_t this_ptr) {
+       LDKInMemorySigner this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKUserConfig ret_var = ChannelManagerReadArgs_get_default_config(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *InMemorySigner_get_htlc_base_key(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_set_default_config(uint32_t this_ptr, uint32_t val) {
-       LDKChannelManagerReadArgs this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_InMemorySigner_set_htlc_base_key(uint32_t this_ptr, int8_tArray val) {
+       LDKInMemorySigner this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKUserConfig val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = UserConfig_clone(&val_conv);
-       ChannelManagerReadArgs_set_default_config(&this_ptr_conv, val_conv);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_new(uint32_t keys_manager, uint32_t fee_estimator, uint32_t chain_monitor, uint32_t tx_broadcaster, uint32_t logger, uint32_t default_config, uint32_tArray channel_monitors) {
-       void* keys_manager_ptr = (void*)(((uint64_t)keys_manager) & ~1);
-       CHECK_ACCESS(keys_manager_ptr);
-       LDKKeysInterface keys_manager_conv = *(LDKKeysInterface*)(keys_manager_ptr);
-       void* fee_estimator_ptr = (void*)(((uint64_t)fee_estimator) & ~1);
-       CHECK_ACCESS(fee_estimator_ptr);
-       LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(fee_estimator_ptr);
-       void* chain_monitor_ptr = (void*)(((uint64_t)chain_monitor) & ~1);
-       CHECK_ACCESS(chain_monitor_ptr);
-       LDKWatch chain_monitor_conv = *(LDKWatch*)(chain_monitor_ptr);
-       void* tx_broadcaster_ptr = (void*)(((uint64_t)tx_broadcaster) & ~1);
-       CHECK_ACCESS(tx_broadcaster_ptr);
-       LDKBroadcasterInterface tx_broadcaster_conv = *(LDKBroadcasterInterface*)(tx_broadcaster_ptr);
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       CHECK_ACCESS(logger_ptr);
-       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
-       LDKUserConfig default_config_conv;
-       default_config_conv.inner = (void*)(default_config & (~1));
-       default_config_conv.is_owned = (default_config & 1) || (default_config == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(default_config_conv);
-       default_config_conv = UserConfig_clone(&default_config_conv);
-       LDKCVec_ChannelMonitorZ channel_monitors_constr;
-       channel_monitors_constr.datalen = *((uint32_t*)channel_monitors);
-       if (channel_monitors_constr.datalen > 0)
-               channel_monitors_constr.data = MALLOC(channel_monitors_constr.datalen * sizeof(LDKChannelMonitor), "LDKCVec_ChannelMonitorZ Elements");
-       else
-               channel_monitors_constr.data = NULL;
-       uint32_t* channel_monitors_vals = (uint32_t*)(channel_monitors + 4);
-       for (size_t q = 0; q < channel_monitors_constr.datalen; q++) {
-               uint32_t channel_monitors_conv_16 = channel_monitors_vals[q];
-               LDKChannelMonitor channel_monitors_conv_16_conv;
-               channel_monitors_conv_16_conv.inner = (void*)(channel_monitors_conv_16 & (~1));
-               channel_monitors_conv_16_conv.is_owned = (channel_monitors_conv_16 & 1) || (channel_monitors_conv_16 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_monitors_conv_16_conv);
-               channel_monitors_constr.data[q] = channel_monitors_conv_16_conv;
-       }
-       LDKChannelManagerReadArgs ret_var = ChannelManagerReadArgs_new(keys_manager_conv, fee_estimator_conv, chain_monitor_conv, tx_broadcaster_conv, logger_conv, default_config_conv, channel_monitors_constr);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       LDKSecretKey val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.bytes, val->elems, 32);
+       InMemorySigner_set_htlc_base_key(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelManagerZ_read(int8_tArray ser, uint32_t arg) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKChannelManagerReadArgs arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = (arg & 1) || (arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       // Warning: we need a move here but no clone is available for LDKChannelManagerReadArgs
-       LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ");
-       *ret_conv = C2Tuple_BlockHashChannelManagerZ_read(ser_ref, arg_conv);
-       return (uint64_t)ret_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_InMemorySigner_get_commitment_seed(uint32_t this_ptr) {
+       LDKInMemorySigner this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *InMemorySigner_get_commitment_seed(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_DecodeError_free(uint32_t this_obj) {
-       LDKDecodeError this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       DecodeError_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_InMemorySigner_set_commitment_seed(uint32_t this_ptr, int8_tArray val) {
+       LDKInMemorySigner this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       InMemorySigner_set_commitment_seed(&this_ptr_conv, val_ref);
 }
 
-static inline uint64_t DecodeError_clone_ptr(LDKDecodeError *NONNULL_PTR arg) {
-       LDKDecodeError ret_var = DecodeError_clone(arg);
+static inline uint64_t InMemorySigner_clone_ptr(LDKInMemorySigner *NONNULL_PTR arg) {
+       LDKInMemorySigner ret_var = InMemorySigner_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -22492,21 +20057,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_DecodeError_clone_ptr(uint32_t arg) {
-       LDKDecodeError arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_InMemorySigner_clone_ptr(uint32_t arg) {
+       LDKInMemorySigner arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = DecodeError_clone_ptr(&arg_conv);
+       int64_t ret_val = InMemorySigner_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_DecodeError_clone(uint32_t orig) {
-       LDKDecodeError orig_conv;
+uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_clone(uint32_t orig) {
+       LDKInMemorySigner orig_conv;
        orig_conv.inner = (void*)(orig & (~1));
        orig_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKDecodeError ret_var = DecodeError_clone(&orig_conv);
+       LDKInMemorySigner ret_var = InMemorySigner_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -22518,20 +20083,46 @@ uint32_t  __attribute__((visibility("default"))) TS_DecodeError_clone(uint32_t o
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_Init_free(uint32_t this_obj) {
-       LDKInit this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       Init_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_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, int8_tArray channel_keys_id) {
+       LDKSecretKey funding_key_ref;
+       CHECK(funding_key->arr_len == 32);
+       memcpy(funding_key_ref.bytes, funding_key->elems, 32);
+       LDKSecretKey revocation_base_key_ref;
+       CHECK(revocation_base_key->arr_len == 32);
+       memcpy(revocation_base_key_ref.bytes, revocation_base_key->elems, 32);
+       LDKSecretKey payment_key_ref;
+       CHECK(payment_key->arr_len == 32);
+       memcpy(payment_key_ref.bytes, payment_key->elems, 32);
+       LDKSecretKey delayed_payment_base_key_ref;
+       CHECK(delayed_payment_base_key->arr_len == 32);
+       memcpy(delayed_payment_base_key_ref.bytes, delayed_payment_base_key->elems, 32);
+       LDKSecretKey htlc_base_key_ref;
+       CHECK(htlc_base_key->arr_len == 32);
+       memcpy(htlc_base_key_ref.bytes, htlc_base_key->elems, 32);
+       LDKThirtyTwoBytes commitment_seed_ref;
+       CHECK(commitment_seed->arr_len == 32);
+       memcpy(commitment_seed_ref.data, commitment_seed->elems, 32);
+       LDKThirtyTwoBytes channel_keys_id_ref;
+       CHECK(channel_keys_id->arr_len == 32);
+       memcpy(channel_keys_id_ref.data, channel_keys_id->elems, 32);
+       LDKInMemorySigner ret_var = InMemorySigner_new(funding_key_ref, revocation_base_key_ref, payment_key_ref, delayed_payment_base_key_ref, htlc_base_key_ref, commitment_seed_ref, channel_value_satoshis, channel_keys_id_ref);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Init_get_features(uint32_t this_ptr) {
-       LDKInit this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKInitFeatures ret_var = Init_get_features(&this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_counterparty_pubkeys(uint32_t this_arg) {
+       LDKInMemorySigner this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKChannelPublicKeys ret_var = InMemorySigner_counterparty_pubkeys(&this_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -22543,26 +20134,39 @@ uint32_t  __attribute__((visibility("default"))) TS_Init_get_features(uint32_t t
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_Init_set_features(uint32_t this_ptr, uint32_t val) {
-       LDKInit this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKInitFeatures val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = InitFeatures_clone(&val_conv);
-       Init_set_features(&this_ptr_conv, val_conv);
+int16_t  __attribute__((visibility("default"))) TS_InMemorySigner_counterparty_selected_contest_delay(uint32_t this_arg) {
+       LDKInMemorySigner this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int16_t ret_val = InMemorySigner_counterparty_selected_contest_delay(&this_arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Init_new(uint32_t features_arg) {
-       LDKInitFeatures features_arg_conv;
-       features_arg_conv.inner = (void*)(features_arg & (~1));
-       features_arg_conv.is_owned = (features_arg & 1) || (features_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(features_arg_conv);
-       features_arg_conv = InitFeatures_clone(&features_arg_conv);
-       LDKInit ret_var = Init_new(features_arg_conv);
+int16_t  __attribute__((visibility("default"))) TS_InMemorySigner_holder_selected_contest_delay(uint32_t this_arg) {
+       LDKInMemorySigner this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int16_t ret_val = InMemorySigner_holder_selected_contest_delay(&this_arg_conv);
+       return ret_val;
+}
+
+jboolean  __attribute__((visibility("default"))) TS_InMemorySigner_is_outbound(uint32_t this_arg) {
+       LDKInMemorySigner this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       jboolean ret_val = InMemorySigner_is_outbound(&this_arg_conv);
+       return ret_val;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_funding_outpoint(uint32_t this_arg) {
+       LDKInMemorySigner this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKOutPoint ret_var = InMemorySigner_funding_outpoint(&this_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -22574,33 +20178,146 @@ uint32_t  __attribute__((visibility("default"))) TS_Init_new(uint32_t features_a
        return ret_ref;
 }
 
-static inline uint64_t Init_clone_ptr(LDKInit *NONNULL_PTR arg) {
-       LDKInit ret_var = Init_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
+uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_get_channel_parameters(uint32_t this_arg) {
+       LDKInMemorySigner this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKChannelTransactionParameters ret_var = InMemorySigner_get_channel_parameters(&this_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_Init_clone_ptr(uint32_t arg) {
-       LDKInit arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = Init_clone_ptr(&arg_conv);
+
+jboolean  __attribute__((visibility("default"))) TS_InMemorySigner_opt_anchors(uint32_t this_arg) {
+       LDKInMemorySigner this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       jboolean ret_val = InMemorySigner_opt_anchors(&this_arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Init_clone(uint32_t orig) {
-       LDKInit orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKInit ret_var = Init_clone(&orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_sign_counterparty_payment_input(uint32_t this_arg, int8_tArray spend_tx, int64_t input_idx, uint32_t descriptor) {
+       LDKInMemorySigner this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKTransaction spend_tx_ref;
+       spend_tx_ref.datalen = spend_tx->arr_len;
+       spend_tx_ref.data = MALLOC(spend_tx_ref.datalen, "LDKTransaction Bytes");
+       memcpy(spend_tx_ref.data, spend_tx->elems, spend_tx_ref.datalen);
+       spend_tx_ref.data_is_owned = true;
+       LDKStaticPaymentOutputDescriptor descriptor_conv;
+       descriptor_conv.inner = (void*)(descriptor & (~1));
+       descriptor_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(descriptor_conv);
+       LDKCResult_CVec_CVec_u8ZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ), "LDKCResult_CVec_CVec_u8ZZNoneZ");
+       *ret_conv = InMemorySigner_sign_counterparty_payment_input(&this_arg_conv, spend_tx_ref, input_idx, &descriptor_conv);
+       return (uint64_t)ret_conv;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_sign_dynamic_p2wsh_input(uint32_t this_arg, int8_tArray spend_tx, int64_t input_idx, uint32_t descriptor) {
+       LDKInMemorySigner this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKTransaction spend_tx_ref;
+       spend_tx_ref.datalen = spend_tx->arr_len;
+       spend_tx_ref.data = MALLOC(spend_tx_ref.datalen, "LDKTransaction Bytes");
+       memcpy(spend_tx_ref.data, spend_tx->elems, spend_tx_ref.datalen);
+       spend_tx_ref.data_is_owned = true;
+       LDKDelayedPaymentOutputDescriptor descriptor_conv;
+       descriptor_conv.inner = (void*)(descriptor & (~1));
+       descriptor_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(descriptor_conv);
+       LDKCResult_CVec_CVec_u8ZZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_CVec_u8ZZNoneZ), "LDKCResult_CVec_CVec_u8ZZNoneZ");
+       *ret_conv = InMemorySigner_sign_dynamic_p2wsh_input(&this_arg_conv, spend_tx_ref, input_idx, &descriptor_conv);
+       return (uint64_t)ret_conv;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_as_BaseSign(uint32_t this_arg) {
+       LDKInMemorySigner this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKBaseSign* ret_ret = MALLOC(sizeof(LDKBaseSign), "LDKBaseSign");
+       *ret_ret = InMemorySigner_as_BaseSign(&this_arg_conv);
+       return (uint64_t)ret_ret;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_as_Sign(uint32_t this_arg) {
+       LDKInMemorySigner this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKSign* ret_ret = MALLOC(sizeof(LDKSign), "LDKSign");
+       *ret_ret = InMemorySigner_as_Sign(&this_arg_conv);
+       return (uint64_t)ret_ret;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_InMemorySigner_write(uint32_t obj) {
+       LDKInMemorySigner obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = InMemorySigner_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_InMemorySigner_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_InMemorySignerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InMemorySignerDecodeErrorZ), "LDKCResult_InMemorySignerDecodeErrorZ");
+       *ret_conv = InMemorySigner_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_KeysManager_free(uint32_t this_obj) {
+       LDKKeysManager this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       KeysManager_free(this_obj_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_KeysManager_new(int8_tArray seed, int64_t starting_time_secs, int32_t starting_time_nanos) {
+       unsigned char seed_arr[32];
+       CHECK(seed->arr_len == 32);
+       memcpy(seed_arr, seed->elems, 32);
+       unsigned char (*seed_ref)[32] = &seed_arr;
+       LDKKeysManager ret_var = KeysManager_new(seed_ref, starting_time_secs, starting_time_nanos);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_KeysManager_derive_channel_keys(uint32_t this_arg, int64_t channel_value_satoshis, int8_tArray params) {
+       LDKKeysManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       unsigned char params_arr[32];
+       CHECK(params->arr_len == 32);
+       memcpy(params_arr, params->elems, 32);
+       unsigned char (*params_ref)[32] = &params_arr;
+       LDKInMemorySigner ret_var = KeysManager_derive_channel_keys(&this_arg_conv, channel_value_satoshis, params_ref);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -22612,61 +20329,132 @@ uint32_t  __attribute__((visibility("default"))) TS_Init_clone(uint32_t orig) {
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ErrorMessage_free(uint32_t this_obj) {
-       LDKErrorMessage this_obj_conv;
+uint32_t  __attribute__((visibility("default"))) TS_KeysManager_spend_spendable_outputs(uint32_t this_arg, uint32_tArray descriptors, uint32_tArray outputs, int8_tArray change_destination_script, int32_t feerate_sat_per_1000_weight) {
+       LDKKeysManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKCVec_SpendableOutputDescriptorZ descriptors_constr;
+       descriptors_constr.datalen = descriptors->arr_len;
+       if (descriptors_constr.datalen > 0)
+               descriptors_constr.data = MALLOC(descriptors_constr.datalen * sizeof(LDKSpendableOutputDescriptor), "LDKCVec_SpendableOutputDescriptorZ Elements");
+       else
+               descriptors_constr.data = NULL;
+       uint32_t* descriptors_vals = descriptors->elems;
+       for (size_t b = 0; b < descriptors_constr.datalen; b++) {
+               uint32_t descriptors_conv_27 = descriptors_vals[b];
+               void* descriptors_conv_27_ptr = (void*)(((uint64_t)descriptors_conv_27) & ~1);
+               CHECK_ACCESS(descriptors_conv_27_ptr);
+               LDKSpendableOutputDescriptor descriptors_conv_27_conv = *(LDKSpendableOutputDescriptor*)(descriptors_conv_27_ptr);
+               descriptors_conv_27_conv = SpendableOutputDescriptor_clone((LDKSpendableOutputDescriptor*)(((uint64_t)descriptors_conv_27) & ~1));
+               descriptors_constr.data[b] = descriptors_conv_27_conv;
+       }
+       LDKCVec_TxOutZ outputs_constr;
+       outputs_constr.datalen = outputs->arr_len;
+       if (outputs_constr.datalen > 0)
+               outputs_constr.data = MALLOC(outputs_constr.datalen * sizeof(LDKTxOut), "LDKCVec_TxOutZ Elements");
+       else
+               outputs_constr.data = NULL;
+       uint32_t* outputs_vals = outputs->elems;
+       for (size_t h = 0; h < outputs_constr.datalen; h++) {
+               uint32_t outputs_conv_7 = outputs_vals[h];
+               void* outputs_conv_7_ptr = (void*)(((uint64_t)outputs_conv_7) & ~1);
+               CHECK_ACCESS(outputs_conv_7_ptr);
+               LDKTxOut outputs_conv_7_conv = *(LDKTxOut*)(outputs_conv_7_ptr);
+               outputs_conv_7_conv = TxOut_clone((LDKTxOut*)(((uint64_t)outputs_conv_7) & ~1));
+               outputs_constr.data[h] = outputs_conv_7_conv;
+       }
+       LDKCVec_u8Z change_destination_script_ref;
+       change_destination_script_ref.datalen = change_destination_script->arr_len;
+       change_destination_script_ref.data = MALLOC(change_destination_script_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(change_destination_script_ref.data, change_destination_script->elems, change_destination_script_ref.datalen);
+       LDKCResult_TransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TransactionNoneZ), "LDKCResult_TransactionNoneZ");
+       *ret_conv = KeysManager_spend_spendable_outputs(&this_arg_conv, descriptors_constr, outputs_constr, change_destination_script_ref, feerate_sat_per_1000_weight);
+       return (uint64_t)ret_conv;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_KeysManager_as_KeysInterface(uint32_t this_arg) {
+       LDKKeysManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKKeysInterface* ret_ret = MALLOC(sizeof(LDKKeysInterface), "LDKKeysInterface");
+       *ret_ret = KeysManager_as_KeysInterface(&this_arg_conv);
+       return (uint64_t)ret_ret;
+}
+
+void  __attribute__((visibility("default"))) TS_ChannelManager_free(uint32_t this_obj) {
+       LDKChannelManager this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ErrorMessage_free(this_obj_conv);
+       ChannelManager_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ErrorMessage_get_channel_id(uint32_t this_ptr) {
-       LDKErrorMessage this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChainParameters_free(uint32_t this_obj) {
+       LDKChainParameters this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       ChainParameters_free(this_obj_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ChainParameters_get_network(uint32_t this_ptr) {
+       LDKChainParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *ErrorMessage_get_channel_id(&this_ptr_conv), 32);
-       return ret_arr;
+       uint32_t ret_conv = LDKNetwork_to_js(ChainParameters_get_network(&this_ptr_conv));
+       return ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_ErrorMessage_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKErrorMessage this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChainParameters_set_network(uint32_t this_ptr, uint32_t val) {
+       LDKChainParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       ErrorMessage_set_channel_id(&this_ptr_conv, val_ref);
+       LDKNetwork val_conv = LDKNetwork_from_js(val);
+       ChainParameters_set_network(&this_ptr_conv, val_conv);
 }
 
-jstring  __attribute__((visibility("default"))) TS_ErrorMessage_get_data(uint32_t this_ptr) {
-       LDKErrorMessage this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChainParameters_get_best_block(uint32_t this_ptr) {
+       LDKChainParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKStr ret_str = ErrorMessage_get_data(&this_ptr_conv);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
+       LDKBestBlock ret_var = ChainParameters_get_best_block(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ErrorMessage_set_data(uint32_t this_ptr, jstring val) {
-       LDKErrorMessage this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChainParameters_set_best_block(uint32_t this_ptr, uint32_t val) {
+       LDKChainParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKStr val_conv = str_ref_to_owned_c(val);
-       ErrorMessage_set_data(&this_ptr_conv, val_conv);
+       LDKBestBlock val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = BestBlock_clone(&val_conv);
+       ChainParameters_set_best_block(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ErrorMessage_new(int8_tArray channel_id_arg, jstring data_arg) {
-       LDKThirtyTwoBytes channel_id_arg_ref;
-       CHECK(*((uint32_t*)channel_id_arg) == 32);
-       memcpy(channel_id_arg_ref.data, (uint8_t*)(channel_id_arg + 4), 32);
-       LDKStr data_arg_conv = str_ref_to_owned_c(data_arg);
-       LDKErrorMessage ret_var = ErrorMessage_new(channel_id_arg_ref, data_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ChainParameters_new(uint32_t network_arg, uint32_t best_block_arg) {
+       LDKNetwork network_arg_conv = LDKNetwork_from_js(network_arg);
+       LDKBestBlock best_block_arg_conv;
+       best_block_arg_conv.inner = (void*)(best_block_arg & (~1));
+       best_block_arg_conv.is_owned = (best_block_arg & 1) || (best_block_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(best_block_arg_conv);
+       best_block_arg_conv = BestBlock_clone(&best_block_arg_conv);
+       LDKChainParameters ret_var = ChainParameters_new(network_arg_conv, best_block_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -22678,8 +20466,8 @@ uint32_t  __attribute__((visibility("default"))) TS_ErrorMessage_new(int8_tArray
        return ret_ref;
 }
 
-static inline uint64_t ErrorMessage_clone_ptr(LDKErrorMessage *NONNULL_PTR arg) {
-       LDKErrorMessage ret_var = ErrorMessage_clone(arg);
+static inline uint64_t ChainParameters_clone_ptr(LDKChainParameters *NONNULL_PTR arg) {
+       LDKChainParameters ret_var = ChainParameters_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -22690,21 +20478,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_ErrorMessage_clone_ptr(uint32_t arg) {
-       LDKErrorMessage arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChainParameters_clone_ptr(uint32_t arg) {
+       LDKChainParameters arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ErrorMessage_clone_ptr(&arg_conv);
+       int64_t ret_val = ChainParameters_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ErrorMessage_clone(uint32_t orig) {
-       LDKErrorMessage orig_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChainParameters_clone(uint32_t orig) {
+       LDKChainParameters orig_conv;
        orig_conv.inner = (void*)(orig & (~1));
        orig_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKErrorMessage ret_var = ErrorMessage_clone(&orig_conv);
+       LDKChainParameters ret_var = ChainParameters_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -22716,126 +20504,67 @@ uint32_t  __attribute__((visibility("default"))) TS_ErrorMessage_clone(uint32_t
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_Ping_free(uint32_t this_obj) {
-       LDKPing this_obj_conv;
+void  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_free(uint32_t this_obj) {
+       LDKCounterpartyForwardingInfo this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       Ping_free(this_obj_conv);
+       CounterpartyForwardingInfo_free(this_obj_conv);
 }
 
-int16_t  __attribute__((visibility("default"))) TS_Ping_get_ponglen(uint32_t this_ptr) {
-       LDKPing this_ptr_conv;
+int32_t  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_get_fee_base_msat(uint32_t this_ptr) {
+       LDKCounterpartyForwardingInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = Ping_get_ponglen(&this_ptr_conv);
+       int32_t ret_val = CounterpartyForwardingInfo_get_fee_base_msat(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_Ping_set_ponglen(uint32_t this_ptr, int16_t val) {
-       LDKPing this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_set_fee_base_msat(uint32_t this_ptr, int32_t val) {
+       LDKCounterpartyForwardingInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       Ping_set_ponglen(&this_ptr_conv, val);
+       CounterpartyForwardingInfo_set_fee_base_msat(&this_ptr_conv, val);
 }
 
-int16_t  __attribute__((visibility("default"))) TS_Ping_get_byteslen(uint32_t this_ptr) {
-       LDKPing this_ptr_conv;
+int32_t  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_get_fee_proportional_millionths(uint32_t this_ptr) {
+       LDKCounterpartyForwardingInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = Ping_get_byteslen(&this_ptr_conv);
+       int32_t ret_val = CounterpartyForwardingInfo_get_fee_proportional_millionths(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_Ping_set_byteslen(uint32_t this_ptr, int16_t val) {
-       LDKPing this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_set_fee_proportional_millionths(uint32_t this_ptr, int32_t val) {
+       LDKCounterpartyForwardingInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       Ping_set_byteslen(&this_ptr_conv, val);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_Ping_new(int16_t ponglen_arg, int16_t byteslen_arg) {
-       LDKPing ret_var = Ping_new(ponglen_arg, byteslen_arg);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
-}
-
-static inline uint64_t Ping_clone_ptr(LDKPing *NONNULL_PTR arg) {
-       LDKPing ret_var = Ping_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_Ping_clone_ptr(uint32_t arg) {
-       LDKPing arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = Ping_clone_ptr(&arg_conv);
-       return ret_val;
-}
-
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKPing ret_var = Ping_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
-}
-
-void  __attribute__((visibility("default"))) TS_Pong_free(uint32_t this_obj) {
-       LDKPong this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       Pong_free(this_obj_conv);
+       CounterpartyForwardingInfo_set_fee_proportional_millionths(&this_ptr_conv, val);
 }
 
-int16_t  __attribute__((visibility("default"))) TS_Pong_get_byteslen(uint32_t this_ptr) {
-       LDKPong this_ptr_conv;
+int16_t  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_get_cltv_expiry_delta(uint32_t this_ptr) {
+       LDKCounterpartyForwardingInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = Pong_get_byteslen(&this_ptr_conv);
+       int16_t ret_val = CounterpartyForwardingInfo_get_cltv_expiry_delta(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_Pong_set_byteslen(uint32_t this_ptr, int16_t val) {
-       LDKPong this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_set_cltv_expiry_delta(uint32_t this_ptr, int16_t val) {
+       LDKCounterpartyForwardingInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       Pong_set_byteslen(&this_ptr_conv, val);
+       CounterpartyForwardingInfo_set_cltv_expiry_delta(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Pong_new(int16_t byteslen_arg) {
-       LDKPong ret_var = Pong_new(byteslen_arg);
+uint32_t  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_new(int32_t fee_base_msat_arg, int32_t fee_proportional_millionths_arg, int16_t cltv_expiry_delta_arg) {
+       LDKCounterpartyForwardingInfo ret_var = CounterpartyForwardingInfo_new(fee_base_msat_arg, fee_proportional_millionths_arg, cltv_expiry_delta_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -22847,8 +20576,8 @@ uint32_t  __attribute__((visibility("default"))) TS_Pong_new(int16_t byteslen_ar
        return ret_ref;
 }
 
-static inline uint64_t Pong_clone_ptr(LDKPong *NONNULL_PTR arg) {
-       LDKPong ret_var = Pong_clone(arg);
+static inline uint64_t CounterpartyForwardingInfo_clone_ptr(LDKCounterpartyForwardingInfo *NONNULL_PTR arg) {
+       LDKCounterpartyForwardingInfo ret_var = CounterpartyForwardingInfo_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -22858,22 +20587,22 @@ if (ret_var.is_owned) {
        ret_ref |= 1;
 }
        return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_Pong_clone_ptr(uint32_t arg) {
-       LDKPong arg_conv;
+}
+int64_t  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_clone_ptr(uint32_t arg) {
+       LDKCounterpartyForwardingInfo arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = Pong_clone_ptr(&arg_conv);
+       int64_t ret_val = CounterpartyForwardingInfo_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Pong_clone(uint32_t orig) {
-       LDKPong orig_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CounterpartyForwardingInfo_clone(uint32_t orig) {
+       LDKCounterpartyForwardingInfo orig_conv;
        orig_conv.inner = (void*)(orig & (~1));
        orig_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKPong ret_var = Pong_clone(&orig_conv);
+       LDKCounterpartyForwardingInfo ret_var = CounterpartyForwardingInfo_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -22885,940 +20614,1176 @@ uint32_t  __attribute__((visibility("default"))) TS_Pong_clone(uint32_t orig) {
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_free(uint32_t this_obj) {
-       LDKOpenChannel this_obj_conv;
+void  __attribute__((visibility("default"))) TS_ChannelCounterparty_free(uint32_t this_obj) {
+       LDKChannelCounterparty this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       OpenChannel_free(this_obj_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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *OpenChannel_get_chain_hash(&this_ptr_conv), 32);
-       return ret_arr;
-}
-
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
-       LDKOpenChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       OpenChannel_set_chain_hash(&this_ptr_conv, val_ref);
+       ChannelCounterparty_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_get_temporary_channel_id(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelCounterparty_get_node_id(uint32_t this_ptr) {
+       LDKChannelCounterparty this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *OpenChannel_get_temporary_channel_id(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, ChannelCounterparty_get_node_id(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_temporary_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKOpenChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelCounterparty_set_node_id(uint32_t this_ptr, int8_tArray val) {
+       LDKChannelCounterparty this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       OpenChannel_set_temporary_channel_id(&this_ptr_conv, val_ref);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       ChannelCounterparty_set_node_id(&this_ptr_conv, val_ref);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_OpenChannel_get_funding_satoshis(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelCounterparty_get_features(uint32_t this_ptr) {
+       LDKChannelCounterparty this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = OpenChannel_get_funding_satoshis(&this_ptr_conv);
-       return ret_val;
+       LDKInitFeatures ret_var = ChannelCounterparty_get_features(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_funding_satoshis(uint32_t this_ptr, int64_t val) {
-       LDKOpenChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelCounterparty_set_features(uint32_t this_ptr, uint32_t val) {
+       LDKChannelCounterparty this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       OpenChannel_set_funding_satoshis(&this_ptr_conv, val);
+       LDKInitFeatures val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = InitFeatures_clone(&val_conv);
+       ChannelCounterparty_set_features(&this_ptr_conv, val_conv);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_OpenChannel_get_push_msat(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelCounterparty_get_unspendable_punishment_reserve(uint32_t this_ptr) {
+       LDKChannelCounterparty this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = OpenChannel_get_push_msat(&this_ptr_conv);
+       int64_t ret_val = ChannelCounterparty_get_unspendable_punishment_reserve(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_push_msat(uint32_t this_ptr, int64_t val) {
-       LDKOpenChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       OpenChannel_set_push_msat(&this_ptr_conv, val);
-}
-
-int64_t  __attribute__((visibility("default"))) TS_OpenChannel_get_dust_limit_satoshis(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelCounterparty_set_unspendable_punishment_reserve(uint32_t this_ptr, int64_t val) {
+       LDKChannelCounterparty this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = OpenChannel_get_dust_limit_satoshis(&this_ptr_conv);
-       return ret_val;
+       ChannelCounterparty_set_unspendable_punishment_reserve(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_dust_limit_satoshis(uint32_t this_ptr, int64_t val) {
-       LDKOpenChannel this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelCounterparty_get_forwarding_info(uint32_t this_ptr) {
+       LDKChannelCounterparty this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       OpenChannel_set_dust_limit_satoshis(&this_ptr_conv, val);
+       LDKCounterpartyForwardingInfo ret_var = ChannelCounterparty_get_forwarding_info(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       if ((uint64_t)ret_var.inner > 4096) {
+               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+               ret_ref = (uint64_t)ret_var.inner;
+               if (ret_var.is_owned) {
+                       ret_ref |= 1;
+               }
+       }
+       return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_OpenChannel_get_max_htlc_value_in_flight_msat(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelCounterparty_set_forwarding_info(uint32_t this_ptr, uint32_t val) {
+       LDKChannelCounterparty this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = OpenChannel_get_max_htlc_value_in_flight_msat(&this_ptr_conv);
-       return ret_val;
+       LDKCounterpartyForwardingInfo val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = CounterpartyForwardingInfo_clone(&val_conv);
+       ChannelCounterparty_set_forwarding_info(&this_ptr_conv, val_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_max_htlc_value_in_flight_msat(uint32_t this_ptr, int64_t val) {
-       LDKOpenChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       OpenChannel_set_max_htlc_value_in_flight_msat(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelCounterparty_new(int8_tArray node_id_arg, uint32_t features_arg, int64_t unspendable_punishment_reserve_arg, uint32_t forwarding_info_arg) {
+       LDKPublicKey node_id_arg_ref;
+       CHECK(node_id_arg->arr_len == 33);
+       memcpy(node_id_arg_ref.compressed_form, node_id_arg->elems, 33);
+       LDKInitFeatures features_arg_conv;
+       features_arg_conv.inner = (void*)(features_arg & (~1));
+       features_arg_conv.is_owned = (features_arg & 1) || (features_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(features_arg_conv);
+       features_arg_conv = InitFeatures_clone(&features_arg_conv);
+       LDKCounterpartyForwardingInfo forwarding_info_arg_conv;
+       forwarding_info_arg_conv.inner = (void*)(forwarding_info_arg & (~1));
+       forwarding_info_arg_conv.is_owned = (forwarding_info_arg & 1) || (forwarding_info_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(forwarding_info_arg_conv);
+       forwarding_info_arg_conv = CounterpartyForwardingInfo_clone(&forwarding_info_arg_conv);
+       LDKChannelCounterparty ret_var = ChannelCounterparty_new(node_id_arg_ref, features_arg_conv, unspendable_punishment_reserve_arg, forwarding_info_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_OpenChannel_get_channel_reserve_satoshis(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = OpenChannel_get_channel_reserve_satoshis(&this_ptr_conv);
-       return ret_val;
+static inline uint64_t ChannelCounterparty_clone_ptr(LDKChannelCounterparty *NONNULL_PTR arg) {
+       LDKChannelCounterparty ret_var = ChannelCounterparty_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_channel_reserve_satoshis(uint32_t this_ptr, int64_t val) {
-       LDKOpenChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       OpenChannel_set_channel_reserve_satoshis(&this_ptr_conv, val);
+       return ret_ref;
 }
-
-int64_t  __attribute__((visibility("default"))) TS_OpenChannel_get_htlc_minimum_msat(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = OpenChannel_get_htlc_minimum_msat(&this_ptr_conv);
+int64_t  __attribute__((visibility("default"))) TS_ChannelCounterparty_clone_ptr(uint32_t arg) {
+       LDKChannelCounterparty arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ChannelCounterparty_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_htlc_minimum_msat(uint32_t this_ptr, int64_t val) {
-       LDKOpenChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       OpenChannel_set_htlc_minimum_msat(&this_ptr_conv, val);
-}
-
-int32_t  __attribute__((visibility("default"))) TS_OpenChannel_get_feerate_per_kw(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = OpenChannel_get_feerate_per_kw(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelCounterparty_clone(uint32_t orig) {
+       LDKChannelCounterparty orig_conv;
+       orig_conv.inner = (void*)(orig & (~1));
+       orig_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKChannelCounterparty ret_var = ChannelCounterparty_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_feerate_per_kw(uint32_t this_ptr, int32_t val) {
-       LDKOpenChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       OpenChannel_set_feerate_per_kw(&this_ptr_conv, val);
+void  __attribute__((visibility("default"))) TS_ChannelDetails_free(uint32_t this_obj) {
+       LDKChannelDetails this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       ChannelDetails_free(this_obj_conv);
 }
 
-int16_t  __attribute__((visibility("default"))) TS_OpenChannel_get_to_self_delay(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = OpenChannel_get_to_self_delay(&this_ptr_conv);
-       return ret_val;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *ChannelDetails_get_channel_id(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_to_self_delay(uint32_t this_ptr, int16_t val) {
-       LDKOpenChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       OpenChannel_set_to_self_delay(&this_ptr_conv, val);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       ChannelDetails_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-int16_t  __attribute__((visibility("default"))) TS_OpenChannel_get_max_accepted_htlcs(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_counterparty(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = OpenChannel_get_max_accepted_htlcs(&this_ptr_conv);
-       return ret_val;
+       LDKChannelCounterparty ret_var = ChannelDetails_get_counterparty(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_max_accepted_htlcs(uint32_t this_ptr, int16_t val) {
-       LDKOpenChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_counterparty(uint32_t this_ptr, uint32_t val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       OpenChannel_set_max_accepted_htlcs(&this_ptr_conv, val);
+       LDKChannelCounterparty val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = ChannelCounterparty_clone(&val_conv);
+       ChannelDetails_set_counterparty(&this_ptr_conv, val_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_get_funding_pubkey(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_funding_txo(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), OpenChannel_get_funding_pubkey(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       LDKOutPoint ret_var = ChannelDetails_get_funding_txo(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       if ((uint64_t)ret_var.inner > 4096) {
+               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+               ret_ref = (uint64_t)ret_var.inner;
+               if (ret_var.is_owned) {
+                       ret_ref |= 1;
+               }
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_funding_pubkey(uint32_t this_ptr, int8_tArray val) {
-       LDKOpenChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_funding_txo(uint32_t this_ptr, uint32_t val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       OpenChannel_set_funding_pubkey(&this_ptr_conv, val_ref);
+       LDKOutPoint val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = OutPoint_clone(&val_conv);
+       ChannelDetails_set_funding_txo(&this_ptr_conv, val_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_get_revocation_basepoint(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_short_channel_id(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), OpenChannel_get_revocation_basepoint(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
+       *ret_copy = ChannelDetails_get_short_channel_id(&this_ptr_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_revocation_basepoint(uint32_t this_ptr, int8_tArray val) {
-       LDKOpenChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_short_channel_id(uint32_t this_ptr, uint32_t val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       OpenChannel_set_revocation_basepoint(&this_ptr_conv, val_ref);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKCOption_u64Z val_conv = *(LDKCOption_u64Z*)(val_ptr);
+       val_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)val) & ~1));
+       ChannelDetails_set_short_channel_id(&this_ptr_conv, val_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_get_payment_point(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_channel_value_satoshis(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), OpenChannel_get_payment_point(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       int64_t ret_val = ChannelDetails_get_channel_value_satoshis(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_payment_point(uint32_t this_ptr, int8_tArray val) {
-       LDKOpenChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_channel_value_satoshis(uint32_t this_ptr, int64_t val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       OpenChannel_set_payment_point(&this_ptr_conv, val_ref);
+       ChannelDetails_set_channel_value_satoshis(&this_ptr_conv, val);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_get_delayed_payment_basepoint(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_unspendable_punishment_reserve(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), OpenChannel_get_delayed_payment_basepoint(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
+       *ret_copy = ChannelDetails_get_unspendable_punishment_reserve(&this_ptr_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_delayed_payment_basepoint(uint32_t this_ptr, int8_tArray val) {
-       LDKOpenChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_unspendable_punishment_reserve(uint32_t this_ptr, uint32_t val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       OpenChannel_set_delayed_payment_basepoint(&this_ptr_conv, val_ref);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKCOption_u64Z val_conv = *(LDKCOption_u64Z*)(val_ptr);
+       val_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)val) & ~1));
+       ChannelDetails_set_unspendable_punishment_reserve(&this_ptr_conv, val_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_get_htlc_basepoint(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_user_channel_id(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), OpenChannel_get_htlc_basepoint(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       int64_t ret_val = ChannelDetails_get_user_channel_id(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_htlc_basepoint(uint32_t this_ptr, int8_tArray val) {
-       LDKOpenChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_user_channel_id(uint32_t this_ptr, int64_t val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       OpenChannel_set_htlc_basepoint(&this_ptr_conv, val_ref);
+       ChannelDetails_set_user_channel_id(&this_ptr_conv, val);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_get_first_per_commitment_point(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_balance_msat(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), OpenChannel_get_first_per_commitment_point(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       int64_t ret_val = ChannelDetails_get_balance_msat(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_first_per_commitment_point(uint32_t this_ptr, int8_tArray val) {
-       LDKOpenChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_balance_msat(uint32_t this_ptr, int64_t val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       OpenChannel_set_first_per_commitment_point(&this_ptr_conv, val_ref);
+       ChannelDetails_set_balance_msat(&this_ptr_conv, val);
 }
 
-int8_t  __attribute__((visibility("default"))) TS_OpenChannel_get_channel_flags(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_outbound_capacity_msat(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_t ret_val = OpenChannel_get_channel_flags(&this_ptr_conv);
+       int64_t ret_val = ChannelDetails_get_outbound_capacity_msat(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_channel_flags(uint32_t this_ptr, int8_t val) {
-       LDKOpenChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_outbound_capacity_msat(uint32_t this_ptr, int64_t val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       OpenChannel_set_channel_flags(&this_ptr_conv, val);
+       ChannelDetails_set_outbound_capacity_msat(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_OpenChannel_get_channel_type(uint32_t this_ptr) {
-       LDKOpenChannel this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_inbound_capacity_msat(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelTypeFeatures ret_var = OpenChannel_get_channel_type(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
-       }
-       return ret_ref;
+       int64_t ret_val = ChannelDetails_get_inbound_capacity_msat(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_OpenChannel_set_channel_type(uint32_t this_ptr, uint32_t val) {
-       LDKOpenChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_inbound_capacity_msat(uint32_t this_ptr, int64_t val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelTypeFeatures val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = ChannelTypeFeatures_clone(&val_conv);
-       OpenChannel_set_channel_type(&this_ptr_conv, val_conv);
-}
-
-static inline uint64_t OpenChannel_clone_ptr(LDKOpenChannel *NONNULL_PTR arg) {
-       LDKOpenChannel ret_var = OpenChannel_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_OpenChannel_clone_ptr(uint32_t arg) {
-       LDKOpenChannel arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = OpenChannel_clone_ptr(&arg_conv);
-       return ret_val;
-}
-
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKOpenChannel ret_var = OpenChannel_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
-}
-
-void  __attribute__((visibility("default"))) TS_AcceptChannel_free(uint32_t this_obj) {
-       LDKAcceptChannel this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       AcceptChannel_free(this_obj_conv);
+       ChannelDetails_set_inbound_capacity_msat(&this_ptr_conv, val);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_get_temporary_channel_id(uint32_t this_ptr) {
-       LDKAcceptChannel this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_confirmations_required(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *AcceptChannel_get_temporary_channel_id(&this_ptr_conv), 32);
-       return ret_arr;
+       LDKCOption_u32Z *ret_copy = MALLOC(sizeof(LDKCOption_u32Z), "LDKCOption_u32Z");
+       *ret_copy = ChannelDetails_get_confirmations_required(&this_ptr_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_AcceptChannel_set_temporary_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKAcceptChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_confirmations_required(uint32_t this_ptr, uint32_t val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       AcceptChannel_set_temporary_channel_id(&this_ptr_conv, val_ref);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKCOption_u32Z val_conv = *(LDKCOption_u32Z*)(val_ptr);
+       val_conv = COption_u32Z_clone((LDKCOption_u32Z*)(((uint64_t)val) & ~1));
+       ChannelDetails_set_confirmations_required(&this_ptr_conv, val_conv);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_AcceptChannel_get_dust_limit_satoshis(uint32_t this_ptr) {
-       LDKAcceptChannel this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_get_force_close_spend_delay(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = AcceptChannel_get_dust_limit_satoshis(&this_ptr_conv);
-       return ret_val;
+       LDKCOption_u16Z *ret_copy = MALLOC(sizeof(LDKCOption_u16Z), "LDKCOption_u16Z");
+       *ret_copy = ChannelDetails_get_force_close_spend_delay(&this_ptr_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_AcceptChannel_set_dust_limit_satoshis(uint32_t this_ptr, int64_t val) {
-       LDKAcceptChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_force_close_spend_delay(uint32_t this_ptr, uint32_t val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       AcceptChannel_set_dust_limit_satoshis(&this_ptr_conv, val);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKCOption_u16Z val_conv = *(LDKCOption_u16Z*)(val_ptr);
+       val_conv = COption_u16Z_clone((LDKCOption_u16Z*)(((uint64_t)val) & ~1));
+       ChannelDetails_set_force_close_spend_delay(&this_ptr_conv, val_conv);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_AcceptChannel_get_max_htlc_value_in_flight_msat(uint32_t this_ptr) {
-       LDKAcceptChannel this_ptr_conv;
+jboolean  __attribute__((visibility("default"))) TS_ChannelDetails_get_is_outbound(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = AcceptChannel_get_max_htlc_value_in_flight_msat(&this_ptr_conv);
+       jboolean ret_val = ChannelDetails_get_is_outbound(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_AcceptChannel_set_max_htlc_value_in_flight_msat(uint32_t this_ptr, int64_t val) {
-       LDKAcceptChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_is_outbound(uint32_t this_ptr, jboolean val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       AcceptChannel_set_max_htlc_value_in_flight_msat(&this_ptr_conv, val);
+       ChannelDetails_set_is_outbound(&this_ptr_conv, val);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_AcceptChannel_get_channel_reserve_satoshis(uint32_t this_ptr) {
-       LDKAcceptChannel this_ptr_conv;
+jboolean  __attribute__((visibility("default"))) TS_ChannelDetails_get_is_funding_locked(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = AcceptChannel_get_channel_reserve_satoshis(&this_ptr_conv);
+       jboolean ret_val = ChannelDetails_get_is_funding_locked(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_AcceptChannel_set_channel_reserve_satoshis(uint32_t this_ptr, int64_t val) {
-       LDKAcceptChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_is_funding_locked(uint32_t this_ptr, jboolean val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       AcceptChannel_set_channel_reserve_satoshis(&this_ptr_conv, val);
+       ChannelDetails_set_is_funding_locked(&this_ptr_conv, val);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_AcceptChannel_get_htlc_minimum_msat(uint32_t this_ptr) {
-       LDKAcceptChannel this_ptr_conv;
+jboolean  __attribute__((visibility("default"))) TS_ChannelDetails_get_is_usable(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = AcceptChannel_get_htlc_minimum_msat(&this_ptr_conv);
+       jboolean ret_val = ChannelDetails_get_is_usable(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_AcceptChannel_set_htlc_minimum_msat(uint32_t this_ptr, int64_t val) {
-       LDKAcceptChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_is_usable(uint32_t this_ptr, jboolean val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       AcceptChannel_set_htlc_minimum_msat(&this_ptr_conv, val);
+       ChannelDetails_set_is_usable(&this_ptr_conv, val);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_AcceptChannel_get_minimum_depth(uint32_t this_ptr) {
-       LDKAcceptChannel this_ptr_conv;
+jboolean  __attribute__((visibility("default"))) TS_ChannelDetails_get_is_public(uint32_t this_ptr) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = AcceptChannel_get_minimum_depth(&this_ptr_conv);
+       jboolean ret_val = ChannelDetails_get_is_public(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_AcceptChannel_set_minimum_depth(uint32_t this_ptr, int32_t val) {
-       LDKAcceptChannel this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelDetails_set_is_public(uint32_t this_ptr, jboolean val) {
+       LDKChannelDetails this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       AcceptChannel_set_minimum_depth(&this_ptr_conv, val);
+       ChannelDetails_set_is_public(&this_ptr_conv, val);
 }
 
-int16_t  __attribute__((visibility("default"))) TS_AcceptChannel_get_to_self_delay(uint32_t this_ptr) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = AcceptChannel_get_to_self_delay(&this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelDetails_new(int8_tArray channel_id_arg, uint32_t counterparty_arg, uint32_t funding_txo_arg, uint32_t short_channel_id_arg, int64_t channel_value_satoshis_arg, uint32_t unspendable_punishment_reserve_arg, int64_t user_channel_id_arg, int64_t balance_msat_arg, int64_t outbound_capacity_msat_arg, int64_t inbound_capacity_msat_arg, uint32_t confirmations_required_arg, uint32_t force_close_spend_delay_arg, jboolean is_outbound_arg, jboolean is_funding_locked_arg, jboolean is_usable_arg, jboolean is_public_arg) {
+       LDKThirtyTwoBytes channel_id_arg_ref;
+       CHECK(channel_id_arg->arr_len == 32);
+       memcpy(channel_id_arg_ref.data, channel_id_arg->elems, 32);
+       LDKChannelCounterparty counterparty_arg_conv;
+       counterparty_arg_conv.inner = (void*)(counterparty_arg & (~1));
+       counterparty_arg_conv.is_owned = (counterparty_arg & 1) || (counterparty_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(counterparty_arg_conv);
+       counterparty_arg_conv = ChannelCounterparty_clone(&counterparty_arg_conv);
+       LDKOutPoint funding_txo_arg_conv;
+       funding_txo_arg_conv.inner = (void*)(funding_txo_arg & (~1));
+       funding_txo_arg_conv.is_owned = (funding_txo_arg & 1) || (funding_txo_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_txo_arg_conv);
+       funding_txo_arg_conv = OutPoint_clone(&funding_txo_arg_conv);
+       void* short_channel_id_arg_ptr = (void*)(((uint64_t)short_channel_id_arg) & ~1);
+       CHECK_ACCESS(short_channel_id_arg_ptr);
+       LDKCOption_u64Z short_channel_id_arg_conv = *(LDKCOption_u64Z*)(short_channel_id_arg_ptr);
+       short_channel_id_arg_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)short_channel_id_arg) & ~1));
+       void* unspendable_punishment_reserve_arg_ptr = (void*)(((uint64_t)unspendable_punishment_reserve_arg) & ~1);
+       CHECK_ACCESS(unspendable_punishment_reserve_arg_ptr);
+       LDKCOption_u64Z unspendable_punishment_reserve_arg_conv = *(LDKCOption_u64Z*)(unspendable_punishment_reserve_arg_ptr);
+       void* confirmations_required_arg_ptr = (void*)(((uint64_t)confirmations_required_arg) & ~1);
+       CHECK_ACCESS(confirmations_required_arg_ptr);
+       LDKCOption_u32Z confirmations_required_arg_conv = *(LDKCOption_u32Z*)(confirmations_required_arg_ptr);
+       confirmations_required_arg_conv = COption_u32Z_clone((LDKCOption_u32Z*)(((uint64_t)confirmations_required_arg) & ~1));
+       void* force_close_spend_delay_arg_ptr = (void*)(((uint64_t)force_close_spend_delay_arg) & ~1);
+       CHECK_ACCESS(force_close_spend_delay_arg_ptr);
+       LDKCOption_u16Z force_close_spend_delay_arg_conv = *(LDKCOption_u16Z*)(force_close_spend_delay_arg_ptr);
+       force_close_spend_delay_arg_conv = COption_u16Z_clone((LDKCOption_u16Z*)(((uint64_t)force_close_spend_delay_arg) & ~1));
+       LDKChannelDetails ret_var = ChannelDetails_new(channel_id_arg_ref, counterparty_arg_conv, funding_txo_arg_conv, short_channel_id_arg_conv, channel_value_satoshis_arg, unspendable_punishment_reserve_arg_conv, user_channel_id_arg, balance_msat_arg, outbound_capacity_msat_arg, inbound_capacity_msat_arg, confirmations_required_arg_conv, force_close_spend_delay_arg_conv, is_outbound_arg, is_funding_locked_arg, is_usable_arg, is_public_arg);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+static inline uint64_t ChannelDetails_clone_ptr(LDKChannelDetails *NONNULL_PTR arg) {
+       LDKChannelDetails ret_var = ChannelDetails_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_ChannelDetails_clone_ptr(uint32_t arg) {
+       LDKChannelDetails arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ChannelDetails_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_AcceptChannel_set_to_self_delay(uint32_t this_ptr, int16_t val) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       AcceptChannel_set_to_self_delay(&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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKChannelDetails ret_var = ChannelDetails_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int16_t  __attribute__((visibility("default"))) TS_AcceptChannel_get_max_accepted_htlcs(uint32_t this_ptr) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = AcceptChannel_get_max_accepted_htlcs(&this_ptr_conv);
+void  __attribute__((visibility("default"))) TS_PaymentSendFailure_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKPaymentSendFailure this_ptr_conv = *(LDKPaymentSendFailure*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       PaymentSendFailure_free(this_ptr_conv);
+}
+
+static inline uint64_t PaymentSendFailure_clone_ptr(LDKPaymentSendFailure *NONNULL_PTR arg) {
+       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
+       *ret_copy = PaymentSendFailure_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_PaymentSendFailure_clone_ptr(uint32_t arg) {
+       LDKPaymentSendFailure* arg_conv = (LDKPaymentSendFailure*)arg;
+       int64_t ret_val = PaymentSendFailure_clone_ptr(arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_AcceptChannel_set_max_accepted_htlcs(uint32_t this_ptr, int16_t val) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       AcceptChannel_set_max_accepted_htlcs(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_PaymentSendFailure_clone(uint32_t orig) {
+       LDKPaymentSendFailure* orig_conv = (LDKPaymentSendFailure*)orig;
+       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
+       *ret_copy = PaymentSendFailure_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_get_funding_pubkey(uint32_t this_ptr) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), AcceptChannel_get_funding_pubkey(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_PaymentSendFailure_parameter_error(uint32_t a) {
+       void* a_ptr = (void*)(((uint64_t)a) & ~1);
+       CHECK_ACCESS(a_ptr);
+       LDKAPIError a_conv = *(LDKAPIError*)(a_ptr);
+       a_conv = APIError_clone((LDKAPIError*)(((uint64_t)a) & ~1));
+       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
+       *ret_copy = PaymentSendFailure_parameter_error(a_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_AcceptChannel_set_funding_pubkey(uint32_t this_ptr, int8_tArray val) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       AcceptChannel_set_funding_pubkey(&this_ptr_conv, val_ref);
+uint32_t  __attribute__((visibility("default"))) TS_PaymentSendFailure_path_parameter_error(uint32_tArray a) {
+       LDKCVec_CResult_NoneAPIErrorZZ a_constr;
+       a_constr.datalen = a->arr_len;
+       if (a_constr.datalen > 0)
+               a_constr.data = MALLOC(a_constr.datalen * sizeof(LDKCResult_NoneAPIErrorZ), "LDKCVec_CResult_NoneAPIErrorZZ Elements");
+       else
+               a_constr.data = NULL;
+       uint32_t* a_vals = a->elems;
+       for (size_t w = 0; w < a_constr.datalen; w++) {
+               uint32_t a_conv_22 = a_vals[w];
+               void* a_conv_22_ptr = (void*)(((uint64_t)a_conv_22) & ~1);
+               CHECK_ACCESS(a_conv_22_ptr);
+               LDKCResult_NoneAPIErrorZ a_conv_22_conv = *(LDKCResult_NoneAPIErrorZ*)(a_conv_22_ptr);
+               a_conv_22_conv = CResult_NoneAPIErrorZ_clone((LDKCResult_NoneAPIErrorZ*)(((uint64_t)a_conv_22) & ~1));
+               a_constr.data[w] = a_conv_22_conv;
+       }
+       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
+       *ret_copy = PaymentSendFailure_path_parameter_error(a_constr);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_get_revocation_basepoint(uint32_t this_ptr) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), AcceptChannel_get_revocation_basepoint(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_PaymentSendFailure_all_failed_retry_safe(uint32_tArray a) {
+       LDKCVec_APIErrorZ a_constr;
+       a_constr.datalen = a->arr_len;
+       if (a_constr.datalen > 0)
+               a_constr.data = MALLOC(a_constr.datalen * sizeof(LDKAPIError), "LDKCVec_APIErrorZ Elements");
+       else
+               a_constr.data = NULL;
+       uint32_t* a_vals = a->elems;
+       for (size_t k = 0; k < a_constr.datalen; k++) {
+               uint32_t a_conv_10 = a_vals[k];
+               void* a_conv_10_ptr = (void*)(((uint64_t)a_conv_10) & ~1);
+               CHECK_ACCESS(a_conv_10_ptr);
+               LDKAPIError a_conv_10_conv = *(LDKAPIError*)(a_conv_10_ptr);
+               a_conv_10_conv = APIError_clone((LDKAPIError*)(((uint64_t)a_conv_10) & ~1));
+               a_constr.data[k] = a_conv_10_conv;
+       }
+       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
+       *ret_copy = PaymentSendFailure_all_failed_retry_safe(a_constr);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_AcceptChannel_set_revocation_basepoint(uint32_t this_ptr, int8_tArray val) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       AcceptChannel_set_revocation_basepoint(&this_ptr_conv, val_ref);
+uint32_t  __attribute__((visibility("default"))) TS_PaymentSendFailure_partial_failure(uint32_tArray results, uint32_t failed_paths_retry, int8_tArray payment_id) {
+       LDKCVec_CResult_NoneAPIErrorZZ results_constr;
+       results_constr.datalen = results->arr_len;
+       if (results_constr.datalen > 0)
+               results_constr.data = MALLOC(results_constr.datalen * sizeof(LDKCResult_NoneAPIErrorZ), "LDKCVec_CResult_NoneAPIErrorZZ Elements");
+       else
+               results_constr.data = NULL;
+       uint32_t* results_vals = results->elems;
+       for (size_t w = 0; w < results_constr.datalen; w++) {
+               uint32_t results_conv_22 = results_vals[w];
+               void* results_conv_22_ptr = (void*)(((uint64_t)results_conv_22) & ~1);
+               CHECK_ACCESS(results_conv_22_ptr);
+               LDKCResult_NoneAPIErrorZ results_conv_22_conv = *(LDKCResult_NoneAPIErrorZ*)(results_conv_22_ptr);
+               results_constr.data[w] = results_conv_22_conv;
+       }
+       LDKRouteParameters failed_paths_retry_conv;
+       failed_paths_retry_conv.inner = (void*)(failed_paths_retry & (~1));
+       failed_paths_retry_conv.is_owned = (failed_paths_retry & 1) || (failed_paths_retry == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(failed_paths_retry_conv);
+       failed_paths_retry_conv = RouteParameters_clone(&failed_paths_retry_conv);
+       LDKThirtyTwoBytes payment_id_ref;
+       CHECK(payment_id->arr_len == 32);
+       memcpy(payment_id_ref.data, payment_id->elems, 32);
+       LDKPaymentSendFailure *ret_copy = MALLOC(sizeof(LDKPaymentSendFailure), "LDKPaymentSendFailure");
+       *ret_copy = PaymentSendFailure_partial_failure(results_constr, failed_paths_retry_conv, payment_id_ref);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_get_payment_point(uint32_t this_ptr) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), AcceptChannel_get_payment_point(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_new(uint32_t fee_est, uint32_t chain_monitor, uint32_t tx_broadcaster, uint32_t logger, uint32_t keys_manager, uint32_t config, uint32_t params) {
+       void* fee_est_ptr = (void*)(((uint64_t)fee_est) & ~1);
+       CHECK_ACCESS(fee_est_ptr);
+       LDKFeeEstimator fee_est_conv = *(LDKFeeEstimator*)(fee_est_ptr);
+       void* chain_monitor_ptr = (void*)(((uint64_t)chain_monitor) & ~1);
+       CHECK_ACCESS(chain_monitor_ptr);
+       LDKWatch chain_monitor_conv = *(LDKWatch*)(chain_monitor_ptr);
+       void* tx_broadcaster_ptr = (void*)(((uint64_t)tx_broadcaster) & ~1);
+       CHECK_ACCESS(tx_broadcaster_ptr);
+       LDKBroadcasterInterface tx_broadcaster_conv = *(LDKBroadcasterInterface*)(tx_broadcaster_ptr);
+       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
+       CHECK_ACCESS(logger_ptr);
+       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
+       void* keys_manager_ptr = (void*)(((uint64_t)keys_manager) & ~1);
+       CHECK_ACCESS(keys_manager_ptr);
+       LDKKeysInterface keys_manager_conv = *(LDKKeysInterface*)(keys_manager_ptr);
+       LDKUserConfig config_conv;
+       config_conv.inner = (void*)(config & (~1));
+       config_conv.is_owned = (config & 1) || (config == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(config_conv);
+       config_conv = UserConfig_clone(&config_conv);
+       LDKChainParameters params_conv;
+       params_conv.inner = (void*)(params & (~1));
+       params_conv.is_owned = (params & 1) || (params == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(params_conv);
+       params_conv = ChainParameters_clone(&params_conv);
+       LDKChannelManager ret_var = ChannelManager_new(fee_est_conv, chain_monitor_conv, tx_broadcaster_conv, logger_conv, keys_manager_conv, config_conv, params_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_AcceptChannel_set_payment_point(uint32_t this_ptr, int8_tArray val) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       AcceptChannel_set_payment_point(&this_ptr_conv, val_ref);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_get_current_default_configuration(uint32_t this_arg) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKUserConfig ret_var = ChannelManager_get_current_default_configuration(&this_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_get_delayed_payment_basepoint(uint32_t this_ptr) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), AcceptChannel_get_delayed_payment_basepoint(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_create_channel(uint32_t this_arg, int8_tArray their_network_key, int64_t channel_value_satoshis, int64_t push_msat, int64_t user_channel_id, uint32_t override_config) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKPublicKey their_network_key_ref;
+       CHECK(their_network_key->arr_len == 33);
+       memcpy(their_network_key_ref.compressed_form, their_network_key->elems, 33);
+       LDKUserConfig override_config_conv;
+       override_config_conv.inner = (void*)(override_config & (~1));
+       override_config_conv.is_owned = (override_config & 1) || (override_config == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(override_config_conv);
+       override_config_conv = UserConfig_clone(&override_config_conv);
+       LDKCResult__u832APIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult__u832APIErrorZ), "LDKCResult__u832APIErrorZ");
+       *ret_conv = ChannelManager_create_channel(&this_arg_conv, their_network_key_ref, channel_value_satoshis, push_msat, user_channel_id, override_config_conv);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_AcceptChannel_set_delayed_payment_basepoint(uint32_t this_ptr, int8_tArray val) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       AcceptChannel_set_delayed_payment_basepoint(&this_ptr_conv, val_ref);
+uint32_tArray  __attribute__((visibility("default"))) TS_ChannelManager_list_channels(uint32_t this_arg) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKCVec_ChannelDetailsZ ret_var = ChannelManager_list_channels(&this_arg_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t q = 0; q < ret_var.datalen; q++) {
+               LDKChannelDetails ret_conv_16_var = ret_var.data[q];
+               uint64_t ret_conv_16_ref = 0;
+               CHECK((((uint64_t)ret_conv_16_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_conv_16_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_16_var);
+               ret_conv_16_ref = (uint64_t)ret_conv_16_var.inner;
+               if (ret_conv_16_var.is_owned) {
+                       ret_conv_16_ref |= 1;
+               }
+               ret_arr_ptr[q] = ret_conv_16_ref;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_get_htlc_basepoint(uint32_t this_ptr) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), AcceptChannel_get_htlc_basepoint(&this_ptr_conv).compressed_form, 33);
+uint32_tArray  __attribute__((visibility("default"))) TS_ChannelManager_list_usable_channels(uint32_t this_arg) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKCVec_ChannelDetailsZ ret_var = ChannelManager_list_usable_channels(&this_arg_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t q = 0; q < ret_var.datalen; q++) {
+               LDKChannelDetails ret_conv_16_var = ret_var.data[q];
+               uint64_t ret_conv_16_ref = 0;
+               CHECK((((uint64_t)ret_conv_16_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_conv_16_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_16_var);
+               ret_conv_16_ref = (uint64_t)ret_conv_16_var.inner;
+               if (ret_conv_16_var.is_owned) {
+                       ret_conv_16_ref |= 1;
+               }
+               ret_arr_ptr[q] = ret_conv_16_ref;
+       }
+       
+       FREE(ret_var.data);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_AcceptChannel_set_htlc_basepoint(uint32_t this_ptr, int8_tArray val) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       AcceptChannel_set_htlc_basepoint(&this_ptr_conv, val_ref);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_close_channel(uint32_t this_arg, int8_tArray channel_id) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       unsigned char channel_id_arr[32];
+       CHECK(channel_id->arr_len == 32);
+       memcpy(channel_id_arr, channel_id->elems, 32);
+       unsigned char (*channel_id_ref)[32] = &channel_id_arr;
+       LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
+       *ret_conv = ChannelManager_close_channel(&this_arg_conv, channel_id_ref);
+       return (uint64_t)ret_conv;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_get_first_per_commitment_point(uint32_t this_ptr) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), AcceptChannel_get_first_per_commitment_point(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_close_channel_with_target_feerate(uint32_t this_arg, int8_tArray channel_id, int32_t target_feerate_sats_per_1000_weight) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       unsigned char channel_id_arr[32];
+       CHECK(channel_id->arr_len == 32);
+       memcpy(channel_id_arr, channel_id->elems, 32);
+       unsigned char (*channel_id_ref)[32] = &channel_id_arr;
+       LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
+       *ret_conv = ChannelManager_close_channel_with_target_feerate(&this_arg_conv, channel_id_ref, target_feerate_sats_per_1000_weight);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_AcceptChannel_set_first_per_commitment_point(uint32_t this_ptr, int8_tArray val) {
-       LDKAcceptChannel this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       AcceptChannel_set_first_per_commitment_point(&this_ptr_conv, val_ref);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_force_close_channel(uint32_t this_arg, int8_tArray channel_id) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       unsigned char channel_id_arr[32];
+       CHECK(channel_id->arr_len == 32);
+       memcpy(channel_id_arr, channel_id->elems, 32);
+       unsigned char (*channel_id_ref)[32] = &channel_id_arr;
+       LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
+       *ret_conv = ChannelManager_force_close_channel(&this_arg_conv, channel_id_ref);
+       return (uint64_t)ret_conv;
 }
 
-static inline uint64_t AcceptChannel_clone_ptr(LDKAcceptChannel *NONNULL_PTR arg) {
-       LDKAcceptChannel ret_var = AcceptChannel_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_ChannelManager_force_close_all_channels(uint32_t this_arg) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       ChannelManager_force_close_all_channels(&this_arg_conv);
 }
-int64_t  __attribute__((visibility("default"))) TS_AcceptChannel_clone_ptr(uint32_t arg) {
-       LDKAcceptChannel arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = AcceptChannel_clone_ptr(&arg_conv);
-       return ret_val;
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_send_payment(uint32_t this_arg, uint32_t route, int8_tArray payment_hash, int8_tArray payment_secret) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKRoute route_conv;
+       route_conv.inner = (void*)(route & (~1));
+       route_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(route_conv);
+       LDKThirtyTwoBytes payment_hash_ref;
+       CHECK(payment_hash->arr_len == 32);
+       memcpy(payment_hash_ref.data, payment_hash->elems, 32);
+       LDKThirtyTwoBytes payment_secret_ref;
+       CHECK(payment_secret->arr_len == 32);
+       memcpy(payment_secret_ref.data, payment_secret->elems, 32);
+       LDKCResult_PaymentIdPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentSendFailureZ), "LDKCResult_PaymentIdPaymentSendFailureZ");
+       *ret_conv = ChannelManager_send_payment(&this_arg_conv, &route_conv, payment_hash_ref, payment_secret_ref);
+       return (uint64_t)ret_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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKAcceptChannel ret_var = AcceptChannel_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_retry_payment(uint32_t this_arg, uint32_t route, int8_tArray payment_id) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKRoute route_conv;
+       route_conv.inner = (void*)(route & (~1));
+       route_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(route_conv);
+       LDKThirtyTwoBytes payment_id_ref;
+       CHECK(payment_id->arr_len == 32);
+       memcpy(payment_id_ref.data, payment_id->elems, 32);
+       LDKCResult_NonePaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePaymentSendFailureZ), "LDKCResult_NonePaymentSendFailureZ");
+       *ret_conv = ChannelManager_retry_payment(&this_arg_conv, &route_conv, payment_id_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_FundingCreated_free(uint32_t this_obj) {
-       LDKFundingCreated this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       FundingCreated_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_ChannelManager_abandon_payment(uint32_t this_arg, int8_tArray payment_id) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKThirtyTwoBytes payment_id_ref;
+       CHECK(payment_id->arr_len == 32);
+       memcpy(payment_id_ref.data, payment_id->elems, 32);
+       ChannelManager_abandon_payment(&this_arg_conv, payment_id_ref);
 }
 
-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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *FundingCreated_get_temporary_channel_id(&this_ptr_conv), 32);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_send_spontaneous_payment(uint32_t this_arg, uint32_t route, int8_tArray payment_preimage) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKRoute route_conv;
+       route_conv.inner = (void*)(route & (~1));
+       route_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(route_conv);
+       LDKThirtyTwoBytes payment_preimage_ref;
+       CHECK(payment_preimage->arr_len == 32);
+       memcpy(payment_preimage_ref.data, payment_preimage->elems, 32);
+       LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ), "LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ");
+       *ret_conv = ChannelManager_send_spontaneous_payment(&this_arg_conv, &route_conv, payment_preimage_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_FundingCreated_set_temporary_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKFundingCreated this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       FundingCreated_set_temporary_channel_id(&this_ptr_conv, val_ref);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_funding_transaction_generated(uint32_t this_arg, int8_tArray temporary_channel_id, int8_tArray funding_transaction) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       unsigned char temporary_channel_id_arr[32];
+       CHECK(temporary_channel_id->arr_len == 32);
+       memcpy(temporary_channel_id_arr, temporary_channel_id->elems, 32);
+       unsigned char (*temporary_channel_id_ref)[32] = &temporary_channel_id_arr;
+       LDKTransaction funding_transaction_ref;
+       funding_transaction_ref.datalen = funding_transaction->arr_len;
+       funding_transaction_ref.data = MALLOC(funding_transaction_ref.datalen, "LDKTransaction Bytes");
+       memcpy(funding_transaction_ref.data, funding_transaction->elems, funding_transaction_ref.datalen);
+       funding_transaction_ref.data_is_owned = true;
+       LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
+       *ret_conv = ChannelManager_funding_transaction_generated(&this_arg_conv, temporary_channel_id_ref, funding_transaction_ref);
+       return (uint64_t)ret_conv;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_FundingCreated_get_funding_txid(uint32_t this_ptr) {
-       LDKFundingCreated this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *FundingCreated_get_funding_txid(&this_ptr_conv), 32);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_ChannelManager_broadcast_node_announcement(uint32_t this_arg, int8_tArray rgb, int8_tArray alias, uint32_tArray addresses) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKThreeBytes rgb_ref;
+       CHECK(rgb->arr_len == 3);
+       memcpy(rgb_ref.data, rgb->elems, 3);
+       LDKThirtyTwoBytes alias_ref;
+       CHECK(alias->arr_len == 32);
+       memcpy(alias_ref.data, alias->elems, 32);
+       LDKCVec_NetAddressZ addresses_constr;
+       addresses_constr.datalen = addresses->arr_len;
+       if (addresses_constr.datalen > 0)
+               addresses_constr.data = MALLOC(addresses_constr.datalen * sizeof(LDKNetAddress), "LDKCVec_NetAddressZ Elements");
+       else
+               addresses_constr.data = NULL;
+       uint32_t* addresses_vals = addresses->elems;
+       for (size_t m = 0; m < addresses_constr.datalen; m++) {
+               uint32_t addresses_conv_12 = addresses_vals[m];
+               void* addresses_conv_12_ptr = (void*)(((uint64_t)addresses_conv_12) & ~1);
+               CHECK_ACCESS(addresses_conv_12_ptr);
+               LDKNetAddress addresses_conv_12_conv = *(LDKNetAddress*)(addresses_conv_12_ptr);
+               addresses_constr.data[m] = addresses_conv_12_conv;
+       }
+       ChannelManager_broadcast_node_announcement(&this_arg_conv, rgb_ref, alias_ref, addresses_constr);
 }
 
-void  __attribute__((visibility("default"))) TS_FundingCreated_set_funding_txid(uint32_t this_ptr, int8_tArray val) {
-       LDKFundingCreated this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       FundingCreated_set_funding_txid(&this_ptr_conv, val_ref);
+void  __attribute__((visibility("default"))) TS_ChannelManager_process_pending_htlc_forwards(uint32_t this_arg) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       ChannelManager_process_pending_htlc_forwards(&this_arg_conv);
 }
 
-int16_t  __attribute__((visibility("default"))) TS_FundingCreated_get_funding_output_index(uint32_t this_ptr) {
-       LDKFundingCreated this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = FundingCreated_get_funding_output_index(&this_ptr_conv);
+void  __attribute__((visibility("default"))) TS_ChannelManager_timer_tick_occurred(uint32_t this_arg) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       ChannelManager_timer_tick_occurred(&this_arg_conv);
+}
+
+jboolean  __attribute__((visibility("default"))) TS_ChannelManager_fail_htlc_backwards(uint32_t this_arg, int8_tArray payment_hash) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       unsigned char payment_hash_arr[32];
+       CHECK(payment_hash->arr_len == 32);
+       memcpy(payment_hash_arr, payment_hash->elems, 32);
+       unsigned char (*payment_hash_ref)[32] = &payment_hash_arr;
+       jboolean ret_val = ChannelManager_fail_htlc_backwards(&this_arg_conv, payment_hash_ref);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_FundingCreated_set_funding_output_index(uint32_t this_ptr, int16_t val) {
-       LDKFundingCreated this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       FundingCreated_set_funding_output_index(&this_ptr_conv, val);
+jboolean  __attribute__((visibility("default"))) TS_ChannelManager_claim_funds(uint32_t this_arg, int8_tArray payment_preimage) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKThirtyTwoBytes payment_preimage_ref;
+       CHECK(payment_preimage->arr_len == 32);
+       memcpy(payment_preimage_ref.data, payment_preimage->elems, 32);
+       jboolean ret_val = ChannelManager_claim_funds(&this_arg_conv, payment_preimage_ref);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_FundingCreated_get_signature(uint32_t this_ptr) {
-       LDKFundingCreated this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), FundingCreated_get_signature(&this_ptr_conv).compact_form, 64);
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelManager_get_our_node_id(uint32_t this_arg) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, ChannelManager_get_our_node_id(&this_arg_conv).compressed_form, 33);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_FundingCreated_set_signature(uint32_t this_ptr, int8_tArray val) {
-       LDKFundingCreated this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSignature val_ref;
-       CHECK(*((uint32_t*)val) == 64);
-       memcpy(val_ref.compact_form, (uint8_t*)(val + 4), 64);
-       FundingCreated_set_signature(&this_ptr_conv, val_ref);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_create_inbound_payment(uint32_t this_arg, uint32_t min_value_msat, int32_t invoice_expiry_delta_secs) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       void* min_value_msat_ptr = (void*)(((uint64_t)min_value_msat) & ~1);
+       CHECK_ACCESS(min_value_msat_ptr);
+       LDKCOption_u64Z min_value_msat_conv = *(LDKCOption_u64Z*)(min_value_msat_ptr);
+       min_value_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)min_value_msat) & ~1));
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ");
+       *ret_conv = ChannelManager_create_inbound_payment(&this_arg_conv, min_value_msat_conv, invoice_expiry_delta_secs);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_FundingCreated_new(int8_tArray temporary_channel_id_arg, int8_tArray funding_txid_arg, int16_t funding_output_index_arg, int8_tArray signature_arg) {
-       LDKThirtyTwoBytes temporary_channel_id_arg_ref;
-       CHECK(*((uint32_t*)temporary_channel_id_arg) == 32);
-       memcpy(temporary_channel_id_arg_ref.data, (uint8_t*)(temporary_channel_id_arg + 4), 32);
-       LDKThirtyTwoBytes funding_txid_arg_ref;
-       CHECK(*((uint32_t*)funding_txid_arg) == 32);
-       memcpy(funding_txid_arg_ref.data, (uint8_t*)(funding_txid_arg + 4), 32);
-       LDKSignature signature_arg_ref;
-       CHECK(*((uint32_t*)signature_arg) == 64);
-       memcpy(signature_arg_ref.compact_form, (uint8_t*)(signature_arg + 4), 64);
-       LDKFundingCreated ret_var = FundingCreated_new(temporary_channel_id_arg_ref, funding_txid_arg_ref, funding_output_index_arg, signature_arg_ref);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_create_inbound_payment_legacy(uint32_t this_arg, uint32_t min_value_msat, int32_t invoice_expiry_delta_secs) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       void* min_value_msat_ptr = (void*)(((uint64_t)min_value_msat) & ~1);
+       CHECK_ACCESS(min_value_msat_ptr);
+       LDKCOption_u64Z min_value_msat_conv = *(LDKCOption_u64Z*)(min_value_msat_ptr);
+       min_value_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)min_value_msat) & ~1));
+       LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ), "LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ");
+       *ret_conv = ChannelManager_create_inbound_payment_legacy(&this_arg_conv, min_value_msat_conv, invoice_expiry_delta_secs);
+       return (uint64_t)ret_conv;
 }
 
-static inline uint64_t FundingCreated_clone_ptr(LDKFundingCreated *NONNULL_PTR arg) {
-       LDKFundingCreated ret_var = FundingCreated_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_create_inbound_payment_for_hash(uint32_t this_arg, int8_tArray payment_hash, uint32_t min_value_msat, int32_t invoice_expiry_delta_secs) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKThirtyTwoBytes payment_hash_ref;
+       CHECK(payment_hash->arr_len == 32);
+       memcpy(payment_hash_ref.data, payment_hash->elems, 32);
+       void* min_value_msat_ptr = (void*)(((uint64_t)min_value_msat) & ~1);
+       CHECK_ACCESS(min_value_msat_ptr);
+       LDKCOption_u64Z min_value_msat_conv = *(LDKCOption_u64Z*)(min_value_msat_ptr);
+       min_value_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)min_value_msat) & ~1));
+       LDKCResult_PaymentSecretNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretNoneZ), "LDKCResult_PaymentSecretNoneZ");
+       *ret_conv = ChannelManager_create_inbound_payment_for_hash(&this_arg_conv, payment_hash_ref, min_value_msat_conv, invoice_expiry_delta_secs);
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_FundingCreated_clone_ptr(uint32_t arg) {
-       LDKFundingCreated arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = FundingCreated_clone_ptr(&arg_conv);
-       return ret_val;
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_create_inbound_payment_for_hash_legacy(uint32_t this_arg, int8_tArray payment_hash, uint32_t min_value_msat, int32_t invoice_expiry_delta_secs) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKThirtyTwoBytes payment_hash_ref;
+       CHECK(payment_hash->arr_len == 32);
+       memcpy(payment_hash_ref.data, payment_hash->elems, 32);
+       void* min_value_msat_ptr = (void*)(((uint64_t)min_value_msat) & ~1);
+       CHECK_ACCESS(min_value_msat_ptr);
+       LDKCOption_u64Z min_value_msat_conv = *(LDKCOption_u64Z*)(min_value_msat_ptr);
+       min_value_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)min_value_msat) & ~1));
+       LDKCResult_PaymentSecretAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentSecretAPIErrorZ), "LDKCResult_PaymentSecretAPIErrorZ");
+       *ret_conv = ChannelManager_create_inbound_payment_for_hash_legacy(&this_arg_conv, payment_hash_ref, min_value_msat_conv, invoice_expiry_delta_secs);
+       return (uint64_t)ret_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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKFundingCreated ret_var = FundingCreated_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_get_payment_preimage(uint32_t this_arg, int8_tArray payment_hash, int8_tArray payment_secret) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKThirtyTwoBytes payment_hash_ref;
+       CHECK(payment_hash->arr_len == 32);
+       memcpy(payment_hash_ref.data, payment_hash->elems, 32);
+       LDKThirtyTwoBytes payment_secret_ref;
+       CHECK(payment_secret->arr_len == 32);
+       memcpy(payment_secret_ref.data, payment_secret->elems, 32);
+       LDKCResult_PaymentPreimageAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentPreimageAPIErrorZ), "LDKCResult_PaymentPreimageAPIErrorZ");
+       *ret_conv = ChannelManager_get_payment_preimage(&this_arg_conv, payment_hash_ref, payment_secret_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_FundingSigned_free(uint32_t this_obj) {
-       LDKFundingSigned this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       FundingSigned_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_as_MessageSendEventsProvider(uint32_t this_arg) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKMessageSendEventsProvider* ret_ret = MALLOC(sizeof(LDKMessageSendEventsProvider), "LDKMessageSendEventsProvider");
+       *ret_ret = ChannelManager_as_MessageSendEventsProvider(&this_arg_conv);
+       return (uint64_t)ret_ret;
 }
 
-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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *FundingSigned_get_channel_id(&this_ptr_conv), 32);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_as_EventsProvider(uint32_t this_arg) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKEventsProvider* ret_ret = MALLOC(sizeof(LDKEventsProvider), "LDKEventsProvider");
+       *ret_ret = ChannelManager_as_EventsProvider(&this_arg_conv);
+       return (uint64_t)ret_ret;
 }
 
-void  __attribute__((visibility("default"))) TS_FundingSigned_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKFundingSigned this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       FundingSigned_set_channel_id(&this_ptr_conv, val_ref);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_as_Listen(uint32_t this_arg) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKListen* ret_ret = MALLOC(sizeof(LDKListen), "LDKListen");
+       *ret_ret = ChannelManager_as_Listen(&this_arg_conv);
+       return (uint64_t)ret_ret;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_FundingSigned_get_signature(uint32_t this_ptr) {
-       LDKFundingSigned this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), FundingSigned_get_signature(&this_ptr_conv).compact_form, 64);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_as_Confirm(uint32_t this_arg) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKConfirm* ret_ret = MALLOC(sizeof(LDKConfirm), "LDKConfirm");
+       *ret_ret = ChannelManager_as_Confirm(&this_arg_conv);
+       return (uint64_t)ret_ret;
 }
 
-void  __attribute__((visibility("default"))) TS_FundingSigned_set_signature(uint32_t this_ptr, int8_tArray val) {
-       LDKFundingSigned this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSignature val_ref;
-       CHECK(*((uint32_t*)val) == 64);
-       memcpy(val_ref.compact_form, (uint8_t*)(val + 4), 64);
-       FundingSigned_set_signature(&this_ptr_conv, val_ref);
+void  __attribute__((visibility("default"))) TS_ChannelManager_await_persistable_update(uint32_t this_arg) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       ChannelManager_await_persistable_update(&this_arg_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_FundingSigned_new(int8_tArray channel_id_arg, int8_tArray signature_arg) {
-       LDKThirtyTwoBytes channel_id_arg_ref;
-       CHECK(*((uint32_t*)channel_id_arg) == 32);
-       memcpy(channel_id_arg_ref.data, (uint8_t*)(channel_id_arg + 4), 32);
-       LDKSignature signature_arg_ref;
-       CHECK(*((uint32_t*)signature_arg) == 64);
-       memcpy(signature_arg_ref.compact_form, (uint8_t*)(signature_arg + 4), 64);
-       LDKFundingSigned ret_var = FundingSigned_new(channel_id_arg_ref, signature_arg_ref);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_current_best_block(uint32_t this_arg) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKBestBlock ret_var = ChannelManager_current_best_block(&this_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -23830,212 +21795,147 @@ uint32_t  __attribute__((visibility("default"))) TS_FundingSigned_new(int8_tArra
        return ret_ref;
 }
 
-static inline uint64_t FundingSigned_clone_ptr(LDKFundingSigned *NONNULL_PTR arg) {
-       LDKFundingSigned ret_var = FundingSigned_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_FundingSigned_clone_ptr(uint32_t arg) {
-       LDKFundingSigned arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = FundingSigned_clone_ptr(&arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_as_ChannelMessageHandler(uint32_t this_arg) {
+       LDKChannelManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKChannelMessageHandler* ret_ret = MALLOC(sizeof(LDKChannelMessageHandler), "LDKChannelMessageHandler");
+       *ret_ret = ChannelManager_as_ChannelMessageHandler(&this_arg_conv);
+       return (uint64_t)ret_ret;
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKFundingSigned ret_var = FundingSigned_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelManager_write(uint32_t obj) {
+       LDKChannelManager obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ChannelManager_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_FundingLocked_free(uint32_t this_obj) {
-       LDKFundingLocked this_obj_conv;
+void  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_free(uint32_t this_obj) {
+       LDKChannelManagerReadArgs this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       FundingLocked_free(this_obj_conv);
+       ChannelManagerReadArgs_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_FundingLocked_get_channel_id(uint32_t this_ptr) {
-       LDKFundingLocked this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_get_keys_manager(uint32_t this_ptr) {
+       LDKChannelManagerReadArgs this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *FundingLocked_get_channel_id(&this_ptr_conv), 32);
-       return ret_arr;
+       // WARNING: This object doesn't live past this scope, needs clone!
+       uint64_t ret_ret = ((uint64_t)ChannelManagerReadArgs_get_keys_manager(&this_ptr_conv)) | 1;
+       return ret_ret;
 }
 
-void  __attribute__((visibility("default"))) TS_FundingLocked_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKFundingLocked this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_set_keys_manager(uint32_t this_ptr, uint32_t val) {
+       LDKChannelManagerReadArgs this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       FundingLocked_set_channel_id(&this_ptr_conv, val_ref);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKKeysInterface val_conv = *(LDKKeysInterface*)(val_ptr);
+       ChannelManagerReadArgs_set_keys_manager(&this_ptr_conv, val_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_FundingLocked_get_next_per_commitment_point(uint32_t this_ptr) {
-       LDKFundingLocked this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_get_fee_estimator(uint32_t this_ptr) {
+       LDKChannelManagerReadArgs this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), FundingLocked_get_next_per_commitment_point(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       // WARNING: This object doesn't live past this scope, needs clone!
+       uint64_t ret_ret = ((uint64_t)ChannelManagerReadArgs_get_fee_estimator(&this_ptr_conv)) | 1;
+       return ret_ret;
 }
 
-void  __attribute__((visibility("default"))) TS_FundingLocked_set_next_per_commitment_point(uint32_t this_ptr, int8_tArray val) {
-       LDKFundingLocked this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_set_fee_estimator(uint32_t this_ptr, uint32_t val) {
+       LDKChannelManagerReadArgs this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       FundingLocked_set_next_per_commitment_point(&this_ptr_conv, val_ref);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_FundingLocked_new(int8_tArray channel_id_arg, int8_tArray next_per_commitment_point_arg) {
-       LDKThirtyTwoBytes channel_id_arg_ref;
-       CHECK(*((uint32_t*)channel_id_arg) == 32);
-       memcpy(channel_id_arg_ref.data, (uint8_t*)(channel_id_arg + 4), 32);
-       LDKPublicKey next_per_commitment_point_arg_ref;
-       CHECK(*((uint32_t*)next_per_commitment_point_arg) == 33);
-       memcpy(next_per_commitment_point_arg_ref.compressed_form, (uint8_t*)(next_per_commitment_point_arg + 4), 33);
-       LDKFundingLocked ret_var = FundingLocked_new(channel_id_arg_ref, next_per_commitment_point_arg_ref);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKFeeEstimator val_conv = *(LDKFeeEstimator*)(val_ptr);
+       ChannelManagerReadArgs_set_fee_estimator(&this_ptr_conv, val_conv);
 }
 
-static inline uint64_t FundingLocked_clone_ptr(LDKFundingLocked *NONNULL_PTR arg) {
-       LDKFundingLocked ret_var = FundingLocked_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_FundingLocked_clone_ptr(uint32_t arg) {
-       LDKFundingLocked arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = FundingLocked_clone_ptr(&arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_get_chain_monitor(uint32_t this_ptr) {
+       LDKChannelManagerReadArgs this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       // WARNING: This object doesn't live past this scope, needs clone!
+       uint64_t ret_ret = ((uint64_t)ChannelManagerReadArgs_get_chain_monitor(&this_ptr_conv)) | 1;
+       return ret_ret;
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKFundingLocked ret_var = FundingLocked_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_set_chain_monitor(uint32_t this_ptr, uint32_t val) {
+       LDKChannelManagerReadArgs this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKWatch val_conv = *(LDKWatch*)(val_ptr);
+       ChannelManagerReadArgs_set_chain_monitor(&this_ptr_conv, val_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_Shutdown_free(uint32_t this_obj) {
-       LDKShutdown this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       Shutdown_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_get_tx_broadcaster(uint32_t this_ptr) {
+       LDKChannelManagerReadArgs this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       // WARNING: This object doesn't live past this scope, needs clone!
+       uint64_t ret_ret = ((uint64_t)ChannelManagerReadArgs_get_tx_broadcaster(&this_ptr_conv)) | 1;
+       return ret_ret;
 }
-
-int8_tArray  __attribute__((visibility("default"))) TS_Shutdown_get_channel_id(uint32_t this_ptr) {
-       LDKShutdown this_ptr_conv;
+
+void  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_set_tx_broadcaster(uint32_t this_ptr, uint32_t val) {
+       LDKChannelManagerReadArgs this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *Shutdown_get_channel_id(&this_ptr_conv), 32);
-       return ret_arr;
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKBroadcasterInterface val_conv = *(LDKBroadcasterInterface*)(val_ptr);
+       ChannelManagerReadArgs_set_tx_broadcaster(&this_ptr_conv, val_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_Shutdown_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKShutdown this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_get_logger(uint32_t this_ptr) {
+       LDKChannelManagerReadArgs this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       Shutdown_set_channel_id(&this_ptr_conv, val_ref);
+       // WARNING: This object doesn't live past this scope, needs clone!
+       uint64_t ret_ret = ((uint64_t)ChannelManagerReadArgs_get_logger(&this_ptr_conv)) | 1;
+       return ret_ret;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_Shutdown_get_scriptpubkey(uint32_t this_ptr) {
-       LDKShutdown this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_set_logger(uint32_t this_ptr, uint32_t val) {
+       LDKChannelManagerReadArgs this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKu8slice ret_var = Shutdown_get_scriptpubkey(&this_ptr_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       return ret_arr;
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKLogger val_conv = *(LDKLogger*)(val_ptr);
+       ChannelManagerReadArgs_set_logger(&this_ptr_conv, val_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_Shutdown_set_scriptpubkey(uint32_t this_ptr, int8_tArray val) {
-       LDKShutdown this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_get_default_config(uint32_t this_ptr) {
+       LDKChannelManagerReadArgs this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_u8Z val_ref;
-       val_ref.datalen = *((uint32_t*)val);
-       val_ref.data = MALLOC(val_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(val_ref.data, (uint8_t*)(val + 4), val_ref.datalen);
-       Shutdown_set_scriptpubkey(&this_ptr_conv, val_ref);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_Shutdown_new(int8_tArray channel_id_arg, int8_tArray scriptpubkey_arg) {
-       LDKThirtyTwoBytes channel_id_arg_ref;
-       CHECK(*((uint32_t*)channel_id_arg) == 32);
-       memcpy(channel_id_arg_ref.data, (uint8_t*)(channel_id_arg + 4), 32);
-       LDKCVec_u8Z scriptpubkey_arg_ref;
-       scriptpubkey_arg_ref.datalen = *((uint32_t*)scriptpubkey_arg);
-       scriptpubkey_arg_ref.data = MALLOC(scriptpubkey_arg_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(scriptpubkey_arg_ref.data, (uint8_t*)(scriptpubkey_arg + 4), scriptpubkey_arg_ref.datalen);
-       LDKShutdown ret_var = Shutdown_new(channel_id_arg_ref, scriptpubkey_arg_ref);
+       LDKUserConfig ret_var = ChannelManagerReadArgs_get_default_config(&this_ptr_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -24047,33 +21947,56 @@ uint32_t  __attribute__((visibility("default"))) TS_Shutdown_new(int8_tArray cha
        return ret_ref;
 }
 
-static inline uint64_t Shutdown_clone_ptr(LDKShutdown *NONNULL_PTR arg) {
-       LDKShutdown ret_var = Shutdown_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_Shutdown_clone_ptr(uint32_t arg) {
-       LDKShutdown arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = Shutdown_clone_ptr(&arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_set_default_config(uint32_t this_ptr, uint32_t val) {
+       LDKChannelManagerReadArgs this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKUserConfig val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = UserConfig_clone(&val_conv);
+       ChannelManagerReadArgs_set_default_config(&this_ptr_conv, val_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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKShutdown ret_var = Shutdown_clone(&orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelManagerReadArgs_new(uint32_t keys_manager, uint32_t fee_estimator, uint32_t chain_monitor, uint32_t tx_broadcaster, uint32_t logger, uint32_t default_config, uint32_tArray channel_monitors) {
+       void* keys_manager_ptr = (void*)(((uint64_t)keys_manager) & ~1);
+       CHECK_ACCESS(keys_manager_ptr);
+       LDKKeysInterface keys_manager_conv = *(LDKKeysInterface*)(keys_manager_ptr);
+       void* fee_estimator_ptr = (void*)(((uint64_t)fee_estimator) & ~1);
+       CHECK_ACCESS(fee_estimator_ptr);
+       LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(fee_estimator_ptr);
+       void* chain_monitor_ptr = (void*)(((uint64_t)chain_monitor) & ~1);
+       CHECK_ACCESS(chain_monitor_ptr);
+       LDKWatch chain_monitor_conv = *(LDKWatch*)(chain_monitor_ptr);
+       void* tx_broadcaster_ptr = (void*)(((uint64_t)tx_broadcaster) & ~1);
+       CHECK_ACCESS(tx_broadcaster_ptr);
+       LDKBroadcasterInterface tx_broadcaster_conv = *(LDKBroadcasterInterface*)(tx_broadcaster_ptr);
+       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
+       CHECK_ACCESS(logger_ptr);
+       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
+       LDKUserConfig default_config_conv;
+       default_config_conv.inner = (void*)(default_config & (~1));
+       default_config_conv.is_owned = (default_config & 1) || (default_config == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(default_config_conv);
+       default_config_conv = UserConfig_clone(&default_config_conv);
+       LDKCVec_ChannelMonitorZ channel_monitors_constr;
+       channel_monitors_constr.datalen = channel_monitors->arr_len;
+       if (channel_monitors_constr.datalen > 0)
+               channel_monitors_constr.data = MALLOC(channel_monitors_constr.datalen * sizeof(LDKChannelMonitor), "LDKCVec_ChannelMonitorZ Elements");
+       else
+               channel_monitors_constr.data = NULL;
+       uint32_t* channel_monitors_vals = channel_monitors->elems;
+       for (size_t q = 0; q < channel_monitors_constr.datalen; q++) {
+               uint32_t channel_monitors_conv_16 = channel_monitors_vals[q];
+               LDKChannelMonitor channel_monitors_conv_16_conv;
+               channel_monitors_conv_16_conv.inner = (void*)(channel_monitors_conv_16 & (~1));
+               channel_monitors_conv_16_conv.is_owned = (channel_monitors_conv_16 & 1) || (channel_monitors_conv_16 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_monitors_conv_16_conv);
+               channel_monitors_constr.data[q] = channel_monitors_conv_16_conv;
+       }
+       LDKChannelManagerReadArgs ret_var = ChannelManagerReadArgs_new(keys_manager_conv, fee_estimator_conv, chain_monitor_conv, tx_broadcaster_conv, logger_conv, default_config_conv, channel_monitors_constr);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -24085,63 +22008,30 @@ uint32_t  __attribute__((visibility("default"))) TS_Shutdown_clone(uint32_t orig
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_free(uint32_t this_obj) {
-       LDKClosingSignedFeeRange this_obj_conv;
+uint32_t  __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelManagerZ_read(int8_tArray ser, uint32_t arg) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKChannelManagerReadArgs arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = (arg & 1) || (arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       // Warning: we need a move here but no clone is available for LDKChannelManagerReadArgs
+       LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ");
+       *ret_conv = C2Tuple_BlockHashChannelManagerZ_read(ser_ref, arg_conv);
+       return (uint64_t)ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_DecodeError_free(uint32_t this_obj) {
+       LDKDecodeError this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ClosingSignedFeeRange_free(this_obj_conv);
-}
-
-int64_t  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_get_min_fee_satoshis(uint32_t this_ptr) {
-       LDKClosingSignedFeeRange this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ClosingSignedFeeRange_get_min_fee_satoshis(&this_ptr_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_set_min_fee_satoshis(uint32_t this_ptr, int64_t val) {
-       LDKClosingSignedFeeRange this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ClosingSignedFeeRange_set_min_fee_satoshis(&this_ptr_conv, val);
-}
-
-int64_t  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_get_max_fee_satoshis(uint32_t this_ptr) {
-       LDKClosingSignedFeeRange this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ClosingSignedFeeRange_get_max_fee_satoshis(&this_ptr_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_set_max_fee_satoshis(uint32_t this_ptr, int64_t val) {
-       LDKClosingSignedFeeRange this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ClosingSignedFeeRange_set_max_fee_satoshis(&this_ptr_conv, val);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_new(int64_t min_fee_satoshis_arg, int64_t max_fee_satoshis_arg) {
-       LDKClosingSignedFeeRange ret_var = ClosingSignedFeeRange_new(min_fee_satoshis_arg, max_fee_satoshis_arg);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       DecodeError_free(this_obj_conv);
 }
 
-static inline uint64_t ClosingSignedFeeRange_clone_ptr(LDKClosingSignedFeeRange *NONNULL_PTR arg) {
-       LDKClosingSignedFeeRange ret_var = ClosingSignedFeeRange_clone(arg);
+static inline uint64_t DecodeError_clone_ptr(LDKDecodeError *NONNULL_PTR arg) {
+       LDKDecodeError ret_var = DecodeError_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -24152,21 +22042,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_clone_ptr(uint32_t arg) {
-       LDKClosingSignedFeeRange arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_DecodeError_clone_ptr(uint32_t arg) {
+       LDKDecodeError arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ClosingSignedFeeRange_clone_ptr(&arg_conv);
+       int64_t ret_val = DecodeError_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_clone(uint32_t orig) {
-       LDKClosingSignedFeeRange orig_conv;
+uint32_t  __attribute__((visibility("default"))) TS_DecodeError_clone(uint32_t orig) {
+       LDKDecodeError orig_conv;
        orig_conv.inner = (void*)(orig & (~1));
        orig_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKClosingSignedFeeRange ret_var = ClosingSignedFeeRange_clone(&orig_conv);
+       LDKDecodeError ret_var = DecodeError_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -24178,118 +22068,51 @@ uint32_t  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_clone(
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ClosingSigned_free(uint32_t this_obj) {
-       LDKClosingSigned this_obj_conv;
+void  __attribute__((visibility("default"))) TS_Init_free(uint32_t this_obj) {
+       LDKInit this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ClosingSigned_free(this_obj_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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *ClosingSigned_get_channel_id(&this_ptr_conv), 32);
-       return ret_arr;
-}
-
-void  __attribute__((visibility("default"))) TS_ClosingSigned_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKClosingSigned this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       ClosingSigned_set_channel_id(&this_ptr_conv, val_ref);
-}
-
-int64_t  __attribute__((visibility("default"))) TS_ClosingSigned_get_fee_satoshis(uint32_t this_ptr) {
-       LDKClosingSigned this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ClosingSigned_get_fee_satoshis(&this_ptr_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_ClosingSigned_set_fee_satoshis(uint32_t this_ptr, int64_t val) {
-       LDKClosingSigned this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ClosingSigned_set_fee_satoshis(&this_ptr_conv, val);
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_ClosingSigned_get_signature(uint32_t this_ptr) {
-       LDKClosingSigned this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ClosingSigned_get_signature(&this_ptr_conv).compact_form, 64);
-       return ret_arr;
-}
-
-void  __attribute__((visibility("default"))) TS_ClosingSigned_set_signature(uint32_t this_ptr, int8_tArray val) {
-       LDKClosingSigned this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSignature val_ref;
-       CHECK(*((uint32_t*)val) == 64);
-       memcpy(val_ref.compact_form, (uint8_t*)(val + 4), 64);
-       ClosingSigned_set_signature(&this_ptr_conv, val_ref);
+       Init_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosingSigned_get_fee_range(uint32_t this_ptr) {
-       LDKClosingSigned this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_Init_get_features(uint32_t this_ptr) {
+       LDKInit this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKClosingSignedFeeRange ret_var = ClosingSigned_get_fee_range(&this_ptr_conv);
+       LDKInitFeatures ret_var = Init_get_features(&this_ptr_conv);
        uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
        CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ClosingSigned_set_fee_range(uint32_t this_ptr, uint32_t val) {
-       LDKClosingSigned this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_Init_set_features(uint32_t this_ptr, uint32_t val) {
+       LDKInit this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKClosingSignedFeeRange val_conv;
+       LDKInitFeatures val_conv;
        val_conv.inner = (void*)(val & (~1));
        val_conv.is_owned = (val & 1) || (val == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = ClosingSignedFeeRange_clone(&val_conv);
-       ClosingSigned_set_fee_range(&this_ptr_conv, val_conv);
+       val_conv = InitFeatures_clone(&val_conv);
+       Init_set_features(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosingSigned_new(int8_tArray channel_id_arg, int64_t fee_satoshis_arg, int8_tArray signature_arg, uint32_t fee_range_arg) {
-       LDKThirtyTwoBytes channel_id_arg_ref;
-       CHECK(*((uint32_t*)channel_id_arg) == 32);
-       memcpy(channel_id_arg_ref.data, (uint8_t*)(channel_id_arg + 4), 32);
-       LDKSignature signature_arg_ref;
-       CHECK(*((uint32_t*)signature_arg) == 64);
-       memcpy(signature_arg_ref.compact_form, (uint8_t*)(signature_arg + 4), 64);
-       LDKClosingSignedFeeRange fee_range_arg_conv;
-       fee_range_arg_conv.inner = (void*)(fee_range_arg & (~1));
-       fee_range_arg_conv.is_owned = (fee_range_arg & 1) || (fee_range_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(fee_range_arg_conv);
-       fee_range_arg_conv = ClosingSignedFeeRange_clone(&fee_range_arg_conv);
-       LDKClosingSigned ret_var = ClosingSigned_new(channel_id_arg_ref, fee_satoshis_arg, signature_arg_ref, fee_range_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_Init_new(uint32_t features_arg) {
+       LDKInitFeatures features_arg_conv;
+       features_arg_conv.inner = (void*)(features_arg & (~1));
+       features_arg_conv.is_owned = (features_arg & 1) || (features_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(features_arg_conv);
+       features_arg_conv = InitFeatures_clone(&features_arg_conv);
+       LDKInit ret_var = Init_new(features_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -24301,8 +22124,8 @@ uint32_t  __attribute__((visibility("default"))) TS_ClosingSigned_new(int8_tArra
        return ret_ref;
 }
 
-static inline uint64_t ClosingSigned_clone_ptr(LDKClosingSigned *NONNULL_PTR arg) {
-       LDKClosingSigned ret_var = ClosingSigned_clone(arg);
+static inline uint64_t Init_clone_ptr(LDKInit *NONNULL_PTR arg) {
+       LDKInit ret_var = Init_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -24313,21 +22136,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_ClosingSigned_clone_ptr(uint32_t arg) {
-       LDKClosingSigned arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_Init_clone_ptr(uint32_t arg) {
+       LDKInit arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ClosingSigned_clone_ptr(&arg_conv);
+       int64_t ret_val = Init_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosingSigned_clone(uint32_t orig) {
-       LDKClosingSigned orig_conv;
+uint32_t  __attribute__((visibility("default"))) TS_Init_clone(uint32_t orig) {
+       LDKInit orig_conv;
        orig_conv.inner = (void*)(orig & (~1));
        orig_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKClosingSigned ret_var = ClosingSigned_clone(&orig_conv);
+       LDKInit ret_var = Init_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -24339,109 +22162,167 @@ uint32_t  __attribute__((visibility("default"))) TS_ClosingSigned_clone(uint32_t
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateAddHTLC_free(uint32_t this_obj) {
-       LDKUpdateAddHTLC this_obj_conv;
+void  __attribute__((visibility("default"))) TS_ErrorMessage_free(uint32_t this_obj) {
+       LDKErrorMessage this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       UpdateAddHTLC_free(this_obj_conv);
+       ErrorMessage_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UpdateAddHTLC_get_channel_id(uint32_t this_ptr) {
-       LDKUpdateAddHTLC this_ptr_conv;
+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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *UpdateAddHTLC_get_channel_id(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *ErrorMessage_get_channel_id(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateAddHTLC_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKUpdateAddHTLC this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ErrorMessage_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKErrorMessage this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
        LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       UpdateAddHTLC_set_channel_id(&this_ptr_conv, val_ref);
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       ErrorMessage_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_UpdateAddHTLC_get_htlc_id(uint32_t this_ptr) {
-       LDKUpdateAddHTLC this_ptr_conv;
+jstring  __attribute__((visibility("default"))) TS_ErrorMessage_get_data(uint32_t this_ptr) {
+       LDKErrorMessage this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = UpdateAddHTLC_get_htlc_id(&this_ptr_conv);
-       return ret_val;
+       LDKStr ret_str = ErrorMessage_get_data(&this_ptr_conv);
+       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
+       Str_free(ret_str);
+       return ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateAddHTLC_set_htlc_id(uint32_t this_ptr, int64_t val) {
-       LDKUpdateAddHTLC this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ErrorMessage_set_data(uint32_t this_ptr, jstring val) {
+       LDKErrorMessage this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UpdateAddHTLC_set_htlc_id(&this_ptr_conv, val);
+       LDKStr val_conv = str_ref_to_owned_c(val);
+       ErrorMessage_set_data(&this_ptr_conv, val_conv);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_UpdateAddHTLC_get_amount_msat(uint32_t this_ptr) {
-       LDKUpdateAddHTLC this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = UpdateAddHTLC_get_amount_msat(&this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ErrorMessage_new(int8_tArray channel_id_arg, jstring data_arg) {
+       LDKThirtyTwoBytes channel_id_arg_ref;
+       CHECK(channel_id_arg->arr_len == 32);
+       memcpy(channel_id_arg_ref.data, channel_id_arg->elems, 32);
+       LDKStr data_arg_conv = str_ref_to_owned_c(data_arg);
+       LDKErrorMessage ret_var = ErrorMessage_new(channel_id_arg_ref, data_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+static inline uint64_t ErrorMessage_clone_ptr(LDKErrorMessage *NONNULL_PTR arg) {
+       LDKErrorMessage ret_var = ErrorMessage_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_ErrorMessage_clone_ptr(uint32_t arg) {
+       LDKErrorMessage arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ErrorMessage_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateAddHTLC_set_amount_msat(uint32_t this_ptr, int64_t val) {
-       LDKUpdateAddHTLC this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UpdateAddHTLC_set_amount_msat(&this_ptr_conv, val);
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKErrorMessage ret_var = ErrorMessage_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UpdateAddHTLC_get_payment_hash(uint32_t this_ptr) {
-       LDKUpdateAddHTLC this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_Ping_free(uint32_t this_obj) {
+       LDKPing this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       Ping_free(this_obj_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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *UpdateAddHTLC_get_payment_hash(&this_ptr_conv), 32);
-       return ret_arr;
+       int16_t ret_val = Ping_get_ponglen(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateAddHTLC_set_payment_hash(uint32_t this_ptr, int8_tArray val) {
-       LDKUpdateAddHTLC this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_Ping_set_ponglen(uint32_t this_ptr, int16_t val) {
+       LDKPing this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       UpdateAddHTLC_set_payment_hash(&this_ptr_conv, val_ref);
+       Ping_set_ponglen(&this_ptr_conv, val);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_UpdateAddHTLC_get_cltv_expiry(uint32_t this_ptr) {
-       LDKUpdateAddHTLC this_ptr_conv;
+int16_t  __attribute__((visibility("default"))) TS_Ping_get_byteslen(uint32_t this_ptr) {
+       LDKPing this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = UpdateAddHTLC_get_cltv_expiry(&this_ptr_conv);
+       int16_t ret_val = Ping_get_byteslen(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateAddHTLC_set_cltv_expiry(uint32_t this_ptr, int32_t val) {
-       LDKUpdateAddHTLC this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_Ping_set_byteslen(uint32_t this_ptr, int16_t val) {
+       LDKPing this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UpdateAddHTLC_set_cltv_expiry(&this_ptr_conv, val);
+       Ping_set_byteslen(&this_ptr_conv, val);
 }
 
-static inline uint64_t UpdateAddHTLC_clone_ptr(LDKUpdateAddHTLC *NONNULL_PTR arg) {
-       LDKUpdateAddHTLC ret_var = UpdateAddHTLC_clone(arg);
+uint32_t  __attribute__((visibility("default"))) TS_Ping_new(int16_t ponglen_arg, int16_t byteslen_arg) {
+       LDKPing ret_var = Ping_new(ponglen_arg, byteslen_arg);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+static inline uint64_t Ping_clone_ptr(LDKPing *NONNULL_PTR arg) {
+       LDKPing ret_var = Ping_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -24452,21 +22333,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_UpdateAddHTLC_clone_ptr(uint32_t arg) {
-       LDKUpdateAddHTLC arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_Ping_clone_ptr(uint32_t arg) {
+       LDKPing arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = UpdateAddHTLC_clone_ptr(&arg_conv);
+       int64_t ret_val = Ping_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UpdateAddHTLC_clone(uint32_t orig) {
-       LDKUpdateAddHTLC 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKUpdateAddHTLC ret_var = UpdateAddHTLC_clone(&orig_conv);
+       LDKPing ret_var = Ping_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -24478,81 +22359,33 @@ uint32_t  __attribute__((visibility("default"))) TS_UpdateAddHTLC_clone(uint32_t
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_free(uint32_t this_obj) {
-       LDKUpdateFulfillHTLC this_obj_conv;
+void  __attribute__((visibility("default"))) TS_Pong_free(uint32_t this_obj) {
+       LDKPong this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       UpdateFulfillHTLC_free(this_obj_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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *UpdateFulfillHTLC_get_channel_id(&this_ptr_conv), 32);
-       return ret_arr;
-}
-
-void  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKUpdateFulfillHTLC this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       UpdateFulfillHTLC_set_channel_id(&this_ptr_conv, val_ref);
+       Pong_free(this_obj_conv);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_get_htlc_id(uint32_t this_ptr) {
-       LDKUpdateFulfillHTLC 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = UpdateFulfillHTLC_get_htlc_id(&this_ptr_conv);
+       int16_t ret_val = Pong_get_byteslen(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_set_htlc_id(uint32_t this_ptr, int64_t val) {
-       LDKUpdateFulfillHTLC this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UpdateFulfillHTLC_set_htlc_id(&this_ptr_conv, val);
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_get_payment_preimage(uint32_t this_ptr) {
-       LDKUpdateFulfillHTLC this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *UpdateFulfillHTLC_get_payment_preimage(&this_ptr_conv), 32);
-       return ret_arr;
-}
-
-void  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_set_payment_preimage(uint32_t this_ptr, int8_tArray val) {
-       LDKUpdateFulfillHTLC this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_Pong_set_byteslen(uint32_t this_ptr, int16_t val) {
+       LDKPong this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       UpdateFulfillHTLC_set_payment_preimage(&this_ptr_conv, val_ref);
+       Pong_set_byteslen(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_new(int8_tArray channel_id_arg, int64_t htlc_id_arg, int8_tArray payment_preimage_arg) {
-       LDKThirtyTwoBytes channel_id_arg_ref;
-       CHECK(*((uint32_t*)channel_id_arg) == 32);
-       memcpy(channel_id_arg_ref.data, (uint8_t*)(channel_id_arg + 4), 32);
-       LDKThirtyTwoBytes payment_preimage_arg_ref;
-       CHECK(*((uint32_t*)payment_preimage_arg) == 32);
-       memcpy(payment_preimage_arg_ref.data, (uint8_t*)(payment_preimage_arg + 4), 32);
-       LDKUpdateFulfillHTLC ret_var = UpdateFulfillHTLC_new(channel_id_arg_ref, htlc_id_arg, payment_preimage_arg_ref);
+uint32_t  __attribute__((visibility("default"))) TS_Pong_new(int16_t byteslen_arg) {
+       LDKPong ret_var = Pong_new(byteslen_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -24564,8 +22397,8 @@ uint32_t  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_new(int8_t
        return ret_ref;
 }
 
-static inline uint64_t UpdateFulfillHTLC_clone_ptr(LDKUpdateFulfillHTLC *NONNULL_PTR arg) {
-       LDKUpdateFulfillHTLC ret_var = UpdateFulfillHTLC_clone(arg);
+static inline uint64_t Pong_clone_ptr(LDKPong *NONNULL_PTR arg) {
+       LDKPong ret_var = Pong_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -24576,21 +22409,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_clone_ptr(uint32_t arg) {
-       LDKUpdateFulfillHTLC arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_Pong_clone_ptr(uint32_t arg) {
+       LDKPong arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = UpdateFulfillHTLC_clone_ptr(&arg_conv);
+       int64_t ret_val = Pong_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_clone(uint32_t orig) {
-       LDKUpdateFulfillHTLC 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKUpdateFulfillHTLC ret_var = UpdateFulfillHTLC_clone(&orig_conv);
+       LDKPong ret_var = Pong_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -24602,529 +22435,386 @@ uint32_t  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_clone(uint
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateFailHTLC_free(uint32_t this_obj) {
-       LDKUpdateFailHTLC this_obj_conv;
+void  __attribute__((visibility("default"))) TS_OpenChannel_free(uint32_t this_obj) {
+       LDKOpenChannel this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       UpdateFailHTLC_free(this_obj_conv);
+       OpenChannel_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UpdateFailHTLC_get_channel_id(uint32_t this_ptr) {
-       LDKUpdateFailHTLC 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *UpdateFailHTLC_get_channel_id(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *OpenChannel_get_chain_hash(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateFailHTLC_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKUpdateFailHTLC this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
        LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       UpdateFailHTLC_set_channel_id(&this_ptr_conv, val_ref);
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       OpenChannel_set_chain_hash(&this_ptr_conv, val_ref);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_UpdateFailHTLC_get_htlc_id(uint32_t this_ptr) {
-       LDKUpdateFailHTLC this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_get_temporary_channel_id(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = UpdateFailHTLC_get_htlc_id(&this_ptr_conv);
-       return ret_val;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *OpenChannel_get_temporary_channel_id(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateFailHTLC_set_htlc_id(uint32_t this_ptr, int64_t val) {
-       LDKUpdateFailHTLC this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_temporary_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UpdateFailHTLC_set_htlc_id(&this_ptr_conv, val);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       OpenChannel_set_temporary_channel_id(&this_ptr_conv, val_ref);
 }
 
-static inline uint64_t UpdateFailHTLC_clone_ptr(LDKUpdateFailHTLC *NONNULL_PTR arg) {
-       LDKUpdateFailHTLC ret_var = UpdateFailHTLC_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_UpdateFailHTLC_clone_ptr(uint32_t arg) {
-       LDKUpdateFailHTLC arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = UpdateFailHTLC_clone_ptr(&arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_OpenChannel_get_funding_satoshis(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = OpenChannel_get_funding_satoshis(&this_ptr_conv);
        return ret_val;
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKUpdateFailHTLC ret_var = UpdateFailHTLC_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_funding_satoshis(uint32_t this_ptr, int64_t val) {
+       LDKOpenChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       OpenChannel_set_funding_satoshis(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_free(uint32_t this_obj) {
-       LDKUpdateFailMalformedHTLC this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       UpdateFailMalformedHTLC_free(this_obj_conv);
+int64_t  __attribute__((visibility("default"))) TS_OpenChannel_get_push_msat(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = OpenChannel_get_push_msat(&this_ptr_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_get_channel_id(uint32_t this_ptr) {
-       LDKUpdateFailMalformedHTLC this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_push_msat(uint32_t this_ptr, int64_t val) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *UpdateFailMalformedHTLC_get_channel_id(&this_ptr_conv), 32);
-       return ret_arr;
+       OpenChannel_set_push_msat(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKUpdateFailMalformedHTLC this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_OpenChannel_get_dust_limit_satoshis(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       UpdateFailMalformedHTLC_set_channel_id(&this_ptr_conv, val_ref);
+       int64_t ret_val = OpenChannel_get_dust_limit_satoshis(&this_ptr_conv);
+       return ret_val;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_get_htlc_id(uint32_t this_ptr) {
-       LDKUpdateFailMalformedHTLC this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_dust_limit_satoshis(uint32_t this_ptr, int64_t val) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = UpdateFailMalformedHTLC_get_htlc_id(&this_ptr_conv);
+       OpenChannel_set_dust_limit_satoshis(&this_ptr_conv, val);
+}
+
+int64_t  __attribute__((visibility("default"))) TS_OpenChannel_get_max_htlc_value_in_flight_msat(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = OpenChannel_get_max_htlc_value_in_flight_msat(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_set_htlc_id(uint32_t this_ptr, int64_t val) {
-       LDKUpdateFailMalformedHTLC this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_max_htlc_value_in_flight_msat(uint32_t this_ptr, int64_t val) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UpdateFailMalformedHTLC_set_htlc_id(&this_ptr_conv, val);
+       OpenChannel_set_max_htlc_value_in_flight_msat(&this_ptr_conv, val);
 }
 
-int16_t  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_get_failure_code(uint32_t this_ptr) {
-       LDKUpdateFailMalformedHTLC this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_OpenChannel_get_channel_reserve_satoshis(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = UpdateFailMalformedHTLC_get_failure_code(&this_ptr_conv);
+       int64_t ret_val = OpenChannel_get_channel_reserve_satoshis(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_set_failure_code(uint32_t this_ptr, int16_t val) {
-       LDKUpdateFailMalformedHTLC this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_channel_reserve_satoshis(uint32_t this_ptr, int64_t val) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UpdateFailMalformedHTLC_set_failure_code(&this_ptr_conv, val);
+       OpenChannel_set_channel_reserve_satoshis(&this_ptr_conv, val);
 }
 
-static inline uint64_t UpdateFailMalformedHTLC_clone_ptr(LDKUpdateFailMalformedHTLC *NONNULL_PTR arg) {
-       LDKUpdateFailMalformedHTLC ret_var = UpdateFailMalformedHTLC_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
+int64_t  __attribute__((visibility("default"))) TS_OpenChannel_get_htlc_minimum_msat(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = OpenChannel_get_htlc_minimum_msat(&this_ptr_conv);
+       return ret_val;
 }
-       return ret_ref;
+
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_htlc_minimum_msat(uint32_t this_ptr, int64_t val) {
+       LDKOpenChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       OpenChannel_set_htlc_minimum_msat(&this_ptr_conv, val);
 }
-int64_t  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_clone_ptr(uint32_t arg) {
-       LDKUpdateFailMalformedHTLC arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = UpdateFailMalformedHTLC_clone_ptr(&arg_conv);
+
+int32_t  __attribute__((visibility("default"))) TS_OpenChannel_get_feerate_per_kw(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = OpenChannel_get_feerate_per_kw(&this_ptr_conv);
        return ret_val;
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKUpdateFailMalformedHTLC ret_var = UpdateFailMalformedHTLC_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_feerate_per_kw(uint32_t this_ptr, int32_t val) {
+       LDKOpenChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       OpenChannel_set_feerate_per_kw(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_CommitmentSigned_free(uint32_t this_obj) {
-       LDKCommitmentSigned this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       CommitmentSigned_free(this_obj_conv);
+int16_t  __attribute__((visibility("default"))) TS_OpenChannel_get_to_self_delay(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int16_t ret_val = OpenChannel_get_to_self_delay(&this_ptr_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_CommitmentSigned_get_channel_id(uint32_t this_ptr) {
-       LDKCommitmentSigned this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_to_self_delay(uint32_t this_ptr, int16_t val) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *CommitmentSigned_get_channel_id(&this_ptr_conv), 32);
-       return ret_arr;
+       OpenChannel_set_to_self_delay(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_CommitmentSigned_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKCommitmentSigned this_ptr_conv;
+int16_t  __attribute__((visibility("default"))) TS_OpenChannel_get_max_accepted_htlcs(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       CommitmentSigned_set_channel_id(&this_ptr_conv, val_ref);
+       int16_t ret_val = OpenChannel_get_max_accepted_htlcs(&this_ptr_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_max_accepted_htlcs(uint32_t this_ptr, int16_t val) {
+       LDKOpenChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       OpenChannel_set_max_accepted_htlcs(&this_ptr_conv, val);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_CommitmentSigned_get_signature(uint32_t this_ptr) {
-       LDKCommitmentSigned this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_get_funding_pubkey(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), CommitmentSigned_get_signature(&this_ptr_conv).compact_form, 64);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, OpenChannel_get_funding_pubkey(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_CommitmentSigned_set_signature(uint32_t this_ptr, int8_tArray val) {
-       LDKCommitmentSigned this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_funding_pubkey(uint32_t this_ptr, int8_tArray val) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSignature val_ref;
-       CHECK(*((uint32_t*)val) == 64);
-       memcpy(val_ref.compact_form, (uint8_t*)(val + 4), 64);
-       CommitmentSigned_set_signature(&this_ptr_conv, val_ref);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       OpenChannel_set_funding_pubkey(&this_ptr_conv, val_ref);
 }
 
-void  __attribute__((visibility("default"))) TS_CommitmentSigned_set_htlc_signatures(uint32_t this_ptr, ptrArray val) {
-       LDKCommitmentSigned this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_get_revocation_basepoint(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_SignatureZ val_constr;
-       val_constr.datalen = *((uint32_t*)val);
-       if (val_constr.datalen > 0)
-               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ Elements");
-       else
-               val_constr.data = NULL;
-       int8_tArray* val_vals = (int8_tArray*)(val + 4);
-       for (size_t m = 0; m < val_constr.datalen; m++) {
-               int8_tArray val_conv_12 = val_vals[m];
-               LDKSignature val_conv_12_ref;
-               CHECK(*((uint32_t*)val_conv_12) == 64);
-               memcpy(val_conv_12_ref.compact_form, (uint8_t*)(val_conv_12 + 4), 64);
-               val_constr.data[m] = val_conv_12_ref;
-       }
-       CommitmentSigned_set_htlc_signatures(&this_ptr_conv, val_constr);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CommitmentSigned_new(int8_tArray channel_id_arg, int8_tArray signature_arg, ptrArray htlc_signatures_arg) {
-       LDKThirtyTwoBytes channel_id_arg_ref;
-       CHECK(*((uint32_t*)channel_id_arg) == 32);
-       memcpy(channel_id_arg_ref.data, (uint8_t*)(channel_id_arg + 4), 32);
-       LDKSignature signature_arg_ref;
-       CHECK(*((uint32_t*)signature_arg) == 64);
-       memcpy(signature_arg_ref.compact_form, (uint8_t*)(signature_arg + 4), 64);
-       LDKCVec_SignatureZ htlc_signatures_arg_constr;
-       htlc_signatures_arg_constr.datalen = *((uint32_t*)htlc_signatures_arg);
-       if (htlc_signatures_arg_constr.datalen > 0)
-               htlc_signatures_arg_constr.data = MALLOC(htlc_signatures_arg_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ Elements");
-       else
-               htlc_signatures_arg_constr.data = NULL;
-       int8_tArray* htlc_signatures_arg_vals = (int8_tArray*)(htlc_signatures_arg + 4);
-       for (size_t m = 0; m < htlc_signatures_arg_constr.datalen; m++) {
-               int8_tArray htlc_signatures_arg_conv_12 = htlc_signatures_arg_vals[m];
-               LDKSignature htlc_signatures_arg_conv_12_ref;
-               CHECK(*((uint32_t*)htlc_signatures_arg_conv_12) == 64);
-               memcpy(htlc_signatures_arg_conv_12_ref.compact_form, (uint8_t*)(htlc_signatures_arg_conv_12 + 4), 64);
-               htlc_signatures_arg_constr.data[m] = htlc_signatures_arg_conv_12_ref;
-       }
-       LDKCommitmentSigned ret_var = CommitmentSigned_new(channel_id_arg_ref, signature_arg_ref, htlc_signatures_arg_constr);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
-}
-
-static inline uint64_t CommitmentSigned_clone_ptr(LDKCommitmentSigned *NONNULL_PTR arg) {
-       LDKCommitmentSigned ret_var = CommitmentSigned_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_CommitmentSigned_clone_ptr(uint32_t arg) {
-       LDKCommitmentSigned arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = CommitmentSigned_clone_ptr(&arg_conv);
-       return ret_val;
-}
-
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKCommitmentSigned ret_var = CommitmentSigned_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, OpenChannel_get_revocation_basepoint(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_RevokeAndACK_free(uint32_t this_obj) {
-       LDKRevokeAndACK this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       RevokeAndACK_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_revocation_basepoint(uint32_t this_ptr, int8_tArray val) {
+       LDKOpenChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       OpenChannel_set_revocation_basepoint(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_RevokeAndACK_get_channel_id(uint32_t this_ptr) {
-       LDKRevokeAndACK this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_get_payment_point(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *RevokeAndACK_get_channel_id(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, OpenChannel_get_payment_point(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_RevokeAndACK_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKRevokeAndACK this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_payment_point(uint32_t this_ptr, int8_tArray val) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       RevokeAndACK_set_channel_id(&this_ptr_conv, val_ref);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       OpenChannel_set_payment_point(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_RevokeAndACK_get_per_commitment_secret(uint32_t this_ptr) {
-       LDKRevokeAndACK this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_get_delayed_payment_basepoint(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *RevokeAndACK_get_per_commitment_secret(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, OpenChannel_get_delayed_payment_basepoint(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_RevokeAndACK_set_per_commitment_secret(uint32_t this_ptr, int8_tArray val) {
-       LDKRevokeAndACK this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_delayed_payment_basepoint(uint32_t this_ptr, int8_tArray val) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       RevokeAndACK_set_per_commitment_secret(&this_ptr_conv, val_ref);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       OpenChannel_set_delayed_payment_basepoint(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_RevokeAndACK_get_next_per_commitment_point(uint32_t this_ptr) {
-       LDKRevokeAndACK this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_get_htlc_basepoint(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), RevokeAndACK_get_next_per_commitment_point(&this_ptr_conv).compressed_form, 33);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, OpenChannel_get_htlc_basepoint(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_RevokeAndACK_set_next_per_commitment_point(uint32_t this_ptr, int8_tArray val) {
-       LDKRevokeAndACK this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_htlc_basepoint(uint32_t this_ptr, int8_tArray val) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
        LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       RevokeAndACK_set_next_per_commitment_point(&this_ptr_conv, val_ref);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_RevokeAndACK_new(int8_tArray channel_id_arg, int8_tArray per_commitment_secret_arg, int8_tArray next_per_commitment_point_arg) {
-       LDKThirtyTwoBytes channel_id_arg_ref;
-       CHECK(*((uint32_t*)channel_id_arg) == 32);
-       memcpy(channel_id_arg_ref.data, (uint8_t*)(channel_id_arg + 4), 32);
-       LDKThirtyTwoBytes per_commitment_secret_arg_ref;
-       CHECK(*((uint32_t*)per_commitment_secret_arg) == 32);
-       memcpy(per_commitment_secret_arg_ref.data, (uint8_t*)(per_commitment_secret_arg + 4), 32);
-       LDKPublicKey next_per_commitment_point_arg_ref;
-       CHECK(*((uint32_t*)next_per_commitment_point_arg) == 33);
-       memcpy(next_per_commitment_point_arg_ref.compressed_form, (uint8_t*)(next_per_commitment_point_arg + 4), 33);
-       LDKRevokeAndACK ret_var = RevokeAndACK_new(channel_id_arg_ref, per_commitment_secret_arg_ref, next_per_commitment_point_arg_ref);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
-}
-
-static inline uint64_t RevokeAndACK_clone_ptr(LDKRevokeAndACK *NONNULL_PTR arg) {
-       LDKRevokeAndACK ret_var = RevokeAndACK_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_RevokeAndACK_clone_ptr(uint32_t arg) {
-       LDKRevokeAndACK arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = RevokeAndACK_clone_ptr(&arg_conv);
-       return ret_val;
-}
-
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKRevokeAndACK ret_var = RevokeAndACK_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
-}
-
-void  __attribute__((visibility("default"))) TS_UpdateFee_free(uint32_t this_obj) {
-       LDKUpdateFee this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       UpdateFee_free(this_obj_conv);
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       OpenChannel_set_htlc_basepoint(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UpdateFee_get_channel_id(uint32_t this_ptr) {
-       LDKUpdateFee this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_get_first_per_commitment_point(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *UpdateFee_get_channel_id(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, OpenChannel_get_first_per_commitment_point(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateFee_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKUpdateFee this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_first_per_commitment_point(uint32_t this_ptr, int8_tArray val) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       UpdateFee_set_channel_id(&this_ptr_conv, val_ref);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       OpenChannel_set_first_per_commitment_point(&this_ptr_conv, val_ref);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_UpdateFee_get_feerate_per_kw(uint32_t this_ptr) {
-       LDKUpdateFee this_ptr_conv;
+int8_t  __attribute__((visibility("default"))) TS_OpenChannel_get_channel_flags(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = UpdateFee_get_feerate_per_kw(&this_ptr_conv);
+       int8_t ret_val = OpenChannel_get_channel_flags(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_UpdateFee_set_feerate_per_kw(uint32_t this_ptr, int32_t val) {
-       LDKUpdateFee this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_channel_flags(uint32_t this_ptr, int8_t val) {
+       LDKOpenChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UpdateFee_set_feerate_per_kw(&this_ptr_conv, val);
+       OpenChannel_set_channel_flags(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UpdateFee_new(int8_tArray channel_id_arg, int32_t feerate_per_kw_arg) {
-       LDKThirtyTwoBytes channel_id_arg_ref;
-       CHECK(*((uint32_t*)channel_id_arg) == 32);
-       memcpy(channel_id_arg_ref.data, (uint8_t*)(channel_id_arg + 4), 32);
-       LDKUpdateFee ret_var = UpdateFee_new(channel_id_arg_ref, feerate_per_kw_arg);
+uint32_t  __attribute__((visibility("default"))) TS_OpenChannel_get_channel_type(uint32_t this_ptr) {
+       LDKOpenChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKChannelTypeFeatures ret_var = OpenChannel_get_channel_type(&this_ptr_conv);
        uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       if ((uint64_t)ret_var.inner > 4096) {
+               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
        CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
+               ret_ref = (uint64_t)ret_var.inner;
+               if (ret_var.is_owned) {
+                       ret_ref |= 1;
+               }
        }
        return ret_ref;
 }
 
-static inline uint64_t UpdateFee_clone_ptr(LDKUpdateFee *NONNULL_PTR arg) {
-       LDKUpdateFee ret_var = UpdateFee_clone(arg);
+void  __attribute__((visibility("default"))) TS_OpenChannel_set_channel_type(uint32_t this_ptr, uint32_t val) {
+       LDKOpenChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKChannelTypeFeatures val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = ChannelTypeFeatures_clone(&val_conv);
+       OpenChannel_set_channel_type(&this_ptr_conv, val_conv);
+}
+
+static inline uint64_t OpenChannel_clone_ptr(LDKOpenChannel *NONNULL_PTR arg) {
+       LDKOpenChannel ret_var = OpenChannel_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -25135,21 +22825,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_UpdateFee_clone_ptr(uint32_t arg) {
-       LDKUpdateFee arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_OpenChannel_clone_ptr(uint32_t arg) {
+       LDKOpenChannel arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = UpdateFee_clone_ptr(&arg_conv);
+       int64_t ret_val = OpenChannel_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UpdateFee_clone(uint32_t orig) {
-       LDKUpdateFee 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKUpdateFee ret_var = UpdateFee_clone(&orig_conv);
+       LDKOpenChannel ret_var = OpenChannel_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -25161,326 +22851,282 @@ uint32_t  __attribute__((visibility("default"))) TS_UpdateFee_clone(uint32_t ori
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_DataLossProtect_free(uint32_t this_obj) {
-       LDKDataLossProtect this_obj_conv;
+void  __attribute__((visibility("default"))) TS_AcceptChannel_free(uint32_t this_obj) {
+       LDKAcceptChannel this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       DataLossProtect_free(this_obj_conv);
+       AcceptChannel_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_DataLossProtect_get_your_last_per_commitment_secret(uint32_t this_ptr) {
-       LDKDataLossProtect 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *DataLossProtect_get_your_last_per_commitment_secret(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *AcceptChannel_get_temporary_channel_id(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_DataLossProtect_set_your_last_per_commitment_secret(uint32_t this_ptr, int8_tArray val) {
-       LDKDataLossProtect this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_AcceptChannel_set_temporary_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
        LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       DataLossProtect_set_your_last_per_commitment_secret(&this_ptr_conv, val_ref);
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       AcceptChannel_set_temporary_channel_id(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_DataLossProtect_get_my_current_per_commitment_point(uint32_t this_ptr) {
-       LDKDataLossProtect this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_AcceptChannel_get_dust_limit_satoshis(uint32_t this_ptr) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), DataLossProtect_get_my_current_per_commitment_point(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       int64_t ret_val = AcceptChannel_get_dust_limit_satoshis(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_DataLossProtect_set_my_current_per_commitment_point(uint32_t this_ptr, int8_tArray val) {
-       LDKDataLossProtect this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_AcceptChannel_set_dust_limit_satoshis(uint32_t this_ptr, int64_t val) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       DataLossProtect_set_my_current_per_commitment_point(&this_ptr_conv, val_ref);
+       AcceptChannel_set_dust_limit_satoshis(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_DataLossProtect_new(int8_tArray your_last_per_commitment_secret_arg, int8_tArray my_current_per_commitment_point_arg) {
-       LDKThirtyTwoBytes your_last_per_commitment_secret_arg_ref;
-       CHECK(*((uint32_t*)your_last_per_commitment_secret_arg) == 32);
-       memcpy(your_last_per_commitment_secret_arg_ref.data, (uint8_t*)(your_last_per_commitment_secret_arg + 4), 32);
-       LDKPublicKey my_current_per_commitment_point_arg_ref;
-       CHECK(*((uint32_t*)my_current_per_commitment_point_arg) == 33);
-       memcpy(my_current_per_commitment_point_arg_ref.compressed_form, (uint8_t*)(my_current_per_commitment_point_arg + 4), 33);
-       LDKDataLossProtect ret_var = DataLossProtect_new(your_last_per_commitment_secret_arg_ref, my_current_per_commitment_point_arg_ref);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int64_t  __attribute__((visibility("default"))) TS_AcceptChannel_get_max_htlc_value_in_flight_msat(uint32_t this_ptr) {
+       LDKAcceptChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = AcceptChannel_get_max_htlc_value_in_flight_msat(&this_ptr_conv);
+       return ret_val;
 }
 
-static inline uint64_t DataLossProtect_clone_ptr(LDKDataLossProtect *NONNULL_PTR arg) {
-       LDKDataLossProtect ret_var = DataLossProtect_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_AcceptChannel_set_max_htlc_value_in_flight_msat(uint32_t this_ptr, int64_t val) {
+       LDKAcceptChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       AcceptChannel_set_max_htlc_value_in_flight_msat(&this_ptr_conv, val);
 }
-int64_t  __attribute__((visibility("default"))) TS_DataLossProtect_clone_ptr(uint32_t arg) {
-       LDKDataLossProtect arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = DataLossProtect_clone_ptr(&arg_conv);
+
+int64_t  __attribute__((visibility("default"))) TS_AcceptChannel_get_channel_reserve_satoshis(uint32_t this_ptr) {
+       LDKAcceptChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = AcceptChannel_get_channel_reserve_satoshis(&this_ptr_conv);
        return ret_val;
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKDataLossProtect ret_var = DataLossProtect_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_AcceptChannel_set_channel_reserve_satoshis(uint32_t this_ptr, int64_t val) {
+       LDKAcceptChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       AcceptChannel_set_channel_reserve_satoshis(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelReestablish_free(uint32_t this_obj) {
-       LDKChannelReestablish this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelReestablish_free(this_obj_conv);
+int64_t  __attribute__((visibility("default"))) TS_AcceptChannel_get_htlc_minimum_msat(uint32_t this_ptr) {
+       LDKAcceptChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = AcceptChannel_get_htlc_minimum_msat(&this_ptr_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelReestablish_get_channel_id(uint32_t this_ptr) {
-       LDKChannelReestablish this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_AcceptChannel_set_htlc_minimum_msat(uint32_t this_ptr, int64_t val) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *ChannelReestablish_get_channel_id(&this_ptr_conv), 32);
-       return ret_arr;
+       AcceptChannel_set_htlc_minimum_msat(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelReestablish_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKChannelReestablish this_ptr_conv;
+int32_t  __attribute__((visibility("default"))) TS_AcceptChannel_get_minimum_depth(uint32_t this_ptr) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       ChannelReestablish_set_channel_id(&this_ptr_conv, val_ref);
+       int32_t ret_val = AcceptChannel_get_minimum_depth(&this_ptr_conv);
+       return ret_val;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ChannelReestablish_get_next_local_commitment_number(uint32_t this_ptr) {
-       LDKChannelReestablish this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_AcceptChannel_set_minimum_depth(uint32_t this_ptr, int32_t val) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelReestablish_get_next_local_commitment_number(&this_ptr_conv);
+       AcceptChannel_set_minimum_depth(&this_ptr_conv, val);
+}
+
+int16_t  __attribute__((visibility("default"))) TS_AcceptChannel_get_to_self_delay(uint32_t this_ptr) {
+       LDKAcceptChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int16_t ret_val = AcceptChannel_get_to_self_delay(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelReestablish_set_next_local_commitment_number(uint32_t this_ptr, int64_t val) {
-       LDKChannelReestablish this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_AcceptChannel_set_to_self_delay(uint32_t this_ptr, int16_t val) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelReestablish_set_next_local_commitment_number(&this_ptr_conv, val);
+       AcceptChannel_set_to_self_delay(&this_ptr_conv, val);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ChannelReestablish_get_next_remote_commitment_number(uint32_t this_ptr) {
-       LDKChannelReestablish this_ptr_conv;
+int16_t  __attribute__((visibility("default"))) TS_AcceptChannel_get_max_accepted_htlcs(uint32_t this_ptr) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ChannelReestablish_get_next_remote_commitment_number(&this_ptr_conv);
+       int16_t ret_val = AcceptChannel_get_max_accepted_htlcs(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelReestablish_set_next_remote_commitment_number(uint32_t this_ptr, int64_t val) {
-       LDKChannelReestablish this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_AcceptChannel_set_max_accepted_htlcs(uint32_t this_ptr, int16_t val) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelReestablish_set_next_remote_commitment_number(&this_ptr_conv, val);
+       AcceptChannel_set_max_accepted_htlcs(&this_ptr_conv, val);
 }
 
-static inline uint64_t ChannelReestablish_clone_ptr(LDKChannelReestablish *NONNULL_PTR arg) {
-       LDKChannelReestablish ret_var = ChannelReestablish_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_get_funding_pubkey(uint32_t this_ptr) {
+       LDKAcceptChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, AcceptChannel_get_funding_pubkey(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
-int64_t  __attribute__((visibility("default"))) TS_ChannelReestablish_clone_ptr(uint32_t arg) {
-       LDKChannelReestablish arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelReestablish_clone_ptr(&arg_conv);
-       return ret_val;
+
+void  __attribute__((visibility("default"))) TS_AcceptChannel_set_funding_pubkey(uint32_t this_ptr, int8_tArray val) {
+       LDKAcceptChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       AcceptChannel_set_funding_pubkey(&this_ptr_conv, val_ref);
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelReestablish ret_var = ChannelReestablish_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_get_revocation_basepoint(uint32_t this_ptr) {
+       LDKAcceptChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, AcceptChannel_get_revocation_basepoint(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_AnnouncementSignatures_free(uint32_t this_obj) {
-       LDKAnnouncementSignatures this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       AnnouncementSignatures_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_AcceptChannel_set_revocation_basepoint(uint32_t this_ptr, int8_tArray val) {
+       LDKAcceptChannel this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       AcceptChannel_set_revocation_basepoint(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_AnnouncementSignatures_get_channel_id(uint32_t this_ptr) {
-       LDKAnnouncementSignatures this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_get_payment_point(uint32_t this_ptr) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *AnnouncementSignatures_get_channel_id(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, AcceptChannel_get_payment_point(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_AnnouncementSignatures_set_channel_id(uint32_t this_ptr, int8_tArray val) {
-       LDKAnnouncementSignatures this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_AcceptChannel_set_payment_point(uint32_t this_ptr, int8_tArray val) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       AnnouncementSignatures_set_channel_id(&this_ptr_conv, val_ref);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       AcceptChannel_set_payment_point(&this_ptr_conv, val_ref);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_AnnouncementSignatures_get_short_channel_id(uint32_t this_ptr) {
-       LDKAnnouncementSignatures this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_get_delayed_payment_basepoint(uint32_t this_ptr) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = AnnouncementSignatures_get_short_channel_id(&this_ptr_conv);
-       return ret_val;
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, AcceptChannel_get_delayed_payment_basepoint(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_AnnouncementSignatures_set_short_channel_id(uint32_t this_ptr, int64_t val) {
-       LDKAnnouncementSignatures this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_AcceptChannel_set_delayed_payment_basepoint(uint32_t this_ptr, int8_tArray val) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       AnnouncementSignatures_set_short_channel_id(&this_ptr_conv, val);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       AcceptChannel_set_delayed_payment_basepoint(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_AnnouncementSignatures_get_node_signature(uint32_t this_ptr) {
-       LDKAnnouncementSignatures this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_get_htlc_basepoint(uint32_t this_ptr) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), AnnouncementSignatures_get_node_signature(&this_ptr_conv).compact_form, 64);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, AcceptChannel_get_htlc_basepoint(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_AnnouncementSignatures_set_node_signature(uint32_t this_ptr, int8_tArray val) {
-       LDKAnnouncementSignatures this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_AcceptChannel_set_htlc_basepoint(uint32_t this_ptr, int8_tArray val) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSignature val_ref;
-       CHECK(*((uint32_t*)val) == 64);
-       memcpy(val_ref.compact_form, (uint8_t*)(val + 4), 64);
-       AnnouncementSignatures_set_node_signature(&this_ptr_conv, val_ref);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       AcceptChannel_set_htlc_basepoint(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_AnnouncementSignatures_get_bitcoin_signature(uint32_t this_ptr) {
-       LDKAnnouncementSignatures this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_get_first_per_commitment_point(uint32_t this_ptr) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), AnnouncementSignatures_get_bitcoin_signature(&this_ptr_conv).compact_form, 64);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, AcceptChannel_get_first_per_commitment_point(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_AnnouncementSignatures_set_bitcoin_signature(uint32_t this_ptr, int8_tArray val) {
-       LDKAnnouncementSignatures this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_AcceptChannel_set_first_per_commitment_point(uint32_t this_ptr, int8_tArray val) {
+       LDKAcceptChannel this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSignature val_ref;
-       CHECK(*((uint32_t*)val) == 64);
-       memcpy(val_ref.compact_form, (uint8_t*)(val + 4), 64);
-       AnnouncementSignatures_set_bitcoin_signature(&this_ptr_conv, val_ref);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_AnnouncementSignatures_new(int8_tArray channel_id_arg, int64_t short_channel_id_arg, int8_tArray node_signature_arg, int8_tArray bitcoin_signature_arg) {
-       LDKThirtyTwoBytes channel_id_arg_ref;
-       CHECK(*((uint32_t*)channel_id_arg) == 32);
-       memcpy(channel_id_arg_ref.data, (uint8_t*)(channel_id_arg + 4), 32);
-       LDKSignature node_signature_arg_ref;
-       CHECK(*((uint32_t*)node_signature_arg) == 64);
-       memcpy(node_signature_arg_ref.compact_form, (uint8_t*)(node_signature_arg + 4), 64);
-       LDKSignature bitcoin_signature_arg_ref;
-       CHECK(*((uint32_t*)bitcoin_signature_arg) == 64);
-       memcpy(bitcoin_signature_arg_ref.compact_form, (uint8_t*)(bitcoin_signature_arg + 4), 64);
-       LDKAnnouncementSignatures ret_var = AnnouncementSignatures_new(channel_id_arg_ref, short_channel_id_arg, node_signature_arg_ref, bitcoin_signature_arg_ref);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       AcceptChannel_set_first_per_commitment_point(&this_ptr_conv, val_ref);
 }
 
-static inline uint64_t AnnouncementSignatures_clone_ptr(LDKAnnouncementSignatures *NONNULL_PTR arg) {
-       LDKAnnouncementSignatures ret_var = AnnouncementSignatures_clone(arg);
+static inline uint64_t AcceptChannel_clone_ptr(LDKAcceptChannel *NONNULL_PTR arg) {
+       LDKAcceptChannel ret_var = AcceptChannel_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -25491,21 +23137,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_AnnouncementSignatures_clone_ptr(uint32_t arg) {
-       LDKAnnouncementSignatures arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_AcceptChannel_clone_ptr(uint32_t arg) {
+       LDKAcceptChannel arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = AnnouncementSignatures_clone_ptr(&arg_conv);
+       int64_t ret_val = AcceptChannel_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_AnnouncementSignatures_clone(uint32_t orig) {
-       LDKAnnouncementSignatures 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKAnnouncementSignatures ret_var = AnnouncementSignatures_clone(&orig_conv);
+       LDKAcceptChannel ret_var = AcceptChannel_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -25517,236 +23163,118 @@ uint32_t  __attribute__((visibility("default"))) TS_AnnouncementSignatures_clone
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_NetAddress_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKNetAddress this_ptr_conv = *(LDKNetAddress*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       NetAddress_free(this_ptr_conv);
-}
-
-static inline uint64_t NetAddress_clone_ptr(LDKNetAddress *NONNULL_PTR arg) {
-       LDKNetAddress *ret_copy = MALLOC(sizeof(LDKNetAddress), "LDKNetAddress");
-       *ret_copy = NetAddress_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_NetAddress_clone_ptr(uint32_t arg) {
-       LDKNetAddress* arg_conv = (LDKNetAddress*)arg;
-       int64_t ret_val = NetAddress_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NetAddress_clone(uint32_t orig) {
-       LDKNetAddress* orig_conv = (LDKNetAddress*)orig;
-       LDKNetAddress *ret_copy = MALLOC(sizeof(LDKNetAddress), "LDKNetAddress");
-       *ret_copy = NetAddress_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NetAddress_ipv4(int8_tArray addr, int16_t port) {
-       LDKFourBytes addr_ref;
-       CHECK(*((uint32_t*)addr) == 4);
-       memcpy(addr_ref.data, (uint8_t*)(addr + 4), 4);
-       LDKNetAddress *ret_copy = MALLOC(sizeof(LDKNetAddress), "LDKNetAddress");
-       *ret_copy = NetAddress_ipv4(addr_ref, port);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NetAddress_ipv6(int8_tArray addr, int16_t port) {
-       LDKSixteenBytes addr_ref;
-       CHECK(*((uint32_t*)addr) == 16);
-       memcpy(addr_ref.data, (uint8_t*)(addr + 4), 16);
-       LDKNetAddress *ret_copy = MALLOC(sizeof(LDKNetAddress), "LDKNetAddress");
-       *ret_copy = NetAddress_ipv6(addr_ref, port);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NetAddress_onion_v2(int8_tArray a) {
-       LDKTwelveBytes a_ref;
-       CHECK(*((uint32_t*)a) == 12);
-       memcpy(a_ref.data, (uint8_t*)(a + 4), 12);
-       LDKNetAddress *ret_copy = MALLOC(sizeof(LDKNetAddress), "LDKNetAddress");
-       *ret_copy = NetAddress_onion_v2(a_ref);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NetAddress_onion_v3(int8_tArray ed25519_pubkey, int16_t checksum, int8_t version, int16_t port) {
-       LDKThirtyTwoBytes ed25519_pubkey_ref;
-       CHECK(*((uint32_t*)ed25519_pubkey) == 32);
-       memcpy(ed25519_pubkey_ref.data, (uint8_t*)(ed25519_pubkey + 4), 32);
-       LDKNetAddress *ret_copy = MALLOC(sizeof(LDKNetAddress), "LDKNetAddress");
-       *ret_copy = NetAddress_onion_v3(ed25519_pubkey_ref, checksum, version, port);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_NetAddress_write(uint32_t obj) {
-       LDKNetAddress* obj_conv = (LDKNetAddress*)obj;
-       LDKCVec_u8Z ret_var = NetAddress_write(obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NetAddress_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_NetAddressDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetAddressDecodeErrorZ), "LDKCResult_NetAddressDecodeErrorZ");
-       *ret_conv = NetAddress_read(ser_ref);
-       return (uint64_t)ret_conv;
-}
-
-void  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_free(uint32_t this_obj) {
-       LDKUnsignedNodeAnnouncement this_obj_conv;
+void  __attribute__((visibility("default"))) TS_FundingCreated_free(uint32_t this_obj) {
+       LDKFundingCreated this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       UnsignedNodeAnnouncement_free(this_obj_conv);
-}
-
-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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNodeFeatures ret_var = UnsignedNodeAnnouncement_get_features(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
-}
-
-void  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_set_features(uint32_t this_ptr, uint32_t val) {
-       LDKUnsignedNodeAnnouncement this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNodeFeatures val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = NodeFeatures_clone(&val_conv);
-       UnsignedNodeAnnouncement_set_features(&this_ptr_conv, val_conv);
+       FundingCreated_free(this_obj_conv);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_get_timestamp(uint32_t this_ptr) {
-       LDKUnsignedNodeAnnouncement 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = UnsignedNodeAnnouncement_get_timestamp(&this_ptr_conv);
-       return ret_val;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *FundingCreated_get_temporary_channel_id(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_set_timestamp(uint32_t this_ptr, int32_t val) {
-       LDKUnsignedNodeAnnouncement this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_FundingCreated_set_temporary_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKFundingCreated this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UnsignedNodeAnnouncement_set_timestamp(&this_ptr_conv, val);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       FundingCreated_set_temporary_channel_id(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_get_node_id(uint32_t this_ptr) {
-       LDKUnsignedNodeAnnouncement this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_FundingCreated_get_funding_txid(uint32_t this_ptr) {
+       LDKFundingCreated this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), UnsignedNodeAnnouncement_get_node_id(&this_ptr_conv).compressed_form, 33);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *FundingCreated_get_funding_txid(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_set_node_id(uint32_t this_ptr, int8_tArray val) {
-       LDKUnsignedNodeAnnouncement this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_FundingCreated_set_funding_txid(uint32_t this_ptr, int8_tArray val) {
+       LDKFundingCreated this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       UnsignedNodeAnnouncement_set_node_id(&this_ptr_conv, val_ref);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       FundingCreated_set_funding_txid(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_get_rgb(uint32_t this_ptr) {
-       LDKUnsignedNodeAnnouncement this_ptr_conv;
+int16_t  __attribute__((visibility("default"))) TS_FundingCreated_get_funding_output_index(uint32_t this_ptr) {
+       LDKFundingCreated this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(3, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *UnsignedNodeAnnouncement_get_rgb(&this_ptr_conv), 3);
-       return ret_arr;
+       int16_t ret_val = FundingCreated_get_funding_output_index(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_set_rgb(uint32_t this_ptr, int8_tArray val) {
-       LDKUnsignedNodeAnnouncement this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_FundingCreated_set_funding_output_index(uint32_t this_ptr, int16_t val) {
+       LDKFundingCreated this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThreeBytes val_ref;
-       CHECK(*((uint32_t*)val) == 3);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 3);
-       UnsignedNodeAnnouncement_set_rgb(&this_ptr_conv, val_ref);
+       FundingCreated_set_funding_output_index(&this_ptr_conv, val);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_get_alias(uint32_t this_ptr) {
-       LDKUnsignedNodeAnnouncement this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_FundingCreated_get_signature(uint32_t this_ptr) {
+       LDKFundingCreated this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *UnsignedNodeAnnouncement_get_alias(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, FundingCreated_get_signature(&this_ptr_conv).compact_form, 64);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_set_alias(uint32_t this_ptr, int8_tArray val) {
-       LDKUnsignedNodeAnnouncement this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_FundingCreated_set_signature(uint32_t this_ptr, int8_tArray val) {
+       LDKFundingCreated this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       UnsignedNodeAnnouncement_set_alias(&this_ptr_conv, val_ref);
+       LDKSignature val_ref;
+       CHECK(val->arr_len == 64);
+       memcpy(val_ref.compact_form, val->elems, 64);
+       FundingCreated_set_signature(&this_ptr_conv, val_ref);
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_set_addresses(uint32_t this_ptr, uint32_tArray val) {
-       LDKUnsignedNodeAnnouncement this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_NetAddressZ val_constr;
-       val_constr.datalen = *((uint32_t*)val);
-       if (val_constr.datalen > 0)
-               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKNetAddress), "LDKCVec_NetAddressZ Elements");
-       else
-               val_constr.data = NULL;
-       uint32_t* val_vals = (uint32_t*)(val + 4);
-       for (size_t m = 0; m < val_constr.datalen; m++) {
-               uint32_t val_conv_12 = val_vals[m];
-               void* val_conv_12_ptr = (void*)(((uint64_t)val_conv_12) & ~1);
-               CHECK_ACCESS(val_conv_12_ptr);
-               LDKNetAddress val_conv_12_conv = *(LDKNetAddress*)(val_conv_12_ptr);
-               val_conv_12_conv = NetAddress_clone((LDKNetAddress*)(((uint64_t)val_conv_12) & ~1));
-               val_constr.data[m] = val_conv_12_conv;
+uint32_t  __attribute__((visibility("default"))) TS_FundingCreated_new(int8_tArray temporary_channel_id_arg, int8_tArray funding_txid_arg, int16_t funding_output_index_arg, int8_tArray signature_arg) {
+       LDKThirtyTwoBytes temporary_channel_id_arg_ref;
+       CHECK(temporary_channel_id_arg->arr_len == 32);
+       memcpy(temporary_channel_id_arg_ref.data, temporary_channel_id_arg->elems, 32);
+       LDKThirtyTwoBytes funding_txid_arg_ref;
+       CHECK(funding_txid_arg->arr_len == 32);
+       memcpy(funding_txid_arg_ref.data, funding_txid_arg->elems, 32);
+       LDKSignature signature_arg_ref;
+       CHECK(signature_arg->arr_len == 64);
+       memcpy(signature_arg_ref.compact_form, signature_arg->elems, 64);
+       LDKFundingCreated ret_var = FundingCreated_new(temporary_channel_id_arg_ref, funding_txid_arg_ref, funding_output_index_arg, signature_arg_ref);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       UnsignedNodeAnnouncement_set_addresses(&this_ptr_conv, val_constr);
+       return ret_ref;
 }
 
-static inline uint64_t UnsignedNodeAnnouncement_clone_ptr(LDKUnsignedNodeAnnouncement *NONNULL_PTR arg) {
-       LDKUnsignedNodeAnnouncement ret_var = UnsignedNodeAnnouncement_clone(arg);
+static inline uint64_t FundingCreated_clone_ptr(LDKFundingCreated *NONNULL_PTR arg) {
+       LDKFundingCreated ret_var = FundingCreated_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -25757,21 +23285,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_clone_ptr(uint32_t arg) {
-       LDKUnsignedNodeAnnouncement arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_FundingCreated_clone_ptr(uint32_t arg) {
+       LDKFundingCreated arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = UnsignedNodeAnnouncement_clone_ptr(&arg_conv);
+       int64_t ret_val = FundingCreated_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_clone(uint32_t orig) {
-       LDKUnsignedNodeAnnouncement 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKUnsignedNodeAnnouncement ret_var = UnsignedNodeAnnouncement_clone(&orig_conv);
+       LDKFundingCreated ret_var = FundingCreated_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -25783,75 +23311,64 @@ uint32_t  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_clo
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_NodeAnnouncement_free(uint32_t this_obj) {
-       LDKNodeAnnouncement this_obj_conv;
+void  __attribute__((visibility("default"))) TS_FundingSigned_free(uint32_t this_obj) {
+       LDKFundingSigned this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       NodeAnnouncement_free(this_obj_conv);
+       FundingSigned_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_NodeAnnouncement_get_signature(uint32_t this_ptr) {
-       LDKNodeAnnouncement 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), NodeAnnouncement_get_signature(&this_ptr_conv).compact_form, 64);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *FundingSigned_get_channel_id(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_NodeAnnouncement_set_signature(uint32_t this_ptr, int8_tArray val) {
-       LDKNodeAnnouncement this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_FundingSigned_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKFundingSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSignature val_ref;
-       CHECK(*((uint32_t*)val) == 64);
-       memcpy(val_ref.compact_form, (uint8_t*)(val + 4), 64);
-       NodeAnnouncement_set_signature(&this_ptr_conv, val_ref);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       FundingSigned_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncement_get_contents(uint32_t this_ptr) {
-       LDKNodeAnnouncement this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_FundingSigned_get_signature(uint32_t this_ptr) {
+       LDKFundingSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKUnsignedNodeAnnouncement ret_var = NodeAnnouncement_get_contents(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, FundingSigned_get_signature(&this_ptr_conv).compact_form, 64);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_NodeAnnouncement_set_contents(uint32_t this_ptr, uint32_t val) {
-       LDKNodeAnnouncement this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_FundingSigned_set_signature(uint32_t this_ptr, int8_tArray val) {
+       LDKFundingSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKUnsignedNodeAnnouncement val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = UnsignedNodeAnnouncement_clone(&val_conv);
-       NodeAnnouncement_set_contents(&this_ptr_conv, val_conv);
+       LDKSignature val_ref;
+       CHECK(val->arr_len == 64);
+       memcpy(val_ref.compact_form, val->elems, 64);
+       FundingSigned_set_signature(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncement_new(int8_tArray signature_arg, uint32_t contents_arg) {
+uint32_t  __attribute__((visibility("default"))) TS_FundingSigned_new(int8_tArray channel_id_arg, int8_tArray signature_arg) {
+       LDKThirtyTwoBytes channel_id_arg_ref;
+       CHECK(channel_id_arg->arr_len == 32);
+       memcpy(channel_id_arg_ref.data, channel_id_arg->elems, 32);
        LDKSignature signature_arg_ref;
-       CHECK(*((uint32_t*)signature_arg) == 64);
-       memcpy(signature_arg_ref.compact_form, (uint8_t*)(signature_arg + 4), 64);
-       LDKUnsignedNodeAnnouncement contents_arg_conv;
-       contents_arg_conv.inner = (void*)(contents_arg & (~1));
-       contents_arg_conv.is_owned = (contents_arg & 1) || (contents_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(contents_arg_conv);
-       contents_arg_conv = UnsignedNodeAnnouncement_clone(&contents_arg_conv);
-       LDKNodeAnnouncement ret_var = NodeAnnouncement_new(signature_arg_ref, contents_arg_conv);
+       CHECK(signature_arg->arr_len == 64);
+       memcpy(signature_arg_ref.compact_form, signature_arg->elems, 64);
+       LDKFundingSigned ret_var = FundingSigned_new(channel_id_arg_ref, signature_arg_ref);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -25863,8 +23380,8 @@ uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncement_new(int8_tA
        return ret_ref;
 }
 
-static inline uint64_t NodeAnnouncement_clone_ptr(LDKNodeAnnouncement *NONNULL_PTR arg) {
-       LDKNodeAnnouncement ret_var = NodeAnnouncement_clone(arg);
+static inline uint64_t FundingSigned_clone_ptr(LDKFundingSigned *NONNULL_PTR arg) {
+       LDKFundingSigned ret_var = FundingSigned_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -25875,21 +23392,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_NodeAnnouncement_clone_ptr(uint32_t arg) {
-       LDKNodeAnnouncement arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_FundingSigned_clone_ptr(uint32_t arg) {
+       LDKFundingSigned arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = NodeAnnouncement_clone_ptr(&arg_conv);
+       int64_t ret_val = FundingSigned_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncement_clone(uint32_t orig) {
-       LDKNodeAnnouncement 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKNodeAnnouncement ret_var = NodeAnnouncement_clone(&orig_conv);
+       LDKFundingSigned ret_var = FundingSigned_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -25901,168 +23418,187 @@ uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncement_clone(uint3
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_free(uint32_t this_obj) {
-       LDKUnsignedChannelAnnouncement this_obj_conv;
+void  __attribute__((visibility("default"))) TS_FundingLocked_free(uint32_t this_obj) {
+       LDKFundingLocked this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       UnsignedChannelAnnouncement_free(this_obj_conv);
+       FundingLocked_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_get_features(uint32_t this_ptr) {
-       LDKUnsignedChannelAnnouncement 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelFeatures ret_var = UnsignedChannelAnnouncement_get_features(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *FundingLocked_get_channel_id(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_features(uint32_t this_ptr, uint32_t val) {
-       LDKUnsignedChannelAnnouncement this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_FundingLocked_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKFundingLocked this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelFeatures val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = ChannelFeatures_clone(&val_conv);
-       UnsignedChannelAnnouncement_set_features(&this_ptr_conv, val_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       FundingLocked_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_get_chain_hash(uint32_t this_ptr) {
-       LDKUnsignedChannelAnnouncement this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_FundingLocked_get_next_per_commitment_point(uint32_t this_ptr) {
+       LDKFundingLocked this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *UnsignedChannelAnnouncement_get_chain_hash(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, FundingLocked_get_next_per_commitment_point(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
-       LDKUnsignedChannelAnnouncement this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_FundingLocked_set_next_per_commitment_point(uint32_t this_ptr, int8_tArray val) {
+       LDKFundingLocked this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       UnsignedChannelAnnouncement_set_chain_hash(&this_ptr_conv, val_ref);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       FundingLocked_set_next_per_commitment_point(&this_ptr_conv, val_ref);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_get_short_channel_id(uint32_t this_ptr) {
-       LDKUnsignedChannelAnnouncement this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = UnsignedChannelAnnouncement_get_short_channel_id(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_FundingLocked_new(int8_tArray channel_id_arg, int8_tArray next_per_commitment_point_arg) {
+       LDKThirtyTwoBytes channel_id_arg_ref;
+       CHECK(channel_id_arg->arr_len == 32);
+       memcpy(channel_id_arg_ref.data, channel_id_arg->elems, 32);
+       LDKPublicKey next_per_commitment_point_arg_ref;
+       CHECK(next_per_commitment_point_arg->arr_len == 33);
+       memcpy(next_per_commitment_point_arg_ref.compressed_form, next_per_commitment_point_arg->elems, 33);
+       LDKFundingLocked ret_var = FundingLocked_new(channel_id_arg_ref, next_per_commitment_point_arg_ref);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_short_channel_id(uint32_t this_ptr, int64_t val) {
-       LDKUnsignedChannelAnnouncement this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UnsignedChannelAnnouncement_set_short_channel_id(&this_ptr_conv, val);
+static inline uint64_t FundingLocked_clone_ptr(LDKFundingLocked *NONNULL_PTR arg) {
+       LDKFundingLocked ret_var = FundingLocked_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_get_node_id_1(uint32_t this_ptr) {
-       LDKUnsignedChannelAnnouncement this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), UnsignedChannelAnnouncement_get_node_id_1(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       return ret_ref;
 }
-
-void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_node_id_1(uint32_t this_ptr, int8_tArray val) {
-       LDKUnsignedChannelAnnouncement this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       UnsignedChannelAnnouncement_set_node_id_1(&this_ptr_conv, val_ref);
+int64_t  __attribute__((visibility("default"))) TS_FundingLocked_clone_ptr(uint32_t arg) {
+       LDKFundingLocked arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = FundingLocked_clone_ptr(&arg_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_get_node_id_2(uint32_t this_ptr) {
-       LDKUnsignedChannelAnnouncement this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), UnsignedChannelAnnouncement_get_node_id_2(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKFundingLocked ret_var = FundingLocked_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_node_id_2(uint32_t this_ptr, int8_tArray val) {
-       LDKUnsignedChannelAnnouncement this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       UnsignedChannelAnnouncement_set_node_id_2(&this_ptr_conv, val_ref);
+void  __attribute__((visibility("default"))) TS_Shutdown_free(uint32_t this_obj) {
+       LDKShutdown this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       Shutdown_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_get_bitcoin_key_1(uint32_t this_ptr) {
-       LDKUnsignedChannelAnnouncement 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), UnsignedChannelAnnouncement_get_bitcoin_key_1(&this_ptr_conv).compressed_form, 33);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *Shutdown_get_channel_id(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_bitcoin_key_1(uint32_t this_ptr, int8_tArray val) {
-       LDKUnsignedChannelAnnouncement this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_Shutdown_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKShutdown this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       UnsignedChannelAnnouncement_set_bitcoin_key_1(&this_ptr_conv, val_ref);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       Shutdown_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_get_bitcoin_key_2(uint32_t this_ptr) {
-       LDKUnsignedChannelAnnouncement this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_Shutdown_get_scriptpubkey(uint32_t this_ptr) {
+       LDKShutdown this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), UnsignedChannelAnnouncement_get_bitcoin_key_2(&this_ptr_conv).compressed_form, 33);
+       LDKu8slice ret_var = Shutdown_get_scriptpubkey(&this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_bitcoin_key_2(uint32_t this_ptr, int8_tArray val) {
-       LDKUnsignedChannelAnnouncement this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_Shutdown_set_scriptpubkey(uint32_t this_ptr, int8_tArray val) {
+       LDKShutdown this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCVec_u8Z val_ref;
+       val_ref.datalen = val->arr_len;
+       val_ref.data = MALLOC(val_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(val_ref.data, val->elems, val_ref.datalen);
+       Shutdown_set_scriptpubkey(&this_ptr_conv, val_ref);
 }
 
-static inline uint64_t UnsignedChannelAnnouncement_clone_ptr(LDKUnsignedChannelAnnouncement *NONNULL_PTR arg) {
-       LDKUnsignedChannelAnnouncement ret_var = UnsignedChannelAnnouncement_clone(arg);
+uint32_t  __attribute__((visibility("default"))) TS_Shutdown_new(int8_tArray channel_id_arg, int8_tArray scriptpubkey_arg) {
+       LDKThirtyTwoBytes channel_id_arg_ref;
+       CHECK(channel_id_arg->arr_len == 32);
+       memcpy(channel_id_arg_ref.data, channel_id_arg->elems, 32);
+       LDKCVec_u8Z scriptpubkey_arg_ref;
+       scriptpubkey_arg_ref.datalen = scriptpubkey_arg->arr_len;
+       scriptpubkey_arg_ref.data = MALLOC(scriptpubkey_arg_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(scriptpubkey_arg_ref.data, scriptpubkey_arg->elems, scriptpubkey_arg_ref.datalen);
+       LDKShutdown ret_var = Shutdown_new(channel_id_arg_ref, scriptpubkey_arg_ref);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+static inline uint64_t Shutdown_clone_ptr(LDKShutdown *NONNULL_PTR arg) {
+       LDKShutdown ret_var = Shutdown_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26073,21 +23609,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_clone_ptr(uint32_t arg) {
-       LDKUnsignedChannelAnnouncement arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_Shutdown_clone_ptr(uint32_t arg) {
+       LDKShutdown arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = UnsignedChannelAnnouncement_clone_ptr(&arg_conv);
+       int64_t ret_val = Shutdown_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_clone(uint32_t orig) {
-       LDKUnsignedChannelAnnouncement 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKUnsignedChannelAnnouncement ret_var = UnsignedChannelAnnouncement_clone(&orig_conv);
+       LDKShutdown ret_var = Shutdown_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26099,147 +23635,50 @@ uint32_t  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelAnnouncement_free(uint32_t this_obj) {
-       LDKChannelAnnouncement this_obj_conv;
+void  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_free(uint32_t this_obj) {
+       LDKClosingSignedFeeRange this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelAnnouncement_free(this_obj_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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ChannelAnnouncement_get_node_signature_1(&this_ptr_conv).compact_form, 64);
-       return ret_arr;
-}
-
-void  __attribute__((visibility("default"))) TS_ChannelAnnouncement_set_node_signature_1(uint32_t this_ptr, int8_tArray val) {
-       LDKChannelAnnouncement this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSignature val_ref;
-       CHECK(*((uint32_t*)val) == 64);
-       memcpy(val_ref.compact_form, (uint8_t*)(val + 4), 64);
-       ChannelAnnouncement_set_node_signature_1(&this_ptr_conv, val_ref);
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelAnnouncement_get_node_signature_2(uint32_t this_ptr) {
-       LDKChannelAnnouncement this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ChannelAnnouncement_get_node_signature_2(&this_ptr_conv).compact_form, 64);
-       return ret_arr;
-}
-
-void  __attribute__((visibility("default"))) TS_ChannelAnnouncement_set_node_signature_2(uint32_t this_ptr, int8_tArray val) {
-       LDKChannelAnnouncement this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSignature val_ref;
-       CHECK(*((uint32_t*)val) == 64);
-       memcpy(val_ref.compact_form, (uint8_t*)(val + 4), 64);
-       ChannelAnnouncement_set_node_signature_2(&this_ptr_conv, val_ref);
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelAnnouncement_get_bitcoin_signature_1(uint32_t this_ptr) {
-       LDKChannelAnnouncement this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ChannelAnnouncement_get_bitcoin_signature_1(&this_ptr_conv).compact_form, 64);
-       return ret_arr;
-}
-
-void  __attribute__((visibility("default"))) TS_ChannelAnnouncement_set_bitcoin_signature_1(uint32_t this_ptr, int8_tArray val) {
-       LDKChannelAnnouncement this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSignature val_ref;
-       CHECK(*((uint32_t*)val) == 64);
-       memcpy(val_ref.compact_form, (uint8_t*)(val + 4), 64);
-       ChannelAnnouncement_set_bitcoin_signature_1(&this_ptr_conv, val_ref);
+       ClosingSignedFeeRange_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelAnnouncement_get_bitcoin_signature_2(uint32_t this_ptr) {
-       LDKChannelAnnouncement this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_get_min_fee_satoshis(uint32_t this_ptr) {
+       LDKClosingSignedFeeRange this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ChannelAnnouncement_get_bitcoin_signature_2(&this_ptr_conv).compact_form, 64);
-       return ret_arr;
+       int64_t ret_val = ClosingSignedFeeRange_get_min_fee_satoshis(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelAnnouncement_set_bitcoin_signature_2(uint32_t this_ptr, int8_tArray val) {
-       LDKChannelAnnouncement this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_set_min_fee_satoshis(uint32_t this_ptr, int64_t val) {
+       LDKClosingSignedFeeRange this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSignature val_ref;
-       CHECK(*((uint32_t*)val) == 64);
-       memcpy(val_ref.compact_form, (uint8_t*)(val + 4), 64);
-       ChannelAnnouncement_set_bitcoin_signature_2(&this_ptr_conv, val_ref);
+       ClosingSignedFeeRange_set_min_fee_satoshis(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelAnnouncement_get_contents(uint32_t this_ptr) {
-       LDKChannelAnnouncement this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_get_max_fee_satoshis(uint32_t this_ptr) {
+       LDKClosingSignedFeeRange this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKUnsignedChannelAnnouncement ret_var = ChannelAnnouncement_get_contents(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       int64_t ret_val = ClosingSignedFeeRange_get_max_fee_satoshis(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelAnnouncement_set_contents(uint32_t this_ptr, uint32_t val) {
-       LDKChannelAnnouncement this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_set_max_fee_satoshis(uint32_t this_ptr, int64_t val) {
+       LDKClosingSignedFeeRange this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKUnsignedChannelAnnouncement val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = UnsignedChannelAnnouncement_clone(&val_conv);
-       ChannelAnnouncement_set_contents(&this_ptr_conv, val_conv);
+       ClosingSignedFeeRange_set_max_fee_satoshis(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelAnnouncement_new(int8_tArray node_signature_1_arg, int8_tArray node_signature_2_arg, int8_tArray bitcoin_signature_1_arg, int8_tArray bitcoin_signature_2_arg, uint32_t contents_arg) {
-       LDKSignature node_signature_1_arg_ref;
-       CHECK(*((uint32_t*)node_signature_1_arg) == 64);
-       memcpy(node_signature_1_arg_ref.compact_form, (uint8_t*)(node_signature_1_arg + 4), 64);
-       LDKSignature node_signature_2_arg_ref;
-       CHECK(*((uint32_t*)node_signature_2_arg) == 64);
-       memcpy(node_signature_2_arg_ref.compact_form, (uint8_t*)(node_signature_2_arg + 4), 64);
-       LDKSignature bitcoin_signature_1_arg_ref;
-       CHECK(*((uint32_t*)bitcoin_signature_1_arg) == 64);
-       memcpy(bitcoin_signature_1_arg_ref.compact_form, (uint8_t*)(bitcoin_signature_1_arg + 4), 64);
-       LDKSignature bitcoin_signature_2_arg_ref;
-       CHECK(*((uint32_t*)bitcoin_signature_2_arg) == 64);
-       memcpy(bitcoin_signature_2_arg_ref.compact_form, (uint8_t*)(bitcoin_signature_2_arg + 4), 64);
-       LDKUnsignedChannelAnnouncement contents_arg_conv;
-       contents_arg_conv.inner = (void*)(contents_arg & (~1));
-       contents_arg_conv.is_owned = (contents_arg & 1) || (contents_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(contents_arg_conv);
-       contents_arg_conv = UnsignedChannelAnnouncement_clone(&contents_arg_conv);
-       LDKChannelAnnouncement ret_var = ChannelAnnouncement_new(node_signature_1_arg_ref, node_signature_2_arg_ref, bitcoin_signature_1_arg_ref, bitcoin_signature_2_arg_ref, contents_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_new(int64_t min_fee_satoshis_arg, int64_t max_fee_satoshis_arg) {
+       LDKClosingSignedFeeRange ret_var = ClosingSignedFeeRange_new(min_fee_satoshis_arg, max_fee_satoshis_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26251,8 +23690,8 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelAnnouncement_new(int8
        return ret_ref;
 }
 
-static inline uint64_t ChannelAnnouncement_clone_ptr(LDKChannelAnnouncement *NONNULL_PTR arg) {
-       LDKChannelAnnouncement ret_var = ChannelAnnouncement_clone(arg);
+static inline uint64_t ClosingSignedFeeRange_clone_ptr(LDKClosingSignedFeeRange *NONNULL_PTR arg) {
+       LDKClosingSignedFeeRange ret_var = ClosingSignedFeeRange_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26263,21 +23702,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_ChannelAnnouncement_clone_ptr(uint32_t arg) {
-       LDKChannelAnnouncement arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_clone_ptr(uint32_t arg) {
+       LDKClosingSignedFeeRange arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelAnnouncement_clone_ptr(&arg_conv);
+       int64_t ret_val = ClosingSignedFeeRange_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelAnnouncement_clone(uint32_t orig) {
-       LDKChannelAnnouncement orig_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_clone(uint32_t orig) {
+       LDKClosingSignedFeeRange orig_conv;
        orig_conv.inner = (void*)(orig & (~1));
        orig_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelAnnouncement ret_var = ChannelAnnouncement_clone(&orig_conv);
+       LDKClosingSignedFeeRange ret_var = ClosingSignedFeeRange_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26289,156 +23728,131 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelAnnouncement_clone(ui
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_free(uint32_t this_obj) {
-       LDKUnsignedChannelUpdate this_obj_conv;
+void  __attribute__((visibility("default"))) TS_ClosingSigned_free(uint32_t this_obj) {
+       LDKClosingSigned this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       UnsignedChannelUpdate_free(this_obj_conv);
+       ClosingSigned_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_chain_hash(uint32_t this_ptr) {
-       LDKUnsignedChannelUpdate 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *UnsignedChannelUpdate_get_chain_hash(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *ClosingSigned_get_channel_id(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ClosingSigned_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKClosingSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
        LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       UnsignedChannelUpdate_set_chain_hash(&this_ptr_conv, val_ref);
-}
-
-int64_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_short_channel_id(uint32_t this_ptr) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = UnsignedChannelUpdate_get_short_channel_id(&this_ptr_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_short_channel_id(uint32_t this_ptr, int64_t val) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UnsignedChannelUpdate_set_short_channel_id(&this_ptr_conv, val);
-}
-
-int32_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_timestamp(uint32_t this_ptr) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = UnsignedChannelUpdate_get_timestamp(&this_ptr_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_timestamp(uint32_t this_ptr, int32_t val) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UnsignedChannelUpdate_set_timestamp(&this_ptr_conv, val);
-}
-
-int8_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_flags(uint32_t this_ptr) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_t ret_val = UnsignedChannelUpdate_get_flags(&this_ptr_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_flags(uint32_t this_ptr, int8_t val) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UnsignedChannelUpdate_set_flags(&this_ptr_conv, val);
-}
-
-int16_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_cltv_expiry_delta(uint32_t this_ptr) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = UnsignedChannelUpdate_get_cltv_expiry_delta(&this_ptr_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_cltv_expiry_delta(uint32_t this_ptr, int16_t val) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UnsignedChannelUpdate_set_cltv_expiry_delta(&this_ptr_conv, val);
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       ClosingSigned_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_htlc_minimum_msat(uint32_t this_ptr) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_ClosingSigned_get_fee_satoshis(uint32_t this_ptr) {
+       LDKClosingSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = UnsignedChannelUpdate_get_htlc_minimum_msat(&this_ptr_conv);
+       int64_t ret_val = ClosingSigned_get_fee_satoshis(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_htlc_minimum_msat(uint32_t this_ptr, int64_t val) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ClosingSigned_set_fee_satoshis(uint32_t this_ptr, int64_t val) {
+       LDKClosingSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UnsignedChannelUpdate_set_htlc_minimum_msat(&this_ptr_conv, val);
+       ClosingSigned_set_fee_satoshis(&this_ptr_conv, val);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_fee_base_msat(uint32_t this_ptr) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_ClosingSigned_get_signature(uint32_t this_ptr) {
+       LDKClosingSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = UnsignedChannelUpdate_get_fee_base_msat(&this_ptr_conv);
-       return ret_val;
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, ClosingSigned_get_signature(&this_ptr_conv).compact_form, 64);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_fee_base_msat(uint32_t this_ptr, int32_t val) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ClosingSigned_set_signature(uint32_t this_ptr, int8_tArray val) {
+       LDKClosingSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UnsignedChannelUpdate_set_fee_base_msat(&this_ptr_conv, val);
+       LDKSignature val_ref;
+       CHECK(val->arr_len == 64);
+       memcpy(val_ref.compact_form, val->elems, 64);
+       ClosingSigned_set_signature(&this_ptr_conv, val_ref);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_fee_proportional_millionths(uint32_t this_ptr) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ClosingSigned_get_fee_range(uint32_t this_ptr) {
+       LDKClosingSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = UnsignedChannelUpdate_get_fee_proportional_millionths(&this_ptr_conv);
-       return ret_val;
+       LDKClosingSignedFeeRange ret_var = ClosingSigned_get_fee_range(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       if ((uint64_t)ret_var.inner > 4096) {
+               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+               ret_ref = (uint64_t)ret_var.inner;
+               if (ret_var.is_owned) {
+                       ret_ref |= 1;
+               }
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_fee_proportional_millionths(uint32_t this_ptr, int32_t val) {
-       LDKUnsignedChannelUpdate this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ClosingSigned_set_fee_range(uint32_t this_ptr, uint32_t val) {
+       LDKClosingSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       UnsignedChannelUpdate_set_fee_proportional_millionths(&this_ptr_conv, val);
+       LDKClosingSignedFeeRange val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = ClosingSignedFeeRange_clone(&val_conv);
+       ClosingSigned_set_fee_range(&this_ptr_conv, val_conv);
 }
 
-static inline uint64_t UnsignedChannelUpdate_clone_ptr(LDKUnsignedChannelUpdate *NONNULL_PTR arg) {
-       LDKUnsignedChannelUpdate ret_var = UnsignedChannelUpdate_clone(arg);
+uint32_t  __attribute__((visibility("default"))) TS_ClosingSigned_new(int8_tArray channel_id_arg, int64_t fee_satoshis_arg, int8_tArray signature_arg, uint32_t fee_range_arg) {
+       LDKThirtyTwoBytes channel_id_arg_ref;
+       CHECK(channel_id_arg->arr_len == 32);
+       memcpy(channel_id_arg_ref.data, channel_id_arg->elems, 32);
+       LDKSignature signature_arg_ref;
+       CHECK(signature_arg->arr_len == 64);
+       memcpy(signature_arg_ref.compact_form, signature_arg->elems, 64);
+       LDKClosingSignedFeeRange fee_range_arg_conv;
+       fee_range_arg_conv.inner = (void*)(fee_range_arg & (~1));
+       fee_range_arg_conv.is_owned = (fee_range_arg & 1) || (fee_range_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(fee_range_arg_conv);
+       fee_range_arg_conv = ClosingSignedFeeRange_clone(&fee_range_arg_conv);
+       LDKClosingSigned ret_var = ClosingSigned_new(channel_id_arg_ref, fee_satoshis_arg, signature_arg_ref, fee_range_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+static inline uint64_t ClosingSigned_clone_ptr(LDKClosingSigned *NONNULL_PTR arg) {
+       LDKClosingSigned ret_var = ClosingSigned_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26449,21 +23863,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_clone_ptr(uint32_t arg) {
-       LDKUnsignedChannelUpdate arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_ClosingSigned_clone_ptr(uint32_t arg) {
+       LDKClosingSigned arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = UnsignedChannelUpdate_clone_ptr(&arg_conv);
+       int64_t ret_val = ClosingSigned_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_clone(uint32_t orig) {
-       LDKUnsignedChannelUpdate 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKUnsignedChannelUpdate ret_var = UnsignedChannelUpdate_clone(&orig_conv);
+       LDKClosingSigned ret_var = ClosingSigned_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26475,88 +23889,109 @@ uint32_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_clone(
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelUpdate_free(uint32_t this_obj) {
-       LDKChannelUpdate this_obj_conv;
+void  __attribute__((visibility("default"))) TS_UpdateAddHTLC_free(uint32_t this_obj) {
+       LDKUpdateAddHTLC this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelUpdate_free(this_obj_conv);
+       UpdateAddHTLC_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelUpdate_get_signature(uint32_t this_ptr) {
-       LDKChannelUpdate 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ChannelUpdate_get_signature(&this_ptr_conv).compact_form, 64);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *UpdateAddHTLC_get_channel_id(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelUpdate_set_signature(uint32_t this_ptr, int8_tArray val) {
-       LDKChannelUpdate this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UpdateAddHTLC_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKUpdateAddHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSignature val_ref;
-       CHECK(*((uint32_t*)val) == 64);
-       memcpy(val_ref.compact_form, (uint8_t*)(val + 4), 64);
-       ChannelUpdate_set_signature(&this_ptr_conv, val_ref);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       UpdateAddHTLC_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelUpdate_get_contents(uint32_t this_ptr) {
-       LDKChannelUpdate this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_UpdateAddHTLC_get_htlc_id(uint32_t this_ptr) {
+       LDKUpdateAddHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKUnsignedChannelUpdate ret_var = ChannelUpdate_get_contents(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       int64_t ret_val = UpdateAddHTLC_get_htlc_id(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelUpdate_set_contents(uint32_t this_ptr, uint32_t val) {
-       LDKChannelUpdate this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UpdateAddHTLC_set_htlc_id(uint32_t this_ptr, int64_t val) {
+       LDKUpdateAddHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKUnsignedChannelUpdate val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = UnsignedChannelUpdate_clone(&val_conv);
-       ChannelUpdate_set_contents(&this_ptr_conv, val_conv);
+       UpdateAddHTLC_set_htlc_id(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelUpdate_new(int8_tArray signature_arg, uint32_t contents_arg) {
-       LDKSignature signature_arg_ref;
-       CHECK(*((uint32_t*)signature_arg) == 64);
-       memcpy(signature_arg_ref.compact_form, (uint8_t*)(signature_arg + 4), 64);
-       LDKUnsignedChannelUpdate contents_arg_conv;
-       contents_arg_conv.inner = (void*)(contents_arg & (~1));
-       contents_arg_conv.is_owned = (contents_arg & 1) || (contents_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(contents_arg_conv);
-       contents_arg_conv = UnsignedChannelUpdate_clone(&contents_arg_conv);
-       LDKChannelUpdate ret_var = ChannelUpdate_new(signature_arg_ref, contents_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int64_t  __attribute__((visibility("default"))) TS_UpdateAddHTLC_get_amount_msat(uint32_t this_ptr) {
+       LDKUpdateAddHTLC this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = UpdateAddHTLC_get_amount_msat(&this_ptr_conv);
+       return ret_val;
 }
 
-static inline uint64_t ChannelUpdate_clone_ptr(LDKChannelUpdate *NONNULL_PTR arg) {
-       LDKChannelUpdate ret_var = ChannelUpdate_clone(arg);
+void  __attribute__((visibility("default"))) TS_UpdateAddHTLC_set_amount_msat(uint32_t this_ptr, int64_t val) {
+       LDKUpdateAddHTLC this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       UpdateAddHTLC_set_amount_msat(&this_ptr_conv, val);
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_UpdateAddHTLC_get_payment_hash(uint32_t this_ptr) {
+       LDKUpdateAddHTLC this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *UpdateAddHTLC_get_payment_hash(&this_ptr_conv), 32);
+       return ret_arr;
+}
+
+void  __attribute__((visibility("default"))) TS_UpdateAddHTLC_set_payment_hash(uint32_t this_ptr, int8_tArray val) {
+       LDKUpdateAddHTLC this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       UpdateAddHTLC_set_payment_hash(&this_ptr_conv, val_ref);
+}
+
+int32_t  __attribute__((visibility("default"))) TS_UpdateAddHTLC_get_cltv_expiry(uint32_t this_ptr) {
+       LDKUpdateAddHTLC this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = UpdateAddHTLC_get_cltv_expiry(&this_ptr_conv);
+       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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       UpdateAddHTLC_set_cltv_expiry(&this_ptr_conv, val);
+}
+
+static inline uint64_t UpdateAddHTLC_clone_ptr(LDKUpdateAddHTLC *NONNULL_PTR arg) {
+       LDKUpdateAddHTLC ret_var = UpdateAddHTLC_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26567,21 +24002,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_ChannelUpdate_clone_ptr(uint32_t arg) {
-       LDKChannelUpdate arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_UpdateAddHTLC_clone_ptr(uint32_t arg) {
+       LDKUpdateAddHTLC arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelUpdate_clone_ptr(&arg_conv);
+       int64_t ret_val = UpdateAddHTLC_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelUpdate_clone(uint32_t orig) {
-       LDKChannelUpdate 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelUpdate ret_var = ChannelUpdate_clone(&orig_conv);
+       LDKUpdateAddHTLC ret_var = UpdateAddHTLC_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26593,74 +24028,81 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelUpdate_clone(uint32_t
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_QueryChannelRange_free(uint32_t this_obj) {
-       LDKQueryChannelRange this_obj_conv;
+void  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_free(uint32_t this_obj) {
+       LDKUpdateFulfillHTLC this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       QueryChannelRange_free(this_obj_conv);
+       UpdateFulfillHTLC_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_QueryChannelRange_get_chain_hash(uint32_t this_ptr) {
-       LDKQueryChannelRange 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *QueryChannelRange_get_chain_hash(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *UpdateFulfillHTLC_get_channel_id(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_QueryChannelRange_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
-       LDKQueryChannelRange this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKUpdateFulfillHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
        LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       QueryChannelRange_set_chain_hash(&this_ptr_conv, val_ref);
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       UpdateFulfillHTLC_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_QueryChannelRange_get_first_blocknum(uint32_t this_ptr) {
-       LDKQueryChannelRange this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_get_htlc_id(uint32_t this_ptr) {
+       LDKUpdateFulfillHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = QueryChannelRange_get_first_blocknum(&this_ptr_conv);
+       int64_t ret_val = UpdateFulfillHTLC_get_htlc_id(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_QueryChannelRange_set_first_blocknum(uint32_t this_ptr, int32_t val) {
-       LDKQueryChannelRange this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_set_htlc_id(uint32_t this_ptr, int64_t val) {
+       LDKUpdateFulfillHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       QueryChannelRange_set_first_blocknum(&this_ptr_conv, val);
+       UpdateFulfillHTLC_set_htlc_id(&this_ptr_conv, val);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_QueryChannelRange_get_number_of_blocks(uint32_t this_ptr) {
-       LDKQueryChannelRange this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_get_payment_preimage(uint32_t this_ptr) {
+       LDKUpdateFulfillHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = QueryChannelRange_get_number_of_blocks(&this_ptr_conv);
-       return ret_val;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *UpdateFulfillHTLC_get_payment_preimage(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_QueryChannelRange_set_number_of_blocks(uint32_t this_ptr, int32_t val) {
-       LDKQueryChannelRange this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_set_payment_preimage(uint32_t this_ptr, int8_tArray val) {
+       LDKUpdateFulfillHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       QueryChannelRange_set_number_of_blocks(&this_ptr_conv, val);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       UpdateFulfillHTLC_set_payment_preimage(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_QueryChannelRange_new(int8_tArray chain_hash_arg, int32_t first_blocknum_arg, int32_t number_of_blocks_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);
-       LDKQueryChannelRange ret_var = QueryChannelRange_new(chain_hash_arg_ref, first_blocknum_arg, number_of_blocks_arg);
+uint32_t  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_new(int8_tArray channel_id_arg, int64_t htlc_id_arg, int8_tArray payment_preimage_arg) {
+       LDKThirtyTwoBytes channel_id_arg_ref;
+       CHECK(channel_id_arg->arr_len == 32);
+       memcpy(channel_id_arg_ref.data, channel_id_arg->elems, 32);
+       LDKThirtyTwoBytes payment_preimage_arg_ref;
+       CHECK(payment_preimage_arg->arr_len == 32);
+       memcpy(payment_preimage_arg_ref.data, payment_preimage_arg->elems, 32);
+       LDKUpdateFulfillHTLC ret_var = UpdateFulfillHTLC_new(channel_id_arg_ref, htlc_id_arg, payment_preimage_arg_ref);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26672,8 +24114,8 @@ uint32_t  __attribute__((visibility("default"))) TS_QueryChannelRange_new(int8_t
        return ret_ref;
 }
 
-static inline uint64_t QueryChannelRange_clone_ptr(LDKQueryChannelRange *NONNULL_PTR arg) {
-       LDKQueryChannelRange ret_var = QueryChannelRange_clone(arg);
+static inline uint64_t UpdateFulfillHTLC_clone_ptr(LDKUpdateFulfillHTLC *NONNULL_PTR arg) {
+       LDKUpdateFulfillHTLC ret_var = UpdateFulfillHTLC_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26684,21 +24126,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_QueryChannelRange_clone_ptr(uint32_t arg) {
-       LDKQueryChannelRange arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_clone_ptr(uint32_t arg) {
+       LDKUpdateFulfillHTLC arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = QueryChannelRange_clone_ptr(&arg_conv);
+       int64_t ret_val = UpdateFulfillHTLC_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_QueryChannelRange_clone(uint32_t orig) {
-       LDKQueryChannelRange 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKQueryChannelRange ret_var = QueryChannelRange_clone(&orig_conv);
+       LDKUpdateFulfillHTLC ret_var = UpdateFulfillHTLC_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26710,134 +24152,155 @@ uint32_t  __attribute__((visibility("default"))) TS_QueryChannelRange_clone(uint
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ReplyChannelRange_free(uint32_t this_obj) {
-       LDKReplyChannelRange this_obj_conv;
+void  __attribute__((visibility("default"))) TS_UpdateFailHTLC_free(uint32_t this_obj) {
+       LDKUpdateFailHTLC this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ReplyChannelRange_free(this_obj_conv);
+       UpdateFailHTLC_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ReplyChannelRange_get_chain_hash(uint32_t this_ptr) {
-       LDKReplyChannelRange 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *ReplyChannelRange_get_chain_hash(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *UpdateFailHTLC_get_channel_id(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ReplyChannelRange_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
-       LDKReplyChannelRange this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UpdateFailHTLC_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKUpdateFailHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
        LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       ReplyChannelRange_set_chain_hash(&this_ptr_conv, val_ref);
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       UpdateFailHTLC_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_ReplyChannelRange_get_first_blocknum(uint32_t this_ptr) {
-       LDKReplyChannelRange this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_UpdateFailHTLC_get_htlc_id(uint32_t this_ptr) {
+       LDKUpdateFailHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = ReplyChannelRange_get_first_blocknum(&this_ptr_conv);
+       int64_t ret_val = UpdateFailHTLC_get_htlc_id(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ReplyChannelRange_set_first_blocknum(uint32_t this_ptr, int32_t val) {
-       LDKReplyChannelRange this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UpdateFailHTLC_set_htlc_id(uint32_t this_ptr, int64_t val) {
+       LDKUpdateFailHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ReplyChannelRange_set_first_blocknum(&this_ptr_conv, val);
+       UpdateFailHTLC_set_htlc_id(&this_ptr_conv, val);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_ReplyChannelRange_get_number_of_blocks(uint32_t this_ptr) {
-       LDKReplyChannelRange this_ptr_conv;
+static inline uint64_t UpdateFailHTLC_clone_ptr(LDKUpdateFailHTLC *NONNULL_PTR arg) {
+       LDKUpdateFailHTLC ret_var = UpdateFailHTLC_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_UpdateFailHTLC_clone_ptr(uint32_t arg) {
+       LDKUpdateFailHTLC arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = UpdateFailHTLC_clone_ptr(&arg_conv);
+       return ret_val;
+}
+
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKUpdateFailHTLC ret_var = UpdateFailHTLC_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+void  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_free(uint32_t this_obj) {
+       LDKUpdateFailMalformedHTLC this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       UpdateFailMalformedHTLC_free(this_obj_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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = ReplyChannelRange_get_number_of_blocks(&this_ptr_conv);
-       return ret_val;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *UpdateFailMalformedHTLC_get_channel_id(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ReplyChannelRange_set_number_of_blocks(uint32_t this_ptr, int32_t val) {
-       LDKReplyChannelRange this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKUpdateFailMalformedHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ReplyChannelRange_set_number_of_blocks(&this_ptr_conv, val);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       UpdateFailMalformedHTLC_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ReplyChannelRange_get_sync_complete(uint32_t this_ptr) {
-       LDKReplyChannelRange this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_get_htlc_id(uint32_t this_ptr) {
+       LDKUpdateFailMalformedHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = ReplyChannelRange_get_sync_complete(&this_ptr_conv);
+       int64_t ret_val = UpdateFailMalformedHTLC_get_htlc_id(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ReplyChannelRange_set_sync_complete(uint32_t this_ptr, jboolean val) {
-       LDKReplyChannelRange this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_set_htlc_id(uint32_t this_ptr, int64_t val) {
+       LDKUpdateFailMalformedHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ReplyChannelRange_set_sync_complete(&this_ptr_conv, val);
+       UpdateFailMalformedHTLC_set_htlc_id(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_ReplyChannelRange_set_short_channel_ids(uint32_t this_ptr, int64_tArray val) {
-       LDKReplyChannelRange this_ptr_conv;
+int16_t  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_get_failure_code(uint32_t this_ptr) {
+       LDKUpdateFailMalformedHTLC this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_u64Z val_constr;
-       val_constr.datalen = *((uint32_t*)val);
-       if (val_constr.datalen > 0)
-               val_constr.data = MALLOC(val_constr.datalen * sizeof(int64_t), "LDKCVec_u64Z Elements");
-       else
-               val_constr.data = NULL;
-       int64_t* val_vals = (int64_t*)(val + 4);
-       for (size_t i = 0; i < val_constr.datalen; i++) {
-               int64_t val_conv_8 = val_vals[i];
-               val_constr.data[i] = val_conv_8;
-       }
-       ReplyChannelRange_set_short_channel_ids(&this_ptr_conv, val_constr);
+       int16_t ret_val = UpdateFailMalformedHTLC_get_failure_code(&this_ptr_conv);
+       return ret_val;
 }
 
-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);
-       LDKCVec_u64Z short_channel_ids_arg_constr;
-       short_channel_ids_arg_constr.datalen = *((uint32_t*)short_channel_ids_arg);
-       if (short_channel_ids_arg_constr.datalen > 0)
-               short_channel_ids_arg_constr.data = MALLOC(short_channel_ids_arg_constr.datalen * sizeof(int64_t), "LDKCVec_u64Z Elements");
-       else
-               short_channel_ids_arg_constr.data = NULL;
-       int64_t* short_channel_ids_arg_vals = (int64_t*)(short_channel_ids_arg + 4);
-       for (size_t i = 0; i < short_channel_ids_arg_constr.datalen; i++) {
-               int64_t short_channel_ids_arg_conv_8 = short_channel_ids_arg_vals[i];
-               short_channel_ids_arg_constr.data[i] = short_channel_ids_arg_conv_8;
-       }
-       LDKReplyChannelRange ret_var = ReplyChannelRange_new(chain_hash_arg_ref, first_blocknum_arg, number_of_blocks_arg, sync_complete_arg, short_channel_ids_arg_constr);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_set_failure_code(uint32_t this_ptr, int16_t val) {
+       LDKUpdateFailMalformedHTLC this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       UpdateFailMalformedHTLC_set_failure_code(&this_ptr_conv, val);
 }
 
-static inline uint64_t ReplyChannelRange_clone_ptr(LDKReplyChannelRange *NONNULL_PTR arg) {
-       LDKReplyChannelRange ret_var = ReplyChannelRange_clone(arg);
+static inline uint64_t UpdateFailMalformedHTLC_clone_ptr(LDKUpdateFailMalformedHTLC *NONNULL_PTR arg) {
+       LDKUpdateFailMalformedHTLC ret_var = UpdateFailMalformedHTLC_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26848,21 +24311,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_ReplyChannelRange_clone_ptr(uint32_t arg) {
-       LDKReplyChannelRange arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_clone_ptr(uint32_t arg) {
+       LDKUpdateFailMalformedHTLC arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ReplyChannelRange_clone_ptr(&arg_conv);
+       int64_t ret_val = UpdateFailMalformedHTLC_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ReplyChannelRange_clone(uint32_t orig) {
-       LDKReplyChannelRange 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKReplyChannelRange ret_var = ReplyChannelRange_clone(&orig_conv);
+       LDKUpdateFailMalformedHTLC ret_var = UpdateFailMalformedHTLC_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26874,70 +24337,100 @@ uint32_t  __attribute__((visibility("default"))) TS_ReplyChannelRange_clone(uint
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_QueryShortChannelIds_free(uint32_t this_obj) {
-       LDKQueryShortChannelIds this_obj_conv;
+void  __attribute__((visibility("default"))) TS_CommitmentSigned_free(uint32_t this_obj) {
+       LDKCommitmentSigned this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       QueryShortChannelIds_free(this_obj_conv);
+       CommitmentSigned_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_QueryShortChannelIds_get_chain_hash(uint32_t this_ptr) {
-       LDKQueryShortChannelIds 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *QueryShortChannelIds_get_chain_hash(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *CommitmentSigned_get_channel_id(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_QueryShortChannelIds_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
-       LDKQueryShortChannelIds this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_CommitmentSigned_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKCommitmentSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
        LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       QueryShortChannelIds_set_chain_hash(&this_ptr_conv, val_ref);
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       CommitmentSigned_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-void  __attribute__((visibility("default"))) TS_QueryShortChannelIds_set_short_channel_ids(uint32_t this_ptr, int64_tArray val) {
-       LDKQueryShortChannelIds this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_CommitmentSigned_get_signature(uint32_t this_ptr) {
+       LDKCommitmentSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_u64Z val_constr;
-       val_constr.datalen = *((uint32_t*)val);
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, CommitmentSigned_get_signature(&this_ptr_conv).compact_form, 64);
+       return ret_arr;
+}
+
+void  __attribute__((visibility("default"))) TS_CommitmentSigned_set_signature(uint32_t this_ptr, int8_tArray val) {
+       LDKCommitmentSigned this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKSignature val_ref;
+       CHECK(val->arr_len == 64);
+       memcpy(val_ref.compact_form, val->elems, 64);
+       CommitmentSigned_set_signature(&this_ptr_conv, val_ref);
+}
+
+void  __attribute__((visibility("default"))) TS_CommitmentSigned_set_htlc_signatures(uint32_t this_ptr, ptrArray val) {
+       LDKCommitmentSigned this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCVec_SignatureZ val_constr;
+       val_constr.datalen = val->arr_len;
        if (val_constr.datalen > 0)
-               val_constr.data = MALLOC(val_constr.datalen * sizeof(int64_t), "LDKCVec_u64Z Elements");
+               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ Elements");
        else
                val_constr.data = NULL;
-       int64_t* val_vals = (int64_t*)(val + 4);
-       for (size_t i = 0; i < val_constr.datalen; i++) {
-               int64_t val_conv_8 = val_vals[i];
-               val_constr.data[i] = val_conv_8;
+       int8_tArray* val_vals = (void*) val->elems;
+       for (size_t m = 0; m < val_constr.datalen; m++) {
+               int8_tArray val_conv_12 = val_vals[m];
+               LDKSignature val_conv_12_ref;
+               CHECK(val_conv_12->arr_len == 64);
+               memcpy(val_conv_12_ref.compact_form, val_conv_12->elems, 64);
+               val_constr.data[m] = val_conv_12_ref;
        }
-       QueryShortChannelIds_set_short_channel_ids(&this_ptr_conv, val_constr);
+       CommitmentSigned_set_htlc_signatures(&this_ptr_conv, val_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_QueryShortChannelIds_new(int8_tArray chain_hash_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);
-       LDKCVec_u64Z short_channel_ids_arg_constr;
-       short_channel_ids_arg_constr.datalen = *((uint32_t*)short_channel_ids_arg);
-       if (short_channel_ids_arg_constr.datalen > 0)
-               short_channel_ids_arg_constr.data = MALLOC(short_channel_ids_arg_constr.datalen * sizeof(int64_t), "LDKCVec_u64Z Elements");
+uint32_t  __attribute__((visibility("default"))) TS_CommitmentSigned_new(int8_tArray channel_id_arg, int8_tArray signature_arg, ptrArray htlc_signatures_arg) {
+       LDKThirtyTwoBytes channel_id_arg_ref;
+       CHECK(channel_id_arg->arr_len == 32);
+       memcpy(channel_id_arg_ref.data, channel_id_arg->elems, 32);
+       LDKSignature signature_arg_ref;
+       CHECK(signature_arg->arr_len == 64);
+       memcpy(signature_arg_ref.compact_form, signature_arg->elems, 64);
+       LDKCVec_SignatureZ htlc_signatures_arg_constr;
+       htlc_signatures_arg_constr.datalen = htlc_signatures_arg->arr_len;
+       if (htlc_signatures_arg_constr.datalen > 0)
+               htlc_signatures_arg_constr.data = MALLOC(htlc_signatures_arg_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ Elements");
        else
-               short_channel_ids_arg_constr.data = NULL;
-       int64_t* short_channel_ids_arg_vals = (int64_t*)(short_channel_ids_arg + 4);
-       for (size_t i = 0; i < short_channel_ids_arg_constr.datalen; i++) {
-               int64_t short_channel_ids_arg_conv_8 = short_channel_ids_arg_vals[i];
-               short_channel_ids_arg_constr.data[i] = short_channel_ids_arg_conv_8;
+               htlc_signatures_arg_constr.data = NULL;
+       int8_tArray* htlc_signatures_arg_vals = (void*) htlc_signatures_arg->elems;
+       for (size_t m = 0; m < htlc_signatures_arg_constr.datalen; m++) {
+               int8_tArray htlc_signatures_arg_conv_12 = htlc_signatures_arg_vals[m];
+               LDKSignature htlc_signatures_arg_conv_12_ref;
+               CHECK(htlc_signatures_arg_conv_12->arr_len == 64);
+               memcpy(htlc_signatures_arg_conv_12_ref.compact_form, htlc_signatures_arg_conv_12->elems, 64);
+               htlc_signatures_arg_constr.data[m] = htlc_signatures_arg_conv_12_ref;
        }
-       LDKQueryShortChannelIds ret_var = QueryShortChannelIds_new(chain_hash_arg_ref, short_channel_ids_arg_constr);
+       LDKCommitmentSigned ret_var = CommitmentSigned_new(channel_id_arg_ref, signature_arg_ref, htlc_signatures_arg_constr);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26949,8 +24442,8 @@ uint32_t  __attribute__((visibility("default"))) TS_QueryShortChannelIds_new(int
        return ret_ref;
 }
 
-static inline uint64_t QueryShortChannelIds_clone_ptr(LDKQueryShortChannelIds *NONNULL_PTR arg) {
-       LDKQueryShortChannelIds ret_var = QueryShortChannelIds_clone(arg);
+static inline uint64_t CommitmentSigned_clone_ptr(LDKCommitmentSigned *NONNULL_PTR arg) {
+       LDKCommitmentSigned ret_var = CommitmentSigned_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26961,21 +24454,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_QueryShortChannelIds_clone_ptr(uint32_t arg) {
-       LDKQueryShortChannelIds arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_CommitmentSigned_clone_ptr(uint32_t arg) {
+       LDKCommitmentSigned arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = QueryShortChannelIds_clone_ptr(&arg_conv);
+       int64_t ret_val = CommitmentSigned_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_QueryShortChannelIds_clone(uint32_t orig) {
-       LDKQueryShortChannelIds 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKQueryShortChannelIds ret_var = QueryShortChannelIds_clone(&orig_conv);
+       LDKCommitmentSigned ret_var = CommitmentSigned_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -26987,57 +24480,88 @@ uint32_t  __attribute__((visibility("default"))) TS_QueryShortChannelIds_clone(u
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_free(uint32_t this_obj) {
-       LDKReplyShortChannelIdsEnd this_obj_conv;
+void  __attribute__((visibility("default"))) TS_RevokeAndACK_free(uint32_t this_obj) {
+       LDKRevokeAndACK this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ReplyShortChannelIdsEnd_free(this_obj_conv);
+       RevokeAndACK_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_get_chain_hash(uint32_t this_ptr) {
-       LDKReplyShortChannelIdsEnd 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *ReplyShortChannelIdsEnd_get_chain_hash(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *RevokeAndACK_get_channel_id(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
-       LDKReplyShortChannelIdsEnd this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_RevokeAndACK_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKRevokeAndACK this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
        LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       ReplyShortChannelIdsEnd_set_chain_hash(&this_ptr_conv, val_ref);
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       RevokeAndACK_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_get_full_information(uint32_t this_ptr) {
-       LDKReplyShortChannelIdsEnd this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_RevokeAndACK_get_per_commitment_secret(uint32_t this_ptr) {
+       LDKRevokeAndACK this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = ReplyShortChannelIdsEnd_get_full_information(&this_ptr_conv);
-       return ret_val;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *RevokeAndACK_get_per_commitment_secret(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_set_full_information(uint32_t this_ptr, jboolean val) {
-       LDKReplyShortChannelIdsEnd this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_RevokeAndACK_set_per_commitment_secret(uint32_t this_ptr, int8_tArray val) {
+       LDKRevokeAndACK this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ReplyShortChannelIdsEnd_set_full_information(&this_ptr_conv, val);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       RevokeAndACK_set_per_commitment_secret(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_new(int8_tArray chain_hash_arg, jboolean full_information_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);
-       LDKReplyShortChannelIdsEnd ret_var = ReplyShortChannelIdsEnd_new(chain_hash_arg_ref, full_information_arg);
+int8_tArray  __attribute__((visibility("default"))) TS_RevokeAndACK_get_next_per_commitment_point(uint32_t this_ptr) {
+       LDKRevokeAndACK this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, RevokeAndACK_get_next_per_commitment_point(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
+}
+
+void  __attribute__((visibility("default"))) TS_RevokeAndACK_set_next_per_commitment_point(uint32_t this_ptr, int8_tArray val) {
+       LDKRevokeAndACK this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       RevokeAndACK_set_next_per_commitment_point(&this_ptr_conv, val_ref);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_RevokeAndACK_new(int8_tArray channel_id_arg, int8_tArray per_commitment_secret_arg, int8_tArray next_per_commitment_point_arg) {
+       LDKThirtyTwoBytes channel_id_arg_ref;
+       CHECK(channel_id_arg->arr_len == 32);
+       memcpy(channel_id_arg_ref.data, channel_id_arg->elems, 32);
+       LDKThirtyTwoBytes per_commitment_secret_arg_ref;
+       CHECK(per_commitment_secret_arg->arr_len == 32);
+       memcpy(per_commitment_secret_arg_ref.data, per_commitment_secret_arg->elems, 32);
+       LDKPublicKey next_per_commitment_point_arg_ref;
+       CHECK(next_per_commitment_point_arg->arr_len == 33);
+       memcpy(next_per_commitment_point_arg_ref.compressed_form, next_per_commitment_point_arg->elems, 33);
+       LDKRevokeAndACK ret_var = RevokeAndACK_new(channel_id_arg_ref, per_commitment_secret_arg_ref, next_per_commitment_point_arg_ref);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -27049,8 +24573,8 @@ uint32_t  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_new(
        return ret_ref;
 }
 
-static inline uint64_t ReplyShortChannelIdsEnd_clone_ptr(LDKReplyShortChannelIdsEnd *NONNULL_PTR arg) {
-       LDKReplyShortChannelIdsEnd ret_var = ReplyShortChannelIdsEnd_clone(arg);
+static inline uint64_t RevokeAndACK_clone_ptr(LDKRevokeAndACK *NONNULL_PTR arg) {
+       LDKRevokeAndACK ret_var = RevokeAndACK_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -27061,21 +24585,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_clone_ptr(uint32_t arg) {
-       LDKReplyShortChannelIdsEnd arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_RevokeAndACK_clone_ptr(uint32_t arg) {
+       LDKRevokeAndACK arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ReplyShortChannelIdsEnd_clone_ptr(&arg_conv);
+       int64_t ret_val = RevokeAndACK_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_clone(uint32_t orig) {
-       LDKReplyShortChannelIdsEnd 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKReplyShortChannelIdsEnd ret_var = ReplyShortChannelIdsEnd_clone(&orig_conv);
+       LDKRevokeAndACK ret_var = RevokeAndACK_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -27087,74 +24611,57 @@ uint32_t  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_clon
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_GossipTimestampFilter_free(uint32_t this_obj) {
-       LDKGossipTimestampFilter this_obj_conv;
+void  __attribute__((visibility("default"))) TS_UpdateFee_free(uint32_t this_obj) {
+       LDKUpdateFee this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       GossipTimestampFilter_free(this_obj_conv);
+       UpdateFee_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_GossipTimestampFilter_get_chain_hash(uint32_t this_ptr) {
-       LDKGossipTimestampFilter 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *GossipTimestampFilter_get_chain_hash(&this_ptr_conv), 32);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *UpdateFee_get_channel_id(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_GossipTimestampFilter_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
-       LDKGossipTimestampFilter this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UpdateFee_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKUpdateFee this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
        LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       GossipTimestampFilter_set_chain_hash(&this_ptr_conv, val_ref);
-}
-
-int32_t  __attribute__((visibility("default"))) TS_GossipTimestampFilter_get_first_timestamp(uint32_t this_ptr) {
-       LDKGossipTimestampFilter this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = GossipTimestampFilter_get_first_timestamp(&this_ptr_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_GossipTimestampFilter_set_first_timestamp(uint32_t this_ptr, int32_t val) {
-       LDKGossipTimestampFilter this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       GossipTimestampFilter_set_first_timestamp(&this_ptr_conv, val);
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       UpdateFee_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_GossipTimestampFilter_get_timestamp_range(uint32_t this_ptr) {
-       LDKGossipTimestampFilter this_ptr_conv;
+int32_t  __attribute__((visibility("default"))) TS_UpdateFee_get_feerate_per_kw(uint32_t this_ptr) {
+       LDKUpdateFee this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = GossipTimestampFilter_get_timestamp_range(&this_ptr_conv);
+       int32_t ret_val = UpdateFee_get_feerate_per_kw(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_GossipTimestampFilter_set_timestamp_range(uint32_t this_ptr, int32_t val) {
-       LDKGossipTimestampFilter this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_UpdateFee_set_feerate_per_kw(uint32_t this_ptr, int32_t val) {
+       LDKUpdateFee this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       GossipTimestampFilter_set_timestamp_range(&this_ptr_conv, val);
+       UpdateFee_set_feerate_per_kw(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_GossipTimestampFilter_new(int8_tArray chain_hash_arg, int32_t first_timestamp_arg, int32_t timestamp_range_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);
-       LDKGossipTimestampFilter ret_var = GossipTimestampFilter_new(chain_hash_arg_ref, first_timestamp_arg, timestamp_range_arg);
+uint32_t  __attribute__((visibility("default"))) TS_UpdateFee_new(int8_tArray channel_id_arg, int32_t feerate_per_kw_arg) {
+       LDKThirtyTwoBytes channel_id_arg_ref;
+       CHECK(channel_id_arg->arr_len == 32);
+       memcpy(channel_id_arg_ref.data, channel_id_arg->elems, 32);
+       LDKUpdateFee ret_var = UpdateFee_new(channel_id_arg_ref, feerate_per_kw_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -27166,8 +24673,8 @@ uint32_t  __attribute__((visibility("default"))) TS_GossipTimestampFilter_new(in
        return ret_ref;
 }
 
-static inline uint64_t GossipTimestampFilter_clone_ptr(LDKGossipTimestampFilter *NONNULL_PTR arg) {
-       LDKGossipTimestampFilter ret_var = GossipTimestampFilter_clone(arg);
+static inline uint64_t UpdateFee_clone_ptr(LDKUpdateFee *NONNULL_PTR arg) {
+       LDKUpdateFee ret_var = UpdateFee_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -27178,21 +24685,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_GossipTimestampFilter_clone_ptr(uint32_t arg) {
-       LDKGossipTimestampFilter arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_UpdateFee_clone_ptr(uint32_t arg) {
+       LDKUpdateFee arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = GossipTimestampFilter_clone_ptr(&arg_conv);
+       int64_t ret_val = UpdateFee_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_GossipTimestampFilter_clone(uint32_t orig) {
-       LDKGossipTimestampFilter 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKGossipTimestampFilter ret_var = GossipTimestampFilter_clone(&orig_conv);
+       LDKUpdateFee ret_var = UpdateFee_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -27204,139 +24711,64 @@ uint32_t  __attribute__((visibility("default"))) TS_GossipTimestampFilter_clone(
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ErrorAction_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKErrorAction this_ptr_conv = *(LDKErrorAction*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       ErrorAction_free(this_ptr_conv);
-}
-
-static inline uint64_t ErrorAction_clone_ptr(LDKErrorAction *NONNULL_PTR arg) {
-       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
-       *ret_copy = ErrorAction_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_ErrorAction_clone_ptr(uint32_t arg) {
-       LDKErrorAction* arg_conv = (LDKErrorAction*)arg;
-       int64_t ret_val = ErrorAction_clone_ptr(arg_conv);
-       return ret_val;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ErrorAction_clone(uint32_t orig) {
-       LDKErrorAction* orig_conv = (LDKErrorAction*)orig;
-       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
-       *ret_copy = ErrorAction_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ErrorAction_disconnect_peer(uint32_t msg) {
-       LDKErrorMessage msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = ErrorMessage_clone(&msg_conv);
-       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
-       *ret_copy = ErrorAction_disconnect_peer(msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ErrorAction_ignore_error() {
-       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
-       *ret_copy = ErrorAction_ignore_error();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ErrorAction_ignore_and_log(uint32_t a) {
-       LDKLevel a_conv = LDKLevel_from_js(a);
-       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
-       *ret_copy = ErrorAction_ignore_and_log(a_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ErrorAction_ignore_duplicate_gossip() {
-       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
-       *ret_copy = ErrorAction_ignore_duplicate_gossip();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ErrorAction_send_error_message(uint32_t msg) {
-       LDKErrorMessage msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = ErrorMessage_clone(&msg_conv);
-       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
-       *ret_copy = ErrorAction_send_error_message(msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-
-void  __attribute__((visibility("default"))) TS_LightningError_free(uint32_t this_obj) {
-       LDKLightningError this_obj_conv;
+void  __attribute__((visibility("default"))) TS_DataLossProtect_free(uint32_t this_obj) {
+       LDKDataLossProtect this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       LightningError_free(this_obj_conv);
+       DataLossProtect_free(this_obj_conv);
 }
 
-jstring  __attribute__((visibility("default"))) TS_LightningError_get_err(uint32_t this_ptr) {
-       LDKLightningError 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKStr ret_str = LightningError_get_err(&this_ptr_conv);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *DataLossProtect_get_your_last_per_commitment_secret(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_LightningError_set_err(uint32_t this_ptr, jstring val) {
-       LDKLightningError this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DataLossProtect_set_your_last_per_commitment_secret(uint32_t this_ptr, int8_tArray val) {
+       LDKDataLossProtect this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKStr val_conv = str_ref_to_owned_c(val);
-       LightningError_set_err(&this_ptr_conv, val_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       DataLossProtect_set_your_last_per_commitment_secret(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_LightningError_get_action(uint32_t this_ptr) {
-       LDKLightningError this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
-       *ret_copy = LightningError_get_action(&this_ptr_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_DataLossProtect_get_my_current_per_commitment_point(uint32_t this_ptr) {
+       LDKDataLossProtect this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, DataLossProtect_get_my_current_per_commitment_point(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_LightningError_set_action(uint32_t this_ptr, uint32_t val) {
-       LDKLightningError this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DataLossProtect_set_my_current_per_commitment_point(uint32_t this_ptr, int8_tArray val) {
+       LDKDataLossProtect this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKErrorAction val_conv = *(LDKErrorAction*)(val_ptr);
-       val_conv = ErrorAction_clone((LDKErrorAction*)(((uint64_t)val) & ~1));
-       LightningError_set_action(&this_ptr_conv, val_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       DataLossProtect_set_my_current_per_commitment_point(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_LightningError_new(jstring err_arg, uint32_t action_arg) {
-       LDKStr err_arg_conv = str_ref_to_owned_c(err_arg);
-       void* action_arg_ptr = (void*)(((uint64_t)action_arg) & ~1);
-       CHECK_ACCESS(action_arg_ptr);
-       LDKErrorAction action_arg_conv = *(LDKErrorAction*)(action_arg_ptr);
-       action_arg_conv = ErrorAction_clone((LDKErrorAction*)(((uint64_t)action_arg) & ~1));
-       LDKLightningError ret_var = LightningError_new(err_arg_conv, action_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_DataLossProtect_new(int8_tArray your_last_per_commitment_secret_arg, int8_tArray my_current_per_commitment_point_arg) {
+       LDKThirtyTwoBytes your_last_per_commitment_secret_arg_ref;
+       CHECK(your_last_per_commitment_secret_arg->arr_len == 32);
+       memcpy(your_last_per_commitment_secret_arg_ref.data, your_last_per_commitment_secret_arg->elems, 32);
+       LDKPublicKey my_current_per_commitment_point_arg_ref;
+       CHECK(my_current_per_commitment_point_arg->arr_len == 33);
+       memcpy(my_current_per_commitment_point_arg_ref.compressed_form, my_current_per_commitment_point_arg->elems, 33);
+       LDKDataLossProtect ret_var = DataLossProtect_new(your_last_per_commitment_secret_arg_ref, my_current_per_commitment_point_arg_ref);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -27348,8 +24780,8 @@ uint32_t  __attribute__((visibility("default"))) TS_LightningError_new(jstring e
        return ret_ref;
 }
 
-static inline uint64_t LightningError_clone_ptr(LDKLightningError *NONNULL_PTR arg) {
-       LDKLightningError ret_var = LightningError_clone(arg);
+static inline uint64_t DataLossProtect_clone_ptr(LDKDataLossProtect *NONNULL_PTR arg) {
+       LDKDataLossProtect ret_var = DataLossProtect_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -27360,21 +24792,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_LightningError_clone_ptr(uint32_t arg) {
-       LDKLightningError arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_DataLossProtect_clone_ptr(uint32_t arg) {
+       LDKDataLossProtect arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = LightningError_clone_ptr(&arg_conv);
+       int64_t ret_val = DataLossProtect_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_LightningError_clone(uint32_t orig) {
-       LDKLightningError 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKLightningError ret_var = LightningError_clone(&orig_conv);
+       LDKDataLossProtect ret_var = DataLossProtect_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -27386,352 +24818,206 @@ uint32_t  __attribute__((visibility("default"))) TS_LightningError_clone(uint32_
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_CommitmentUpdate_free(uint32_t this_obj) {
-       LDKCommitmentUpdate this_obj_conv;
+void  __attribute__((visibility("default"))) TS_ChannelReestablish_free(uint32_t this_obj) {
+       LDKChannelReestablish this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       CommitmentUpdate_free(this_obj_conv);
+       ChannelReestablish_free(this_obj_conv);
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_CommitmentUpdate_get_update_add_htlcs(uint32_t this_ptr) {
-       LDKCommitmentUpdate 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_UpdateAddHTLCZ ret_var = CommitmentUpdate_get_update_add_htlcs(&this_ptr_conv);
-       uint32_tArray ret_arr = NULL;
-       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 p = 0; p < ret_var.datalen; p++) {
-               LDKUpdateAddHTLC ret_conv_15_var = ret_var.data[p];
-               uint64_t ret_conv_15_ref = 0;
-               CHECK((((uint64_t)ret_conv_15_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_conv_15_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_15_var);
-               ret_conv_15_ref = (uint64_t)ret_conv_15_var.inner;
-               if (ret_conv_15_var.is_owned) {
-                       ret_conv_15_ref |= 1;
-               }
-               ret_arr_ptr[p] = ret_conv_15_ref;
-       }
-       
-       FREE(ret_var.data);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *ChannelReestablish_get_channel_id(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_CommitmentUpdate_set_update_add_htlcs(uint32_t this_ptr, uint32_tArray val) {
-       LDKCommitmentUpdate this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelReestablish_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKChannelReestablish this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_UpdateAddHTLCZ val_constr;
-       val_constr.datalen = *((uint32_t*)val);
-       if (val_constr.datalen > 0)
-               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKUpdateAddHTLC), "LDKCVec_UpdateAddHTLCZ Elements");
-       else
-               val_constr.data = NULL;
-       uint32_t* val_vals = (uint32_t*)(val + 4);
-       for (size_t p = 0; p < val_constr.datalen; p++) {
-               uint32_t val_conv_15 = val_vals[p];
-               LDKUpdateAddHTLC val_conv_15_conv;
-               val_conv_15_conv.inner = (void*)(val_conv_15 & (~1));
-               val_conv_15_conv.is_owned = (val_conv_15 & 1) || (val_conv_15 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv_15_conv);
-               val_conv_15_conv = UpdateAddHTLC_clone(&val_conv_15_conv);
-               val_constr.data[p] = val_conv_15_conv;
-       }
-       CommitmentUpdate_set_update_add_htlcs(&this_ptr_conv, val_constr);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       ChannelReestablish_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_CommitmentUpdate_get_update_fulfill_htlcs(uint32_t this_ptr) {
-       LDKCommitmentUpdate this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelReestablish_get_next_local_commitment_number(uint32_t this_ptr) {
+       LDKChannelReestablish this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_UpdateFulfillHTLCZ ret_var = CommitmentUpdate_get_update_fulfill_htlcs(&this_ptr_conv);
-       uint32_tArray ret_arr = NULL;
-       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 t = 0; t < ret_var.datalen; t++) {
-               LDKUpdateFulfillHTLC ret_conv_19_var = ret_var.data[t];
-               uint64_t ret_conv_19_ref = 0;
-               CHECK((((uint64_t)ret_conv_19_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_conv_19_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_19_var);
-               ret_conv_19_ref = (uint64_t)ret_conv_19_var.inner;
-               if (ret_conv_19_var.is_owned) {
-                       ret_conv_19_ref |= 1;
-               }
-               ret_arr_ptr[t] = ret_conv_19_ref;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+       int64_t ret_val = ChannelReestablish_get_next_local_commitment_number(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CommitmentUpdate_set_update_fulfill_htlcs(uint32_t this_ptr, uint32_tArray val) {
-       LDKCommitmentUpdate this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelReestablish_set_next_local_commitment_number(uint32_t this_ptr, int64_t val) {
+       LDKChannelReestablish this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_UpdateFulfillHTLCZ val_constr;
-       val_constr.datalen = *((uint32_t*)val);
-       if (val_constr.datalen > 0)
-               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKUpdateFulfillHTLC), "LDKCVec_UpdateFulfillHTLCZ Elements");
-       else
-               val_constr.data = NULL;
-       uint32_t* val_vals = (uint32_t*)(val + 4);
-       for (size_t t = 0; t < val_constr.datalen; t++) {
-               uint32_t val_conv_19 = val_vals[t];
-               LDKUpdateFulfillHTLC val_conv_19_conv;
-               val_conv_19_conv.inner = (void*)(val_conv_19 & (~1));
-               val_conv_19_conv.is_owned = (val_conv_19 & 1) || (val_conv_19 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv_19_conv);
-               val_conv_19_conv = UpdateFulfillHTLC_clone(&val_conv_19_conv);
-               val_constr.data[t] = val_conv_19_conv;
-       }
-       CommitmentUpdate_set_update_fulfill_htlcs(&this_ptr_conv, val_constr);
+       ChannelReestablish_set_next_local_commitment_number(&this_ptr_conv, val);
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_CommitmentUpdate_get_update_fail_htlcs(uint32_t this_ptr) {
-       LDKCommitmentUpdate this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelReestablish_get_next_remote_commitment_number(uint32_t this_ptr) {
+       LDKChannelReestablish this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_UpdateFailHTLCZ ret_var = CommitmentUpdate_get_update_fail_htlcs(&this_ptr_conv);
-       uint32_tArray ret_arr = NULL;
-       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 q = 0; q < ret_var.datalen; q++) {
-               LDKUpdateFailHTLC ret_conv_16_var = ret_var.data[q];
-               uint64_t ret_conv_16_ref = 0;
-               CHECK((((uint64_t)ret_conv_16_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_conv_16_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_16_var);
-               ret_conv_16_ref = (uint64_t)ret_conv_16_var.inner;
-               if (ret_conv_16_var.is_owned) {
-                       ret_conv_16_ref |= 1;
-               }
-               ret_arr_ptr[q] = ret_conv_16_ref;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+       int64_t ret_val = ChannelReestablish_get_next_remote_commitment_number(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CommitmentUpdate_set_update_fail_htlcs(uint32_t this_ptr, uint32_tArray val) {
-       LDKCommitmentUpdate this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelReestablish_set_next_remote_commitment_number(uint32_t this_ptr, int64_t val) {
+       LDKChannelReestablish this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_UpdateFailHTLCZ val_constr;
-       val_constr.datalen = *((uint32_t*)val);
-       if (val_constr.datalen > 0)
-               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKUpdateFailHTLC), "LDKCVec_UpdateFailHTLCZ Elements");
-       else
-               val_constr.data = NULL;
-       uint32_t* val_vals = (uint32_t*)(val + 4);
-       for (size_t q = 0; q < val_constr.datalen; q++) {
-               uint32_t val_conv_16 = val_vals[q];
-               LDKUpdateFailHTLC val_conv_16_conv;
-               val_conv_16_conv.inner = (void*)(val_conv_16 & (~1));
-               val_conv_16_conv.is_owned = (val_conv_16 & 1) || (val_conv_16 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv_16_conv);
-               val_conv_16_conv = UpdateFailHTLC_clone(&val_conv_16_conv);
-               val_constr.data[q] = val_conv_16_conv;
+       ChannelReestablish_set_next_remote_commitment_number(&this_ptr_conv, val);
+}
+
+static inline uint64_t ChannelReestablish_clone_ptr(LDKChannelReestablish *NONNULL_PTR arg) {
+       LDKChannelReestablish ret_var = ChannelReestablish_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_ChannelReestablish_clone_ptr(uint32_t arg) {
+       LDKChannelReestablish arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ChannelReestablish_clone_ptr(&arg_conv);
+       return ret_val;
+}
+
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKChannelReestablish ret_var = ChannelReestablish_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       CommitmentUpdate_set_update_fail_htlcs(&this_ptr_conv, val_constr);
+       return ret_ref;
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_CommitmentUpdate_get_update_fail_malformed_htlcs(uint32_t this_ptr) {
-       LDKCommitmentUpdate this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_AnnouncementSignatures_free(uint32_t this_obj) {
+       LDKAnnouncementSignatures this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       AnnouncementSignatures_free(this_obj_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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_UpdateFailMalformedHTLCZ ret_var = CommitmentUpdate_get_update_fail_malformed_htlcs(&this_ptr_conv);
-       uint32_tArray ret_arr = NULL;
-       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 z = 0; z < ret_var.datalen; z++) {
-               LDKUpdateFailMalformedHTLC ret_conv_25_var = ret_var.data[z];
-               uint64_t ret_conv_25_ref = 0;
-               CHECK((((uint64_t)ret_conv_25_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_conv_25_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_25_var);
-               ret_conv_25_ref = (uint64_t)ret_conv_25_var.inner;
-               if (ret_conv_25_var.is_owned) {
-                       ret_conv_25_ref |= 1;
-               }
-               ret_arr_ptr[z] = ret_conv_25_ref;
-       }
-       
-       FREE(ret_var.data);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *AnnouncementSignatures_get_channel_id(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_CommitmentUpdate_set_update_fail_malformed_htlcs(uint32_t this_ptr, uint32_tArray val) {
-       LDKCommitmentUpdate this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_AnnouncementSignatures_set_channel_id(uint32_t this_ptr, int8_tArray val) {
+       LDKAnnouncementSignatures this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       AnnouncementSignatures_set_channel_id(&this_ptr_conv, val_ref);
+}
+
+int64_t  __attribute__((visibility("default"))) TS_AnnouncementSignatures_get_short_channel_id(uint32_t this_ptr) {
+       LDKAnnouncementSignatures this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = AnnouncementSignatures_get_short_channel_id(&this_ptr_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_AnnouncementSignatures_set_short_channel_id(uint32_t this_ptr, int64_t val) {
+       LDKAnnouncementSignatures this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_UpdateFailMalformedHTLCZ val_constr;
-       val_constr.datalen = *((uint32_t*)val);
-       if (val_constr.datalen > 0)
-               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKUpdateFailMalformedHTLC), "LDKCVec_UpdateFailMalformedHTLCZ Elements");
-       else
-               val_constr.data = NULL;
-       uint32_t* val_vals = (uint32_t*)(val + 4);
-       for (size_t z = 0; z < val_constr.datalen; z++) {
-               uint32_t val_conv_25 = val_vals[z];
-               LDKUpdateFailMalformedHTLC val_conv_25_conv;
-               val_conv_25_conv.inner = (void*)(val_conv_25 & (~1));
-               val_conv_25_conv.is_owned = (val_conv_25 & 1) || (val_conv_25 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv_25_conv);
-               val_conv_25_conv = UpdateFailMalformedHTLC_clone(&val_conv_25_conv);
-               val_constr.data[z] = val_conv_25_conv;
-       }
-       CommitmentUpdate_set_update_fail_malformed_htlcs(&this_ptr_conv, val_constr);
+       AnnouncementSignatures_set_short_channel_id(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CommitmentUpdate_get_update_fee(uint32_t this_ptr) {
-       LDKCommitmentUpdate this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_AnnouncementSignatures_get_node_signature(uint32_t this_ptr) {
+       LDKAnnouncementSignatures this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKUpdateFee ret_var = CommitmentUpdate_get_update_fee(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
-       }
-       return ret_ref;
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, AnnouncementSignatures_get_node_signature(&this_ptr_conv).compact_form, 64);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_CommitmentUpdate_set_update_fee(uint32_t this_ptr, uint32_t val) {
-       LDKCommitmentUpdate this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_AnnouncementSignatures_set_node_signature(uint32_t this_ptr, int8_tArray val) {
+       LDKAnnouncementSignatures this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKUpdateFee val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = UpdateFee_clone(&val_conv);
-       CommitmentUpdate_set_update_fee(&this_ptr_conv, val_conv);
+       LDKSignature val_ref;
+       CHECK(val->arr_len == 64);
+       memcpy(val_ref.compact_form, val->elems, 64);
+       AnnouncementSignatures_set_node_signature(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CommitmentUpdate_get_commitment_signed(uint32_t this_ptr) {
-       LDKCommitmentUpdate this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_AnnouncementSignatures_get_bitcoin_signature(uint32_t this_ptr) {
+       LDKAnnouncementSignatures this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCommitmentSigned ret_var = CommitmentUpdate_get_commitment_signed(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, AnnouncementSignatures_get_bitcoin_signature(&this_ptr_conv).compact_form, 64);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_CommitmentUpdate_set_commitment_signed(uint32_t this_ptr, uint32_t val) {
-       LDKCommitmentUpdate this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_AnnouncementSignatures_set_bitcoin_signature(uint32_t this_ptr, int8_tArray val) {
+       LDKAnnouncementSignatures this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCommitmentSigned val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = CommitmentSigned_clone(&val_conv);
-       CommitmentUpdate_set_commitment_signed(&this_ptr_conv, val_conv);
+       LDKSignature val_ref;
+       CHECK(val->arr_len == 64);
+       memcpy(val_ref.compact_form, val->elems, 64);
+       AnnouncementSignatures_set_bitcoin_signature(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CommitmentUpdate_new(uint32_tArray update_add_htlcs_arg, uint32_tArray update_fulfill_htlcs_arg, uint32_tArray update_fail_htlcs_arg, uint32_tArray update_fail_malformed_htlcs_arg, uint32_t update_fee_arg, uint32_t commitment_signed_arg) {
-       LDKCVec_UpdateAddHTLCZ update_add_htlcs_arg_constr;
-       update_add_htlcs_arg_constr.datalen = *((uint32_t*)update_add_htlcs_arg);
-       if (update_add_htlcs_arg_constr.datalen > 0)
-               update_add_htlcs_arg_constr.data = MALLOC(update_add_htlcs_arg_constr.datalen * sizeof(LDKUpdateAddHTLC), "LDKCVec_UpdateAddHTLCZ Elements");
-       else
-               update_add_htlcs_arg_constr.data = NULL;
-       uint32_t* update_add_htlcs_arg_vals = (uint32_t*)(update_add_htlcs_arg + 4);
-       for (size_t p = 0; p < update_add_htlcs_arg_constr.datalen; p++) {
-               uint32_t update_add_htlcs_arg_conv_15 = update_add_htlcs_arg_vals[p];
-               LDKUpdateAddHTLC update_add_htlcs_arg_conv_15_conv;
-               update_add_htlcs_arg_conv_15_conv.inner = (void*)(update_add_htlcs_arg_conv_15 & (~1));
-               update_add_htlcs_arg_conv_15_conv.is_owned = (update_add_htlcs_arg_conv_15 & 1) || (update_add_htlcs_arg_conv_15 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(update_add_htlcs_arg_conv_15_conv);
-               update_add_htlcs_arg_conv_15_conv = UpdateAddHTLC_clone(&update_add_htlcs_arg_conv_15_conv);
-               update_add_htlcs_arg_constr.data[p] = update_add_htlcs_arg_conv_15_conv;
-       }
-       LDKCVec_UpdateFulfillHTLCZ update_fulfill_htlcs_arg_constr;
-       update_fulfill_htlcs_arg_constr.datalen = *((uint32_t*)update_fulfill_htlcs_arg);
-       if (update_fulfill_htlcs_arg_constr.datalen > 0)
-               update_fulfill_htlcs_arg_constr.data = MALLOC(update_fulfill_htlcs_arg_constr.datalen * sizeof(LDKUpdateFulfillHTLC), "LDKCVec_UpdateFulfillHTLCZ Elements");
-       else
-               update_fulfill_htlcs_arg_constr.data = NULL;
-       uint32_t* update_fulfill_htlcs_arg_vals = (uint32_t*)(update_fulfill_htlcs_arg + 4);
-       for (size_t t = 0; t < update_fulfill_htlcs_arg_constr.datalen; t++) {
-               uint32_t update_fulfill_htlcs_arg_conv_19 = update_fulfill_htlcs_arg_vals[t];
-               LDKUpdateFulfillHTLC update_fulfill_htlcs_arg_conv_19_conv;
-               update_fulfill_htlcs_arg_conv_19_conv.inner = (void*)(update_fulfill_htlcs_arg_conv_19 & (~1));
-               update_fulfill_htlcs_arg_conv_19_conv.is_owned = (update_fulfill_htlcs_arg_conv_19 & 1) || (update_fulfill_htlcs_arg_conv_19 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(update_fulfill_htlcs_arg_conv_19_conv);
-               update_fulfill_htlcs_arg_conv_19_conv = UpdateFulfillHTLC_clone(&update_fulfill_htlcs_arg_conv_19_conv);
-               update_fulfill_htlcs_arg_constr.data[t] = update_fulfill_htlcs_arg_conv_19_conv;
-       }
-       LDKCVec_UpdateFailHTLCZ update_fail_htlcs_arg_constr;
-       update_fail_htlcs_arg_constr.datalen = *((uint32_t*)update_fail_htlcs_arg);
-       if (update_fail_htlcs_arg_constr.datalen > 0)
-               update_fail_htlcs_arg_constr.data = MALLOC(update_fail_htlcs_arg_constr.datalen * sizeof(LDKUpdateFailHTLC), "LDKCVec_UpdateFailHTLCZ Elements");
-       else
-               update_fail_htlcs_arg_constr.data = NULL;
-       uint32_t* update_fail_htlcs_arg_vals = (uint32_t*)(update_fail_htlcs_arg + 4);
-       for (size_t q = 0; q < update_fail_htlcs_arg_constr.datalen; q++) {
-               uint32_t update_fail_htlcs_arg_conv_16 = update_fail_htlcs_arg_vals[q];
-               LDKUpdateFailHTLC update_fail_htlcs_arg_conv_16_conv;
-               update_fail_htlcs_arg_conv_16_conv.inner = (void*)(update_fail_htlcs_arg_conv_16 & (~1));
-               update_fail_htlcs_arg_conv_16_conv.is_owned = (update_fail_htlcs_arg_conv_16 & 1) || (update_fail_htlcs_arg_conv_16 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(update_fail_htlcs_arg_conv_16_conv);
-               update_fail_htlcs_arg_conv_16_conv = UpdateFailHTLC_clone(&update_fail_htlcs_arg_conv_16_conv);
-               update_fail_htlcs_arg_constr.data[q] = update_fail_htlcs_arg_conv_16_conv;
-       }
-       LDKCVec_UpdateFailMalformedHTLCZ update_fail_malformed_htlcs_arg_constr;
-       update_fail_malformed_htlcs_arg_constr.datalen = *((uint32_t*)update_fail_malformed_htlcs_arg);
-       if (update_fail_malformed_htlcs_arg_constr.datalen > 0)
-               update_fail_malformed_htlcs_arg_constr.data = MALLOC(update_fail_malformed_htlcs_arg_constr.datalen * sizeof(LDKUpdateFailMalformedHTLC), "LDKCVec_UpdateFailMalformedHTLCZ Elements");
-       else
-               update_fail_malformed_htlcs_arg_constr.data = NULL;
-       uint32_t* update_fail_malformed_htlcs_arg_vals = (uint32_t*)(update_fail_malformed_htlcs_arg + 4);
-       for (size_t z = 0; z < update_fail_malformed_htlcs_arg_constr.datalen; z++) {
-               uint32_t update_fail_malformed_htlcs_arg_conv_25 = update_fail_malformed_htlcs_arg_vals[z];
-               LDKUpdateFailMalformedHTLC update_fail_malformed_htlcs_arg_conv_25_conv;
-               update_fail_malformed_htlcs_arg_conv_25_conv.inner = (void*)(update_fail_malformed_htlcs_arg_conv_25 & (~1));
-               update_fail_malformed_htlcs_arg_conv_25_conv.is_owned = (update_fail_malformed_htlcs_arg_conv_25 & 1) || (update_fail_malformed_htlcs_arg_conv_25 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(update_fail_malformed_htlcs_arg_conv_25_conv);
-               update_fail_malformed_htlcs_arg_conv_25_conv = UpdateFailMalformedHTLC_clone(&update_fail_malformed_htlcs_arg_conv_25_conv);
-               update_fail_malformed_htlcs_arg_constr.data[z] = update_fail_malformed_htlcs_arg_conv_25_conv;
-       }
-       LDKUpdateFee update_fee_arg_conv;
-       update_fee_arg_conv.inner = (void*)(update_fee_arg & (~1));
-       update_fee_arg_conv.is_owned = (update_fee_arg & 1) || (update_fee_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_fee_arg_conv);
-       update_fee_arg_conv = UpdateFee_clone(&update_fee_arg_conv);
-       LDKCommitmentSigned commitment_signed_arg_conv;
-       commitment_signed_arg_conv.inner = (void*)(commitment_signed_arg & (~1));
-       commitment_signed_arg_conv.is_owned = (commitment_signed_arg & 1) || (commitment_signed_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_signed_arg_conv);
-       commitment_signed_arg_conv = CommitmentSigned_clone(&commitment_signed_arg_conv);
-       LDKCommitmentUpdate ret_var = CommitmentUpdate_new(update_add_htlcs_arg_constr, update_fulfill_htlcs_arg_constr, update_fail_htlcs_arg_constr, update_fail_malformed_htlcs_arg_constr, update_fee_arg_conv, commitment_signed_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_AnnouncementSignatures_new(int8_tArray channel_id_arg, int64_t short_channel_id_arg, int8_tArray node_signature_arg, int8_tArray bitcoin_signature_arg) {
+       LDKThirtyTwoBytes channel_id_arg_ref;
+       CHECK(channel_id_arg->arr_len == 32);
+       memcpy(channel_id_arg_ref.data, channel_id_arg->elems, 32);
+       LDKSignature node_signature_arg_ref;
+       CHECK(node_signature_arg->arr_len == 64);
+       memcpy(node_signature_arg_ref.compact_form, node_signature_arg->elems, 64);
+       LDKSignature bitcoin_signature_arg_ref;
+       CHECK(bitcoin_signature_arg->arr_len == 64);
+       memcpy(bitcoin_signature_arg_ref.compact_form, bitcoin_signature_arg->elems, 64);
+       LDKAnnouncementSignatures ret_var = AnnouncementSignatures_new(channel_id_arg_ref, short_channel_id_arg, node_signature_arg_ref, bitcoin_signature_arg_ref);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -27743,8 +25029,8 @@ uint32_t  __attribute__((visibility("default"))) TS_CommitmentUpdate_new(uint32_
        return ret_ref;
 }
 
-static inline uint64_t CommitmentUpdate_clone_ptr(LDKCommitmentUpdate *NONNULL_PTR arg) {
-       LDKCommitmentUpdate ret_var = CommitmentUpdate_clone(arg);
+static inline uint64_t AnnouncementSignatures_clone_ptr(LDKAnnouncementSignatures *NONNULL_PTR arg) {
+       LDKAnnouncementSignatures ret_var = AnnouncementSignatures_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -27755,21 +25041,133 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_CommitmentUpdate_clone_ptr(uint32_t arg) {
-       LDKCommitmentUpdate arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = CommitmentUpdate_clone_ptr(&arg_conv);
-       return ret_val;
+int64_t  __attribute__((visibility("default"))) TS_AnnouncementSignatures_clone_ptr(uint32_t arg) {
+       LDKAnnouncementSignatures arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = AnnouncementSignatures_clone_ptr(&arg_conv);
+       return ret_val;
+}
+
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKAnnouncementSignatures ret_var = AnnouncementSignatures_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)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;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKNetAddress this_ptr_conv = *(LDKNetAddress*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       NetAddress_free(this_ptr_conv);
+}
+
+static inline uint64_t NetAddress_clone_ptr(LDKNetAddress *NONNULL_PTR arg) {
+       LDKNetAddress *ret_copy = MALLOC(sizeof(LDKNetAddress), "LDKNetAddress");
+       *ret_copy = NetAddress_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_NetAddress_clone_ptr(uint32_t arg) {
+       LDKNetAddress* arg_conv = (LDKNetAddress*)arg;
+       int64_t ret_val = NetAddress_clone_ptr(arg_conv);
+       return ret_val;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_NetAddress_clone(uint32_t orig) {
+       LDKNetAddress* orig_conv = (LDKNetAddress*)orig;
+       LDKNetAddress *ret_copy = MALLOC(sizeof(LDKNetAddress), "LDKNetAddress");
+       *ret_copy = NetAddress_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_NetAddress_ipv4(int8_tArray addr, int16_t port) {
+       LDKFourBytes addr_ref;
+       CHECK(addr->arr_len == 4);
+       memcpy(addr_ref.data, addr->elems, 4);
+       LDKNetAddress *ret_copy = MALLOC(sizeof(LDKNetAddress), "LDKNetAddress");
+       *ret_copy = NetAddress_ipv4(addr_ref, port);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_NetAddress_ipv6(int8_tArray addr, int16_t port) {
+       LDKSixteenBytes addr_ref;
+       CHECK(addr->arr_len == 16);
+       memcpy(addr_ref.data, addr->elems, 16);
+       LDKNetAddress *ret_copy = MALLOC(sizeof(LDKNetAddress), "LDKNetAddress");
+       *ret_copy = NetAddress_ipv6(addr_ref, port);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_NetAddress_onion_v2(int8_tArray a) {
+       LDKTwelveBytes a_ref;
+       CHECK(a->arr_len == 12);
+       memcpy(a_ref.data, a->elems, 12);
+       LDKNetAddress *ret_copy = MALLOC(sizeof(LDKNetAddress), "LDKNetAddress");
+       *ret_copy = NetAddress_onion_v2(a_ref);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_NetAddress_onion_v3(int8_tArray ed25519_pubkey, int16_t checksum, int8_t version, int16_t port) {
+       LDKThirtyTwoBytes ed25519_pubkey_ref;
+       CHECK(ed25519_pubkey->arr_len == 32);
+       memcpy(ed25519_pubkey_ref.data, ed25519_pubkey->elems, 32);
+       LDKNetAddress *ret_copy = MALLOC(sizeof(LDKNetAddress), "LDKNetAddress");
+       *ret_copy = NetAddress_onion_v3(ed25519_pubkey_ref, checksum, version, port);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_NetAddress_write(uint32_t obj) {
+       LDKNetAddress* obj_conv = (LDKNetAddress*)obj;
+       LDKCVec_u8Z ret_var = NetAddress_write(obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_NetAddress_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_NetAddressDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetAddressDecodeErrorZ), "LDKCResult_NetAddressDecodeErrorZ");
+       *ret_conv = NetAddress_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_free(uint32_t this_obj) {
+       LDKUnsignedNodeAnnouncement this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       UnsignedNodeAnnouncement_free(this_obj_conv);
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKCommitmentUpdate ret_var = CommitmentUpdate_clone(&orig_conv);
+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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKNodeFeatures ret_var = UnsignedNodeAnnouncement_get_features(&this_ptr_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -27781,785 +25179,841 @@ uint32_t  __attribute__((visibility("default"))) TS_CommitmentUpdate_clone(uint3
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKChannelMessageHandler this_ptr_conv = *(LDKChannelMessageHandler*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       ChannelMessageHandler_free(this_ptr_conv);
-}
-
-void  __attribute__((visibility("default"))) TS_RoutingMessageHandler_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKRoutingMessageHandler this_ptr_conv = *(LDKRoutingMessageHandler*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       RoutingMessageHandler_free(this_ptr_conv);
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_write(uint32_t obj) {
-       LDKAcceptChannel obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = AcceptChannel_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_AcceptChannel_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_AcceptChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AcceptChannelDecodeErrorZ), "LDKCResult_AcceptChannelDecodeErrorZ");
-       *ret_conv = AcceptChannel_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_set_features(uint32_t this_ptr, uint32_t val) {
+       LDKUnsignedNodeAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKNodeFeatures val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = NodeFeatures_clone(&val_conv);
+       UnsignedNodeAnnouncement_set_features(&this_ptr_conv, val_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_AnnouncementSignatures_write(uint32_t obj) {
-       LDKAnnouncementSignatures obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = AnnouncementSignatures_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+int32_t  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_get_timestamp(uint32_t this_ptr) {
+       LDKUnsignedNodeAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = UnsignedNodeAnnouncement_get_timestamp(&this_ptr_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_AnnouncementSignatures_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_AnnouncementSignaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ), "LDKCResult_AnnouncementSignaturesDecodeErrorZ");
-       *ret_conv = AnnouncementSignatures_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_set_timestamp(uint32_t this_ptr, int32_t val) {
+       LDKUnsignedNodeAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       UnsignedNodeAnnouncement_set_timestamp(&this_ptr_conv, val);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelReestablish_write(uint32_t obj) {
-       LDKChannelReestablish obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ChannelReestablish_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+int8_tArray  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_get_node_id(uint32_t this_ptr) {
+       LDKUnsignedNodeAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, UnsignedNodeAnnouncement_get_node_id(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelReestablish_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ChannelReestablishDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelReestablishDecodeErrorZ), "LDKCResult_ChannelReestablishDecodeErrorZ");
-       *ret_conv = ChannelReestablish_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_set_node_id(uint32_t this_ptr, int8_tArray val) {
+       LDKUnsignedNodeAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       UnsignedNodeAnnouncement_set_node_id(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ClosingSigned_write(uint32_t obj) {
-       LDKClosingSigned obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ClosingSigned_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+int8_tArray  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_get_rgb(uint32_t this_ptr) {
+       LDKUnsignedNodeAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(3);
+       memcpy(ret_arr->elems, *UnsignedNodeAnnouncement_get_rgb(&this_ptr_conv), 3);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosingSigned_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ClosingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedDecodeErrorZ), "LDKCResult_ClosingSignedDecodeErrorZ");
-       *ret_conv = ClosingSigned_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_set_rgb(uint32_t this_ptr, int8_tArray val) {
+       LDKUnsignedNodeAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKThreeBytes val_ref;
+       CHECK(val->arr_len == 3);
+       memcpy(val_ref.data, val->elems, 3);
+       UnsignedNodeAnnouncement_set_rgb(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_write(uint32_t obj) {
-       LDKClosingSignedFeeRange obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ClosingSignedFeeRange_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+int8_tArray  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_get_alias(uint32_t this_ptr) {
+       LDKUnsignedNodeAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *UnsignedNodeAnnouncement_get_alias(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ), "LDKCResult_ClosingSignedFeeRangeDecodeErrorZ");
-       *ret_conv = ClosingSignedFeeRange_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_set_alias(uint32_t this_ptr, int8_tArray val) {
+       LDKUnsignedNodeAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       UnsignedNodeAnnouncement_set_alias(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_CommitmentSigned_write(uint32_t obj) {
-       LDKCommitmentSigned obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = CommitmentSigned_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_set_addresses(uint32_t this_ptr, uint32_tArray val) {
+       LDKUnsignedNodeAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCVec_NetAddressZ val_constr;
+       val_constr.datalen = val->arr_len;
+       if (val_constr.datalen > 0)
+               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKNetAddress), "LDKCVec_NetAddressZ Elements");
+       else
+               val_constr.data = NULL;
+       uint32_t* val_vals = val->elems;
+       for (size_t m = 0; m < val_constr.datalen; m++) {
+               uint32_t val_conv_12 = val_vals[m];
+               void* val_conv_12_ptr = (void*)(((uint64_t)val_conv_12) & ~1);
+               CHECK_ACCESS(val_conv_12_ptr);
+               LDKNetAddress val_conv_12_conv = *(LDKNetAddress*)(val_conv_12_ptr);
+               val_conv_12_conv = NetAddress_clone((LDKNetAddress*)(((uint64_t)val_conv_12) & ~1));
+               val_constr.data[m] = val_conv_12_conv;
+       }
+       UnsignedNodeAnnouncement_set_addresses(&this_ptr_conv, val_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CommitmentSigned_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_CommitmentSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentSignedDecodeErrorZ), "LDKCResult_CommitmentSignedDecodeErrorZ");
-       *ret_conv = CommitmentSigned_read(ser_ref);
-       return (uint64_t)ret_conv;
+static inline uint64_t UnsignedNodeAnnouncement_clone_ptr(LDKUnsignedNodeAnnouncement *NONNULL_PTR arg) {
+       LDKUnsignedNodeAnnouncement ret_var = UnsignedNodeAnnouncement_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-int8_tArray  __attribute__((visibility("default"))) TS_FundingCreated_write(uint32_t obj) {
-       LDKFundingCreated obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = FundingCreated_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+       return ret_ref;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_FundingCreated_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_FundingCreatedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingCreatedDecodeErrorZ), "LDKCResult_FundingCreatedDecodeErrorZ");
-       *ret_conv = FundingCreated_read(ser_ref);
-       return (uint64_t)ret_conv;
+int64_t  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_clone_ptr(uint32_t arg) {
+       LDKUnsignedNodeAnnouncement arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = UnsignedNodeAnnouncement_clone_ptr(&arg_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_FundingSigned_write(uint32_t obj) {
-       LDKFundingSigned obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = FundingSigned_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKUnsignedNodeAnnouncement ret_var = UnsignedNodeAnnouncement_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_FundingSigned_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_FundingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingSignedDecodeErrorZ), "LDKCResult_FundingSignedDecodeErrorZ");
-       *ret_conv = FundingSigned_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_NodeAnnouncement_free(uint32_t this_obj) {
+       LDKNodeAnnouncement this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       NodeAnnouncement_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_FundingLocked_write(uint32_t obj) {
-       LDKFundingLocked obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = FundingLocked_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, NodeAnnouncement_get_signature(&this_ptr_conv).compact_form, 64);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_FundingLocked_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_FundingLockedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingLockedDecodeErrorZ), "LDKCResult_FundingLockedDecodeErrorZ");
-       *ret_conv = FundingLocked_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_NodeAnnouncement_set_signature(uint32_t this_ptr, int8_tArray val) {
+       LDKNodeAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKSignature val_ref;
+       CHECK(val->arr_len == 64);
+       memcpy(val_ref.compact_form, val->elems, 64);
+       NodeAnnouncement_set_signature(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_Init_write(uint32_t obj) {
-       LDKInit obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = Init_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncement_get_contents(uint32_t this_ptr) {
+       LDKNodeAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKUnsignedNodeAnnouncement ret_var = NodeAnnouncement_get_contents(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Init_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_InitDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitDecodeErrorZ), "LDKCResult_InitDecodeErrorZ");
-       *ret_conv = Init_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_NodeAnnouncement_set_contents(uint32_t this_ptr, uint32_t val) {
+       LDKNodeAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKUnsignedNodeAnnouncement val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = UnsignedNodeAnnouncement_clone(&val_conv);
+       NodeAnnouncement_set_contents(&this_ptr_conv, val_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_write(uint32_t obj) {
-       LDKOpenChannel obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = OpenChannel_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncement_new(int8_tArray signature_arg, uint32_t contents_arg) {
+       LDKSignature signature_arg_ref;
+       CHECK(signature_arg->arr_len == 64);
+       memcpy(signature_arg_ref.compact_form, signature_arg->elems, 64);
+       LDKUnsignedNodeAnnouncement contents_arg_conv;
+       contents_arg_conv.inner = (void*)(contents_arg & (~1));
+       contents_arg_conv.is_owned = (contents_arg & 1) || (contents_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(contents_arg_conv);
+       contents_arg_conv = UnsignedNodeAnnouncement_clone(&contents_arg_conv);
+       LDKNodeAnnouncement ret_var = NodeAnnouncement_new(signature_arg_ref, contents_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_OpenChannel_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_OpenChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OpenChannelDecodeErrorZ), "LDKCResult_OpenChannelDecodeErrorZ");
-       *ret_conv = OpenChannel_read(ser_ref);
-       return (uint64_t)ret_conv;
+static inline uint64_t NodeAnnouncement_clone_ptr(LDKNodeAnnouncement *NONNULL_PTR arg) {
+       LDKNodeAnnouncement ret_var = NodeAnnouncement_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_NodeAnnouncement_clone_ptr(uint32_t arg) {
+       LDKNodeAnnouncement arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = NodeAnnouncement_clone_ptr(&arg_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_RevokeAndACK_write(uint32_t obj) {
-       LDKRevokeAndACK obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = RevokeAndACK_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKNodeAnnouncement ret_var = NodeAnnouncement_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RevokeAndACK_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_RevokeAndACKDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RevokeAndACKDecodeErrorZ), "LDKCResult_RevokeAndACKDecodeErrorZ");
-       *ret_conv = RevokeAndACK_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_free(uint32_t this_obj) {
+       LDKUnsignedChannelAnnouncement this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       UnsignedChannelAnnouncement_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_Shutdown_write(uint32_t obj) {
-       LDKShutdown obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = Shutdown_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKChannelFeatures ret_var = UnsignedChannelAnnouncement_get_features(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Shutdown_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ShutdownDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownDecodeErrorZ), "LDKCResult_ShutdownDecodeErrorZ");
-       *ret_conv = Shutdown_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_features(uint32_t this_ptr, uint32_t val) {
+       LDKUnsignedChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKChannelFeatures val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = ChannelFeatures_clone(&val_conv);
+       UnsignedChannelAnnouncement_set_features(&this_ptr_conv, val_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UpdateFailHTLC_write(uint32_t obj) {
-       LDKUpdateFailHTLC obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = UpdateFailHTLC_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_get_chain_hash(uint32_t this_ptr) {
+       LDKUnsignedChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *UnsignedChannelAnnouncement_get_chain_hash(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UpdateFailHTLC_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_UpdateFailHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ), "LDKCResult_UpdateFailHTLCDecodeErrorZ");
-       *ret_conv = UpdateFailHTLC_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
+       LDKUnsignedChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       UnsignedChannelAnnouncement_set_chain_hash(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_write(uint32_t obj) {
-       LDKUpdateFailMalformedHTLC obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = UpdateFailMalformedHTLC_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+int64_t  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_get_short_channel_id(uint32_t this_ptr) {
+       LDKUnsignedChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = UnsignedChannelAnnouncement_get_short_channel_id(&this_ptr_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ), "LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ");
-       *ret_conv = UpdateFailMalformedHTLC_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_short_channel_id(uint32_t this_ptr, int64_t val) {
+       LDKUnsignedChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       UnsignedChannelAnnouncement_set_short_channel_id(&this_ptr_conv, val);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UpdateFee_write(uint32_t obj) {
-       LDKUpdateFee obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = UpdateFee_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_get_node_id_1(uint32_t this_ptr) {
+       LDKUnsignedChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, UnsignedChannelAnnouncement_get_node_id_1(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UpdateFee_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_UpdateFeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFeeDecodeErrorZ), "LDKCResult_UpdateFeeDecodeErrorZ");
-       *ret_conv = UpdateFee_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_node_id_1(uint32_t this_ptr, int8_tArray val) {
+       LDKUnsignedChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       UnsignedChannelAnnouncement_set_node_id_1(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_write(uint32_t obj) {
-       LDKUpdateFulfillHTLC obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = UpdateFulfillHTLC_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_get_node_id_2(uint32_t this_ptr) {
+       LDKUnsignedChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, UnsignedChannelAnnouncement_get_node_id_2(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_UpdateFulfillHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ), "LDKCResult_UpdateFulfillHTLCDecodeErrorZ");
-       *ret_conv = UpdateFulfillHTLC_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_node_id_2(uint32_t this_ptr, int8_tArray val) {
+       LDKUnsignedChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       UnsignedChannelAnnouncement_set_node_id_2(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UpdateAddHTLC_write(uint32_t obj) {
-       LDKUpdateAddHTLC obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = UpdateAddHTLC_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_get_bitcoin_key_1(uint32_t this_ptr) {
+       LDKUnsignedChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, UnsignedChannelAnnouncement_get_bitcoin_key_1(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UpdateAddHTLC_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_UpdateAddHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ), "LDKCResult_UpdateAddHTLCDecodeErrorZ");
-       *ret_conv = UpdateAddHTLC_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_bitcoin_key_1(uint32_t this_ptr, int8_tArray val) {
+       LDKUnsignedChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       UnsignedChannelAnnouncement_set_bitcoin_key_1(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_Ping_write(uint32_t obj) {
-       LDKPing obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = Ping_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_get_bitcoin_key_2(uint32_t this_ptr) {
+       LDKUnsignedChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, UnsignedChannelAnnouncement_get_bitcoin_key_2(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Ping_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_PingDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PingDecodeErrorZ), "LDKCResult_PingDecodeErrorZ");
-       *ret_conv = Ping_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_bitcoin_key_2(uint32_t this_ptr, int8_tArray val) {
+       LDKUnsignedChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       UnsignedChannelAnnouncement_set_bitcoin_key_2(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_Pong_write(uint32_t obj) {
-       LDKPong obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = Pong_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+static inline uint64_t UnsignedChannelAnnouncement_clone_ptr(LDKUnsignedChannelAnnouncement *NONNULL_PTR arg) {
+       LDKUnsignedChannelAnnouncement ret_var = UnsignedChannelAnnouncement_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_clone_ptr(uint32_t arg) {
+       LDKUnsignedChannelAnnouncement arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = UnsignedChannelAnnouncement_clone_ptr(&arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Pong_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_PongDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PongDecodeErrorZ), "LDKCResult_PongDecodeErrorZ");
-       *ret_conv = Pong_read(ser_ref);
-       return (uint64_t)ret_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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKUnsignedChannelAnnouncement ret_var = UnsignedChannelAnnouncement_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_write(uint32_t obj) {
-       LDKUnsignedChannelAnnouncement obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = UnsignedChannelAnnouncement_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+void  __attribute__((visibility("default"))) TS_ChannelAnnouncement_free(uint32_t this_obj) {
+       LDKChannelAnnouncement this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       ChannelAnnouncement_free(this_obj_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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, ChannelAnnouncement_get_node_signature_1(&this_ptr_conv).compact_form, 64);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ), "LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ");
-       *ret_conv = UnsignedChannelAnnouncement_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_ChannelAnnouncement_set_node_signature_1(uint32_t this_ptr, int8_tArray val) {
+       LDKChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKSignature val_ref;
+       CHECK(val->arr_len == 64);
+       memcpy(val_ref.compact_form, val->elems, 64);
+       ChannelAnnouncement_set_node_signature_1(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelAnnouncement_write(uint32_t obj) {
-       LDKChannelAnnouncement obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ChannelAnnouncement_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelAnnouncement_get_node_signature_2(uint32_t this_ptr) {
+       LDKChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, ChannelAnnouncement_get_node_signature_2(&this_ptr_conv).compact_form, 64);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelAnnouncement_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ), "LDKCResult_ChannelAnnouncementDecodeErrorZ");
-       *ret_conv = ChannelAnnouncement_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_ChannelAnnouncement_set_node_signature_2(uint32_t this_ptr, int8_tArray val) {
+       LDKChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKSignature val_ref;
+       CHECK(val->arr_len == 64);
+       memcpy(val_ref.compact_form, val->elems, 64);
+       ChannelAnnouncement_set_node_signature_2(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_write(uint32_t obj) {
-       LDKUnsignedChannelUpdate obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = UnsignedChannelUpdate_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelAnnouncement_get_bitcoin_signature_1(uint32_t this_ptr) {
+       LDKChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, ChannelAnnouncement_get_bitcoin_signature_1(&this_ptr_conv).compact_form, 64);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_UnsignedChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ), "LDKCResult_UnsignedChannelUpdateDecodeErrorZ");
-       *ret_conv = UnsignedChannelUpdate_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_ChannelAnnouncement_set_bitcoin_signature_1(uint32_t this_ptr, int8_tArray val) {
+       LDKChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKSignature val_ref;
+       CHECK(val->arr_len == 64);
+       memcpy(val_ref.compact_form, val->elems, 64);
+       ChannelAnnouncement_set_bitcoin_signature_1(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelUpdate_write(uint32_t obj) {
-       LDKChannelUpdate obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ChannelUpdate_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelAnnouncement_get_bitcoin_signature_2(uint32_t this_ptr) {
+       LDKChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, ChannelAnnouncement_get_bitcoin_signature_2(&this_ptr_conv).compact_form, 64);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelUpdate_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelUpdateDecodeErrorZ), "LDKCResult_ChannelUpdateDecodeErrorZ");
-       *ret_conv = ChannelUpdate_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_ChannelAnnouncement_set_bitcoin_signature_2(uint32_t this_ptr, int8_tArray val) {
+       LDKChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKSignature val_ref;
+       CHECK(val->arr_len == 64);
+       memcpy(val_ref.compact_form, val->elems, 64);
+       ChannelAnnouncement_set_bitcoin_signature_2(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ErrorMessage_write(uint32_t obj) {
-       LDKErrorMessage obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ErrorMessage_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelAnnouncement_get_contents(uint32_t this_ptr) {
+       LDKChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKUnsignedChannelAnnouncement ret_var = ChannelAnnouncement_get_contents(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ErrorMessage_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ErrorMessageDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ErrorMessageDecodeErrorZ), "LDKCResult_ErrorMessageDecodeErrorZ");
-       *ret_conv = ErrorMessage_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_ChannelAnnouncement_set_contents(uint32_t this_ptr, uint32_t val) {
+       LDKChannelAnnouncement this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKUnsignedChannelAnnouncement val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = UnsignedChannelAnnouncement_clone(&val_conv);
+       ChannelAnnouncement_set_contents(&this_ptr_conv, val_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_write(uint32_t obj) {
-       LDKUnsignedNodeAnnouncement obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = UnsignedNodeAnnouncement_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelAnnouncement_new(int8_tArray node_signature_1_arg, int8_tArray node_signature_2_arg, int8_tArray bitcoin_signature_1_arg, int8_tArray bitcoin_signature_2_arg, uint32_t contents_arg) {
+       LDKSignature node_signature_1_arg_ref;
+       CHECK(node_signature_1_arg->arr_len == 64);
+       memcpy(node_signature_1_arg_ref.compact_form, node_signature_1_arg->elems, 64);
+       LDKSignature node_signature_2_arg_ref;
+       CHECK(node_signature_2_arg->arr_len == 64);
+       memcpy(node_signature_2_arg_ref.compact_form, node_signature_2_arg->elems, 64);
+       LDKSignature bitcoin_signature_1_arg_ref;
+       CHECK(bitcoin_signature_1_arg->arr_len == 64);
+       memcpy(bitcoin_signature_1_arg_ref.compact_form, bitcoin_signature_1_arg->elems, 64);
+       LDKSignature bitcoin_signature_2_arg_ref;
+       CHECK(bitcoin_signature_2_arg->arr_len == 64);
+       memcpy(bitcoin_signature_2_arg_ref.compact_form, bitcoin_signature_2_arg->elems, 64);
+       LDKUnsignedChannelAnnouncement contents_arg_conv;
+       contents_arg_conv.inner = (void*)(contents_arg & (~1));
+       contents_arg_conv.is_owned = (contents_arg & 1) || (contents_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(contents_arg_conv);
+       contents_arg_conv = UnsignedChannelAnnouncement_clone(&contents_arg_conv);
+       LDKChannelAnnouncement ret_var = ChannelAnnouncement_new(node_signature_1_arg_ref, node_signature_2_arg_ref, bitcoin_signature_1_arg_ref, bitcoin_signature_2_arg_ref, contents_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ), "LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ");
-       *ret_conv = UnsignedNodeAnnouncement_read(ser_ref);
-       return (uint64_t)ret_conv;
+static inline uint64_t ChannelAnnouncement_clone_ptr(LDKChannelAnnouncement *NONNULL_PTR arg) {
+       LDKChannelAnnouncement ret_var = ChannelAnnouncement_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-int8_tArray  __attribute__((visibility("default"))) TS_NodeAnnouncement_write(uint32_t obj) {
-       LDKNodeAnnouncement obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = NodeAnnouncement_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+       return ret_ref;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncement_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_NodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ), "LDKCResult_NodeAnnouncementDecodeErrorZ");
-       *ret_conv = NodeAnnouncement_read(ser_ref);
-       return (uint64_t)ret_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelAnnouncement_clone_ptr(uint32_t arg) {
+       LDKChannelAnnouncement arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ChannelAnnouncement_clone_ptr(&arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_QueryShortChannelIds_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_QueryShortChannelIdsDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ), "LDKCResult_QueryShortChannelIdsDecodeErrorZ");
-       *ret_conv = QueryShortChannelIds_read(ser_ref);
-       return (uint64_t)ret_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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKChannelAnnouncement ret_var = ChannelAnnouncement_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_QueryShortChannelIds_write(uint32_t obj) {
-       LDKQueryShortChannelIds obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = QueryShortChannelIds_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_free(uint32_t this_obj) {
+       LDKUnsignedChannelUpdate this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       UnsignedChannelUpdate_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_write(uint32_t obj) {
-       LDKReplyShortChannelIdsEnd obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ReplyShortChannelIdsEnd_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *UnsignedChannelUpdate_get_chain_hash(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ), "LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ");
-       *ret_conv = ReplyShortChannelIdsEnd_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       UnsignedChannelUpdate_set_chain_hash(&this_ptr_conv, val_ref);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_QueryChannelRange_end_blocknum(uint32_t this_arg) {
-       LDKQueryChannelRange this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int32_t ret_val = QueryChannelRange_end_blocknum(&this_arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_short_channel_id(uint32_t this_ptr) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = UnsignedChannelUpdate_get_short_channel_id(&this_ptr_conv);
        return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_QueryChannelRange_write(uint32_t obj) {
-       LDKQueryChannelRange obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = QueryChannelRange_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_short_channel_id(uint32_t this_ptr, int64_t val) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       UnsignedChannelUpdate_set_short_channel_id(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_QueryChannelRange_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_QueryChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ), "LDKCResult_QueryChannelRangeDecodeErrorZ");
-       *ret_conv = QueryChannelRange_read(ser_ref);
-       return (uint64_t)ret_conv;
+int32_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_timestamp(uint32_t this_ptr) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = UnsignedChannelUpdate_get_timestamp(&this_ptr_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ReplyChannelRange_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ReplyChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ), "LDKCResult_ReplyChannelRangeDecodeErrorZ");
-       *ret_conv = ReplyChannelRange_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_timestamp(uint32_t this_ptr, int32_t val) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       UnsignedChannelUpdate_set_timestamp(&this_ptr_conv, val);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ReplyChannelRange_write(uint32_t obj) {
-       LDKReplyChannelRange obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ReplyChannelRange_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+int8_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_flags(uint32_t this_ptr) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_t ret_val = UnsignedChannelUpdate_get_flags(&this_ptr_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_GossipTimestampFilter_write(uint32_t obj) {
-       LDKGossipTimestampFilter obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = GossipTimestampFilter_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_flags(uint32_t this_ptr, int8_t val) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       UnsignedChannelUpdate_set_flags(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_GossipTimestampFilter_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_GossipTimestampFilterDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ), "LDKCResult_GossipTimestampFilterDecodeErrorZ");
-       *ret_conv = GossipTimestampFilter_read(ser_ref);
-       return (uint64_t)ret_conv;
+int16_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_cltv_expiry_delta(uint32_t this_ptr) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int16_t ret_val = UnsignedChannelUpdate_get_cltv_expiry_delta(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CustomMessageHandler_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKCustomMessageHandler this_ptr_conv = *(LDKCustomMessageHandler*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       CustomMessageHandler_free(this_ptr_conv);
+void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_cltv_expiry_delta(uint32_t this_ptr, int16_t val) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       UnsignedChannelUpdate_set_cltv_expiry_delta(&this_ptr_conv, val);
+}
+
+int64_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_htlc_minimum_msat(uint32_t this_ptr) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = UnsignedChannelUpdate_get_htlc_minimum_msat(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_IgnoringMessageHandler_free(uint32_t this_obj) {
-       LDKIgnoringMessageHandler this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       IgnoringMessageHandler_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_htlc_minimum_msat(uint32_t this_ptr, int64_t val) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       UnsignedChannelUpdate_set_htlc_minimum_msat(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_IgnoringMessageHandler_new() {
-       LDKIgnoringMessageHandler ret_var = IgnoringMessageHandler_new();
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int32_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_fee_base_msat(uint32_t this_ptr) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = UnsignedChannelUpdate_get_fee_base_msat(&this_ptr_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_IgnoringMessageHandler_as_MessageSendEventsProvider(uint32_t this_arg) {
-       LDKIgnoringMessageHandler this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKMessageSendEventsProvider* ret_ret = MALLOC(sizeof(LDKMessageSendEventsProvider), "LDKMessageSendEventsProvider");
-       *ret_ret = IgnoringMessageHandler_as_MessageSendEventsProvider(&this_arg_conv);
-       return (uint64_t)ret_ret;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_fee_base_msat(uint32_t this_ptr, int32_t val) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       UnsignedChannelUpdate_set_fee_base_msat(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_IgnoringMessageHandler_as_RoutingMessageHandler(uint32_t this_arg) {
-       LDKIgnoringMessageHandler this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKRoutingMessageHandler* ret_ret = MALLOC(sizeof(LDKRoutingMessageHandler), "LDKRoutingMessageHandler");
-       *ret_ret = IgnoringMessageHandler_as_RoutingMessageHandler(&this_arg_conv);
-       return (uint64_t)ret_ret;
+int32_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_fee_proportional_millionths(uint32_t this_ptr) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = UnsignedChannelUpdate_get_fee_proportional_millionths(&this_ptr_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_IgnoringMessageHandler_as_CustomMessageReader(uint32_t this_arg) {
-       LDKIgnoringMessageHandler this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCustomMessageReader* ret_ret = MALLOC(sizeof(LDKCustomMessageReader), "LDKCustomMessageReader");
-       *ret_ret = IgnoringMessageHandler_as_CustomMessageReader(&this_arg_conv);
-       return (uint64_t)ret_ret;
+void  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_fee_proportional_millionths(uint32_t this_ptr, int32_t val) {
+       LDKUnsignedChannelUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       UnsignedChannelUpdate_set_fee_proportional_millionths(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_IgnoringMessageHandler_as_CustomMessageHandler(uint32_t this_arg) {
-       LDKIgnoringMessageHandler this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCustomMessageHandler* ret_ret = MALLOC(sizeof(LDKCustomMessageHandler), "LDKCustomMessageHandler");
-       *ret_ret = IgnoringMessageHandler_as_CustomMessageHandler(&this_arg_conv);
-       return (uint64_t)ret_ret;
+static inline uint64_t UnsignedChannelUpdate_clone_ptr(LDKUnsignedChannelUpdate *NONNULL_PTR arg) {
+       LDKUnsignedChannelUpdate ret_var = UnsignedChannelUpdate_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-void  __attribute__((visibility("default"))) TS_ErroringMessageHandler_free(uint32_t this_obj) {
-       LDKErroringMessageHandler this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ErroringMessageHandler_free(this_obj_conv);
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_clone_ptr(uint32_t arg) {
+       LDKUnsignedChannelUpdate arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = UnsignedChannelUpdate_clone_ptr(&arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ErroringMessageHandler_new() {
-       LDKErroringMessageHandler ret_var = ErroringMessageHandler_new();
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKUnsignedChannelUpdate ret_var = UnsignedChannelUpdate_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -28571,84 +26025,75 @@ uint32_t  __attribute__((visibility("default"))) TS_ErroringMessageHandler_new()
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ErroringMessageHandler_as_MessageSendEventsProvider(uint32_t this_arg) {
-       LDKErroringMessageHandler this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKMessageSendEventsProvider* ret_ret = MALLOC(sizeof(LDKMessageSendEventsProvider), "LDKMessageSendEventsProvider");
-       *ret_ret = ErroringMessageHandler_as_MessageSendEventsProvider(&this_arg_conv);
-       return (uint64_t)ret_ret;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ErroringMessageHandler_as_ChannelMessageHandler(uint32_t this_arg) {
-       LDKErroringMessageHandler this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKChannelMessageHandler* ret_ret = MALLOC(sizeof(LDKChannelMessageHandler), "LDKChannelMessageHandler");
-       *ret_ret = ErroringMessageHandler_as_ChannelMessageHandler(&this_arg_conv);
-       return (uint64_t)ret_ret;
-}
-
-void  __attribute__((visibility("default"))) TS_MessageHandler_free(uint32_t this_obj) {
-       LDKMessageHandler this_obj_conv;
+void  __attribute__((visibility("default"))) TS_ChannelUpdate_free(uint32_t this_obj) {
+       LDKChannelUpdate this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       MessageHandler_free(this_obj_conv);
+       ChannelUpdate_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageHandler_get_chan_handler(uint32_t this_ptr) {
-       LDKMessageHandler 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       // WARNING: This object doesn't live past this scope, needs clone!
-       uint64_t ret_ret = ((uint64_t)MessageHandler_get_chan_handler(&this_ptr_conv)) | 1;
-       return ret_ret;
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, ChannelUpdate_get_signature(&this_ptr_conv).compact_form, 64);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_MessageHandler_set_chan_handler(uint32_t this_ptr, uint32_t val) {
-       LDKMessageHandler this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelUpdate_set_signature(uint32_t this_ptr, int8_tArray val) {
+       LDKChannelUpdate this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKChannelMessageHandler val_conv = *(LDKChannelMessageHandler*)(val_ptr);
-       MessageHandler_set_chan_handler(&this_ptr_conv, val_conv);
+       LDKSignature val_ref;
+       CHECK(val->arr_len == 64);
+       memcpy(val_ref.compact_form, val->elems, 64);
+       ChannelUpdate_set_signature(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageHandler_get_route_handler(uint32_t this_ptr) {
-       LDKMessageHandler this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelUpdate_get_contents(uint32_t this_ptr) {
+       LDKChannelUpdate this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       // WARNING: This object doesn't live past this scope, needs clone!
-       uint64_t ret_ret = ((uint64_t)MessageHandler_get_route_handler(&this_ptr_conv)) | 1;
-       return ret_ret;
+       LDKUnsignedChannelUpdate ret_var = ChannelUpdate_get_contents(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_MessageHandler_set_route_handler(uint32_t this_ptr, uint32_t val) {
-       LDKMessageHandler this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelUpdate_set_contents(uint32_t this_ptr, uint32_t val) {
+       LDKChannelUpdate this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKRoutingMessageHandler val_conv = *(LDKRoutingMessageHandler*)(val_ptr);
-       MessageHandler_set_route_handler(&this_ptr_conv, val_conv);
+       LDKUnsignedChannelUpdate val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = UnsignedChannelUpdate_clone(&val_conv);
+       ChannelUpdate_set_contents(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MessageHandler_new(uint32_t chan_handler_arg, uint32_t route_handler_arg) {
-       void* chan_handler_arg_ptr = (void*)(((uint64_t)chan_handler_arg) & ~1);
-       CHECK_ACCESS(chan_handler_arg_ptr);
-       LDKChannelMessageHandler chan_handler_arg_conv = *(LDKChannelMessageHandler*)(chan_handler_arg_ptr);
-       void* route_handler_arg_ptr = (void*)(((uint64_t)route_handler_arg) & ~1);
-       CHECK_ACCESS(route_handler_arg_ptr);
-       LDKRoutingMessageHandler route_handler_arg_conv = *(LDKRoutingMessageHandler*)(route_handler_arg_ptr);
-       LDKMessageHandler ret_var = MessageHandler_new(chan_handler_arg_conv, route_handler_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelUpdate_new(int8_tArray signature_arg, uint32_t contents_arg) {
+       LDKSignature signature_arg_ref;
+       CHECK(signature_arg->arr_len == 64);
+       memcpy(signature_arg_ref.compact_form, signature_arg->elems, 64);
+       LDKUnsignedChannelUpdate contents_arg_conv;
+       contents_arg_conv.inner = (void*)(contents_arg & (~1));
+       contents_arg_conv.is_owned = (contents_arg & 1) || (contents_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(contents_arg_conv);
+       contents_arg_conv = UnsignedChannelUpdate_clone(&contents_arg_conv);
+       LDKChannelUpdate ret_var = ChannelUpdate_new(signature_arg_ref, contents_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -28660,64 +26105,112 @@ uint32_t  __attribute__((visibility("default"))) TS_MessageHandler_new(uint32_t
        return ret_ref;
 }
 
-static inline uint64_t SocketDescriptor_clone_ptr(LDKSocketDescriptor *NONNULL_PTR arg) {
-       LDKSocketDescriptor* ret_ret = MALLOC(sizeof(LDKSocketDescriptor), "LDKSocketDescriptor");
-       *ret_ret = SocketDescriptor_clone(arg);
-       return (uint64_t)ret_ret;
+static inline uint64_t ChannelUpdate_clone_ptr(LDKChannelUpdate *NONNULL_PTR arg) {
+       LDKChannelUpdate ret_var = ChannelUpdate_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-int64_t  __attribute__((visibility("default"))) TS_SocketDescriptor_clone_ptr(uint32_t arg) {
-       void* arg_ptr = (void*)(((uint64_t)arg) & ~1);
-       if (!(arg & 1)) { CHECK_ACCESS(arg_ptr); }
-       LDKSocketDescriptor* arg_conv = (LDKSocketDescriptor*)arg_ptr;
-       int64_t ret_val = SocketDescriptor_clone_ptr(arg_conv);
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_ChannelUpdate_clone_ptr(uint32_t arg) {
+       LDKChannelUpdate arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ChannelUpdate_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SocketDescriptor_clone(uint32_t orig) {
-       void* orig_ptr = (void*)(((uint64_t)orig) & ~1);
-       if (!(orig & 1)) { CHECK_ACCESS(orig_ptr); }
-       LDKSocketDescriptor* orig_conv = (LDKSocketDescriptor*)orig_ptr;
-       LDKSocketDescriptor* ret_ret = MALLOC(sizeof(LDKSocketDescriptor), "LDKSocketDescriptor");
-       *ret_ret = SocketDescriptor_clone(orig_conv);
-       return (uint64_t)ret_ret;
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKChannelUpdate ret_var = ChannelUpdate_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+void  __attribute__((visibility("default"))) TS_QueryChannelRange_free(uint32_t this_obj) {
+       LDKQueryChannelRange this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       QueryChannelRange_free(this_obj_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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *QueryChannelRange_get_chain_hash(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_SocketDescriptor_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKSocketDescriptor this_ptr_conv = *(LDKSocketDescriptor*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       SocketDescriptor_free(this_ptr_conv);
+void  __attribute__((visibility("default"))) TS_QueryChannelRange_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
+       LDKQueryChannelRange this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       QueryChannelRange_set_chain_hash(&this_ptr_conv, val_ref);
 }
 
-void  __attribute__((visibility("default"))) TS_PeerHandleError_free(uint32_t this_obj) {
-       LDKPeerHandleError this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       PeerHandleError_free(this_obj_conv);
+int32_t  __attribute__((visibility("default"))) TS_QueryChannelRange_get_first_blocknum(uint32_t this_ptr) {
+       LDKQueryChannelRange this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = QueryChannelRange_get_first_blocknum(&this_ptr_conv);
+       return ret_val;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_PeerHandleError_get_no_connection_possible(uint32_t this_ptr) {
-       LDKPeerHandleError this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_QueryChannelRange_set_first_blocknum(uint32_t this_ptr, int32_t val) {
+       LDKQueryChannelRange this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = PeerHandleError_get_no_connection_possible(&this_ptr_conv);
+       QueryChannelRange_set_first_blocknum(&this_ptr_conv, val);
+}
+
+int32_t  __attribute__((visibility("default"))) TS_QueryChannelRange_get_number_of_blocks(uint32_t this_ptr) {
+       LDKQueryChannelRange this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = QueryChannelRange_get_number_of_blocks(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_PeerHandleError_set_no_connection_possible(uint32_t this_ptr, jboolean val) {
-       LDKPeerHandleError this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_QueryChannelRange_set_number_of_blocks(uint32_t this_ptr, int32_t val) {
+       LDKQueryChannelRange this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       PeerHandleError_set_no_connection_possible(&this_ptr_conv, val);
+       QueryChannelRange_set_number_of_blocks(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PeerHandleError_new(jboolean no_connection_possible_arg) {
-       LDKPeerHandleError ret_var = PeerHandleError_new(no_connection_possible_arg);
+uint32_t  __attribute__((visibility("default"))) TS_QueryChannelRange_new(int8_tArray chain_hash_arg, int32_t first_blocknum_arg, int32_t number_of_blocks_arg) {
+       LDKThirtyTwoBytes chain_hash_arg_ref;
+       CHECK(chain_hash_arg->arr_len == 32);
+       memcpy(chain_hash_arg_ref.data, chain_hash_arg->elems, 32);
+       LDKQueryChannelRange ret_var = QueryChannelRange_new(chain_hash_arg_ref, first_blocknum_arg, number_of_blocks_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -28729,8 +26222,8 @@ uint32_t  __attribute__((visibility("default"))) TS_PeerHandleError_new(jboolean
        return ret_ref;
 }
 
-static inline uint64_t PeerHandleError_clone_ptr(LDKPeerHandleError *NONNULL_PTR arg) {
-       LDKPeerHandleError ret_var = PeerHandleError_clone(arg);
+static inline uint64_t QueryChannelRange_clone_ptr(LDKQueryChannelRange *NONNULL_PTR arg) {
+       LDKQueryChannelRange ret_var = QueryChannelRange_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -28741,21 +26234,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_PeerHandleError_clone_ptr(uint32_t arg) {
-       LDKPeerHandleError arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_QueryChannelRange_clone_ptr(uint32_t arg) {
+       LDKQueryChannelRange arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = PeerHandleError_clone_ptr(&arg_conv);
+       int64_t ret_val = QueryChannelRange_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PeerHandleError_clone(uint32_t orig) {
-       LDKPeerHandleError 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKPeerHandleError ret_var = PeerHandleError_clone(&orig_conv);
+       LDKQueryChannelRange ret_var = QueryChannelRange_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -28767,390 +26260,334 @@ uint32_t  __attribute__((visibility("default"))) TS_PeerHandleError_clone(uint32
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_PeerManager_free(uint32_t this_obj) {
-       LDKPeerManager this_obj_conv;
+void  __attribute__((visibility("default"))) TS_ReplyChannelRange_free(uint32_t this_obj) {
+       LDKReplyChannelRange this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       PeerManager_free(this_obj_conv);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_PeerManager_new(uint32_t message_handler, int8_tArray our_node_secret, int8_tArray ephemeral_random_data, uint32_t logger, uint32_t custom_message_handler) {
-       LDKMessageHandler message_handler_conv;
-       message_handler_conv.inner = (void*)(message_handler & (~1));
-       message_handler_conv.is_owned = (message_handler & 1) || (message_handler == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(message_handler_conv);
-       // Warning: we need a move here but no clone is available for LDKMessageHandler
-       LDKSecretKey our_node_secret_ref;
-       CHECK(*((uint32_t*)our_node_secret) == 32);
-       memcpy(our_node_secret_ref.bytes, (uint8_t*)(our_node_secret + 4), 32);
-       unsigned char ephemeral_random_data_arr[32];
-       CHECK(*((uint32_t*)ephemeral_random_data) == 32);
-       memcpy(ephemeral_random_data_arr, (uint8_t*)(ephemeral_random_data + 4), 32);
-       unsigned char (*ephemeral_random_data_ref)[32] = &ephemeral_random_data_arr;
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       CHECK_ACCESS(logger_ptr);
-       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
-       void* custom_message_handler_ptr = (void*)(((uint64_t)custom_message_handler) & ~1);
-       CHECK_ACCESS(custom_message_handler_ptr);
-       LDKCustomMessageHandler custom_message_handler_conv = *(LDKCustomMessageHandler*)(custom_message_handler_ptr);
-       LDKPeerManager ret_var = PeerManager_new(message_handler_conv, our_node_secret_ref, ephemeral_random_data_ref, logger_conv, custom_message_handler_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       ReplyChannelRange_free(this_obj_conv);
 }
 
-ptrArray  __attribute__((visibility("default"))) TS_PeerManager_get_peer_node_ids(uint32_t this_arg) {
-       LDKPeerManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCVec_PublicKeyZ ret_var = PeerManager_get_peer_node_ids(&this_arg_conv);
-       ptrArray ret_arr = NULL;
-       ret_arr = init_arr(ret_var.datalen, sizeof(uint32_t), "Native ptrArray Bytes");
-       int8_tArray *ret_arr_ptr = (int8_tArray*)(ret_arr + 4);
-       for (size_t m = 0; m < ret_var.datalen; m++) {
-               int8_tArray ret_conv_12_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-               memcpy((uint8_t*)(ret_conv_12_arr + 4), ret_var.data[m].compressed_form, 33);
-               ret_arr_ptr[m] = ret_conv_12_arr;
-       }
-       
-       FREE(ret_var.data);
+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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *ReplyChannelRange_get_chain_hash(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PeerManager_new_outbound_connection(uint32_t this_arg, int8_tArray their_node_id, uint32_t descriptor) {
-       LDKPeerManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       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);
-       void* descriptor_ptr = (void*)(((uint64_t)descriptor) & ~1);
-       CHECK_ACCESS(descriptor_ptr);
-       LDKSocketDescriptor descriptor_conv = *(LDKSocketDescriptor*)(descriptor_ptr);
-       LDKCResult_CVec_u8ZPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ), "LDKCResult_CVec_u8ZPeerHandleErrorZ");
-       *ret_conv = PeerManager_new_outbound_connection(&this_arg_conv, their_node_id_ref, descriptor_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_PeerManager_new_inbound_connection(uint32_t this_arg, uint32_t descriptor) {
-       LDKPeerManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       void* descriptor_ptr = (void*)(((uint64_t)descriptor) & ~1);
-       CHECK_ACCESS(descriptor_ptr);
-       LDKSocketDescriptor descriptor_conv = *(LDKSocketDescriptor*)(descriptor_ptr);
-       LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ");
-       *ret_conv = PeerManager_new_inbound_connection(&this_arg_conv, descriptor_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_PeerManager_write_buffer_space_avail(uint32_t this_arg, uint32_t descriptor) {
-       LDKPeerManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       void* descriptor_ptr = (void*)(((uint64_t)descriptor) & ~1);
-       if (!(descriptor & 1)) { CHECK_ACCESS(descriptor_ptr); }
-       LDKSocketDescriptor* descriptor_conv = (LDKSocketDescriptor*)descriptor_ptr;
-       LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ");
-       *ret_conv = PeerManager_write_buffer_space_avail(&this_arg_conv, descriptor_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_PeerManager_read_event(uint32_t this_arg, uint32_t peer_descriptor, int8_tArray data) {
-       LDKPeerManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       void* peer_descriptor_ptr = (void*)(((uint64_t)peer_descriptor) & ~1);
-       if (!(peer_descriptor & 1)) { CHECK_ACCESS(peer_descriptor_ptr); }
-       LDKSocketDescriptor* peer_descriptor_conv = (LDKSocketDescriptor*)peer_descriptor_ptr;
-       LDKu8slice data_ref;
-       data_ref.datalen = *((uint32_t*)data);
-       data_ref.data = (int8_t*)(data + 4);
-       LDKCResult_boolPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolPeerHandleErrorZ), "LDKCResult_boolPeerHandleErrorZ");
-       *ret_conv = PeerManager_read_event(&this_arg_conv, peer_descriptor_conv, data_ref);
-       return (uint64_t)ret_conv;
-}
-
-void  __attribute__((visibility("default"))) TS_PeerManager_process_events(uint32_t this_arg) {
-       LDKPeerManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       PeerManager_process_events(&this_arg_conv);
-}
-
-void  __attribute__((visibility("default"))) TS_PeerManager_socket_disconnected(uint32_t this_arg, uint32_t descriptor) {
-       LDKPeerManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       void* descriptor_ptr = (void*)(((uint64_t)descriptor) & ~1);
-       if (!(descriptor & 1)) { CHECK_ACCESS(descriptor_ptr); }
-       LDKSocketDescriptor* descriptor_conv = (LDKSocketDescriptor*)descriptor_ptr;
-       PeerManager_socket_disconnected(&this_arg_conv, descriptor_conv);
+void  __attribute__((visibility("default"))) TS_ReplyChannelRange_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
+       LDKReplyChannelRange this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       ReplyChannelRange_set_chain_hash(&this_ptr_conv, val_ref);
 }
 
-void  __attribute__((visibility("default"))) TS_PeerManager_disconnect_by_node_id(uint32_t this_arg, int8_tArray node_id, jboolean no_connection_possible) {
-       LDKPeerManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       PeerManager_disconnect_by_node_id(&this_arg_conv, node_id_ref, no_connection_possible);
+int32_t  __attribute__((visibility("default"))) TS_ReplyChannelRange_get_first_blocknum(uint32_t this_ptr) {
+       LDKReplyChannelRange this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = ReplyChannelRange_get_first_blocknum(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_PeerManager_disconnect_all_peers(uint32_t this_arg) {
-       LDKPeerManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       PeerManager_disconnect_all_peers(&this_arg_conv);
+void  __attribute__((visibility("default"))) TS_ReplyChannelRange_set_first_blocknum(uint32_t this_ptr, int32_t val) {
+       LDKReplyChannelRange this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ReplyChannelRange_set_first_blocknum(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_PeerManager_timer_tick_occurred(uint32_t this_arg) {
-       LDKPeerManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       PeerManager_timer_tick_occurred(&this_arg_conv);
+int32_t  __attribute__((visibility("default"))) TS_ReplyChannelRange_get_number_of_blocks(uint32_t this_ptr) {
+       LDKReplyChannelRange this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = ReplyChannelRange_get_number_of_blocks(&this_ptr_conv);
+       return ret_val;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_htlc_success_tx_weight(jboolean opt_anchors) {
-       int64_t ret_val = htlc_success_tx_weight(opt_anchors);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_ReplyChannelRange_set_number_of_blocks(uint32_t this_ptr, int32_t val) {
+       LDKReplyChannelRange this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ReplyChannelRange_set_number_of_blocks(&this_ptr_conv, val);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_htlc_timeout_tx_weight(jboolean opt_anchors) {
-       int64_t ret_val = htlc_timeout_tx_weight(opt_anchors);
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       jboolean ret_val = ReplyChannelRange_get_sync_complete(&this_ptr_conv);
        return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_build_commitment_secret(int8_tArray commitment_seed, int64_t idx) {
-       unsigned char commitment_seed_arr[32];
-       CHECK(*((uint32_t*)commitment_seed) == 32);
-       memcpy(commitment_seed_arr, (uint8_t*)(commitment_seed + 4), 32);
-       unsigned char (*commitment_seed_ref)[32] = &commitment_seed_arr;
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), build_commitment_secret(commitment_seed_ref, idx).data, 32);
-       return ret_arr;
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ReplyChannelRange_set_sync_complete(&this_ptr_conv, val);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_build_closing_transaction(int64_t to_holder_value_sat, int64_t to_counterparty_value_sat, int8_tArray to_holder_script, int8_tArray to_counterparty_script, uint32_t funding_outpoint) {
-       LDKCVec_u8Z to_holder_script_ref;
-       to_holder_script_ref.datalen = *((uint32_t*)to_holder_script);
-       to_holder_script_ref.data = MALLOC(to_holder_script_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(to_holder_script_ref.data, (uint8_t*)(to_holder_script + 4), to_holder_script_ref.datalen);
-       LDKCVec_u8Z to_counterparty_script_ref;
-       to_counterparty_script_ref.datalen = *((uint32_t*)to_counterparty_script);
-       to_counterparty_script_ref.data = MALLOC(to_counterparty_script_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(to_counterparty_script_ref.data, (uint8_t*)(to_counterparty_script + 4), to_counterparty_script_ref.datalen);
-       LDKOutPoint funding_outpoint_conv;
-       funding_outpoint_conv.inner = (void*)(funding_outpoint & (~1));
-       funding_outpoint_conv.is_owned = (funding_outpoint & 1) || (funding_outpoint == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_outpoint_conv);
-       funding_outpoint_conv = OutPoint_clone(&funding_outpoint_conv);
-       LDKTransaction ret_var = build_closing_transaction(to_holder_value_sat, to_counterparty_value_sat, to_holder_script_ref, to_counterparty_script_ref, funding_outpoint_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       Transaction_free(ret_var);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_ReplyChannelRange_set_short_channel_ids(uint32_t this_ptr, int64_tArray val) {
+       LDKReplyChannelRange this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCVec_u64Z val_constr;
+       val_constr.datalen = val->arr_len;
+       if (val_constr.datalen > 0)
+               val_constr.data = MALLOC(val_constr.datalen * sizeof(int64_t), "LDKCVec_u64Z Elements");
+       else
+               val_constr.data = NULL;
+       int64_t* val_vals = val->elems;
+       for (size_t i = 0; i < val_constr.datalen; i++) {
+               int64_t val_conv_8 = val_vals[i];
+               val_constr.data[i] = val_conv_8;
+       }
+       ReplyChannelRange_set_short_channel_ids(&this_ptr_conv, val_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_derive_private_key(int8_tArray per_commitment_point, int8_tArray base_secret) {
-       LDKPublicKey per_commitment_point_ref;
-       CHECK(*((uint32_t*)per_commitment_point) == 33);
-       memcpy(per_commitment_point_ref.compressed_form, (uint8_t*)(per_commitment_point + 4), 33);
-       unsigned char base_secret_arr[32];
-       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_SecretKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SecretKeyErrorZ), "LDKCResult_SecretKeyErrorZ");
-       *ret_conv = derive_private_key(per_commitment_point_ref, base_secret_ref);
-       return (uint64_t)ret_conv;
+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(chain_hash_arg->arr_len == 32);
+       memcpy(chain_hash_arg_ref.data, chain_hash_arg->elems, 32);
+       LDKCVec_u64Z short_channel_ids_arg_constr;
+       short_channel_ids_arg_constr.datalen = short_channel_ids_arg->arr_len;
+       if (short_channel_ids_arg_constr.datalen > 0)
+               short_channel_ids_arg_constr.data = MALLOC(short_channel_ids_arg_constr.datalen * sizeof(int64_t), "LDKCVec_u64Z Elements");
+       else
+               short_channel_ids_arg_constr.data = NULL;
+       int64_t* short_channel_ids_arg_vals = short_channel_ids_arg->elems;
+       for (size_t i = 0; i < short_channel_ids_arg_constr.datalen; i++) {
+               int64_t short_channel_ids_arg_conv_8 = short_channel_ids_arg_vals[i];
+               short_channel_ids_arg_constr.data[i] = short_channel_ids_arg_conv_8;
+       }
+       LDKReplyChannelRange ret_var = ReplyChannelRange_new(chain_hash_arg_ref, first_blocknum_arg, number_of_blocks_arg, sync_complete_arg, short_channel_ids_arg_constr);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_derive_public_key(int8_tArray per_commitment_point, int8_tArray base_point) {
-       LDKPublicKey per_commitment_point_ref;
-       CHECK(*((uint32_t*)per_commitment_point) == 33);
-       memcpy(per_commitment_point_ref.compressed_form, (uint8_t*)(per_commitment_point + 4), 33);
-       LDKPublicKey base_point_ref;
-       CHECK(*((uint32_t*)base_point) == 33);
-       memcpy(base_point_ref.compressed_form, (uint8_t*)(base_point + 4), 33);
-       LDKCResult_PublicKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeyErrorZ), "LDKCResult_PublicKeyErrorZ");
-       *ret_conv = derive_public_key(per_commitment_point_ref, base_point_ref);
-       return (uint64_t)ret_conv;
+static inline uint64_t ReplyChannelRange_clone_ptr(LDKReplyChannelRange *NONNULL_PTR arg) {
+       LDKReplyChannelRange ret_var = ReplyChannelRange_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_derive_private_revocation_key(int8_tArray per_commitment_secret, int8_tArray countersignatory_revocation_base_secret) {
-       unsigned char per_commitment_secret_arr[32];
-       CHECK(*((uint32_t*)per_commitment_secret) == 32);
-       memcpy(per_commitment_secret_arr, (uint8_t*)(per_commitment_secret + 4), 32);
-       unsigned char (*per_commitment_secret_ref)[32] = &per_commitment_secret_arr;
-       unsigned char countersignatory_revocation_base_secret_arr[32];
-       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_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 (uint64_t)ret_conv;
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_ReplyChannelRange_clone_ptr(uint32_t arg) {
+       LDKReplyChannelRange arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ReplyChannelRange_clone_ptr(&arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_derive_public_revocation_key(int8_tArray per_commitment_point, int8_tArray countersignatory_revocation_base_point) {
-       LDKPublicKey per_commitment_point_ref;
-       CHECK(*((uint32_t*)per_commitment_point) == 33);
-       memcpy(per_commitment_point_ref.compressed_form, (uint8_t*)(per_commitment_point + 4), 33);
-       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_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 (uint64_t)ret_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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKReplyChannelRange ret_var = ReplyChannelRange_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_TxCreationKeys_free(uint32_t this_obj) {
-       LDKTxCreationKeys this_obj_conv;
+void  __attribute__((visibility("default"))) TS_QueryShortChannelIds_free(uint32_t this_obj) {
+       LDKQueryShortChannelIds this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       TxCreationKeys_free(this_obj_conv);
+       QueryShortChannelIds_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_TxCreationKeys_get_per_commitment_point(uint32_t this_ptr) {
-       LDKTxCreationKeys 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), TxCreationKeys_get_per_commitment_point(&this_ptr_conv).compressed_form, 33);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *QueryShortChannelIds_get_chain_hash(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_TxCreationKeys_set_per_commitment_point(uint32_t this_ptr, int8_tArray val) {
-       LDKTxCreationKeys this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_QueryShortChannelIds_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
+       LDKQueryShortChannelIds this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       TxCreationKeys_set_per_commitment_point(&this_ptr_conv, val_ref);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       QueryShortChannelIds_set_chain_hash(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_TxCreationKeys_get_revocation_key(uint32_t this_ptr) {
-       LDKTxCreationKeys this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_QueryShortChannelIds_set_short_channel_ids(uint32_t this_ptr, int64_tArray val) {
+       LDKQueryShortChannelIds this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), TxCreationKeys_get_revocation_key(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       LDKCVec_u64Z val_constr;
+       val_constr.datalen = val->arr_len;
+       if (val_constr.datalen > 0)
+               val_constr.data = MALLOC(val_constr.datalen * sizeof(int64_t), "LDKCVec_u64Z Elements");
+       else
+               val_constr.data = NULL;
+       int64_t* val_vals = val->elems;
+       for (size_t i = 0; i < val_constr.datalen; i++) {
+               int64_t val_conv_8 = val_vals[i];
+               val_constr.data[i] = val_conv_8;
+       }
+       QueryShortChannelIds_set_short_channel_ids(&this_ptr_conv, val_constr);
 }
 
-void  __attribute__((visibility("default"))) TS_TxCreationKeys_set_revocation_key(uint32_t this_ptr, int8_tArray val) {
-       LDKTxCreationKeys this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       TxCreationKeys_set_revocation_key(&this_ptr_conv, val_ref);
+uint32_t  __attribute__((visibility("default"))) TS_QueryShortChannelIds_new(int8_tArray chain_hash_arg, int64_tArray short_channel_ids_arg) {
+       LDKThirtyTwoBytes chain_hash_arg_ref;
+       CHECK(chain_hash_arg->arr_len == 32);
+       memcpy(chain_hash_arg_ref.data, chain_hash_arg->elems, 32);
+       LDKCVec_u64Z short_channel_ids_arg_constr;
+       short_channel_ids_arg_constr.datalen = short_channel_ids_arg->arr_len;
+       if (short_channel_ids_arg_constr.datalen > 0)
+               short_channel_ids_arg_constr.data = MALLOC(short_channel_ids_arg_constr.datalen * sizeof(int64_t), "LDKCVec_u64Z Elements");
+       else
+               short_channel_ids_arg_constr.data = NULL;
+       int64_t* short_channel_ids_arg_vals = short_channel_ids_arg->elems;
+       for (size_t i = 0; i < short_channel_ids_arg_constr.datalen; i++) {
+               int64_t short_channel_ids_arg_conv_8 = short_channel_ids_arg_vals[i];
+               short_channel_ids_arg_constr.data[i] = short_channel_ids_arg_conv_8;
+       }
+       LDKQueryShortChannelIds ret_var = QueryShortChannelIds_new(chain_hash_arg_ref, short_channel_ids_arg_constr);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_TxCreationKeys_get_broadcaster_htlc_key(uint32_t this_ptr) {
-       LDKTxCreationKeys this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), TxCreationKeys_get_broadcaster_htlc_key(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+static inline uint64_t QueryShortChannelIds_clone_ptr(LDKQueryShortChannelIds *NONNULL_PTR arg) {
+       LDKQueryShortChannelIds ret_var = QueryShortChannelIds_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_QueryShortChannelIds_clone_ptr(uint32_t arg) {
+       LDKQueryShortChannelIds arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = QueryShortChannelIds_clone_ptr(&arg_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_TxCreationKeys_set_broadcaster_htlc_key(uint32_t this_ptr, int8_tArray val) {
-       LDKTxCreationKeys this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       TxCreationKeys_set_broadcaster_htlc_key(&this_ptr_conv, val_ref);
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKQueryShortChannelIds ret_var = QueryShortChannelIds_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_TxCreationKeys_get_countersignatory_htlc_key(uint32_t this_ptr) {
-       LDKTxCreationKeys this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_free(uint32_t this_obj) {
+       LDKReplyShortChannelIdsEnd this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       ReplyShortChannelIdsEnd_free(this_obj_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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), TxCreationKeys_get_countersignatory_htlc_key(&this_ptr_conv).compressed_form, 33);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *ReplyShortChannelIdsEnd_get_chain_hash(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_TxCreationKeys_set_countersignatory_htlc_key(uint32_t this_ptr, int8_tArray val) {
-       LDKTxCreationKeys this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
+       LDKReplyShortChannelIdsEnd this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       TxCreationKeys_set_countersignatory_htlc_key(&this_ptr_conv, val_ref);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       ReplyShortChannelIdsEnd_set_chain_hash(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_TxCreationKeys_get_broadcaster_delayed_payment_key(uint32_t this_ptr) {
-       LDKTxCreationKeys this_ptr_conv;
+jboolean  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_get_full_information(uint32_t this_ptr) {
+       LDKReplyShortChannelIdsEnd this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), TxCreationKeys_get_broadcaster_delayed_payment_key(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       jboolean ret_val = ReplyShortChannelIdsEnd_get_full_information(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_TxCreationKeys_set_broadcaster_delayed_payment_key(uint32_t this_ptr, int8_tArray val) {
-       LDKTxCreationKeys this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_set_full_information(uint32_t this_ptr, jboolean val) {
+       LDKReplyShortChannelIdsEnd this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       TxCreationKeys_set_broadcaster_delayed_payment_key(&this_ptr_conv, val_ref);
+       ReplyShortChannelIdsEnd_set_full_information(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_TxCreationKeys_new(int8_tArray per_commitment_point_arg, int8_tArray revocation_key_arg, int8_tArray broadcaster_htlc_key_arg, int8_tArray countersignatory_htlc_key_arg, int8_tArray broadcaster_delayed_payment_key_arg) {
-       LDKPublicKey per_commitment_point_arg_ref;
-       CHECK(*((uint32_t*)per_commitment_point_arg) == 33);
-       memcpy(per_commitment_point_arg_ref.compressed_form, (uint8_t*)(per_commitment_point_arg + 4), 33);
-       LDKPublicKey revocation_key_arg_ref;
-       CHECK(*((uint32_t*)revocation_key_arg) == 33);
-       memcpy(revocation_key_arg_ref.compressed_form, (uint8_t*)(revocation_key_arg + 4), 33);
-       LDKPublicKey broadcaster_htlc_key_arg_ref;
-       CHECK(*((uint32_t*)broadcaster_htlc_key_arg) == 33);
-       memcpy(broadcaster_htlc_key_arg_ref.compressed_form, (uint8_t*)(broadcaster_htlc_key_arg + 4), 33);
-       LDKPublicKey countersignatory_htlc_key_arg_ref;
-       CHECK(*((uint32_t*)countersignatory_htlc_key_arg) == 33);
-       memcpy(countersignatory_htlc_key_arg_ref.compressed_form, (uint8_t*)(countersignatory_htlc_key_arg + 4), 33);
-       LDKPublicKey broadcaster_delayed_payment_key_arg_ref;
-       CHECK(*((uint32_t*)broadcaster_delayed_payment_key_arg) == 33);
-       memcpy(broadcaster_delayed_payment_key_arg_ref.compressed_form, (uint8_t*)(broadcaster_delayed_payment_key_arg + 4), 33);
-       LDKTxCreationKeys ret_var = TxCreationKeys_new(per_commitment_point_arg_ref, revocation_key_arg_ref, broadcaster_htlc_key_arg_ref, countersignatory_htlc_key_arg_ref, broadcaster_delayed_payment_key_arg_ref);
+uint32_t  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_new(int8_tArray chain_hash_arg, jboolean full_information_arg) {
+       LDKThirtyTwoBytes chain_hash_arg_ref;
+       CHECK(chain_hash_arg->arr_len == 32);
+       memcpy(chain_hash_arg_ref.data, chain_hash_arg->elems, 32);
+       LDKReplyShortChannelIdsEnd ret_var = ReplyShortChannelIdsEnd_new(chain_hash_arg_ref, full_information_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -29162,8 +26599,8 @@ uint32_t  __attribute__((visibility("default"))) TS_TxCreationKeys_new(int8_tArr
        return ret_ref;
 }
 
-static inline uint64_t TxCreationKeys_clone_ptr(LDKTxCreationKeys *NONNULL_PTR arg) {
-       LDKTxCreationKeys ret_var = TxCreationKeys_clone(arg);
+static inline uint64_t ReplyShortChannelIdsEnd_clone_ptr(LDKReplyShortChannelIdsEnd *NONNULL_PTR arg) {
+       LDKReplyShortChannelIdsEnd ret_var = ReplyShortChannelIdsEnd_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -29174,21 +26611,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_TxCreationKeys_clone_ptr(uint32_t arg) {
-       LDKTxCreationKeys arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_clone_ptr(uint32_t arg) {
+       LDKReplyShortChannelIdsEnd arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = TxCreationKeys_clone_ptr(&arg_conv);
+       int64_t ret_val = ReplyShortChannelIdsEnd_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_TxCreationKeys_clone(uint32_t orig) {
-       LDKTxCreationKeys 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKTxCreationKeys ret_var = TxCreationKeys_clone(&orig_conv);
+       LDKReplyShortChannelIdsEnd ret_var = ReplyShortChannelIdsEnd_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -29200,157 +26637,74 @@ uint32_t  __attribute__((visibility("default"))) TS_TxCreationKeys_clone(uint32_
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_TxCreationKeys_write(uint32_t obj) {
-       LDKTxCreationKeys obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = TxCreationKeys_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_TxCreationKeys_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_TxCreationKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysDecodeErrorZ), "LDKCResult_TxCreationKeysDecodeErrorZ");
-       *ret_conv = TxCreationKeys_read(ser_ref);
-       return (uint64_t)ret_conv;
-}
-
-void  __attribute__((visibility("default"))) TS_ChannelPublicKeys_free(uint32_t this_obj) {
-       LDKChannelPublicKeys this_obj_conv;
+void  __attribute__((visibility("default"))) TS_GossipTimestampFilter_free(uint32_t this_obj) {
+       LDKGossipTimestampFilter this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelPublicKeys_free(this_obj_conv);
-}
-
-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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ChannelPublicKeys_get_funding_pubkey(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
-}
-
-void  __attribute__((visibility("default"))) TS_ChannelPublicKeys_set_funding_pubkey(uint32_t this_ptr, int8_tArray val) {
-       LDKChannelPublicKeys this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       ChannelPublicKeys_set_funding_pubkey(&this_ptr_conv, val_ref);
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelPublicKeys_get_revocation_basepoint(uint32_t this_ptr) {
-       LDKChannelPublicKeys this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ChannelPublicKeys_get_revocation_basepoint(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
-}
-
-void  __attribute__((visibility("default"))) TS_ChannelPublicKeys_set_revocation_basepoint(uint32_t this_ptr, int8_tArray val) {
-       LDKChannelPublicKeys this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       ChannelPublicKeys_set_revocation_basepoint(&this_ptr_conv, val_ref);
+       GossipTimestampFilter_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelPublicKeys_get_payment_point(uint32_t this_ptr) {
-       LDKChannelPublicKeys 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ChannelPublicKeys_get_payment_point(&this_ptr_conv).compressed_form, 33);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *GossipTimestampFilter_get_chain_hash(&this_ptr_conv), 32);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelPublicKeys_set_payment_point(uint32_t this_ptr, int8_tArray val) {
-       LDKChannelPublicKeys this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_GossipTimestampFilter_set_chain_hash(uint32_t this_ptr, int8_tArray val) {
+       LDKGossipTimestampFilter this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       ChannelPublicKeys_set_payment_point(&this_ptr_conv, val_ref);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       GossipTimestampFilter_set_chain_hash(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelPublicKeys_get_delayed_payment_basepoint(uint32_t this_ptr) {
-       LDKChannelPublicKeys this_ptr_conv;
+int32_t  __attribute__((visibility("default"))) TS_GossipTimestampFilter_get_first_timestamp(uint32_t this_ptr) {
+       LDKGossipTimestampFilter this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ChannelPublicKeys_get_delayed_payment_basepoint(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       int32_t ret_val = GossipTimestampFilter_get_first_timestamp(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelPublicKeys_set_delayed_payment_basepoint(uint32_t this_ptr, int8_tArray val) {
-       LDKChannelPublicKeys this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_GossipTimestampFilter_set_first_timestamp(uint32_t this_ptr, int32_t val) {
+       LDKGossipTimestampFilter this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       ChannelPublicKeys_set_delayed_payment_basepoint(&this_ptr_conv, val_ref);
+       GossipTimestampFilter_set_first_timestamp(&this_ptr_conv, val);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelPublicKeys_get_htlc_basepoint(uint32_t this_ptr) {
-       LDKChannelPublicKeys this_ptr_conv;
+int32_t  __attribute__((visibility("default"))) TS_GossipTimestampFilter_get_timestamp_range(uint32_t this_ptr) {
+       LDKGossipTimestampFilter this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ChannelPublicKeys_get_htlc_basepoint(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       int32_t ret_val = GossipTimestampFilter_get_timestamp_range(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelPublicKeys_set_htlc_basepoint(uint32_t this_ptr, int8_tArray val) {
-       LDKChannelPublicKeys this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_GossipTimestampFilter_set_timestamp_range(uint32_t this_ptr, int32_t val) {
+       LDKGossipTimestampFilter this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       ChannelPublicKeys_set_htlc_basepoint(&this_ptr_conv, val_ref);
+       GossipTimestampFilter_set_timestamp_range(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelPublicKeys_new(int8_tArray funding_pubkey_arg, int8_tArray revocation_basepoint_arg, int8_tArray payment_point_arg, int8_tArray delayed_payment_basepoint_arg, int8_tArray htlc_basepoint_arg) {
-       LDKPublicKey funding_pubkey_arg_ref;
-       CHECK(*((uint32_t*)funding_pubkey_arg) == 33);
-       memcpy(funding_pubkey_arg_ref.compressed_form, (uint8_t*)(funding_pubkey_arg + 4), 33);
-       LDKPublicKey revocation_basepoint_arg_ref;
-       CHECK(*((uint32_t*)revocation_basepoint_arg) == 33);
-       memcpy(revocation_basepoint_arg_ref.compressed_form, (uint8_t*)(revocation_basepoint_arg + 4), 33);
-       LDKPublicKey payment_point_arg_ref;
-       CHECK(*((uint32_t*)payment_point_arg) == 33);
-       memcpy(payment_point_arg_ref.compressed_form, (uint8_t*)(payment_point_arg + 4), 33);
-       LDKPublicKey delayed_payment_basepoint_arg_ref;
-       CHECK(*((uint32_t*)delayed_payment_basepoint_arg) == 33);
-       memcpy(delayed_payment_basepoint_arg_ref.compressed_form, (uint8_t*)(delayed_payment_basepoint_arg + 4), 33);
-       LDKPublicKey htlc_basepoint_arg_ref;
-       CHECK(*((uint32_t*)htlc_basepoint_arg) == 33);
-       memcpy(htlc_basepoint_arg_ref.compressed_form, (uint8_t*)(htlc_basepoint_arg + 4), 33);
-       LDKChannelPublicKeys ret_var = ChannelPublicKeys_new(funding_pubkey_arg_ref, revocation_basepoint_arg_ref, payment_point_arg_ref, delayed_payment_basepoint_arg_ref, htlc_basepoint_arg_ref);
+uint32_t  __attribute__((visibility("default"))) TS_GossipTimestampFilter_new(int8_tArray chain_hash_arg, int32_t first_timestamp_arg, int32_t timestamp_range_arg) {
+       LDKThirtyTwoBytes chain_hash_arg_ref;
+       CHECK(chain_hash_arg->arr_len == 32);
+       memcpy(chain_hash_arg_ref.data, chain_hash_arg->elems, 32);
+       LDKGossipTimestampFilter ret_var = GossipTimestampFilter_new(chain_hash_arg_ref, first_timestamp_arg, timestamp_range_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -29362,8 +26716,8 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelPublicKeys_new(int8_t
        return ret_ref;
 }
 
-static inline uint64_t ChannelPublicKeys_clone_ptr(LDKChannelPublicKeys *NONNULL_PTR arg) {
-       LDKChannelPublicKeys ret_var = ChannelPublicKeys_clone(arg);
+static inline uint64_t GossipTimestampFilter_clone_ptr(LDKGossipTimestampFilter *NONNULL_PTR arg) {
+       LDKGossipTimestampFilter ret_var = GossipTimestampFilter_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -29374,21 +26728,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_ChannelPublicKeys_clone_ptr(uint32_t arg) {
-       LDKChannelPublicKeys arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_GossipTimestampFilter_clone_ptr(uint32_t arg) {
+       LDKGossipTimestampFilter arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelPublicKeys_clone_ptr(&arg_conv);
+       int64_t ret_val = GossipTimestampFilter_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelPublicKeys_clone(uint32_t orig) {
-       LDKChannelPublicKeys orig_conv;
+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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelPublicKeys ret_var = ChannelPublicKeys_clone(&orig_conv);
+       LDKGossipTimestampFilter ret_var = GossipTimestampFilter_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -29400,191 +26754,139 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelPublicKeys_clone(uint
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelPublicKeys_write(uint32_t obj) {
-       LDKChannelPublicKeys obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ChannelPublicKeys_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ChannelPublicKeys_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ChannelPublicKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ), "LDKCResult_ChannelPublicKeysDecodeErrorZ");
-       *ret_conv = ChannelPublicKeys_read(ser_ref);
-       return (uint64_t)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) {
-       LDKPublicKey per_commitment_point_ref;
-       CHECK(*((uint32_t*)per_commitment_point) == 33);
-       memcpy(per_commitment_point_ref.compressed_form, (uint8_t*)(per_commitment_point + 4), 33);
-       LDKPublicKey broadcaster_delayed_payment_base_ref;
-       CHECK(*((uint32_t*)broadcaster_delayed_payment_base) == 33);
-       memcpy(broadcaster_delayed_payment_base_ref.compressed_form, (uint8_t*)(broadcaster_delayed_payment_base + 4), 33);
-       LDKPublicKey broadcaster_htlc_base_ref;
-       CHECK(*((uint32_t*)broadcaster_htlc_base) == 33);
-       memcpy(broadcaster_htlc_base_ref.compressed_form, (uint8_t*)(broadcaster_htlc_base + 4), 33);
-       LDKPublicKey countersignatory_revocation_base_ref;
-       CHECK(*((uint32_t*)countersignatory_revocation_base) == 33);
-       memcpy(countersignatory_revocation_base_ref.compressed_form, (uint8_t*)(countersignatory_revocation_base + 4), 33);
-       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_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 (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_ErrorAction_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKErrorAction this_ptr_conv = *(LDKErrorAction*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       ErrorAction_free(this_ptr_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_TxCreationKeys_from_channel_static_keys(int8_tArray per_commitment_point, uint32_t broadcaster_keys, uint32_t countersignatory_keys) {
-       LDKPublicKey per_commitment_point_ref;
-       CHECK(*((uint32_t*)per_commitment_point) == 33);
-       memcpy(per_commitment_point_ref.compressed_form, (uint8_t*)(per_commitment_point + 4), 33);
-       LDKChannelPublicKeys broadcaster_keys_conv;
-       broadcaster_keys_conv.inner = (void*)(broadcaster_keys & (~1));
-       broadcaster_keys_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(broadcaster_keys_conv);
-       LDKChannelPublicKeys countersignatory_keys_conv;
-       countersignatory_keys_conv.inner = (void*)(countersignatory_keys & (~1));
-       countersignatory_keys_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(countersignatory_keys_conv);
-       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 (uint64_t)ret_conv;
+static inline uint64_t ErrorAction_clone_ptr(LDKErrorAction *NONNULL_PTR arg) {
+       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
+       *ret_copy = ErrorAction_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
-
-int8_tArray  __attribute__((visibility("default"))) TS_get_revokeable_redeemscript(int8_tArray revocation_key, int16_t contest_delay, int8_tArray broadcaster_delayed_payment_key) {
-       LDKPublicKey revocation_key_ref;
-       CHECK(*((uint32_t*)revocation_key) == 33);
-       memcpy(revocation_key_ref.compressed_form, (uint8_t*)(revocation_key + 4), 33);
-       LDKPublicKey broadcaster_delayed_payment_key_ref;
-       CHECK(*((uint32_t*)broadcaster_delayed_payment_key) == 33);
-       memcpy(broadcaster_delayed_payment_key_ref.compressed_form, (uint8_t*)(broadcaster_delayed_payment_key + 4), 33);
-       LDKCVec_u8Z ret_var = get_revokeable_redeemscript(revocation_key_ref, contest_delay, broadcaster_delayed_payment_key_ref);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+int64_t  __attribute__((visibility("default"))) TS_ErrorAction_clone_ptr(uint32_t arg) {
+       LDKErrorAction* arg_conv = (LDKErrorAction*)arg;
+       int64_t ret_val = ErrorAction_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_free(uint32_t this_obj) {
-       LDKHTLCOutputInCommitment this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       HTLCOutputInCommitment_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ErrorAction_clone(uint32_t orig) {
+       LDKErrorAction* orig_conv = (LDKErrorAction*)orig;
+       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
+       *ret_copy = ErrorAction_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = HTLCOutputInCommitment_get_offered(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_ErrorAction_disconnect_peer(uint32_t msg) {
+       LDKErrorMessage msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = ErrorMessage_clone(&msg_conv);
+       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
+       *ret_copy = ErrorAction_disconnect_peer(msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_set_offered(uint32_t this_ptr, jboolean val) {
-       LDKHTLCOutputInCommitment this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       HTLCOutputInCommitment_set_offered(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_ErrorAction_ignore_error() {
+       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
+       *ret_copy = ErrorAction_ignore_error();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_get_amount_msat(uint32_t this_ptr) {
-       LDKHTLCOutputInCommitment this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = HTLCOutputInCommitment_get_amount_msat(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_ErrorAction_ignore_and_log(uint32_t a) {
+       LDKLevel a_conv = LDKLevel_from_js(a);
+       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
+       *ret_copy = ErrorAction_ignore_and_log(a_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_set_amount_msat(uint32_t this_ptr, int64_t val) {
-       LDKHTLCOutputInCommitment this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       HTLCOutputInCommitment_set_amount_msat(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_ErrorAction_ignore_duplicate_gossip() {
+       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
+       *ret_copy = ErrorAction_ignore_duplicate_gossip();
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-int32_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_get_cltv_expiry(uint32_t this_ptr) {
-       LDKHTLCOutputInCommitment this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = HTLCOutputInCommitment_get_cltv_expiry(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_ErrorAction_send_error_message(uint32_t msg) {
+       LDKErrorMessage msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = ErrorMessage_clone(&msg_conv);
+       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
+       *ret_copy = ErrorAction_send_error_message(msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_set_cltv_expiry(uint32_t this_ptr, int32_t val) {
-       LDKHTLCOutputInCommitment this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       HTLCOutputInCommitment_set_cltv_expiry(&this_ptr_conv, val);
+void  __attribute__((visibility("default"))) TS_LightningError_free(uint32_t this_obj) {
+       LDKLightningError this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       LightningError_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_get_payment_hash(uint32_t this_ptr) {
-       LDKHTLCOutputInCommitment this_ptr_conv;
+jstring  __attribute__((visibility("default"))) TS_LightningError_get_err(uint32_t this_ptr) {
+       LDKLightningError this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *HTLCOutputInCommitment_get_payment_hash(&this_ptr_conv), 32);
-       return ret_arr;
+       LDKStr ret_str = LightningError_get_err(&this_ptr_conv);
+       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
+       Str_free(ret_str);
+       return ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_set_payment_hash(uint32_t this_ptr, int8_tArray val) {
-       LDKHTLCOutputInCommitment this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_LightningError_set_err(uint32_t this_ptr, jstring val) {
+       LDKLightningError this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       HTLCOutputInCommitment_set_payment_hash(&this_ptr_conv, val_ref);
+       LDKStr val_conv = str_ref_to_owned_c(val);
+       LightningError_set_err(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_get_transaction_output_index(uint32_t this_ptr) {
-       LDKHTLCOutputInCommitment this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_LightningError_get_action(uint32_t this_ptr) {
+       LDKLightningError this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCOption_u32Z *ret_copy = MALLOC(sizeof(LDKCOption_u32Z), "LDKCOption_u32Z");
-       *ret_copy = HTLCOutputInCommitment_get_transaction_output_index(&this_ptr_conv);
+       LDKErrorAction *ret_copy = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
+       *ret_copy = LightningError_get_action(&this_ptr_conv);
        uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_set_transaction_output_index(uint32_t this_ptr, uint32_t val) {
-       LDKHTLCOutputInCommitment this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_LightningError_set_action(uint32_t this_ptr, uint32_t val) {
+       LDKLightningError this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
        void* val_ptr = (void*)(((uint64_t)val) & ~1);
        CHECK_ACCESS(val_ptr);
-       LDKCOption_u32Z val_conv = *(LDKCOption_u32Z*)(val_ptr);
-       val_conv = COption_u32Z_clone((LDKCOption_u32Z*)(((uint64_t)val) & ~1));
-       HTLCOutputInCommitment_set_transaction_output_index(&this_ptr_conv, val_conv);
+       LDKErrorAction val_conv = *(LDKErrorAction*)(val_ptr);
+       val_conv = ErrorAction_clone((LDKErrorAction*)(((uint64_t)val) & ~1));
+       LightningError_set_action(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_new(jboolean offered_arg, int64_t amount_msat_arg, int32_t cltv_expiry_arg, int8_tArray payment_hash_arg, uint32_t transaction_output_index_arg) {
-       LDKThirtyTwoBytes payment_hash_arg_ref;
-       CHECK(*((uint32_t*)payment_hash_arg) == 32);
-       memcpy(payment_hash_arg_ref.data, (uint8_t*)(payment_hash_arg + 4), 32);
-       void* transaction_output_index_arg_ptr = (void*)(((uint64_t)transaction_output_index_arg) & ~1);
-       CHECK_ACCESS(transaction_output_index_arg_ptr);
-       LDKCOption_u32Z transaction_output_index_arg_conv = *(LDKCOption_u32Z*)(transaction_output_index_arg_ptr);
-       transaction_output_index_arg_conv = COption_u32Z_clone((LDKCOption_u32Z*)(((uint64_t)transaction_output_index_arg) & ~1));
-       LDKHTLCOutputInCommitment ret_var = HTLCOutputInCommitment_new(offered_arg, amount_msat_arg, cltv_expiry_arg, payment_hash_arg_ref, transaction_output_index_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_LightningError_new(jstring err_arg, uint32_t action_arg) {
+       LDKStr err_arg_conv = str_ref_to_owned_c(err_arg);
+       void* action_arg_ptr = (void*)(((uint64_t)action_arg) & ~1);
+       CHECK_ACCESS(action_arg_ptr);
+       LDKErrorAction action_arg_conv = *(LDKErrorAction*)(action_arg_ptr);
+       action_arg_conv = ErrorAction_clone((LDKErrorAction*)(((uint64_t)action_arg) & ~1));
+       LDKLightningError ret_var = LightningError_new(err_arg_conv, action_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -29596,8 +26898,8 @@ uint32_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_new(j
        return ret_ref;
 }
 
-static inline uint64_t HTLCOutputInCommitment_clone_ptr(LDKHTLCOutputInCommitment *NONNULL_PTR arg) {
-       LDKHTLCOutputInCommitment ret_var = HTLCOutputInCommitment_clone(arg);
+static inline uint64_t LightningError_clone_ptr(LDKLightningError *NONNULL_PTR arg) {
+       LDKLightningError ret_var = LightningError_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -29608,21 +26910,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_clone_ptr(uint32_t arg) {
-       LDKHTLCOutputInCommitment arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_LightningError_clone_ptr(uint32_t arg) {
+       LDKLightningError arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = HTLCOutputInCommitment_clone_ptr(&arg_conv);
+       int64_t ret_val = LightningError_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_clone(uint32_t orig) {
-       LDKHTLCOutputInCommitment 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKHTLCOutputInCommitment ret_var = HTLCOutputInCommitment_clone(&orig_conv);
+       LDKLightningError ret_var = LightningError_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -29634,168 +26936,220 @@ uint32_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_clone
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_write(uint32_t obj) {
-       LDKHTLCOutputInCommitment obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = HTLCOutputInCommitment_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ), "LDKCResult_HTLCOutputInCommitmentDecodeErrorZ");
-       *ret_conv = HTLCOutputInCommitment_read(ser_ref);
-       return (uint64_t)ret_conv;
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_get_htlc_redeemscript(uint32_t htlc, jboolean opt_anchors, uint32_t keys) {
-       LDKHTLCOutputInCommitment htlc_conv;
-       htlc_conv.inner = (void*)(htlc & (~1));
-       htlc_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_conv);
-       LDKTxCreationKeys keys_conv;
-       keys_conv.inner = (void*)(keys & (~1));
-       keys_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(keys_conv);
-       LDKCVec_u8Z ret_var = get_htlc_redeemscript(&htlc_conv, opt_anchors, &keys_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_make_funding_redeemscript(int8_tArray broadcaster, int8_tArray countersignatory) {
-       LDKPublicKey broadcaster_ref;
-       CHECK(*((uint32_t*)broadcaster) == 33);
-       memcpy(broadcaster_ref.compressed_form, (uint8_t*)(broadcaster + 4), 33);
-       LDKPublicKey countersignatory_ref;
-       CHECK(*((uint32_t*)countersignatory) == 33);
-       memcpy(countersignatory_ref.compressed_form, (uint8_t*)(countersignatory + 4), 33);
-       LDKCVec_u8Z ret_var = make_funding_redeemscript(broadcaster_ref, countersignatory_ref);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_build_htlc_transaction(int8_tArray commitment_txid, int32_t feerate_per_kw, int16_t contest_delay, uint32_t htlc, jboolean opt_anchors, int8_tArray broadcaster_delayed_payment_key, int8_tArray revocation_key) {
-       unsigned char commitment_txid_arr[32];
-       CHECK(*((uint32_t*)commitment_txid) == 32);
-       memcpy(commitment_txid_arr, (uint8_t*)(commitment_txid + 4), 32);
-       unsigned char (*commitment_txid_ref)[32] = &commitment_txid_arr;
-       LDKHTLCOutputInCommitment htlc_conv;
-       htlc_conv.inner = (void*)(htlc & (~1));
-       htlc_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_conv);
-       LDKPublicKey broadcaster_delayed_payment_key_ref;
-       CHECK(*((uint32_t*)broadcaster_delayed_payment_key) == 33);
-       memcpy(broadcaster_delayed_payment_key_ref.compressed_form, (uint8_t*)(broadcaster_delayed_payment_key + 4), 33);
-       LDKPublicKey revocation_key_ref;
-       CHECK(*((uint32_t*)revocation_key) == 33);
-       memcpy(revocation_key_ref.compressed_form, (uint8_t*)(revocation_key + 4), 33);
-       LDKTransaction ret_var = build_htlc_transaction(commitment_txid_ref, feerate_per_kw, contest_delay, &htlc_conv, opt_anchors, broadcaster_delayed_payment_key_ref, revocation_key_ref);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       Transaction_free(ret_var);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_CommitmentUpdate_free(uint32_t this_obj) {
+       LDKCommitmentUpdate this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       CommitmentUpdate_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_get_anchor_redeemscript(int8_tArray funding_pubkey) {
-       LDKPublicKey funding_pubkey_ref;
-       CHECK(*((uint32_t*)funding_pubkey) == 33);
-       memcpy(funding_pubkey_ref.compressed_form, (uint8_t*)(funding_pubkey + 4), 33);
-       LDKCVec_u8Z ret_var = get_anchor_redeemscript(funding_pubkey_ref);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+uint32_tArray  __attribute__((visibility("default"))) TS_CommitmentUpdate_get_update_add_htlcs(uint32_t this_ptr) {
+       LDKCommitmentUpdate this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCVec_UpdateAddHTLCZ ret_var = CommitmentUpdate_get_update_add_htlcs(&this_ptr_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t p = 0; p < ret_var.datalen; p++) {
+               LDKUpdateAddHTLC ret_conv_15_var = ret_var.data[p];
+               uint64_t ret_conv_15_ref = 0;
+               CHECK((((uint64_t)ret_conv_15_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_conv_15_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_15_var);
+               ret_conv_15_ref = (uint64_t)ret_conv_15_var.inner;
+               if (ret_conv_15_var.is_owned) {
+                       ret_conv_15_ref |= 1;
+               }
+               ret_arr_ptr[p] = ret_conv_15_ref;
+       }
+       
+       FREE(ret_var.data);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_free(uint32_t this_obj) {
-       LDKChannelTransactionParameters this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelTransactionParameters_free(this_obj_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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCVec_UpdateAddHTLCZ val_constr;
+       val_constr.datalen = val->arr_len;
+       if (val_constr.datalen > 0)
+               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKUpdateAddHTLC), "LDKCVec_UpdateAddHTLCZ Elements");
+       else
+               val_constr.data = NULL;
+       uint32_t* val_vals = val->elems;
+       for (size_t p = 0; p < val_constr.datalen; p++) {
+               uint32_t val_conv_15 = val_vals[p];
+               LDKUpdateAddHTLC val_conv_15_conv;
+               val_conv_15_conv.inner = (void*)(val_conv_15 & (~1));
+               val_conv_15_conv.is_owned = (val_conv_15 & 1) || (val_conv_15 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv_15_conv);
+               val_conv_15_conv = UpdateAddHTLC_clone(&val_conv_15_conv);
+               val_constr.data[p] = val_conv_15_conv;
+       }
+       CommitmentUpdate_set_update_add_htlcs(&this_ptr_conv, val_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_get_holder_pubkeys(uint32_t this_ptr) {
-       LDKChannelTransactionParameters this_ptr_conv;
+uint32_tArray  __attribute__((visibility("default"))) TS_CommitmentUpdate_get_update_fulfill_htlcs(uint32_t this_ptr) {
+       LDKCommitmentUpdate this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelPublicKeys ret_var = ChannelTransactionParameters_get_holder_pubkeys(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
+       LDKCVec_UpdateFulfillHTLCZ ret_var = CommitmentUpdate_get_update_fulfill_htlcs(&this_ptr_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t t = 0; t < ret_var.datalen; t++) {
+               LDKUpdateFulfillHTLC ret_conv_19_var = ret_var.data[t];
+               uint64_t ret_conv_19_ref = 0;
+               CHECK((((uint64_t)ret_conv_19_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_conv_19_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_19_var);
+               ret_conv_19_ref = (uint64_t)ret_conv_19_var.inner;
+               if (ret_conv_19_var.is_owned) {
+                       ret_conv_19_ref |= 1;
+               }
+               ret_arr_ptr[t] = ret_conv_19_ref;
        }
-       return ret_ref;
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_set_holder_pubkeys(uint32_t this_ptr, uint32_t val) {
-       LDKChannelTransactionParameters this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_CommitmentUpdate_set_update_fulfill_htlcs(uint32_t this_ptr, uint32_tArray val) {
+       LDKCommitmentUpdate this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelPublicKeys val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = ChannelPublicKeys_clone(&val_conv);
-       ChannelTransactionParameters_set_holder_pubkeys(&this_ptr_conv, val_conv);
+       LDKCVec_UpdateFulfillHTLCZ val_constr;
+       val_constr.datalen = val->arr_len;
+       if (val_constr.datalen > 0)
+               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKUpdateFulfillHTLC), "LDKCVec_UpdateFulfillHTLCZ Elements");
+       else
+               val_constr.data = NULL;
+       uint32_t* val_vals = val->elems;
+       for (size_t t = 0; t < val_constr.datalen; t++) {
+               uint32_t val_conv_19 = val_vals[t];
+               LDKUpdateFulfillHTLC val_conv_19_conv;
+               val_conv_19_conv.inner = (void*)(val_conv_19 & (~1));
+               val_conv_19_conv.is_owned = (val_conv_19 & 1) || (val_conv_19 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv_19_conv);
+               val_conv_19_conv = UpdateFulfillHTLC_clone(&val_conv_19_conv);
+               val_constr.data[t] = val_conv_19_conv;
+       }
+       CommitmentUpdate_set_update_fulfill_htlcs(&this_ptr_conv, val_constr);
 }
 
-int16_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_get_holder_selected_contest_delay(uint32_t this_ptr) {
-       LDKChannelTransactionParameters this_ptr_conv;
+uint32_tArray  __attribute__((visibility("default"))) TS_CommitmentUpdate_get_update_fail_htlcs(uint32_t this_ptr) {
+       LDKCommitmentUpdate this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = ChannelTransactionParameters_get_holder_selected_contest_delay(&this_ptr_conv);
-       return ret_val;
+       LDKCVec_UpdateFailHTLCZ ret_var = CommitmentUpdate_get_update_fail_htlcs(&this_ptr_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t q = 0; q < ret_var.datalen; q++) {
+               LDKUpdateFailHTLC ret_conv_16_var = ret_var.data[q];
+               uint64_t ret_conv_16_ref = 0;
+               CHECK((((uint64_t)ret_conv_16_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_conv_16_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_16_var);
+               ret_conv_16_ref = (uint64_t)ret_conv_16_var.inner;
+               if (ret_conv_16_var.is_owned) {
+                       ret_conv_16_ref |= 1;
+               }
+               ret_arr_ptr[q] = ret_conv_16_ref;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_set_holder_selected_contest_delay(uint32_t this_ptr, int16_t val) {
-       LDKChannelTransactionParameters this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_CommitmentUpdate_set_update_fail_htlcs(uint32_t this_ptr, uint32_tArray val) {
+       LDKCommitmentUpdate this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelTransactionParameters_set_holder_selected_contest_delay(&this_ptr_conv, val);
+       LDKCVec_UpdateFailHTLCZ val_constr;
+       val_constr.datalen = val->arr_len;
+       if (val_constr.datalen > 0)
+               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKUpdateFailHTLC), "LDKCVec_UpdateFailHTLCZ Elements");
+       else
+               val_constr.data = NULL;
+       uint32_t* val_vals = val->elems;
+       for (size_t q = 0; q < val_constr.datalen; q++) {
+               uint32_t val_conv_16 = val_vals[q];
+               LDKUpdateFailHTLC val_conv_16_conv;
+               val_conv_16_conv.inner = (void*)(val_conv_16 & (~1));
+               val_conv_16_conv.is_owned = (val_conv_16 & 1) || (val_conv_16 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv_16_conv);
+               val_conv_16_conv = UpdateFailHTLC_clone(&val_conv_16_conv);
+               val_constr.data[q] = val_conv_16_conv;
+       }
+       CommitmentUpdate_set_update_fail_htlcs(&this_ptr_conv, val_constr);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_get_is_outbound_from_holder(uint32_t this_ptr) {
-       LDKChannelTransactionParameters this_ptr_conv;
+uint32_tArray  __attribute__((visibility("default"))) TS_CommitmentUpdate_get_update_fail_malformed_htlcs(uint32_t this_ptr) {
+       LDKCommitmentUpdate this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = ChannelTransactionParameters_get_is_outbound_from_holder(&this_ptr_conv);
-       return ret_val;
+       LDKCVec_UpdateFailMalformedHTLCZ ret_var = CommitmentUpdate_get_update_fail_malformed_htlcs(&this_ptr_conv);
+       uint32_tArray ret_arr = NULL;
+       ret_arr = init_uint32_tArray(ret_var.datalen);
+       uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
+       for (size_t z = 0; z < ret_var.datalen; z++) {
+               LDKUpdateFailMalformedHTLC ret_conv_25_var = ret_var.data[z];
+               uint64_t ret_conv_25_ref = 0;
+               CHECK((((uint64_t)ret_conv_25_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_conv_25_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_25_var);
+               ret_conv_25_ref = (uint64_t)ret_conv_25_var.inner;
+               if (ret_conv_25_var.is_owned) {
+                       ret_conv_25_ref |= 1;
+               }
+               ret_arr_ptr[z] = ret_conv_25_ref;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_set_is_outbound_from_holder(uint32_t this_ptr, jboolean val) {
-       LDKChannelTransactionParameters this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_CommitmentUpdate_set_update_fail_malformed_htlcs(uint32_t this_ptr, uint32_tArray val) {
+       LDKCommitmentUpdate this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ChannelTransactionParameters_set_is_outbound_from_holder(&this_ptr_conv, val);
+       LDKCVec_UpdateFailMalformedHTLCZ val_constr;
+       val_constr.datalen = val->arr_len;
+       if (val_constr.datalen > 0)
+               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKUpdateFailMalformedHTLC), "LDKCVec_UpdateFailMalformedHTLCZ Elements");
+       else
+               val_constr.data = NULL;
+       uint32_t* val_vals = val->elems;
+       for (size_t z = 0; z < val_constr.datalen; z++) {
+               uint32_t val_conv_25 = val_vals[z];
+               LDKUpdateFailMalformedHTLC val_conv_25_conv;
+               val_conv_25_conv.inner = (void*)(val_conv_25 & (~1));
+               val_conv_25_conv.is_owned = (val_conv_25 & 1) || (val_conv_25 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv_25_conv);
+               val_conv_25_conv = UpdateFailMalformedHTLC_clone(&val_conv_25_conv);
+               val_constr.data[z] = val_conv_25_conv;
+       }
+       CommitmentUpdate_set_update_fail_malformed_htlcs(&this_ptr_conv, val_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_get_counterparty_parameters(uint32_t this_ptr) {
-       LDKChannelTransactionParameters this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CommitmentUpdate_get_update_fee(uint32_t this_ptr) {
+       LDKCommitmentUpdate this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCounterpartyChannelTransactionParameters ret_var = ChannelTransactionParameters_get_counterparty_parameters(&this_ptr_conv);
+       LDKUpdateFee ret_var = CommitmentUpdate_get_update_fee(&this_ptr_conv);
        uint64_t ret_ref = 0;
        if ((uint64_t)ret_var.inner > 4096) {
                CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
@@ -29809,87 +27163,125 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_set_counterparty_parameters(uint32_t this_ptr, uint32_t val) {
-       LDKChannelTransactionParameters this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_CommitmentUpdate_set_update_fee(uint32_t this_ptr, uint32_t val) {
+       LDKCommitmentUpdate this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCounterpartyChannelTransactionParameters val_conv;
+       LDKUpdateFee val_conv;
        val_conv.inner = (void*)(val & (~1));
        val_conv.is_owned = (val & 1) || (val == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = CounterpartyChannelTransactionParameters_clone(&val_conv);
-       ChannelTransactionParameters_set_counterparty_parameters(&this_ptr_conv, val_conv);
+       val_conv = UpdateFee_clone(&val_conv);
+       CommitmentUpdate_set_update_fee(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_get_funding_outpoint(uint32_t this_ptr) {
-       LDKChannelTransactionParameters this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CommitmentUpdate_get_commitment_signed(uint32_t this_ptr) {
+       LDKCommitmentUpdate this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKOutPoint ret_var = ChannelTransactionParameters_get_funding_outpoint(&this_ptr_conv);
+       LDKCommitmentSigned ret_var = CommitmentUpdate_get_commitment_signed(&this_ptr_conv);
        uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
        CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_set_funding_outpoint(uint32_t this_ptr, uint32_t val) {
-       LDKChannelTransactionParameters this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_CommitmentUpdate_set_commitment_signed(uint32_t this_ptr, uint32_t val) {
+       LDKCommitmentUpdate this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKOutPoint val_conv;
+       LDKCommitmentSigned val_conv;
        val_conv.inner = (void*)(val & (~1));
        val_conv.is_owned = (val & 1) || (val == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = OutPoint_clone(&val_conv);
-       ChannelTransactionParameters_set_funding_outpoint(&this_ptr_conv, val_conv);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_get_opt_anchors(uint32_t this_ptr) {
-       LDKChannelTransactionParameters this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       uint32_t ret_conv = LDKCOption_NoneZ_to_js(ChannelTransactionParameters_get_opt_anchors(&this_ptr_conv));
-       return ret_conv;
-}
-
-void  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_set_opt_anchors(uint32_t this_ptr, uint32_t val) {
-       LDKChannelTransactionParameters this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCOption_NoneZ val_conv = LDKCOption_NoneZ_from_js(val);
-       ChannelTransactionParameters_set_opt_anchors(&this_ptr_conv, val_conv);
+       val_conv = CommitmentSigned_clone(&val_conv);
+       CommitmentUpdate_set_commitment_signed(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_new(uint32_t holder_pubkeys_arg, int16_t holder_selected_contest_delay_arg, jboolean is_outbound_from_holder_arg, uint32_t counterparty_parameters_arg, uint32_t funding_outpoint_arg, uint32_t opt_anchors_arg) {
-       LDKChannelPublicKeys holder_pubkeys_arg_conv;
-       holder_pubkeys_arg_conv.inner = (void*)(holder_pubkeys_arg & (~1));
-       holder_pubkeys_arg_conv.is_owned = (holder_pubkeys_arg & 1) || (holder_pubkeys_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(holder_pubkeys_arg_conv);
-       holder_pubkeys_arg_conv = ChannelPublicKeys_clone(&holder_pubkeys_arg_conv);
-       LDKCounterpartyChannelTransactionParameters counterparty_parameters_arg_conv;
-       counterparty_parameters_arg_conv.inner = (void*)(counterparty_parameters_arg & (~1));
-       counterparty_parameters_arg_conv.is_owned = (counterparty_parameters_arg & 1) || (counterparty_parameters_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(counterparty_parameters_arg_conv);
-       counterparty_parameters_arg_conv = CounterpartyChannelTransactionParameters_clone(&counterparty_parameters_arg_conv);
-       LDKOutPoint funding_outpoint_arg_conv;
-       funding_outpoint_arg_conv.inner = (void*)(funding_outpoint_arg & (~1));
-       funding_outpoint_arg_conv.is_owned = (funding_outpoint_arg & 1) || (funding_outpoint_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_outpoint_arg_conv);
-       funding_outpoint_arg_conv = OutPoint_clone(&funding_outpoint_arg_conv);
-       LDKCOption_NoneZ opt_anchors_arg_conv = LDKCOption_NoneZ_from_js(opt_anchors_arg);
-       LDKChannelTransactionParameters ret_var = ChannelTransactionParameters_new(holder_pubkeys_arg_conv, holder_selected_contest_delay_arg, is_outbound_from_holder_arg, counterparty_parameters_arg_conv, funding_outpoint_arg_conv, opt_anchors_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CommitmentUpdate_new(uint32_tArray update_add_htlcs_arg, uint32_tArray update_fulfill_htlcs_arg, uint32_tArray update_fail_htlcs_arg, uint32_tArray update_fail_malformed_htlcs_arg, uint32_t update_fee_arg, uint32_t commitment_signed_arg) {
+       LDKCVec_UpdateAddHTLCZ update_add_htlcs_arg_constr;
+       update_add_htlcs_arg_constr.datalen = update_add_htlcs_arg->arr_len;
+       if (update_add_htlcs_arg_constr.datalen > 0)
+               update_add_htlcs_arg_constr.data = MALLOC(update_add_htlcs_arg_constr.datalen * sizeof(LDKUpdateAddHTLC), "LDKCVec_UpdateAddHTLCZ Elements");
+       else
+               update_add_htlcs_arg_constr.data = NULL;
+       uint32_t* update_add_htlcs_arg_vals = update_add_htlcs_arg->elems;
+       for (size_t p = 0; p < update_add_htlcs_arg_constr.datalen; p++) {
+               uint32_t update_add_htlcs_arg_conv_15 = update_add_htlcs_arg_vals[p];
+               LDKUpdateAddHTLC update_add_htlcs_arg_conv_15_conv;
+               update_add_htlcs_arg_conv_15_conv.inner = (void*)(update_add_htlcs_arg_conv_15 & (~1));
+               update_add_htlcs_arg_conv_15_conv.is_owned = (update_add_htlcs_arg_conv_15 & 1) || (update_add_htlcs_arg_conv_15 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(update_add_htlcs_arg_conv_15_conv);
+               update_add_htlcs_arg_conv_15_conv = UpdateAddHTLC_clone(&update_add_htlcs_arg_conv_15_conv);
+               update_add_htlcs_arg_constr.data[p] = update_add_htlcs_arg_conv_15_conv;
+       }
+       LDKCVec_UpdateFulfillHTLCZ update_fulfill_htlcs_arg_constr;
+       update_fulfill_htlcs_arg_constr.datalen = update_fulfill_htlcs_arg->arr_len;
+       if (update_fulfill_htlcs_arg_constr.datalen > 0)
+               update_fulfill_htlcs_arg_constr.data = MALLOC(update_fulfill_htlcs_arg_constr.datalen * sizeof(LDKUpdateFulfillHTLC), "LDKCVec_UpdateFulfillHTLCZ Elements");
+       else
+               update_fulfill_htlcs_arg_constr.data = NULL;
+       uint32_t* update_fulfill_htlcs_arg_vals = update_fulfill_htlcs_arg->elems;
+       for (size_t t = 0; t < update_fulfill_htlcs_arg_constr.datalen; t++) {
+               uint32_t update_fulfill_htlcs_arg_conv_19 = update_fulfill_htlcs_arg_vals[t];
+               LDKUpdateFulfillHTLC update_fulfill_htlcs_arg_conv_19_conv;
+               update_fulfill_htlcs_arg_conv_19_conv.inner = (void*)(update_fulfill_htlcs_arg_conv_19 & (~1));
+               update_fulfill_htlcs_arg_conv_19_conv.is_owned = (update_fulfill_htlcs_arg_conv_19 & 1) || (update_fulfill_htlcs_arg_conv_19 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(update_fulfill_htlcs_arg_conv_19_conv);
+               update_fulfill_htlcs_arg_conv_19_conv = UpdateFulfillHTLC_clone(&update_fulfill_htlcs_arg_conv_19_conv);
+               update_fulfill_htlcs_arg_constr.data[t] = update_fulfill_htlcs_arg_conv_19_conv;
+       }
+       LDKCVec_UpdateFailHTLCZ update_fail_htlcs_arg_constr;
+       update_fail_htlcs_arg_constr.datalen = update_fail_htlcs_arg->arr_len;
+       if (update_fail_htlcs_arg_constr.datalen > 0)
+               update_fail_htlcs_arg_constr.data = MALLOC(update_fail_htlcs_arg_constr.datalen * sizeof(LDKUpdateFailHTLC), "LDKCVec_UpdateFailHTLCZ Elements");
+       else
+               update_fail_htlcs_arg_constr.data = NULL;
+       uint32_t* update_fail_htlcs_arg_vals = update_fail_htlcs_arg->elems;
+       for (size_t q = 0; q < update_fail_htlcs_arg_constr.datalen; q++) {
+               uint32_t update_fail_htlcs_arg_conv_16 = update_fail_htlcs_arg_vals[q];
+               LDKUpdateFailHTLC update_fail_htlcs_arg_conv_16_conv;
+               update_fail_htlcs_arg_conv_16_conv.inner = (void*)(update_fail_htlcs_arg_conv_16 & (~1));
+               update_fail_htlcs_arg_conv_16_conv.is_owned = (update_fail_htlcs_arg_conv_16 & 1) || (update_fail_htlcs_arg_conv_16 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(update_fail_htlcs_arg_conv_16_conv);
+               update_fail_htlcs_arg_conv_16_conv = UpdateFailHTLC_clone(&update_fail_htlcs_arg_conv_16_conv);
+               update_fail_htlcs_arg_constr.data[q] = update_fail_htlcs_arg_conv_16_conv;
+       }
+       LDKCVec_UpdateFailMalformedHTLCZ update_fail_malformed_htlcs_arg_constr;
+       update_fail_malformed_htlcs_arg_constr.datalen = update_fail_malformed_htlcs_arg->arr_len;
+       if (update_fail_malformed_htlcs_arg_constr.datalen > 0)
+               update_fail_malformed_htlcs_arg_constr.data = MALLOC(update_fail_malformed_htlcs_arg_constr.datalen * sizeof(LDKUpdateFailMalformedHTLC), "LDKCVec_UpdateFailMalformedHTLCZ Elements");
+       else
+               update_fail_malformed_htlcs_arg_constr.data = NULL;
+       uint32_t* update_fail_malformed_htlcs_arg_vals = update_fail_malformed_htlcs_arg->elems;
+       for (size_t z = 0; z < update_fail_malformed_htlcs_arg_constr.datalen; z++) {
+               uint32_t update_fail_malformed_htlcs_arg_conv_25 = update_fail_malformed_htlcs_arg_vals[z];
+               LDKUpdateFailMalformedHTLC update_fail_malformed_htlcs_arg_conv_25_conv;
+               update_fail_malformed_htlcs_arg_conv_25_conv.inner = (void*)(update_fail_malformed_htlcs_arg_conv_25 & (~1));
+               update_fail_malformed_htlcs_arg_conv_25_conv.is_owned = (update_fail_malformed_htlcs_arg_conv_25 & 1) || (update_fail_malformed_htlcs_arg_conv_25 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(update_fail_malformed_htlcs_arg_conv_25_conv);
+               update_fail_malformed_htlcs_arg_conv_25_conv = UpdateFailMalformedHTLC_clone(&update_fail_malformed_htlcs_arg_conv_25_conv);
+               update_fail_malformed_htlcs_arg_constr.data[z] = update_fail_malformed_htlcs_arg_conv_25_conv;
+       }
+       LDKUpdateFee update_fee_arg_conv;
+       update_fee_arg_conv.inner = (void*)(update_fee_arg & (~1));
+       update_fee_arg_conv.is_owned = (update_fee_arg & 1) || (update_fee_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(update_fee_arg_conv);
+       update_fee_arg_conv = UpdateFee_clone(&update_fee_arg_conv);
+       LDKCommitmentSigned commitment_signed_arg_conv;
+       commitment_signed_arg_conv.inner = (void*)(commitment_signed_arg & (~1));
+       commitment_signed_arg_conv.is_owned = (commitment_signed_arg & 1) || (commitment_signed_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_signed_arg_conv);
+       commitment_signed_arg_conv = CommitmentSigned_clone(&commitment_signed_arg_conv);
+       LDKCommitmentUpdate ret_var = CommitmentUpdate_new(update_add_htlcs_arg_constr, update_fulfill_htlcs_arg_constr, update_fail_htlcs_arg_constr, update_fail_malformed_htlcs_arg_constr, update_fee_arg_conv, commitment_signed_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -29901,8 +27293,8 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters
        return ret_ref;
 }
 
-static inline uint64_t ChannelTransactionParameters_clone_ptr(LDKChannelTransactionParameters *NONNULL_PTR arg) {
-       LDKChannelTransactionParameters ret_var = ChannelTransactionParameters_clone(arg);
+static inline uint64_t CommitmentUpdate_clone_ptr(LDKCommitmentUpdate *NONNULL_PTR arg) {
+       LDKCommitmentUpdate ret_var = CommitmentUpdate_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -29913,21 +27305,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_clone_ptr(uint32_t arg) {
-       LDKChannelTransactionParameters arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_CommitmentUpdate_clone_ptr(uint32_t arg) {
+       LDKCommitmentUpdate arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelTransactionParameters_clone_ptr(&arg_conv);
+       int64_t ret_val = CommitmentUpdate_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_clone(uint32_t orig) {
-       LDKChannelTransactionParameters orig_conv;
+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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelTransactionParameters ret_var = ChannelTransactionParameters_clone(&orig_conv);
+       LDKCommitmentUpdate ret_var = CommitmentUpdate_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -29939,841 +27331,724 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_free(uint32_t this_obj) {
-       LDKCounterpartyChannelTransactionParameters this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       CounterpartyChannelTransactionParameters_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_ChannelMessageHandler_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKChannelMessageHandler this_ptr_conv = *(LDKChannelMessageHandler*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       ChannelMessageHandler_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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelPublicKeys ret_var = CounterpartyChannelTransactionParameters_get_pubkeys(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_RoutingMessageHandler_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKRoutingMessageHandler this_ptr_conv = *(LDKRoutingMessageHandler*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       RoutingMessageHandler_free(this_ptr_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_set_pubkeys(uint32_t this_ptr, uint32_t val) {
-       LDKCounterpartyChannelTransactionParameters this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelPublicKeys val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = ChannelPublicKeys_clone(&val_conv);
-       CounterpartyChannelTransactionParameters_set_pubkeys(&this_ptr_conv, val_conv);
+int8_tArray  __attribute__((visibility("default"))) TS_AcceptChannel_write(uint32_t obj) {
+       LDKAcceptChannel obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = AcceptChannel_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-int16_t  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_get_selected_contest_delay(uint32_t this_ptr) {
-       LDKCounterpartyChannelTransactionParameters this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = CounterpartyChannelTransactionParameters_get_selected_contest_delay(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_AcceptChannel_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_AcceptChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AcceptChannelDecodeErrorZ), "LDKCResult_AcceptChannelDecodeErrorZ");
+       *ret_conv = AcceptChannel_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_set_selected_contest_delay(uint32_t this_ptr, int16_t val) {
-       LDKCounterpartyChannelTransactionParameters this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       CounterpartyChannelTransactionParameters_set_selected_contest_delay(&this_ptr_conv, val);
+int8_tArray  __attribute__((visibility("default"))) TS_AnnouncementSignatures_write(uint32_t obj) {
+       LDKAnnouncementSignatures obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = AnnouncementSignatures_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_new(uint32_t pubkeys_arg, int16_t selected_contest_delay_arg) {
-       LDKChannelPublicKeys pubkeys_arg_conv;
-       pubkeys_arg_conv.inner = (void*)(pubkeys_arg & (~1));
-       pubkeys_arg_conv.is_owned = (pubkeys_arg & 1) || (pubkeys_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(pubkeys_arg_conv);
-       pubkeys_arg_conv = ChannelPublicKeys_clone(&pubkeys_arg_conv);
-       LDKCounterpartyChannelTransactionParameters ret_var = CounterpartyChannelTransactionParameters_new(pubkeys_arg_conv, selected_contest_delay_arg);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_AnnouncementSignatures_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_AnnouncementSignaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ), "LDKCResult_AnnouncementSignaturesDecodeErrorZ");
+       *ret_conv = AnnouncementSignatures_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-static inline uint64_t CounterpartyChannelTransactionParameters_clone_ptr(LDKCounterpartyChannelTransactionParameters *NONNULL_PTR arg) {
-       LDKCounterpartyChannelTransactionParameters ret_var = CounterpartyChannelTransactionParameters_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelReestablish_write(uint32_t obj) {
+       LDKChannelReestablish obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ChannelReestablish_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
-       return ret_ref;
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelReestablish_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ChannelReestablishDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelReestablishDecodeErrorZ), "LDKCResult_ChannelReestablishDecodeErrorZ");
+       *ret_conv = ChannelReestablish_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_clone_ptr(uint32_t arg) {
-       LDKCounterpartyChannelTransactionParameters arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = CounterpartyChannelTransactionParameters_clone_ptr(&arg_conv);
-       return ret_val;
+
+int8_tArray  __attribute__((visibility("default"))) TS_ClosingSigned_write(uint32_t obj) {
+       LDKClosingSigned obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ClosingSigned_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKCounterpartyChannelTransactionParameters ret_var = CounterpartyChannelTransactionParameters_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_ClosingSigned_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ClosingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedDecodeErrorZ), "LDKCResult_ClosingSignedDecodeErrorZ");
+       *ret_conv = ClosingSigned_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_is_populated(uint32_t this_arg) {
-       LDKChannelTransactionParameters this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       jboolean ret_val = ChannelTransactionParameters_is_populated(&this_arg_conv);
-       return ret_val;
+int8_tArray  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_write(uint32_t obj) {
+       LDKClosingSignedFeeRange obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ClosingSignedFeeRange_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ClosingSignedFeeRange_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ClosingSignedFeeRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ), "LDKCResult_ClosingSignedFeeRangeDecodeErrorZ");
+       *ret_conv = ClosingSignedFeeRange_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_CommitmentSigned_write(uint32_t obj) {
+       LDKCommitmentSigned obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = CommitmentSigned_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_CommitmentSigned_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_CommitmentSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentSignedDecodeErrorZ), "LDKCResult_CommitmentSignedDecodeErrorZ");
+       *ret_conv = CommitmentSigned_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_FundingCreated_write(uint32_t obj) {
+       LDKFundingCreated obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = FundingCreated_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_FundingCreated_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_FundingCreatedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingCreatedDecodeErrorZ), "LDKCResult_FundingCreatedDecodeErrorZ");
+       *ret_conv = FundingCreated_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_FundingSigned_write(uint32_t obj) {
+       LDKFundingSigned obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = FundingSigned_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_as_holder_broadcastable(uint32_t this_arg) {
-       LDKChannelTransactionParameters this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKDirectedChannelTransactionParameters ret_var = ChannelTransactionParameters_as_holder_broadcastable(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_FundingSigned_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_FundingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingSignedDecodeErrorZ), "LDKCResult_FundingSignedDecodeErrorZ");
+       *ret_conv = FundingSigned_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_as_counterparty_broadcastable(uint32_t this_arg) {
-       LDKChannelTransactionParameters this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKDirectedChannelTransactionParameters ret_var = ChannelTransactionParameters_as_counterparty_broadcastable(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_FundingLocked_write(uint32_t obj) {
+       LDKFundingLocked obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = FundingLocked_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_write(uint32_t obj) {
-       LDKCounterpartyChannelTransactionParameters obj_conv;
+uint32_t  __attribute__((visibility("default"))) TS_FundingLocked_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_FundingLockedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingLockedDecodeErrorZ), "LDKCResult_FundingLockedDecodeErrorZ");
+       *ret_conv = FundingLocked_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_Init_write(uint32_t obj) {
+       LDKInit obj_conv;
        obj_conv.inner = (void*)(obj & (~1));
        obj_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = CounterpartyChannelTransactionParameters_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       LDKCVec_u8Z ret_var = Init_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_read(int8_tArray ser) {
+uint32_t  __attribute__((visibility("default"))) TS_Init_read(int8_tArray ser) {
        LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ), "LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ");
-       *ret_conv = CounterpartyChannelTransactionParameters_read(ser_ref);
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_InitDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitDecodeErrorZ), "LDKCResult_InitDecodeErrorZ");
+       *ret_conv = Init_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_write(uint32_t obj) {
-       LDKChannelTransactionParameters obj_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_OpenChannel_write(uint32_t obj) {
+       LDKOpenChannel obj_conv;
        obj_conv.inner = (void*)(obj & (~1));
        obj_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ChannelTransactionParameters_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       LDKCVec_u8Z ret_var = OpenChannel_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_read(int8_tArray ser) {
+uint32_t  __attribute__((visibility("default"))) TS_OpenChannel_read(int8_tArray ser) {
        LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ), "LDKCResult_ChannelTransactionParametersDecodeErrorZ");
-       *ret_conv = ChannelTransactionParameters_read(ser_ref);
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_OpenChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OpenChannelDecodeErrorZ), "LDKCResult_OpenChannelDecodeErrorZ");
+       *ret_conv = OpenChannel_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_DirectedChannelTransactionParameters_free(uint32_t this_obj) {
-       LDKDirectedChannelTransactionParameters this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       DirectedChannelTransactionParameters_free(this_obj_conv);
+int8_tArray  __attribute__((visibility("default"))) TS_RevokeAndACK_write(uint32_t obj) {
+       LDKRevokeAndACK obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = RevokeAndACK_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_DirectedChannelTransactionParameters_broadcaster_pubkeys(uint32_t this_arg) {
-       LDKDirectedChannelTransactionParameters this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKChannelPublicKeys ret_var = DirectedChannelTransactionParameters_broadcaster_pubkeys(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_RevokeAndACK_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_RevokeAndACKDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RevokeAndACKDecodeErrorZ), "LDKCResult_RevokeAndACKDecodeErrorZ");
+       *ret_conv = RevokeAndACK_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_DirectedChannelTransactionParameters_countersignatory_pubkeys(uint32_t this_arg) {
-       LDKDirectedChannelTransactionParameters this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKChannelPublicKeys ret_var = DirectedChannelTransactionParameters_countersignatory_pubkeys(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_Shutdown_write(uint32_t obj) {
+       LDKShutdown obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = Shutdown_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-int16_t  __attribute__((visibility("default"))) TS_DirectedChannelTransactionParameters_contest_delay(uint32_t this_arg) {
-       LDKDirectedChannelTransactionParameters this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int16_t ret_val = DirectedChannelTransactionParameters_contest_delay(&this_arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_Shutdown_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ShutdownDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownDecodeErrorZ), "LDKCResult_ShutdownDecodeErrorZ");
+       *ret_conv = Shutdown_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_DirectedChannelTransactionParameters_is_outbound(uint32_t this_arg) {
-       LDKDirectedChannelTransactionParameters this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       jboolean ret_val = DirectedChannelTransactionParameters_is_outbound(&this_arg_conv);
-       return ret_val;
+int8_tArray  __attribute__((visibility("default"))) TS_UpdateFailHTLC_write(uint32_t obj) {
+       LDKUpdateFailHTLC obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = UpdateFailHTLC_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_DirectedChannelTransactionParameters_funding_outpoint(uint32_t this_arg) {
-       LDKDirectedChannelTransactionParameters this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKOutPoint ret_var = DirectedChannelTransactionParameters_funding_outpoint(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_UpdateFailHTLC_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_UpdateFailHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ), "LDKCResult_UpdateFailHTLCDecodeErrorZ");
+       *ret_conv = UpdateFailHTLC_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_DirectedChannelTransactionParameters_opt_anchors(uint32_t this_arg) {
-       LDKDirectedChannelTransactionParameters this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       jboolean ret_val = DirectedChannelTransactionParameters_opt_anchors(&this_arg_conv);
-       return ret_val;
+int8_tArray  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_write(uint32_t obj) {
+       LDKUpdateFailMalformedHTLC obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = UpdateFailMalformedHTLC_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_free(uint32_t this_obj) {
-       LDKHolderCommitmentTransaction this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       HolderCommitmentTransaction_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ), "LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ");
+       *ret_conv = UpdateFailMalformedHTLC_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), HolderCommitmentTransaction_get_counterparty_sig(&this_ptr_conv).compact_form, 64);
+int8_tArray  __attribute__((visibility("default"))) TS_UpdateFee_write(uint32_t obj) {
+       LDKUpdateFee obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = UpdateFee_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_set_counterparty_sig(uint32_t this_ptr, int8_tArray val) {
-       LDKHolderCommitmentTransaction this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKSignature val_ref;
-       CHECK(*((uint32_t*)val) == 64);
-       memcpy(val_ref.compact_form, (uint8_t*)(val + 4), 64);
-       HolderCommitmentTransaction_set_counterparty_sig(&this_ptr_conv, val_ref);
+uint32_t  __attribute__((visibility("default"))) TS_UpdateFee_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_UpdateFeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFeeDecodeErrorZ), "LDKCResult_UpdateFeeDecodeErrorZ");
+       *ret_conv = UpdateFee_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_set_counterparty_htlc_sigs(uint32_t this_ptr, ptrArray val) {
-       LDKHolderCommitmentTransaction this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_SignatureZ val_constr;
-       val_constr.datalen = *((uint32_t*)val);
-       if (val_constr.datalen > 0)
-               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ Elements");
-       else
-               val_constr.data = NULL;
-       int8_tArray* val_vals = (int8_tArray*)(val + 4);
-       for (size_t m = 0; m < val_constr.datalen; m++) {
-               int8_tArray val_conv_12 = val_vals[m];
-               LDKSignature val_conv_12_ref;
-               CHECK(*((uint32_t*)val_conv_12) == 64);
-               memcpy(val_conv_12_ref.compact_form, (uint8_t*)(val_conv_12 + 4), 64);
-               val_constr.data[m] = val_conv_12_ref;
-       }
-       HolderCommitmentTransaction_set_counterparty_htlc_sigs(&this_ptr_conv, val_constr);
+int8_tArray  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_write(uint32_t obj) {
+       LDKUpdateFulfillHTLC obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = UpdateFulfillHTLC_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-static inline uint64_t HolderCommitmentTransaction_clone_ptr(LDKHolderCommitmentTransaction *NONNULL_PTR arg) {
-       LDKHolderCommitmentTransaction ret_var = HolderCommitmentTransaction_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_UpdateFulfillHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ), "LDKCResult_UpdateFulfillHTLCDecodeErrorZ");
+       *ret_conv = UpdateFulfillHTLC_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_clone_ptr(uint32_t arg) {
-       LDKHolderCommitmentTransaction arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = HolderCommitmentTransaction_clone_ptr(&arg_conv);
-       return ret_val;
+
+int8_tArray  __attribute__((visibility("default"))) TS_UpdateAddHTLC_write(uint32_t obj) {
+       LDKUpdateAddHTLC obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = UpdateAddHTLC_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKHolderCommitmentTransaction ret_var = HolderCommitmentTransaction_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_UpdateAddHTLC_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_UpdateAddHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ), "LDKCResult_UpdateAddHTLCDecodeErrorZ");
+       *ret_conv = UpdateAddHTLC_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_write(uint32_t obj) {
-       LDKHolderCommitmentTransaction obj_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_Ping_write(uint32_t obj) {
+       LDKPing obj_conv;
        obj_conv.inner = (void*)(obj & (~1));
        obj_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = HolderCommitmentTransaction_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       LDKCVec_u8Z ret_var = Ping_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_read(int8_tArray ser) {
+uint32_t  __attribute__((visibility("default"))) TS_Ping_read(int8_tArray ser) {
        LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_HolderCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ), "LDKCResult_HolderCommitmentTransactionDecodeErrorZ");
-       *ret_conv = HolderCommitmentTransaction_read(ser_ref);
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_PingDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PingDecodeErrorZ), "LDKCResult_PingDecodeErrorZ");
+       *ret_conv = Ping_read(ser_ref);
        return (uint64_t)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) {
-       LDKCommitmentTransaction commitment_tx_conv;
-       commitment_tx_conv.inner = (void*)(commitment_tx & (~1));
-       commitment_tx_conv.is_owned = (commitment_tx & 1) || (commitment_tx == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_tx_conv);
-       commitment_tx_conv = CommitmentTransaction_clone(&commitment_tx_conv);
-       LDKSignature counterparty_sig_ref;
-       CHECK(*((uint32_t*)counterparty_sig) == 64);
-       memcpy(counterparty_sig_ref.compact_form, (uint8_t*)(counterparty_sig + 4), 64);
-       LDKCVec_SignatureZ counterparty_htlc_sigs_constr;
-       counterparty_htlc_sigs_constr.datalen = *((uint32_t*)counterparty_htlc_sigs);
-       if (counterparty_htlc_sigs_constr.datalen > 0)
-               counterparty_htlc_sigs_constr.data = MALLOC(counterparty_htlc_sigs_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ Elements");
-       else
-               counterparty_htlc_sigs_constr.data = NULL;
-       int8_tArray* counterparty_htlc_sigs_vals = (int8_tArray*)(counterparty_htlc_sigs + 4);
-       for (size_t m = 0; m < counterparty_htlc_sigs_constr.datalen; m++) {
-               int8_tArray counterparty_htlc_sigs_conv_12 = counterparty_htlc_sigs_vals[m];
-               LDKSignature counterparty_htlc_sigs_conv_12_ref;
-               CHECK(*((uint32_t*)counterparty_htlc_sigs_conv_12) == 64);
-               memcpy(counterparty_htlc_sigs_conv_12_ref.compact_form, (uint8_t*)(counterparty_htlc_sigs_conv_12 + 4), 64);
-               counterparty_htlc_sigs_constr.data[m] = counterparty_htlc_sigs_conv_12_ref;
-       }
-       LDKPublicKey holder_funding_key_ref;
-       CHECK(*((uint32_t*)holder_funding_key) == 33);
-       memcpy(holder_funding_key_ref.compressed_form, (uint8_t*)(holder_funding_key + 4), 33);
-       LDKPublicKey counterparty_funding_key_ref;
-       CHECK(*((uint32_t*)counterparty_funding_key) == 33);
-       memcpy(counterparty_funding_key_ref.compressed_form, (uint8_t*)(counterparty_funding_key + 4), 33);
-       LDKHolderCommitmentTransaction ret_var = HolderCommitmentTransaction_new(commitment_tx_conv, counterparty_sig_ref, counterparty_htlc_sigs_constr, holder_funding_key_ref, counterparty_funding_key_ref);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_Pong_write(uint32_t obj) {
+       LDKPong obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = Pong_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_free(uint32_t this_obj) {
-       LDKBuiltCommitmentTransaction this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       BuiltCommitmentTransaction_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_Pong_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_PongDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PongDecodeErrorZ), "LDKCResult_PongDecodeErrorZ");
+       *ret_conv = Pong_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKTransaction ret_var = BuiltCommitmentTransaction_get_transaction(&this_ptr_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       Transaction_free(ret_var);
+int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_write(uint32_t obj) {
+       LDKUnsignedChannelAnnouncement obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = UnsignedChannelAnnouncement_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_set_transaction(uint32_t this_ptr, int8_tArray val) {
-       LDKBuiltCommitmentTransaction this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKTransaction val_ref;
-       val_ref.datalen = *((uint32_t*)val);
-       val_ref.data = MALLOC(val_ref.datalen, "LDKTransaction Bytes");
-       memcpy(val_ref.data, (uint8_t*)(val + 4), val_ref.datalen);
-       val_ref.data_is_owned = true;
-       BuiltCommitmentTransaction_set_transaction(&this_ptr_conv, val_ref);
+uint32_t  __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ), "LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ");
+       *ret_conv = UnsignedChannelAnnouncement_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_get_txid(uint32_t this_ptr) {
-       LDKBuiltCommitmentTransaction this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *BuiltCommitmentTransaction_get_txid(&this_ptr_conv), 32);
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelAnnouncement_write(uint32_t obj) {
+       LDKChannelAnnouncement obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ChannelAnnouncement_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_set_txid(uint32_t this_ptr, int8_tArray val) {
-       LDKBuiltCommitmentTransaction this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       BuiltCommitmentTransaction_set_txid(&this_ptr_conv, val_ref);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelAnnouncement_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ), "LDKCResult_ChannelAnnouncementDecodeErrorZ");
+       *ret_conv = ChannelAnnouncement_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_new(int8_tArray transaction_arg, int8_tArray txid_arg) {
-       LDKTransaction transaction_arg_ref;
-       transaction_arg_ref.datalen = *((uint32_t*)transaction_arg);
-       transaction_arg_ref.data = MALLOC(transaction_arg_ref.datalen, "LDKTransaction Bytes");
-       memcpy(transaction_arg_ref.data, (uint8_t*)(transaction_arg + 4), transaction_arg_ref.datalen);
-       transaction_arg_ref.data_is_owned = true;
-       LDKThirtyTwoBytes txid_arg_ref;
-       CHECK(*((uint32_t*)txid_arg) == 32);
-       memcpy(txid_arg_ref.data, (uint8_t*)(txid_arg + 4), 32);
-       LDKBuiltCommitmentTransaction ret_var = BuiltCommitmentTransaction_new(transaction_arg_ref, txid_arg_ref);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_write(uint32_t obj) {
+       LDKUnsignedChannelUpdate obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = UnsignedChannelUpdate_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-static inline uint64_t BuiltCommitmentTransaction_clone_ptr(LDKBuiltCommitmentTransaction *NONNULL_PTR arg) {
-       LDKBuiltCommitmentTransaction ret_var = BuiltCommitmentTransaction_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_UnsignedChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ), "LDKCResult_UnsignedChannelUpdateDecodeErrorZ");
+       *ret_conv = UnsignedChannelUpdate_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
-       return ret_ref;
+
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelUpdate_write(uint32_t obj) {
+       LDKChannelUpdate obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ChannelUpdate_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
-int64_t  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_clone_ptr(uint32_t arg) {
-       LDKBuiltCommitmentTransaction arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = BuiltCommitmentTransaction_clone_ptr(&arg_conv);
-       return ret_val;
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelUpdate_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelUpdateDecodeErrorZ), "LDKCResult_ChannelUpdateDecodeErrorZ");
+       *ret_conv = ChannelUpdate_read(ser_ref);
+       return (uint64_t)ret_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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKBuiltCommitmentTransaction ret_var = BuiltCommitmentTransaction_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_ErrorMessage_write(uint32_t obj) {
+       LDKErrorMessage obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ErrorMessage_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_write(uint32_t obj) {
-       LDKBuiltCommitmentTransaction obj_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ErrorMessage_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ErrorMessageDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ErrorMessageDecodeErrorZ), "LDKCResult_ErrorMessageDecodeErrorZ");
+       *ret_conv = ErrorMessage_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_write(uint32_t obj) {
+       LDKUnsignedNodeAnnouncement obj_conv;
        obj_conv.inner = (void*)(obj & (~1));
        obj_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = BuiltCommitmentTransaction_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       LDKCVec_u8Z ret_var = UnsignedNodeAnnouncement_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_read(int8_tArray ser) {
+uint32_t  __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_read(int8_tArray ser) {
        LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ), "LDKCResult_BuiltCommitmentTransactionDecodeErrorZ");
-       *ret_conv = BuiltCommitmentTransaction_read(ser_ref);
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ), "LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ");
+       *ret_conv = UnsignedNodeAnnouncement_read(ser_ref);
        return (uint64_t)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) {
-       LDKBuiltCommitmentTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKu8slice funding_redeemscript_ref;
-       funding_redeemscript_ref.datalen = *((uint32_t*)funding_redeemscript);
-       funding_redeemscript_ref.data = (int8_t*)(funding_redeemscript + 4);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), BuiltCommitmentTransaction_get_sighash_all(&this_arg_conv, funding_redeemscript_ref, channel_value_satoshis).data, 32);
-       return ret_arr;
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_sign(uint32_t this_arg, int8_tArray funding_key, int8_tArray funding_redeemscript, int64_t channel_value_satoshis) {
-       LDKBuiltCommitmentTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       unsigned char funding_key_arr[32];
-       CHECK(*((uint32_t*)funding_key) == 32);
-       memcpy(funding_key_arr, (uint8_t*)(funding_key + 4), 32);
-       unsigned char (*funding_key_ref)[32] = &funding_key_arr;
-       LDKu8slice funding_redeemscript_ref;
-       funding_redeemscript_ref.datalen = *((uint32_t*)funding_redeemscript);
-       funding_redeemscript_ref.data = (int8_t*)(funding_redeemscript + 4);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), BuiltCommitmentTransaction_sign(&this_arg_conv, funding_key_ref, funding_redeemscript_ref, channel_value_satoshis).compact_form, 64);
+int8_tArray  __attribute__((visibility("default"))) TS_NodeAnnouncement_write(uint32_t obj) {
+       LDKNodeAnnouncement obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = NodeAnnouncement_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ClosingTransaction_free(uint32_t this_obj) {
-       LDKClosingTransaction this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ClosingTransaction_free(this_obj_conv);
-}
-
-static inline uint64_t ClosingTransaction_clone_ptr(LDKClosingTransaction *NONNULL_PTR arg) {
-       LDKClosingTransaction ret_var = ClosingTransaction_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_ClosingTransaction_clone_ptr(uint32_t arg) {
-       LDKClosingTransaction arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ClosingTransaction_clone_ptr(&arg_conv);
-       return ret_val;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ClosingTransaction_clone(uint32_t orig) {
-       LDKClosingTransaction orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKClosingTransaction ret_var = ClosingTransaction_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncement_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_NodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ), "LDKCResult_NodeAnnouncementDecodeErrorZ");
+       *ret_conv = NodeAnnouncement_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ClosingTransaction_hash(uint32_t o) {
-       LDKClosingTransaction o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = ClosingTransaction_hash(&o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_QueryShortChannelIds_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_QueryShortChannelIdsDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ), "LDKCResult_QueryShortChannelIdsDecodeErrorZ");
+       *ret_conv = QueryShortChannelIds_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosingTransaction_new(int64_t to_holder_value_sat, int64_t to_counterparty_value_sat, int8_tArray to_holder_script, int8_tArray to_counterparty_script, uint32_t funding_outpoint) {
-       LDKCVec_u8Z to_holder_script_ref;
-       to_holder_script_ref.datalen = *((uint32_t*)to_holder_script);
-       to_holder_script_ref.data = MALLOC(to_holder_script_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(to_holder_script_ref.data, (uint8_t*)(to_holder_script + 4), to_holder_script_ref.datalen);
-       LDKCVec_u8Z to_counterparty_script_ref;
-       to_counterparty_script_ref.datalen = *((uint32_t*)to_counterparty_script);
-       to_counterparty_script_ref.data = MALLOC(to_counterparty_script_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(to_counterparty_script_ref.data, (uint8_t*)(to_counterparty_script + 4), to_counterparty_script_ref.datalen);
-       LDKOutPoint funding_outpoint_conv;
-       funding_outpoint_conv.inner = (void*)(funding_outpoint & (~1));
-       funding_outpoint_conv.is_owned = (funding_outpoint & 1) || (funding_outpoint == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_outpoint_conv);
-       funding_outpoint_conv = OutPoint_clone(&funding_outpoint_conv);
-       LDKClosingTransaction ret_var = ClosingTransaction_new(to_holder_value_sat, to_counterparty_value_sat, to_holder_script_ref, to_counterparty_script_ref, funding_outpoint_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_QueryShortChannelIds_write(uint32_t obj) {
+       LDKQueryShortChannelIds obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = QueryShortChannelIds_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosingTransaction_trust(uint32_t this_arg) {
-       LDKClosingTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKTrustedClosingTransaction ret_var = ClosingTransaction_trust(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_write(uint32_t obj) {
+       LDKReplyShortChannelIdsEnd obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ReplyShortChannelIdsEnd_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ClosingTransaction_verify(uint32_t this_arg, uint32_t funding_outpoint) {
-       LDKClosingTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKOutPoint funding_outpoint_conv;
-       funding_outpoint_conv.inner = (void*)(funding_outpoint & (~1));
-       funding_outpoint_conv.is_owned = (funding_outpoint & 1) || (funding_outpoint == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_outpoint_conv);
-       funding_outpoint_conv = OutPoint_clone(&funding_outpoint_conv);
-       LDKCResult_TrustedClosingTransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TrustedClosingTransactionNoneZ), "LDKCResult_TrustedClosingTransactionNoneZ");
-       *ret_conv = ClosingTransaction_verify(&this_arg_conv, funding_outpoint_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ), "LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ");
+       *ret_conv = ReplyShortChannelIdsEnd_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ClosingTransaction_to_holder_value_sat(uint32_t this_arg) {
-       LDKClosingTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = ClosingTransaction_to_holder_value_sat(&this_arg_conv);
-       return ret_val;
-}
-
-int64_t  __attribute__((visibility("default"))) TS_ClosingTransaction_to_counterparty_value_sat(uint32_t this_arg) {
-       LDKClosingTransaction this_arg_conv;
+int32_t  __attribute__((visibility("default"))) TS_QueryChannelRange_end_blocknum(uint32_t this_arg) {
+       LDKQueryChannelRange this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = ClosingTransaction_to_counterparty_value_sat(&this_arg_conv);
+       int32_t ret_val = QueryChannelRange_end_blocknum(&this_arg_conv);
        return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ClosingTransaction_to_holder_script(uint32_t this_arg) {
-       LDKClosingTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKu8slice ret_var = ClosingTransaction_to_holder_script(&this_arg_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+int8_tArray  __attribute__((visibility("default"))) TS_QueryChannelRange_write(uint32_t obj) {
+       LDKQueryChannelRange obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = QueryChannelRange_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ClosingTransaction_to_counterparty_script(uint32_t this_arg) {
-       LDKClosingTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKu8slice ret_var = ClosingTransaction_to_counterparty_script(&this_arg_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_QueryChannelRange_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_QueryChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ), "LDKCResult_QueryChannelRangeDecodeErrorZ");
+       *ret_conv = QueryChannelRange_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_TrustedClosingTransaction_free(uint32_t this_obj) {
-       LDKTrustedClosingTransaction this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       TrustedClosingTransaction_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ReplyChannelRange_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ReplyChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ), "LDKCResult_ReplyChannelRangeDecodeErrorZ");
+       *ret_conv = ReplyChannelRange_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_TrustedClosingTransaction_built_transaction(uint32_t this_arg) {
-       LDKTrustedClosingTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKTransaction ret_var = TrustedClosingTransaction_built_transaction(&this_arg_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       Transaction_free(ret_var);
+int8_tArray  __attribute__((visibility("default"))) TS_ReplyChannelRange_write(uint32_t obj) {
+       LDKReplyChannelRange obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ReplyChannelRange_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_TrustedClosingTransaction_get_sighash_all(uint32_t this_arg, int8_tArray funding_redeemscript, int64_t channel_value_satoshis) {
-       LDKTrustedClosingTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKu8slice funding_redeemscript_ref;
-       funding_redeemscript_ref.datalen = *((uint32_t*)funding_redeemscript);
-       funding_redeemscript_ref.data = (int8_t*)(funding_redeemscript + 4);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), TrustedClosingTransaction_get_sighash_all(&this_arg_conv, funding_redeemscript_ref, channel_value_satoshis).data, 32);
+int8_tArray  __attribute__((visibility("default"))) TS_GossipTimestampFilter_write(uint32_t obj) {
+       LDKGossipTimestampFilter obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = GossipTimestampFilter_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_TrustedClosingTransaction_sign(uint32_t this_arg, int8_tArray funding_key, int8_tArray funding_redeemscript, int64_t channel_value_satoshis) {
-       LDKTrustedClosingTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       unsigned char funding_key_arr[32];
-       CHECK(*((uint32_t*)funding_key) == 32);
-       memcpy(funding_key_arr, (uint8_t*)(funding_key + 4), 32);
-       unsigned char (*funding_key_ref)[32] = &funding_key_arr;
-       LDKu8slice funding_redeemscript_ref;
-       funding_redeemscript_ref.datalen = *((uint32_t*)funding_redeemscript);
-       funding_redeemscript_ref.data = (int8_t*)(funding_redeemscript + 4);
-       int8_tArray ret_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), TrustedClosingTransaction_sign(&this_arg_conv, funding_key_ref, funding_redeemscript_ref, channel_value_satoshis).compact_form, 64);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_GossipTimestampFilter_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_GossipTimestampFilterDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ), "LDKCResult_GossipTimestampFilterDecodeErrorZ");
+       *ret_conv = GossipTimestampFilter_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_CustomMessageHandler_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKCustomMessageHandler this_ptr_conv = *(LDKCustomMessageHandler*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       CustomMessageHandler_free(this_ptr_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_CommitmentTransaction_free(uint32_t this_obj) {
-       LDKCommitmentTransaction this_obj_conv;
+void  __attribute__((visibility("default"))) TS_IgnoringMessageHandler_free(uint32_t this_obj) {
+       LDKIgnoringMessageHandler this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       CommitmentTransaction_free(this_obj_conv);
-}
-
-static inline uint64_t CommitmentTransaction_clone_ptr(LDKCommitmentTransaction *NONNULL_PTR arg) {
-       LDKCommitmentTransaction ret_var = CommitmentTransaction_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_clone_ptr(uint32_t arg) {
-       LDKCommitmentTransaction arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = CommitmentTransaction_clone_ptr(&arg_conv);
-       return ret_val;
+       IgnoringMessageHandler_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_clone(uint32_t orig) {
-       LDKCommitmentTransaction orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKCommitmentTransaction ret_var = CommitmentTransaction_clone(&orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_IgnoringMessageHandler_new() {
+       LDKIgnoringMessageHandler ret_var = IgnoringMessageHandler_new();
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -30785,69 +28060,56 @@ uint32_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_clone(
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_CommitmentTransaction_write(uint32_t obj) {
-       LDKCommitmentTransaction obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = CommitmentTransaction_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_CommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ), "LDKCResult_CommitmentTransactionDecodeErrorZ");
-       *ret_conv = CommitmentTransaction_read(ser_ref);
-       return (uint64_t)ret_conv;
-}
-
-int64_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_commitment_number(uint32_t this_arg) {
-       LDKCommitmentTransaction this_arg_conv;
+uint32_t  __attribute__((visibility("default"))) TS_IgnoringMessageHandler_as_MessageSendEventsProvider(uint32_t this_arg) {
+       LDKIgnoringMessageHandler this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = CommitmentTransaction_commitment_number(&this_arg_conv);
-       return ret_val;
+       LDKMessageSendEventsProvider* ret_ret = MALLOC(sizeof(LDKMessageSendEventsProvider), "LDKMessageSendEventsProvider");
+       *ret_ret = IgnoringMessageHandler_as_MessageSendEventsProvider(&this_arg_conv);
+       return (uint64_t)ret_ret;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_to_broadcaster_value_sat(uint32_t this_arg) {
-       LDKCommitmentTransaction this_arg_conv;
+uint32_t  __attribute__((visibility("default"))) TS_IgnoringMessageHandler_as_RoutingMessageHandler(uint32_t this_arg) {
+       LDKIgnoringMessageHandler this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = CommitmentTransaction_to_broadcaster_value_sat(&this_arg_conv);
-       return ret_val;
+       LDKRoutingMessageHandler* ret_ret = MALLOC(sizeof(LDKRoutingMessageHandler), "LDKRoutingMessageHandler");
+       *ret_ret = IgnoringMessageHandler_as_RoutingMessageHandler(&this_arg_conv);
+       return (uint64_t)ret_ret;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_to_countersignatory_value_sat(uint32_t this_arg) {
-       LDKCommitmentTransaction this_arg_conv;
+uint32_t  __attribute__((visibility("default"))) TS_IgnoringMessageHandler_as_CustomMessageReader(uint32_t this_arg) {
+       LDKIgnoringMessageHandler this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = CommitmentTransaction_to_countersignatory_value_sat(&this_arg_conv);
-       return ret_val;
+       LDKCustomMessageReader* ret_ret = MALLOC(sizeof(LDKCustomMessageReader), "LDKCustomMessageReader");
+       *ret_ret = IgnoringMessageHandler_as_CustomMessageReader(&this_arg_conv);
+       return (uint64_t)ret_ret;
 }
 
-int32_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_feerate_per_kw(uint32_t this_arg) {
-       LDKCommitmentTransaction this_arg_conv;
+uint32_t  __attribute__((visibility("default"))) TS_IgnoringMessageHandler_as_CustomMessageHandler(uint32_t this_arg) {
+       LDKIgnoringMessageHandler this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int32_t ret_val = CommitmentTransaction_feerate_per_kw(&this_arg_conv);
-       return ret_val;
+       LDKCustomMessageHandler* ret_ret = MALLOC(sizeof(LDKCustomMessageHandler), "LDKCustomMessageHandler");
+       *ret_ret = IgnoringMessageHandler_as_CustomMessageHandler(&this_arg_conv);
+       return (uint64_t)ret_ret;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_trust(uint32_t this_arg) {
-       LDKCommitmentTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKTrustedCommitmentTransaction ret_var = CommitmentTransaction_trust(&this_arg_conv);
+void  __attribute__((visibility("default"))) TS_ErroringMessageHandler_free(uint32_t this_obj) {
+       LDKErroringMessageHandler this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       ErroringMessageHandler_free(this_obj_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ErroringMessageHandler_new() {
+       LDKErroringMessageHandler ret_var = ErroringMessageHandler_new();
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -30859,69 +28121,84 @@ uint32_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_trust(
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_verify(uint32_t this_arg, uint32_t channel_parameters, uint32_t broadcaster_keys, uint32_t countersignatory_keys) {
-       LDKCommitmentTransaction this_arg_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ErroringMessageHandler_as_MessageSendEventsProvider(uint32_t this_arg) {
+       LDKErroringMessageHandler this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKDirectedChannelTransactionParameters channel_parameters_conv;
-       channel_parameters_conv.inner = (void*)(channel_parameters & (~1));
-       channel_parameters_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_parameters_conv);
-       LDKChannelPublicKeys broadcaster_keys_conv;
-       broadcaster_keys_conv.inner = (void*)(broadcaster_keys & (~1));
-       broadcaster_keys_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(broadcaster_keys_conv);
-       LDKChannelPublicKeys countersignatory_keys_conv;
-       countersignatory_keys_conv.inner = (void*)(countersignatory_keys & (~1));
-       countersignatory_keys_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(countersignatory_keys_conv);
-       LDKCResult_TrustedCommitmentTransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ), "LDKCResult_TrustedCommitmentTransactionNoneZ");
-       *ret_conv = CommitmentTransaction_verify(&this_arg_conv, &channel_parameters_conv, &broadcaster_keys_conv, &countersignatory_keys_conv);
-       return (uint64_t)ret_conv;
+       LDKMessageSendEventsProvider* ret_ret = MALLOC(sizeof(LDKMessageSendEventsProvider), "LDKMessageSendEventsProvider");
+       *ret_ret = ErroringMessageHandler_as_MessageSendEventsProvider(&this_arg_conv);
+       return (uint64_t)ret_ret;
 }
 
-void  __attribute__((visibility("default"))) TS_TrustedCommitmentTransaction_free(uint32_t this_obj) {
-       LDKTrustedCommitmentTransaction this_obj_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ErroringMessageHandler_as_ChannelMessageHandler(uint32_t this_arg) {
+       LDKErroringMessageHandler this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKChannelMessageHandler* ret_ret = MALLOC(sizeof(LDKChannelMessageHandler), "LDKChannelMessageHandler");
+       *ret_ret = ErroringMessageHandler_as_ChannelMessageHandler(&this_arg_conv);
+       return (uint64_t)ret_ret;
+}
+
+void  __attribute__((visibility("default"))) TS_MessageHandler_free(uint32_t this_obj) {
+       LDKMessageHandler this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       TrustedCommitmentTransaction_free(this_obj_conv);
+       MessageHandler_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_TrustedCommitmentTransaction_txid(uint32_t this_arg) {
-       LDKTrustedCommitmentTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), TrustedCommitmentTransaction_txid(&this_arg_conv).data, 32);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_MessageHandler_get_chan_handler(uint32_t this_ptr) {
+       LDKMessageHandler this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       // WARNING: This object doesn't live past this scope, needs clone!
+       uint64_t ret_ret = ((uint64_t)MessageHandler_get_chan_handler(&this_ptr_conv)) | 1;
+       return ret_ret;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_TrustedCommitmentTransaction_built_transaction(uint32_t this_arg) {
-       LDKTrustedCommitmentTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKBuiltCommitmentTransaction ret_var = TrustedCommitmentTransaction_built_transaction(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_MessageHandler_set_chan_handler(uint32_t this_ptr, uint32_t val) {
+       LDKMessageHandler this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKChannelMessageHandler val_conv = *(LDKChannelMessageHandler*)(val_ptr);
+       MessageHandler_set_chan_handler(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_TrustedCommitmentTransaction_keys(uint32_t this_arg) {
-       LDKTrustedCommitmentTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKTxCreationKeys ret_var = TrustedCommitmentTransaction_keys(&this_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_MessageHandler_get_route_handler(uint32_t this_ptr) {
+       LDKMessageHandler this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       // WARNING: This object doesn't live past this scope, needs clone!
+       uint64_t ret_ret = ((uint64_t)MessageHandler_get_route_handler(&this_ptr_conv)) | 1;
+       return ret_ret;
+}
+
+void  __attribute__((visibility("default"))) TS_MessageHandler_set_route_handler(uint32_t this_ptr, uint32_t val) {
+       LDKMessageHandler this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKRoutingMessageHandler val_conv = *(LDKRoutingMessageHandler*)(val_ptr);
+       MessageHandler_set_route_handler(&this_ptr_conv, val_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_MessageHandler_new(uint32_t chan_handler_arg, uint32_t route_handler_arg) {
+       void* chan_handler_arg_ptr = (void*)(((uint64_t)chan_handler_arg) & ~1);
+       CHECK_ACCESS(chan_handler_arg_ptr);
+       LDKChannelMessageHandler chan_handler_arg_conv = *(LDKChannelMessageHandler*)(chan_handler_arg_ptr);
+       void* route_handler_arg_ptr = (void*)(((uint64_t)route_handler_arg) & ~1);
+       CHECK_ACCESS(route_handler_arg_ptr);
+       LDKRoutingMessageHandler route_handler_arg_conv = *(LDKRoutingMessageHandler*)(route_handler_arg_ptr);
+       LDKMessageHandler ret_var = MessageHandler_new(chan_handler_arg_conv, route_handler_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -30933,136 +28210,64 @@ uint32_t  __attribute__((visibility("default"))) TS_TrustedCommitmentTransaction
        return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_TrustedCommitmentTransaction_opt_anchors(uint32_t this_arg) {
-       LDKTrustedCommitmentTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       jboolean ret_val = TrustedCommitmentTransaction_opt_anchors(&this_arg_conv);
-       return ret_val;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_TrustedCommitmentTransaction_get_htlc_sigs(uint32_t this_arg, int8_tArray htlc_base_key, uint32_t channel_parameters) {
-       LDKTrustedCommitmentTransaction this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       unsigned char htlc_base_key_arr[32];
-       CHECK(*((uint32_t*)htlc_base_key) == 32);
-       memcpy(htlc_base_key_arr, (uint8_t*)(htlc_base_key + 4), 32);
-       unsigned char (*htlc_base_key_ref)[32] = &htlc_base_key_arr;
-       LDKDirectedChannelTransactionParameters channel_parameters_conv;
-       channel_parameters_conv.inner = (void*)(channel_parameters & (~1));
-       channel_parameters_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_parameters_conv);
-       LDKCResult_CVec_SignatureZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_SignatureZNoneZ), "LDKCResult_CVec_SignatureZNoneZ");
-       *ret_conv = TrustedCommitmentTransaction_get_htlc_sigs(&this_arg_conv, htlc_base_key_ref, &channel_parameters_conv);
-       return (uint64_t)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;
+static inline uint64_t SocketDescriptor_clone_ptr(LDKSocketDescriptor *NONNULL_PTR arg) {
+       LDKSocketDescriptor* ret_ret = MALLOC(sizeof(LDKSocketDescriptor), "LDKSocketDescriptor");
+       *ret_ret = SocketDescriptor_clone(arg);
+       return (uint64_t)ret_ret;
 }
-
-jboolean  __attribute__((visibility("default"))) TS_InitFeatures_eq(uint32_t a, uint32_t b) {
-       LDKInitFeatures a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKInitFeatures b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = InitFeatures_eq(&a_conv, &b_conv);
+int64_t  __attribute__((visibility("default"))) TS_SocketDescriptor_clone_ptr(uint32_t arg) {
+       void* arg_ptr = (void*)(((uint64_t)arg) & ~1);
+       if (!(arg & 1)) { CHECK_ACCESS(arg_ptr); }
+       LDKSocketDescriptor* arg_conv = (LDKSocketDescriptor*)arg_ptr;
+       int64_t ret_val = SocketDescriptor_clone_ptr(arg_conv);
        return ret_val;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_NodeFeatures_eq(uint32_t a, uint32_t b) {
-       LDKNodeFeatures a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKNodeFeatures b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = NodeFeatures_eq(&a_conv, &b_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_SocketDescriptor_clone(uint32_t orig) {
+       void* orig_ptr = (void*)(((uint64_t)orig) & ~1);
+       if (!(orig & 1)) { CHECK_ACCESS(orig_ptr); }
+       LDKSocketDescriptor* orig_conv = (LDKSocketDescriptor*)orig_ptr;
+       LDKSocketDescriptor* ret_ret = MALLOC(sizeof(LDKSocketDescriptor), "LDKSocketDescriptor");
+       *ret_ret = SocketDescriptor_clone(orig_conv);
+       return (uint64_t)ret_ret;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelFeatures_eq(uint32_t a, uint32_t b) {
-       LDKChannelFeatures a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKChannelFeatures b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = ChannelFeatures_eq(&a_conv, &b_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_SocketDescriptor_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKSocketDescriptor this_ptr_conv = *(LDKSocketDescriptor*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       SocketDescriptor_free(this_ptr_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_InvoiceFeatures_eq(uint32_t a, uint32_t b) {
-       LDKInvoiceFeatures a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKInvoiceFeatures b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = InvoiceFeatures_eq(&a_conv, &b_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_PeerHandleError_free(uint32_t this_obj) {
+       LDKPeerHandleError this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       PeerHandleError_free(this_obj_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_eq(uint32_t a, uint32_t b) {
-       LDKChannelTypeFeatures a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKChannelTypeFeatures b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = ChannelTypeFeatures_eq(&a_conv, &b_conv);
+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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       jboolean ret_val = PeerHandleError_get_no_connection_possible(&this_ptr_conv);
        return ret_val;
 }
 
-static inline uint64_t InitFeatures_clone_ptr(LDKInitFeatures *NONNULL_PTR arg) {
-       LDKInitFeatures ret_var = InitFeatures_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_InitFeatures_clone_ptr(uint32_t arg) {
-       LDKInitFeatures arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = InitFeatures_clone_ptr(&arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_PeerHandleError_set_no_connection_possible(uint32_t this_ptr, jboolean val) {
+       LDKPeerHandleError this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       PeerHandleError_set_no_connection_possible(&this_ptr_conv, 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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKInitFeatures ret_var = InitFeatures_clone(&orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_PeerHandleError_new(jboolean no_connection_possible_arg) {
+       LDKPeerHandleError ret_var = PeerHandleError_new(no_connection_possible_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -31074,8 +28279,8 @@ uint32_t  __attribute__((visibility("default"))) TS_InitFeatures_clone(uint32_t
        return ret_ref;
 }
 
-static inline uint64_t NodeFeatures_clone_ptr(LDKNodeFeatures *NONNULL_PTR arg) {
-       LDKNodeFeatures ret_var = NodeFeatures_clone(arg);
+static inline uint64_t PeerHandleError_clone_ptr(LDKPeerHandleError *NONNULL_PTR arg) {
+       LDKPeerHandleError ret_var = PeerHandleError_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -31086,21 +28291,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_NodeFeatures_clone_ptr(uint32_t arg) {
-       LDKNodeFeatures arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_PeerHandleError_clone_ptr(uint32_t arg) {
+       LDKPeerHandleError arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = NodeFeatures_clone_ptr(&arg_conv);
+       int64_t ret_val = PeerHandleError_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NodeFeatures_clone(uint32_t orig) {
-       LDKNodeFeatures orig_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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKNodeFeatures ret_var = NodeFeatures_clone(&orig_conv);
+       LDKPeerHandleError ret_var = PeerHandleError_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -31112,33 +28317,34 @@ uint32_t  __attribute__((visibility("default"))) TS_NodeFeatures_clone(uint32_t
        return ret_ref;
 }
 
-static inline uint64_t ChannelFeatures_clone_ptr(LDKChannelFeatures *NONNULL_PTR arg) {
-       LDKChannelFeatures ret_var = ChannelFeatures_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_ChannelFeatures_clone_ptr(uint32_t arg) {
-       LDKChannelFeatures arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelFeatures_clone_ptr(&arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_PeerManager_free(uint32_t this_obj) {
+       LDKPeerManager this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       PeerManager_free(this_obj_conv);
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelFeatures ret_var = ChannelFeatures_clone(&orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_PeerManager_new(uint32_t message_handler, int8_tArray our_node_secret, int8_tArray ephemeral_random_data, uint32_t logger, uint32_t custom_message_handler) {
+       LDKMessageHandler message_handler_conv;
+       message_handler_conv.inner = (void*)(message_handler & (~1));
+       message_handler_conv.is_owned = (message_handler & 1) || (message_handler == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(message_handler_conv);
+       // Warning: we need a move here but no clone is available for LDKMessageHandler
+       LDKSecretKey our_node_secret_ref;
+       CHECK(our_node_secret->arr_len == 32);
+       memcpy(our_node_secret_ref.bytes, our_node_secret->elems, 32);
+       unsigned char ephemeral_random_data_arr[32];
+       CHECK(ephemeral_random_data->arr_len == 32);
+       memcpy(ephemeral_random_data_arr, ephemeral_random_data->elems, 32);
+       unsigned char (*ephemeral_random_data_ref)[32] = &ephemeral_random_data_arr;
+       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
+       CHECK_ACCESS(logger_ptr);
+       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
+       void* custom_message_handler_ptr = (void*)(((uint64_t)custom_message_handler) & ~1);
+       CHECK_ACCESS(custom_message_handler_ptr);
+       LDKCustomMessageHandler custom_message_handler_conv = *(LDKCustomMessageHandler*)(custom_message_handler_ptr);
+       LDKPeerManager ret_var = PeerManager_new(message_handler_conv, our_node_secret_ref, ephemeral_random_data_ref, logger_conv, custom_message_handler_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -31150,242 +28356,351 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelFeatures_clone(uint32
        return ret_ref;
 }
 
-static inline uint64_t InvoiceFeatures_clone_ptr(LDKInvoiceFeatures *NONNULL_PTR arg) {
-       LDKInvoiceFeatures ret_var = InvoiceFeatures_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
+ptrArray  __attribute__((visibility("default"))) TS_PeerManager_get_peer_node_ids(uint32_t this_arg) {
+       LDKPeerManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKCVec_PublicKeyZ ret_var = PeerManager_get_peer_node_ids(&this_arg_conv);
+       ptrArray ret_arr = NULL;
+       ret_arr = init_ptrArray(ret_var.datalen);
+       int8_tArray *ret_arr_ptr = (int8_tArray*)(ret_arr + 4);
+       for (size_t m = 0; m < ret_var.datalen; m++) {
+               int8_tArray ret_conv_12_arr = init_int8_tArray(33);
+               memcpy(ret_conv_12_arr->elems, ret_var.data[m].compressed_form, 33);
+               ret_arr_ptr[m] = ret_conv_12_arr;
+       }
+       
+       FREE(ret_var.data);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_PeerManager_new_outbound_connection(uint32_t this_arg, int8_tArray their_node_id, uint32_t descriptor) {
+       LDKPeerManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKPublicKey their_node_id_ref;
+       CHECK(their_node_id->arr_len == 33);
+       memcpy(their_node_id_ref.compressed_form, their_node_id->elems, 33);
+       void* descriptor_ptr = (void*)(((uint64_t)descriptor) & ~1);
+       CHECK_ACCESS(descriptor_ptr);
+       LDKSocketDescriptor descriptor_conv = *(LDKSocketDescriptor*)(descriptor_ptr);
+       LDKCResult_CVec_u8ZPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ), "LDKCResult_CVec_u8ZPeerHandleErrorZ");
+       *ret_conv = PeerManager_new_outbound_connection(&this_arg_conv, their_node_id_ref, descriptor_conv);
+       return (uint64_t)ret_conv;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_PeerManager_new_inbound_connection(uint32_t this_arg, uint32_t descriptor) {
+       LDKPeerManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       void* descriptor_ptr = (void*)(((uint64_t)descriptor) & ~1);
+       CHECK_ACCESS(descriptor_ptr);
+       LDKSocketDescriptor descriptor_conv = *(LDKSocketDescriptor*)(descriptor_ptr);
+       LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ");
+       *ret_conv = PeerManager_new_inbound_connection(&this_arg_conv, descriptor_conv);
+       return (uint64_t)ret_conv;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_PeerManager_write_buffer_space_avail(uint32_t this_arg, uint32_t descriptor) {
+       LDKPeerManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       void* descriptor_ptr = (void*)(((uint64_t)descriptor) & ~1);
+       if (!(descriptor & 1)) { CHECK_ACCESS(descriptor_ptr); }
+       LDKSocketDescriptor* descriptor_conv = (LDKSocketDescriptor*)descriptor_ptr;
+       LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ");
+       *ret_conv = PeerManager_write_buffer_space_avail(&this_arg_conv, descriptor_conv);
+       return (uint64_t)ret_conv;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_PeerManager_read_event(uint32_t this_arg, uint32_t peer_descriptor, int8_tArray data) {
+       LDKPeerManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       void* peer_descriptor_ptr = (void*)(((uint64_t)peer_descriptor) & ~1);
+       if (!(peer_descriptor & 1)) { CHECK_ACCESS(peer_descriptor_ptr); }
+       LDKSocketDescriptor* peer_descriptor_conv = (LDKSocketDescriptor*)peer_descriptor_ptr;
+       LDKu8slice data_ref;
+       data_ref.datalen = data->arr_len;
+       data_ref.data = data->elems;
+       LDKCResult_boolPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolPeerHandleErrorZ), "LDKCResult_boolPeerHandleErrorZ");
+       *ret_conv = PeerManager_read_event(&this_arg_conv, peer_descriptor_conv, data_ref);
+       return (uint64_t)ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_PeerManager_process_events(uint32_t this_arg) {
+       LDKPeerManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       PeerManager_process_events(&this_arg_conv);
+}
+
+void  __attribute__((visibility("default"))) TS_PeerManager_socket_disconnected(uint32_t this_arg, uint32_t descriptor) {
+       LDKPeerManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       void* descriptor_ptr = (void*)(((uint64_t)descriptor) & ~1);
+       if (!(descriptor & 1)) { CHECK_ACCESS(descriptor_ptr); }
+       LDKSocketDescriptor* descriptor_conv = (LDKSocketDescriptor*)descriptor_ptr;
+       PeerManager_socket_disconnected(&this_arg_conv, descriptor_conv);
 }
-int64_t  __attribute__((visibility("default"))) TS_InvoiceFeatures_clone_ptr(uint32_t arg) {
-       LDKInvoiceFeatures arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = InvoiceFeatures_clone_ptr(&arg_conv);
-       return ret_val;
+
+void  __attribute__((visibility("default"))) TS_PeerManager_disconnect_by_node_id(uint32_t this_arg, int8_tArray node_id, jboolean no_connection_possible) {
+       LDKPeerManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       PeerManager_disconnect_by_node_id(&this_arg_conv, node_id_ref, no_connection_possible);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InvoiceFeatures_clone(uint32_t orig) {
-       LDKInvoiceFeatures orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKInvoiceFeatures ret_var = InvoiceFeatures_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_PeerManager_disconnect_all_peers(uint32_t this_arg) {
+       LDKPeerManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       PeerManager_disconnect_all_peers(&this_arg_conv);
 }
 
-static inline uint64_t ChannelTypeFeatures_clone_ptr(LDKChannelTypeFeatures *NONNULL_PTR arg) {
-       LDKChannelTypeFeatures ret_var = ChannelTypeFeatures_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
+void  __attribute__((visibility("default"))) TS_PeerManager_timer_tick_occurred(uint32_t this_arg) {
+       LDKPeerManager this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       PeerManager_timer_tick_occurred(&this_arg_conv);
 }
-       return ret_ref;
+
+int64_t  __attribute__((visibility("default"))) TS_htlc_success_tx_weight(jboolean opt_anchors) {
+       int64_t ret_val = htlc_success_tx_weight(opt_anchors);
+       return ret_val;
 }
-int64_t  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_clone_ptr(uint32_t arg) {
-       LDKChannelTypeFeatures arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelTypeFeatures_clone_ptr(&arg_conv);
+
+int64_t  __attribute__((visibility("default"))) TS_htlc_timeout_tx_weight(jboolean opt_anchors) {
+       int64_t ret_val = htlc_timeout_tx_weight(opt_anchors);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_clone(uint32_t orig) {
-       LDKChannelTypeFeatures orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelTypeFeatures ret_var = ChannelTypeFeatures_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_build_commitment_secret(int8_tArray commitment_seed, int64_t idx) {
+       unsigned char commitment_seed_arr[32];
+       CHECK(commitment_seed->arr_len == 32);
+       memcpy(commitment_seed_arr, commitment_seed->elems, 32);
+       unsigned char (*commitment_seed_ref)[32] = &commitment_seed_arr;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, build_commitment_secret(commitment_seed_ref, idx).data, 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_InitFeatures_free(uint32_t this_obj) {
-       LDKInitFeatures this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       InitFeatures_free(this_obj_conv);
+int8_tArray  __attribute__((visibility("default"))) TS_build_closing_transaction(int64_t to_holder_value_sat, int64_t to_counterparty_value_sat, int8_tArray to_holder_script, int8_tArray to_counterparty_script, uint32_t funding_outpoint) {
+       LDKCVec_u8Z to_holder_script_ref;
+       to_holder_script_ref.datalen = to_holder_script->arr_len;
+       to_holder_script_ref.data = MALLOC(to_holder_script_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(to_holder_script_ref.data, to_holder_script->elems, to_holder_script_ref.datalen);
+       LDKCVec_u8Z to_counterparty_script_ref;
+       to_counterparty_script_ref.datalen = to_counterparty_script->arr_len;
+       to_counterparty_script_ref.data = MALLOC(to_counterparty_script_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(to_counterparty_script_ref.data, to_counterparty_script->elems, to_counterparty_script_ref.datalen);
+       LDKOutPoint funding_outpoint_conv;
+       funding_outpoint_conv.inner = (void*)(funding_outpoint & (~1));
+       funding_outpoint_conv.is_owned = (funding_outpoint & 1) || (funding_outpoint == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_outpoint_conv);
+       funding_outpoint_conv = OutPoint_clone(&funding_outpoint_conv);
+       LDKTransaction ret_var = build_closing_transaction(to_holder_value_sat, to_counterparty_value_sat, to_holder_script_ref, to_counterparty_script_ref, funding_outpoint_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       Transaction_free(ret_var);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_NodeFeatures_free(uint32_t this_obj) {
-       LDKNodeFeatures this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       NodeFeatures_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_derive_private_key(int8_tArray per_commitment_point, int8_tArray base_secret) {
+       LDKPublicKey per_commitment_point_ref;
+       CHECK(per_commitment_point->arr_len == 33);
+       memcpy(per_commitment_point_ref.compressed_form, per_commitment_point->elems, 33);
+       unsigned char base_secret_arr[32];
+       CHECK(base_secret->arr_len == 32);
+       memcpy(base_secret_arr, base_secret->elems, 32);
+       unsigned char (*base_secret_ref)[32] = &base_secret_arr;
+       LDKCResult_SecretKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SecretKeyErrorZ), "LDKCResult_SecretKeyErrorZ");
+       *ret_conv = derive_private_key(per_commitment_point_ref, base_secret_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelFeatures_free(uint32_t this_obj) {
-       LDKChannelFeatures this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelFeatures_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_derive_public_key(int8_tArray per_commitment_point, int8_tArray base_point) {
+       LDKPublicKey per_commitment_point_ref;
+       CHECK(per_commitment_point->arr_len == 33);
+       memcpy(per_commitment_point_ref.compressed_form, per_commitment_point->elems, 33);
+       LDKPublicKey base_point_ref;
+       CHECK(base_point->arr_len == 33);
+       memcpy(base_point_ref.compressed_form, base_point->elems, 33);
+       LDKCResult_PublicKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeyErrorZ), "LDKCResult_PublicKeyErrorZ");
+       *ret_conv = derive_public_key(per_commitment_point_ref, base_point_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_InvoiceFeatures_free(uint32_t this_obj) {
-       LDKInvoiceFeatures this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       InvoiceFeatures_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_derive_private_revocation_key(int8_tArray per_commitment_secret, int8_tArray countersignatory_revocation_base_secret) {
+       unsigned char per_commitment_secret_arr[32];
+       CHECK(per_commitment_secret->arr_len == 32);
+       memcpy(per_commitment_secret_arr, per_commitment_secret->elems, 32);
+       unsigned char (*per_commitment_secret_ref)[32] = &per_commitment_secret_arr;
+       unsigned char countersignatory_revocation_base_secret_arr[32];
+       CHECK(countersignatory_revocation_base_secret->arr_len == 32);
+       memcpy(countersignatory_revocation_base_secret_arr, countersignatory_revocation_base_secret->elems, 32);
+       unsigned char (*countersignatory_revocation_base_secret_ref)[32] = &countersignatory_revocation_base_secret_arr;
+       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 (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_free(uint32_t this_obj) {
-       LDKChannelTypeFeatures this_obj_conv;
+uint32_t  __attribute__((visibility("default"))) TS_derive_public_revocation_key(int8_tArray per_commitment_point, int8_tArray countersignatory_revocation_base_point) {
+       LDKPublicKey per_commitment_point_ref;
+       CHECK(per_commitment_point->arr_len == 33);
+       memcpy(per_commitment_point_ref.compressed_form, per_commitment_point->elems, 33);
+       LDKPublicKey countersignatory_revocation_base_point_ref;
+       CHECK(countersignatory_revocation_base_point->arr_len == 33);
+       memcpy(countersignatory_revocation_base_point_ref.compressed_form, countersignatory_revocation_base_point->elems, 33);
+       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 (uint64_t)ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_TxCreationKeys_free(uint32_t this_obj) {
+       LDKTxCreationKeys this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelTypeFeatures_free(this_obj_conv);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_InitFeatures_empty() {
-       LDKInitFeatures ret_var = InitFeatures_empty();
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       TxCreationKeys_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InitFeatures_known() {
-       LDKInitFeatures ret_var = InitFeatures_known();
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, TxCreationKeys_get_per_commitment_point(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_InitFeatures_requires_unknown_bits(uint32_t this_arg) {
-       LDKInitFeatures this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       jboolean ret_val = InitFeatures_requires_unknown_bits(&this_arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_TxCreationKeys_set_per_commitment_point(uint32_t this_ptr, int8_tArray val) {
+       LDKTxCreationKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       TxCreationKeys_set_per_commitment_point(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NodeFeatures_empty() {
-       LDKNodeFeatures ret_var = NodeFeatures_empty();
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_TxCreationKeys_get_revocation_key(uint32_t this_ptr) {
+       LDKTxCreationKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, TxCreationKeys_get_revocation_key(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NodeFeatures_known() {
-       LDKNodeFeatures ret_var = NodeFeatures_known();
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_TxCreationKeys_set_revocation_key(uint32_t this_ptr, int8_tArray val) {
+       LDKTxCreationKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       TxCreationKeys_set_revocation_key(&this_ptr_conv, val_ref);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_NodeFeatures_requires_unknown_bits(uint32_t this_arg) {
-       LDKNodeFeatures this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       jboolean ret_val = NodeFeatures_requires_unknown_bits(&this_arg_conv);
-       return ret_val;
+int8_tArray  __attribute__((visibility("default"))) TS_TxCreationKeys_get_broadcaster_htlc_key(uint32_t this_ptr) {
+       LDKTxCreationKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, TxCreationKeys_get_broadcaster_htlc_key(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelFeatures_empty() {
-       LDKChannelFeatures ret_var = ChannelFeatures_empty();
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_TxCreationKeys_set_broadcaster_htlc_key(uint32_t this_ptr, int8_tArray val) {
+       LDKTxCreationKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       TxCreationKeys_set_broadcaster_htlc_key(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelFeatures_known() {
-       LDKChannelFeatures ret_var = ChannelFeatures_known();
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_TxCreationKeys_get_countersignatory_htlc_key(uint32_t this_ptr) {
+       LDKTxCreationKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, TxCreationKeys_get_countersignatory_htlc_key(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelFeatures_requires_unknown_bits(uint32_t this_arg) {
-       LDKChannelFeatures this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       jboolean ret_val = ChannelFeatures_requires_unknown_bits(&this_arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_TxCreationKeys_set_countersignatory_htlc_key(uint32_t this_ptr, int8_tArray val) {
+       LDKTxCreationKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       TxCreationKeys_set_countersignatory_htlc_key(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InvoiceFeatures_empty() {
-       LDKInvoiceFeatures ret_var = InvoiceFeatures_empty();
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_TxCreationKeys_get_broadcaster_delayed_payment_key(uint32_t this_ptr) {
+       LDKTxCreationKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, TxCreationKeys_get_broadcaster_delayed_payment_key(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InvoiceFeatures_known() {
-       LDKInvoiceFeatures ret_var = InvoiceFeatures_known();
+void  __attribute__((visibility("default"))) TS_TxCreationKeys_set_broadcaster_delayed_payment_key(uint32_t this_ptr, int8_tArray val) {
+       LDKTxCreationKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       TxCreationKeys_set_broadcaster_delayed_payment_key(&this_ptr_conv, val_ref);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_TxCreationKeys_new(int8_tArray per_commitment_point_arg, int8_tArray revocation_key_arg, int8_tArray broadcaster_htlc_key_arg, int8_tArray countersignatory_htlc_key_arg, int8_tArray broadcaster_delayed_payment_key_arg) {
+       LDKPublicKey per_commitment_point_arg_ref;
+       CHECK(per_commitment_point_arg->arr_len == 33);
+       memcpy(per_commitment_point_arg_ref.compressed_form, per_commitment_point_arg->elems, 33);
+       LDKPublicKey revocation_key_arg_ref;
+       CHECK(revocation_key_arg->arr_len == 33);
+       memcpy(revocation_key_arg_ref.compressed_form, revocation_key_arg->elems, 33);
+       LDKPublicKey broadcaster_htlc_key_arg_ref;
+       CHECK(broadcaster_htlc_key_arg->arr_len == 33);
+       memcpy(broadcaster_htlc_key_arg_ref.compressed_form, broadcaster_htlc_key_arg->elems, 33);
+       LDKPublicKey countersignatory_htlc_key_arg_ref;
+       CHECK(countersignatory_htlc_key_arg->arr_len == 33);
+       memcpy(countersignatory_htlc_key_arg_ref.compressed_form, countersignatory_htlc_key_arg->elems, 33);
+       LDKPublicKey broadcaster_delayed_payment_key_arg_ref;
+       CHECK(broadcaster_delayed_payment_key_arg->arr_len == 33);
+       memcpy(broadcaster_delayed_payment_key_arg_ref.compressed_form, broadcaster_delayed_payment_key_arg->elems, 33);
+       LDKTxCreationKeys ret_var = TxCreationKeys_new(per_commitment_point_arg_ref, revocation_key_arg_ref, broadcaster_htlc_key_arg_ref, countersignatory_htlc_key_arg_ref, broadcaster_delayed_payment_key_arg_ref);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -31397,30 +28712,33 @@ uint32_t  __attribute__((visibility("default"))) TS_InvoiceFeatures_known() {
        return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_InvoiceFeatures_requires_unknown_bits(uint32_t this_arg) {
-       LDKInvoiceFeatures this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       jboolean ret_val = InvoiceFeatures_requires_unknown_bits(&this_arg_conv);
-       return ret_val;
+static inline uint64_t TxCreationKeys_clone_ptr(LDKTxCreationKeys *NONNULL_PTR arg) {
+       LDKTxCreationKeys ret_var = TxCreationKeys_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_empty() {
-       LDKChannelTypeFeatures ret_var = ChannelTypeFeatures_empty();
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
        return ret_ref;
 }
+int64_t  __attribute__((visibility("default"))) TS_TxCreationKeys_clone_ptr(uint32_t arg) {
+       LDKTxCreationKeys arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = TxCreationKeys_clone_ptr(&arg_conv);
+       return ret_val;
+}
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_known() {
-       LDKChannelTypeFeatures ret_var = ChannelTypeFeatures_known();
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKTxCreationKeys ret_var = TxCreationKeys_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -31432,203 +28750,157 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_known()
        return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_requires_unknown_bits(uint32_t this_arg) {
-       LDKChannelTypeFeatures this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       jboolean ret_val = ChannelTypeFeatures_requires_unknown_bits(&this_arg_conv);
-       return ret_val;
-}
-
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = InitFeatures_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-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 (uint64_t)ret_conv;
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelFeatures_write(uint32_t obj) {
-       LDKChannelFeatures obj_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_TxCreationKeys_write(uint32_t obj) {
+       LDKTxCreationKeys obj_conv;
        obj_conv.inner = (void*)(obj & (~1));
        obj_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ChannelFeatures_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       LDKCVec_u8Z ret_var = TxCreationKeys_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelFeatures_read(int8_tArray ser) {
+uint32_t  __attribute__((visibility("default"))) TS_TxCreationKeys_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);
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_TxCreationKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysDecodeErrorZ), "LDKCResult_TxCreationKeysDecodeErrorZ");
+       *ret_conv = TxCreationKeys_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = NodeFeatures_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-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 (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_ChannelPublicKeys_free(uint32_t this_obj) {
+       LDKChannelPublicKeys this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       ChannelPublicKeys_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_InvoiceFeatures_write(uint32_t obj) {
-       LDKInvoiceFeatures obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = InvoiceFeatures_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, ChannelPublicKeys_get_funding_pubkey(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InvoiceFeatures_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_InvoiceFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ), "LDKCResult_InvoiceFeaturesDecodeErrorZ");
-       *ret_conv = InvoiceFeatures_read(ser_ref);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_ChannelPublicKeys_set_funding_pubkey(uint32_t this_ptr, int8_tArray val) {
+       LDKChannelPublicKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       ChannelPublicKeys_set_funding_pubkey(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_write(uint32_t obj) {
-       LDKChannelTypeFeatures obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ChannelTypeFeatures_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelPublicKeys_get_revocation_basepoint(uint32_t this_ptr) {
+       LDKChannelPublicKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, ChannelPublicKeys_get_revocation_basepoint(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ChannelTypeFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ), "LDKCResult_ChannelTypeFeaturesDecodeErrorZ");
-       *ret_conv = ChannelTypeFeatures_read(ser_ref);
-       return (uint64_t)ret_conv;
-}
-
-void  __attribute__((visibility("default"))) TS_ShutdownScript_free(uint32_t this_obj) {
-       LDKShutdownScript this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ShutdownScript_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_ChannelPublicKeys_set_revocation_basepoint(uint32_t this_ptr, int8_tArray val) {
+       LDKChannelPublicKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       ChannelPublicKeys_set_revocation_basepoint(&this_ptr_conv, val_ref);
 }
 
-static inline uint64_t ShutdownScript_clone_ptr(LDKShutdownScript *NONNULL_PTR arg) {
-       LDKShutdownScript ret_var = ShutdownScript_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelPublicKeys_get_payment_point(uint32_t this_ptr) {
+       LDKChannelPublicKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, ChannelPublicKeys_get_payment_point(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
-int64_t  __attribute__((visibility("default"))) TS_ShutdownScript_clone_ptr(uint32_t arg) {
-       LDKShutdownScript arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ShutdownScript_clone_ptr(&arg_conv);
-       return ret_val;
+
+void  __attribute__((visibility("default"))) TS_ChannelPublicKeys_set_payment_point(uint32_t this_ptr, int8_tArray val) {
+       LDKChannelPublicKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       ChannelPublicKeys_set_payment_point(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ShutdownScript_clone(uint32_t orig) {
-       LDKShutdownScript orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKShutdownScript ret_var = ShutdownScript_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelPublicKeys_get_delayed_payment_basepoint(uint32_t this_ptr) {
+       LDKChannelPublicKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, ChannelPublicKeys_get_delayed_payment_basepoint(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_InvalidShutdownScript_free(uint32_t this_obj) {
-       LDKInvalidShutdownScript this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       InvalidShutdownScript_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_ChannelPublicKeys_set_delayed_payment_basepoint(uint32_t this_ptr, int8_tArray val) {
+       LDKChannelPublicKeys this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       ChannelPublicKeys_set_delayed_payment_basepoint(&this_ptr_conv, val_ref);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_InvalidShutdownScript_get_script(uint32_t this_ptr) {
-       LDKInvalidShutdownScript this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelPublicKeys_get_htlc_basepoint(uint32_t this_ptr) {
+       LDKChannelPublicKeys this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKu8slice ret_var = InvalidShutdownScript_get_script(&this_ptr_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, ChannelPublicKeys_get_htlc_basepoint(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_InvalidShutdownScript_set_script(uint32_t this_ptr, int8_tArray val) {
-       LDKInvalidShutdownScript this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelPublicKeys_set_htlc_basepoint(uint32_t this_ptr, int8_tArray val) {
+       LDKChannelPublicKeys this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_u8Z val_ref;
-       val_ref.datalen = *((uint32_t*)val);
-       val_ref.data = MALLOC(val_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(val_ref.data, (uint8_t*)(val + 4), val_ref.datalen);
-       InvalidShutdownScript_set_script(&this_ptr_conv, val_ref);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       ChannelPublicKeys_set_htlc_basepoint(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InvalidShutdownScript_new(int8_tArray script_arg) {
-       LDKCVec_u8Z script_arg_ref;
-       script_arg_ref.datalen = *((uint32_t*)script_arg);
-       script_arg_ref.data = MALLOC(script_arg_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(script_arg_ref.data, (uint8_t*)(script_arg + 4), script_arg_ref.datalen);
-       LDKInvalidShutdownScript ret_var = InvalidShutdownScript_new(script_arg_ref);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelPublicKeys_new(int8_tArray funding_pubkey_arg, int8_tArray revocation_basepoint_arg, int8_tArray payment_point_arg, int8_tArray delayed_payment_basepoint_arg, int8_tArray htlc_basepoint_arg) {
+       LDKPublicKey funding_pubkey_arg_ref;
+       CHECK(funding_pubkey_arg->arr_len == 33);
+       memcpy(funding_pubkey_arg_ref.compressed_form, funding_pubkey_arg->elems, 33);
+       LDKPublicKey revocation_basepoint_arg_ref;
+       CHECK(revocation_basepoint_arg->arr_len == 33);
+       memcpy(revocation_basepoint_arg_ref.compressed_form, revocation_basepoint_arg->elems, 33);
+       LDKPublicKey payment_point_arg_ref;
+       CHECK(payment_point_arg->arr_len == 33);
+       memcpy(payment_point_arg_ref.compressed_form, payment_point_arg->elems, 33);
+       LDKPublicKey delayed_payment_basepoint_arg_ref;
+       CHECK(delayed_payment_basepoint_arg->arr_len == 33);
+       memcpy(delayed_payment_basepoint_arg_ref.compressed_form, delayed_payment_basepoint_arg->elems, 33);
+       LDKPublicKey htlc_basepoint_arg_ref;
+       CHECK(htlc_basepoint_arg->arr_len == 33);
+       memcpy(htlc_basepoint_arg_ref.compressed_form, htlc_basepoint_arg->elems, 33);
+       LDKChannelPublicKeys ret_var = ChannelPublicKeys_new(funding_pubkey_arg_ref, revocation_basepoint_arg_ref, payment_point_arg_ref, delayed_payment_basepoint_arg_ref, htlc_basepoint_arg_ref);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -31640,8 +28912,8 @@ uint32_t  __attribute__((visibility("default"))) TS_InvalidShutdownScript_new(in
        return ret_ref;
 }
 
-static inline uint64_t InvalidShutdownScript_clone_ptr(LDKInvalidShutdownScript *NONNULL_PTR arg) {
-       LDKInvalidShutdownScript ret_var = InvalidShutdownScript_clone(arg);
+static inline uint64_t ChannelPublicKeys_clone_ptr(LDKChannelPublicKeys *NONNULL_PTR arg) {
+       LDKChannelPublicKeys ret_var = ChannelPublicKeys_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -31652,21 +28924,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_InvalidShutdownScript_clone_ptr(uint32_t arg) {
-       LDKInvalidShutdownScript arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelPublicKeys_clone_ptr(uint32_t arg) {
+       LDKChannelPublicKeys arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = InvalidShutdownScript_clone_ptr(&arg_conv);
+       int64_t ret_val = ChannelPublicKeys_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InvalidShutdownScript_clone(uint32_t orig) {
-       LDKInvalidShutdownScript orig_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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKInvalidShutdownScript ret_var = InvalidShutdownScript_clone(&orig_conv);
+       LDKChannelPublicKeys ret_var = ChannelPublicKeys_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -31678,197 +28950,191 @@ uint32_t  __attribute__((visibility("default"))) TS_InvalidShutdownScript_clone(
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ShutdownScript_write(uint32_t obj) {
-       LDKShutdownScript obj_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelPublicKeys_write(uint32_t obj) {
+       LDKChannelPublicKeys obj_conv;
        obj_conv.inner = (void*)(obj & (~1));
        obj_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ShutdownScript_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       LDKCVec_u8Z ret_var = ChannelPublicKeys_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ShutdownScript_read(int8_tArray ser) {
+uint32_t  __attribute__((visibility("default"))) TS_ChannelPublicKeys_read(int8_tArray ser) {
        LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ShutdownScriptDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptDecodeErrorZ), "LDKCResult_ShutdownScriptDecodeErrorZ");
-       *ret_conv = ShutdownScript_read(ser_ref);
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ChannelPublicKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ), "LDKCResult_ChannelPublicKeysDecodeErrorZ");
+       *ret_conv = ChannelPublicKeys_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ShutdownScript_new_p2wpkh(int8_tArray pubkey_hash) {
-       unsigned char pubkey_hash_arr[20];
-       CHECK(*((uint32_t*)pubkey_hash) == 20);
-       memcpy(pubkey_hash_arr, (uint8_t*)(pubkey_hash + 4), 20);
-       unsigned char (*pubkey_hash_ref)[20] = &pubkey_hash_arr;
-       LDKShutdownScript ret_var = ShutdownScript_new_p2wpkh(pubkey_hash_ref);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ShutdownScript_new_p2wsh(int8_tArray script_hash) {
-       unsigned char script_hash_arr[32];
-       CHECK(*((uint32_t*)script_hash) == 32);
-       memcpy(script_hash_arr, (uint8_t*)(script_hash + 4), 32);
-       unsigned char (*script_hash_ref)[32] = &script_hash_arr;
-       LDKShutdownScript ret_var = ShutdownScript_new_p2wsh(script_hash_ref);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+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) {
+       LDKPublicKey per_commitment_point_ref;
+       CHECK(per_commitment_point->arr_len == 33);
+       memcpy(per_commitment_point_ref.compressed_form, per_commitment_point->elems, 33);
+       LDKPublicKey broadcaster_delayed_payment_base_ref;
+       CHECK(broadcaster_delayed_payment_base->arr_len == 33);
+       memcpy(broadcaster_delayed_payment_base_ref.compressed_form, broadcaster_delayed_payment_base->elems, 33);
+       LDKPublicKey broadcaster_htlc_base_ref;
+       CHECK(broadcaster_htlc_base->arr_len == 33);
+       memcpy(broadcaster_htlc_base_ref.compressed_form, broadcaster_htlc_base->elems, 33);
+       LDKPublicKey countersignatory_revocation_base_ref;
+       CHECK(countersignatory_revocation_base->arr_len == 33);
+       memcpy(countersignatory_revocation_base_ref.compressed_form, countersignatory_revocation_base->elems, 33);
+       LDKPublicKey countersignatory_htlc_base_ref;
+       CHECK(countersignatory_htlc_base->arr_len == 33);
+       memcpy(countersignatory_htlc_base_ref.compressed_form, countersignatory_htlc_base->elems, 33);
+       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 (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ShutdownScript_new_witness_program(int8_t version, int8_tArray program) {
-       LDKu8slice program_ref;
-       program_ref.datalen = *((uint32_t*)program);
-       program_ref.data = (int8_t*)(program + 4);
-       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ), "LDKCResult_ShutdownScriptInvalidShutdownScriptZ");
-       *ret_conv = ShutdownScript_new_witness_program(version, program_ref);
+uint32_t  __attribute__((visibility("default"))) TS_TxCreationKeys_from_channel_static_keys(int8_tArray per_commitment_point, uint32_t broadcaster_keys, uint32_t countersignatory_keys) {
+       LDKPublicKey per_commitment_point_ref;
+       CHECK(per_commitment_point->arr_len == 33);
+       memcpy(per_commitment_point_ref.compressed_form, per_commitment_point->elems, 33);
+       LDKChannelPublicKeys broadcaster_keys_conv;
+       broadcaster_keys_conv.inner = (void*)(broadcaster_keys & (~1));
+       broadcaster_keys_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(broadcaster_keys_conv);
+       LDKChannelPublicKeys countersignatory_keys_conv;
+       countersignatory_keys_conv.inner = (void*)(countersignatory_keys & (~1));
+       countersignatory_keys_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(countersignatory_keys_conv);
+       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 (uint64_t)ret_conv;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ShutdownScript_into_inner(uint32_t this_arg) {
-       LDKShutdownScript this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       this_arg_conv = ShutdownScript_clone(&this_arg_conv);
-       LDKCVec_u8Z ret_var = ShutdownScript_into_inner(this_arg_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+int8_tArray  __attribute__((visibility("default"))) TS_get_revokeable_redeemscript(int8_tArray revocation_key, int16_t contest_delay, int8_tArray broadcaster_delayed_payment_key) {
+       LDKPublicKey revocation_key_ref;
+       CHECK(revocation_key->arr_len == 33);
+       memcpy(revocation_key_ref.compressed_form, revocation_key->elems, 33);
+       LDKPublicKey broadcaster_delayed_payment_key_ref;
+       CHECK(broadcaster_delayed_payment_key->arr_len == 33);
+       memcpy(broadcaster_delayed_payment_key_ref.compressed_form, broadcaster_delayed_payment_key->elems, 33);
+       LDKCVec_u8Z ret_var = get_revokeable_redeemscript(revocation_key_ref, contest_delay, broadcaster_delayed_payment_key_ref);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ShutdownScript_as_legacy_pubkey(uint32_t this_arg) {
-       LDKShutdownScript this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ShutdownScript_as_legacy_pubkey(&this_arg_conv).compressed_form, 33);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_free(uint32_t this_obj) {
+       LDKHTLCOutputInCommitment this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       HTLCOutputInCommitment_free(this_obj_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ShutdownScript_is_compatible(uint32_t this_arg, uint32_t features) {
-       LDKShutdownScript this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKInitFeatures features_conv;
-       features_conv.inner = (void*)(features & (~1));
-       features_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(features_conv);
-       jboolean ret_val = ShutdownScript_is_compatible(&this_arg_conv, &features_conv);
+jboolean  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_get_offered(uint32_t this_ptr) {
+       LDKHTLCOutputInCommitment this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       jboolean ret_val = HTLCOutputInCommitment_get_offered(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_CustomMessageReader_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKCustomMessageReader this_ptr_conv = *(LDKCustomMessageReader*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       CustomMessageReader_free(this_ptr_conv);
+void  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_set_offered(uint32_t this_ptr, jboolean val) {
+       LDKHTLCOutputInCommitment this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       HTLCOutputInCommitment_set_offered(&this_ptr_conv, val);
 }
 
-static inline uint64_t Type_clone_ptr(LDKType *NONNULL_PTR arg) {
-       LDKType* ret_ret = MALLOC(sizeof(LDKType), "LDKType");
-       *ret_ret = Type_clone(arg);
-       return (uint64_t)ret_ret;
+int64_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_get_amount_msat(uint32_t this_ptr) {
+       LDKHTLCOutputInCommitment this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = HTLCOutputInCommitment_get_amount_msat(&this_ptr_conv);
+       return ret_val;
 }
-int64_t  __attribute__((visibility("default"))) TS_Type_clone_ptr(uint32_t arg) {
-       void* arg_ptr = (void*)(((uint64_t)arg) & ~1);
-       if (!(arg & 1)) { CHECK_ACCESS(arg_ptr); }
-       LDKType* arg_conv = (LDKType*)arg_ptr;
-       int64_t ret_val = Type_clone_ptr(arg_conv);
+
+void  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_set_amount_msat(uint32_t this_ptr, int64_t val) {
+       LDKHTLCOutputInCommitment this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       HTLCOutputInCommitment_set_amount_msat(&this_ptr_conv, val);
+}
+
+int32_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_get_cltv_expiry(uint32_t this_ptr) {
+       LDKHTLCOutputInCommitment this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = HTLCOutputInCommitment_get_cltv_expiry(&this_ptr_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Type_clone(uint32_t orig) {
-       void* orig_ptr = (void*)(((uint64_t)orig) & ~1);
-       if (!(orig & 1)) { CHECK_ACCESS(orig_ptr); }
-       LDKType* orig_conv = (LDKType*)orig_ptr;
-       LDKType* ret_ret = MALLOC(sizeof(LDKType), "LDKType");
-       *ret_ret = Type_clone(orig_conv);
-       return (uint64_t)ret_ret;
+void  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_set_cltv_expiry(uint32_t this_ptr, int32_t val) {
+       LDKHTLCOutputInCommitment this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       HTLCOutputInCommitment_set_cltv_expiry(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_Type_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKType this_ptr_conv = *(LDKType*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       Type_free(this_ptr_conv);
+int8_tArray  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_get_payment_hash(uint32_t this_ptr) {
+       LDKHTLCOutputInCommitment this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *HTLCOutputInCommitment_get_payment_hash(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_NodeId_free(uint32_t this_obj) {
-       LDKNodeId this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       NodeId_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_set_payment_hash(uint32_t this_ptr, int8_tArray val) {
+       LDKHTLCOutputInCommitment this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       HTLCOutputInCommitment_set_payment_hash(&this_ptr_conv, val_ref);
 }
 
-static inline uint64_t NodeId_clone_ptr(LDKNodeId *NONNULL_PTR arg) {
-       LDKNodeId ret_var = NodeId_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
+uint32_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_get_transaction_output_index(uint32_t this_ptr) {
+       LDKHTLCOutputInCommitment this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCOption_u32Z *ret_copy = MALLOC(sizeof(LDKCOption_u32Z), "LDKCOption_u32Z");
+       *ret_copy = HTLCOutputInCommitment_get_transaction_output_index(&this_ptr_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_NodeId_clone_ptr(uint32_t arg) {
-       LDKNodeId arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = NodeId_clone_ptr(&arg_conv);
-       return ret_val;
-}
 
-uint32_t  __attribute__((visibility("default"))) TS_NodeId_clone(uint32_t orig) {
-       LDKNodeId orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKNodeId ret_var = NodeId_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_set_transaction_output_index(uint32_t this_ptr, uint32_t val) {
+       LDKHTLCOutputInCommitment this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKCOption_u32Z val_conv = *(LDKCOption_u32Z*)(val_ptr);
+       val_conv = COption_u32Z_clone((LDKCOption_u32Z*)(((uint64_t)val) & ~1));
+       HTLCOutputInCommitment_set_transaction_output_index(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NodeId_from_pubkey(int8_tArray pubkey) {
-       LDKPublicKey pubkey_ref;
-       CHECK(*((uint32_t*)pubkey) == 33);
-       memcpy(pubkey_ref.compressed_form, (uint8_t*)(pubkey + 4), 33);
-       LDKNodeId ret_var = NodeId_from_pubkey(pubkey_ref);
+uint32_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_new(jboolean offered_arg, int64_t amount_msat_arg, int32_t cltv_expiry_arg, int8_tArray payment_hash_arg, uint32_t transaction_output_index_arg) {
+       LDKThirtyTwoBytes payment_hash_arg_ref;
+       CHECK(payment_hash_arg->arr_len == 32);
+       memcpy(payment_hash_arg_ref.data, payment_hash_arg->elems, 32);
+       void* transaction_output_index_arg_ptr = (void*)(((uint64_t)transaction_output_index_arg) & ~1);
+       CHECK_ACCESS(transaction_output_index_arg_ptr);
+       LDKCOption_u32Z transaction_output_index_arg_conv = *(LDKCOption_u32Z*)(transaction_output_index_arg_ptr);
+       transaction_output_index_arg_conv = COption_u32Z_clone((LDKCOption_u32Z*)(((uint64_t)transaction_output_index_arg) & ~1));
+       LDKHTLCOutputInCommitment ret_var = HTLCOutputInCommitment_new(offered_arg, amount_msat_arg, cltv_expiry_arg, payment_hash_arg_ref, transaction_output_index_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -31880,57 +29146,8 @@ uint32_t  __attribute__((visibility("default"))) TS_NodeId_from_pubkey(int8_tArr
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_NodeId_as_slice(uint32_t this_arg) {
-       LDKNodeId this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKu8slice ret_var = NodeId_as_slice(&this_arg_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       return ret_arr;
-}
-
-int64_t  __attribute__((visibility("default"))) TS_NodeId_hash(uint32_t o) {
-       LDKNodeId o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = NodeId_hash(&o_conv);
-       return ret_val;
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_NodeId_write(uint32_t obj) {
-       LDKNodeId obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = NodeId_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NodeId_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_NodeIdDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeIdDecodeErrorZ), "LDKCResult_NodeIdDecodeErrorZ");
-       *ret_conv = NodeId_read(ser_ref);
-       return (uint64_t)ret_conv;
-}
-
-void  __attribute__((visibility("default"))) TS_NetworkGraph_free(uint32_t this_obj) {
-       LDKNetworkGraph this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       NetworkGraph_free(this_obj_conv);
-}
-
-static inline uint64_t NetworkGraph_clone_ptr(LDKNetworkGraph *NONNULL_PTR arg) {
-       LDKNetworkGraph ret_var = NetworkGraph_clone(arg);
+static inline uint64_t HTLCOutputInCommitment_clone_ptr(LDKHTLCOutputInCommitment *NONNULL_PTR arg) {
+       LDKHTLCOutputInCommitment ret_var = HTLCOutputInCommitment_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -31941,21 +29158,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_NetworkGraph_clone_ptr(uint32_t arg) {
-       LDKNetworkGraph arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_clone_ptr(uint32_t arg) {
+       LDKHTLCOutputInCommitment arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = NetworkGraph_clone_ptr(&arg_conv);
+       int64_t ret_val = HTLCOutputInCommitment_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_clone(uint32_t orig) {
-       LDKNetworkGraph orig_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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKNetworkGraph ret_var = NetworkGraph_clone(&orig_conv);
+       LDKHTLCOutputInCommitment ret_var = HTLCOutputInCommitment_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -31967,124 +29184,104 @@ uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_clone(uint32_t
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ReadOnlyNetworkGraph_free(uint32_t this_obj) {
-       LDKReadOnlyNetworkGraph this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ReadOnlyNetworkGraph_free(this_obj_conv);
-}
-
-void  __attribute__((visibility("default"))) TS_NetworkUpdate_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKNetworkUpdate this_ptr_conv = *(LDKNetworkUpdate*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       NetworkUpdate_free(this_ptr_conv);
-}
-
-static inline uint64_t NetworkUpdate_clone_ptr(LDKNetworkUpdate *NONNULL_PTR arg) {
-       LDKNetworkUpdate *ret_copy = MALLOC(sizeof(LDKNetworkUpdate), "LDKNetworkUpdate");
-       *ret_copy = NetworkUpdate_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_NetworkUpdate_clone_ptr(uint32_t arg) {
-       LDKNetworkUpdate* arg_conv = (LDKNetworkUpdate*)arg;
-       int64_t ret_val = NetworkUpdate_clone_ptr(arg_conv);
-       return ret_val;
+int8_tArray  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_write(uint32_t obj) {
+       LDKHTLCOutputInCommitment obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = HTLCOutputInCommitment_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NetworkUpdate_clone(uint32_t orig) {
-       LDKNetworkUpdate* orig_conv = (LDKNetworkUpdate*)orig;
-       LDKNetworkUpdate *ret_copy = MALLOC(sizeof(LDKNetworkUpdate), "LDKNetworkUpdate");
-       *ret_copy = NetworkUpdate_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ), "LDKCResult_HTLCOutputInCommitmentDecodeErrorZ");
+       *ret_conv = HTLCOutputInCommitment_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NetworkUpdate_channel_update_message(uint32_t msg) {
-       LDKChannelUpdate msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = (msg & 1) || (msg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       msg_conv = ChannelUpdate_clone(&msg_conv);
-       LDKNetworkUpdate *ret_copy = MALLOC(sizeof(LDKNetworkUpdate), "LDKNetworkUpdate");
-       *ret_copy = NetworkUpdate_channel_update_message(msg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_get_htlc_redeemscript(uint32_t htlc, jboolean opt_anchors, uint32_t keys) {
+       LDKHTLCOutputInCommitment htlc_conv;
+       htlc_conv.inner = (void*)(htlc & (~1));
+       htlc_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_conv);
+       LDKTxCreationKeys keys_conv;
+       keys_conv.inner = (void*)(keys & (~1));
+       keys_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(keys_conv);
+       LDKCVec_u8Z ret_var = get_htlc_redeemscript(&htlc_conv, opt_anchors, &keys_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NetworkUpdate_channel_closed(int64_t short_channel_id, jboolean is_permanent) {
-       LDKNetworkUpdate *ret_copy = MALLOC(sizeof(LDKNetworkUpdate), "LDKNetworkUpdate");
-       *ret_copy = NetworkUpdate_channel_closed(short_channel_id, is_permanent);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_make_funding_redeemscript(int8_tArray broadcaster, int8_tArray countersignatory) {
+       LDKPublicKey broadcaster_ref;
+       CHECK(broadcaster->arr_len == 33);
+       memcpy(broadcaster_ref.compressed_form, broadcaster->elems, 33);
+       LDKPublicKey countersignatory_ref;
+       CHECK(countersignatory->arr_len == 33);
+       memcpy(countersignatory_ref.compressed_form, countersignatory->elems, 33);
+       LDKCVec_u8Z ret_var = make_funding_redeemscript(broadcaster_ref, countersignatory_ref);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NetworkUpdate_node_failure(int8_tArray node_id, jboolean is_permanent) {
-       LDKPublicKey node_id_ref;
-       CHECK(*((uint32_t*)node_id) == 33);
-       memcpy(node_id_ref.compressed_form, (uint8_t*)(node_id + 4), 33);
-       LDKNetworkUpdate *ret_copy = MALLOC(sizeof(LDKNetworkUpdate), "LDKNetworkUpdate");
-       *ret_copy = NetworkUpdate_node_failure(node_id_ref, is_permanent);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_build_htlc_transaction(int8_tArray commitment_txid, int32_t feerate_per_kw, int16_t contest_delay, uint32_t htlc, jboolean opt_anchors, int8_tArray broadcaster_delayed_payment_key, int8_tArray revocation_key) {
+       unsigned char commitment_txid_arr[32];
+       CHECK(commitment_txid->arr_len == 32);
+       memcpy(commitment_txid_arr, commitment_txid->elems, 32);
+       unsigned char (*commitment_txid_ref)[32] = &commitment_txid_arr;
+       LDKHTLCOutputInCommitment htlc_conv;
+       htlc_conv.inner = (void*)(htlc & (~1));
+       htlc_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_conv);
+       LDKPublicKey broadcaster_delayed_payment_key_ref;
+       CHECK(broadcaster_delayed_payment_key->arr_len == 33);
+       memcpy(broadcaster_delayed_payment_key_ref.compressed_form, broadcaster_delayed_payment_key->elems, 33);
+       LDKPublicKey revocation_key_ref;
+       CHECK(revocation_key->arr_len == 33);
+       memcpy(revocation_key_ref.compressed_form, revocation_key->elems, 33);
+       LDKTransaction ret_var = build_htlc_transaction(commitment_txid_ref, feerate_per_kw, contest_delay, &htlc_conv, opt_anchors, broadcaster_delayed_payment_key_ref, revocation_key_ref);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       Transaction_free(ret_var);
+       return ret_arr;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_NetworkUpdate_write(uint32_t obj) {
-       LDKNetworkUpdate* obj_conv = (LDKNetworkUpdate*)obj;
-       LDKCVec_u8Z ret_var = NetworkUpdate_write(obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+int8_tArray  __attribute__((visibility("default"))) TS_get_anchor_redeemscript(int8_tArray funding_pubkey) {
+       LDKPublicKey funding_pubkey_ref;
+       CHECK(funding_pubkey->arr_len == 33);
+       memcpy(funding_pubkey_ref.compressed_form, funding_pubkey->elems, 33);
+       LDKCVec_u8Z ret_var = get_anchor_redeemscript(funding_pubkey_ref);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NetworkUpdate_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_COption_NetworkUpdateZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_NetworkUpdateZDecodeErrorZ), "LDKCResult_COption_NetworkUpdateZDecodeErrorZ");
-       *ret_conv = NetworkUpdate_read(ser_ref);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NetGraphMsgHandler_as_EventHandler(uint32_t this_arg) {
-       LDKNetGraphMsgHandler this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKEventHandler* ret_ret = MALLOC(sizeof(LDKEventHandler), "LDKEventHandler");
-       *ret_ret = NetGraphMsgHandler_as_EventHandler(&this_arg_conv);
-       return (uint64_t)ret_ret;
-}
-
-void  __attribute__((visibility("default"))) TS_NetGraphMsgHandler_free(uint32_t this_obj) {
-       LDKNetGraphMsgHandler this_obj_conv;
+void  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_free(uint32_t this_obj) {
+       LDKChannelTransactionParameters this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       NetGraphMsgHandler_free(this_obj_conv);
+       ChannelTransactionParameters_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NetGraphMsgHandler_new(uint32_t network_graph, uint32_t chain_access, uint32_t logger) {
-       LDKNetworkGraph network_graph_conv;
-       network_graph_conv.inner = (void*)(network_graph & (~1));
-       network_graph_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(network_graph_conv);
-       void* chain_access_ptr = (void*)(((uint64_t)chain_access) & ~1);
-       CHECK_ACCESS(chain_access_ptr);
-       LDKCOption_AccessZ chain_access_conv = *(LDKCOption_AccessZ*)(chain_access_ptr);
-       // Warning: we may need a move here but no clone is available for LDKCOption_AccessZ
-       if (chain_access_conv.tag == LDKCOption_AccessZ_Some) {
-               // Manually implement clone for Java trait instances
-       }
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       CHECK_ACCESS(logger_ptr);
-       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
-       LDKNetGraphMsgHandler ret_var = NetGraphMsgHandler_new(&network_graph_conv, chain_access_conv, logger_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_get_holder_pubkeys(uint32_t this_ptr) {
+       LDKChannelTransactionParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKChannelPublicKeys ret_var = ChannelTransactionParameters_get_holder_pubkeys(&this_ptr_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -32096,146 +29293,216 @@ uint32_t  __attribute__((visibility("default"))) TS_NetGraphMsgHandler_new(uint3
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_NetGraphMsgHandler_add_chain_access(uint32_t this_arg, uint32_t chain_access) {
-       LDKNetGraphMsgHandler this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       void* chain_access_ptr = (void*)(((uint64_t)chain_access) & ~1);
-       CHECK_ACCESS(chain_access_ptr);
-       LDKCOption_AccessZ chain_access_conv = *(LDKCOption_AccessZ*)(chain_access_ptr);
-       // Warning: we may need a move here but no clone is available for LDKCOption_AccessZ
-       if (chain_access_conv.tag == LDKCOption_AccessZ_Some) {
-               // Manually implement clone for Java trait instances
-       }
-       NetGraphMsgHandler_add_chain_access(&this_arg_conv, chain_access_conv);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NetGraphMsgHandler_as_RoutingMessageHandler(uint32_t this_arg) {
-       LDKNetGraphMsgHandler this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKRoutingMessageHandler* ret_ret = MALLOC(sizeof(LDKRoutingMessageHandler), "LDKRoutingMessageHandler");
-       *ret_ret = NetGraphMsgHandler_as_RoutingMessageHandler(&this_arg_conv);
-       return (uint64_t)ret_ret;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NetGraphMsgHandler_as_MessageSendEventsProvider(uint32_t this_arg) {
-       LDKNetGraphMsgHandler this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKMessageSendEventsProvider* ret_ret = MALLOC(sizeof(LDKMessageSendEventsProvider), "LDKMessageSendEventsProvider");
-       *ret_ret = NetGraphMsgHandler_as_MessageSendEventsProvider(&this_arg_conv);
-       return (uint64_t)ret_ret;
-}
-
-void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_free(uint32_t this_obj) {
-       LDKDirectionalChannelInfo this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       DirectionalChannelInfo_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_set_holder_pubkeys(uint32_t this_ptr, uint32_t val) {
+       LDKChannelTransactionParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKChannelPublicKeys val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = ChannelPublicKeys_clone(&val_conv);
+       ChannelTransactionParameters_set_holder_pubkeys(&this_ptr_conv, val_conv);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_get_last_update(uint32_t this_ptr) {
-       LDKDirectionalChannelInfo this_ptr_conv;
+int16_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_get_holder_selected_contest_delay(uint32_t this_ptr) {
+       LDKChannelTransactionParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = DirectionalChannelInfo_get_last_update(&this_ptr_conv);
+       int16_t ret_val = ChannelTransactionParameters_get_holder_selected_contest_delay(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_set_last_update(uint32_t this_ptr, int32_t val) {
-       LDKDirectionalChannelInfo this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_set_holder_selected_contest_delay(uint32_t this_ptr, int16_t val) {
+       LDKChannelTransactionParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       DirectionalChannelInfo_set_last_update(&this_ptr_conv, val);
+       ChannelTransactionParameters_set_holder_selected_contest_delay(&this_ptr_conv, val);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_get_enabled(uint32_t this_ptr) {
-       LDKDirectionalChannelInfo this_ptr_conv;
+jboolean  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_get_is_outbound_from_holder(uint32_t this_ptr) {
+       LDKChannelTransactionParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       jboolean ret_val = DirectionalChannelInfo_get_enabled(&this_ptr_conv);
+       jboolean ret_val = ChannelTransactionParameters_get_is_outbound_from_holder(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_set_enabled(uint32_t this_ptr, jboolean val) {
-       LDKDirectionalChannelInfo this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_set_is_outbound_from_holder(uint32_t this_ptr, jboolean val) {
+       LDKChannelTransactionParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       DirectionalChannelInfo_set_enabled(&this_ptr_conv, val);
+       ChannelTransactionParameters_set_is_outbound_from_holder(&this_ptr_conv, val);
 }
 
-int16_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_get_cltv_expiry_delta(uint32_t this_ptr) {
-       LDKDirectionalChannelInfo this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_get_counterparty_parameters(uint32_t this_ptr) {
+       LDKChannelTransactionParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = DirectionalChannelInfo_get_cltv_expiry_delta(&this_ptr_conv);
-       return ret_val;
+       LDKCounterpartyChannelTransactionParameters ret_var = ChannelTransactionParameters_get_counterparty_parameters(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       if ((uint64_t)ret_var.inner > 4096) {
+               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+               ret_ref = (uint64_t)ret_var.inner;
+               if (ret_var.is_owned) {
+                       ret_ref |= 1;
+               }
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_set_cltv_expiry_delta(uint32_t this_ptr, int16_t val) {
-       LDKDirectionalChannelInfo this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_set_counterparty_parameters(uint32_t this_ptr, uint32_t val) {
+       LDKChannelTransactionParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       DirectionalChannelInfo_set_cltv_expiry_delta(&this_ptr_conv, val);
+       LDKCounterpartyChannelTransactionParameters val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = CounterpartyChannelTransactionParameters_clone(&val_conv);
+       ChannelTransactionParameters_set_counterparty_parameters(&this_ptr_conv, val_conv);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_get_htlc_minimum_msat(uint32_t this_ptr) {
-       LDKDirectionalChannelInfo this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_get_funding_outpoint(uint32_t this_ptr) {
+       LDKChannelTransactionParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = DirectionalChannelInfo_get_htlc_minimum_msat(&this_ptr_conv);
-       return ret_val;
+       LDKOutPoint ret_var = ChannelTransactionParameters_get_funding_outpoint(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       if ((uint64_t)ret_var.inner > 4096) {
+               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+               ret_ref = (uint64_t)ret_var.inner;
+               if (ret_var.is_owned) {
+                       ret_ref |= 1;
+               }
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_set_htlc_minimum_msat(uint32_t this_ptr, int64_t val) {
-       LDKDirectionalChannelInfo this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_set_funding_outpoint(uint32_t this_ptr, uint32_t val) {
+       LDKChannelTransactionParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       DirectionalChannelInfo_set_htlc_minimum_msat(&this_ptr_conv, val);
+       LDKOutPoint val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = OutPoint_clone(&val_conv);
+       ChannelTransactionParameters_set_funding_outpoint(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_get_htlc_maximum_msat(uint32_t this_ptr) {
-       LDKDirectionalChannelInfo this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_get_opt_anchors(uint32_t this_ptr) {
+       LDKChannelTransactionParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
-       *ret_copy = DirectionalChannelInfo_get_htlc_maximum_msat(&this_ptr_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
+       uint32_t ret_conv = LDKCOption_NoneZ_to_js(ChannelTransactionParameters_get_opt_anchors(&this_ptr_conv));
+       return ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_set_opt_anchors(uint32_t this_ptr, uint32_t val) {
+       LDKChannelTransactionParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCOption_NoneZ val_conv = LDKCOption_NoneZ_from_js(val);
+       ChannelTransactionParameters_set_opt_anchors(&this_ptr_conv, val_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_new(uint32_t holder_pubkeys_arg, int16_t holder_selected_contest_delay_arg, jboolean is_outbound_from_holder_arg, uint32_t counterparty_parameters_arg, uint32_t funding_outpoint_arg, uint32_t opt_anchors_arg) {
+       LDKChannelPublicKeys holder_pubkeys_arg_conv;
+       holder_pubkeys_arg_conv.inner = (void*)(holder_pubkeys_arg & (~1));
+       holder_pubkeys_arg_conv.is_owned = (holder_pubkeys_arg & 1) || (holder_pubkeys_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(holder_pubkeys_arg_conv);
+       holder_pubkeys_arg_conv = ChannelPublicKeys_clone(&holder_pubkeys_arg_conv);
+       LDKCounterpartyChannelTransactionParameters counterparty_parameters_arg_conv;
+       counterparty_parameters_arg_conv.inner = (void*)(counterparty_parameters_arg & (~1));
+       counterparty_parameters_arg_conv.is_owned = (counterparty_parameters_arg & 1) || (counterparty_parameters_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(counterparty_parameters_arg_conv);
+       counterparty_parameters_arg_conv = CounterpartyChannelTransactionParameters_clone(&counterparty_parameters_arg_conv);
+       LDKOutPoint funding_outpoint_arg_conv;
+       funding_outpoint_arg_conv.inner = (void*)(funding_outpoint_arg & (~1));
+       funding_outpoint_arg_conv.is_owned = (funding_outpoint_arg & 1) || (funding_outpoint_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_outpoint_arg_conv);
+       funding_outpoint_arg_conv = OutPoint_clone(&funding_outpoint_arg_conv);
+       LDKCOption_NoneZ opt_anchors_arg_conv = LDKCOption_NoneZ_from_js(opt_anchors_arg);
+       LDKChannelTransactionParameters ret_var = ChannelTransactionParameters_new(holder_pubkeys_arg_conv, holder_selected_contest_delay_arg, is_outbound_from_holder_arg, counterparty_parameters_arg_conv, funding_outpoint_arg_conv, opt_anchors_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+static inline uint64_t ChannelTransactionParameters_clone_ptr(LDKChannelTransactionParameters *NONNULL_PTR arg) {
+       LDKChannelTransactionParameters ret_var = ChannelTransactionParameters_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_clone_ptr(uint32_t arg) {
+       LDKChannelTransactionParameters arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ChannelTransactionParameters_clone_ptr(&arg_conv);
+       return ret_val;
+}
+
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKChannelTransactionParameters ret_var = ChannelTransactionParameters_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_set_htlc_maximum_msat(uint32_t this_ptr, uint32_t val) {
-       LDKDirectionalChannelInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKCOption_u64Z val_conv = *(LDKCOption_u64Z*)(val_ptr);
-       val_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)val) & ~1));
-       DirectionalChannelInfo_set_htlc_maximum_msat(&this_ptr_conv, val_conv);
+void  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_free(uint32_t this_obj) {
+       LDKCounterpartyChannelTransactionParameters this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       CounterpartyChannelTransactionParameters_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_get_fees(uint32_t this_ptr) {
-       LDKDirectionalChannelInfo 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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKRoutingFees ret_var = DirectionalChannelInfo_get_fees(&this_ptr_conv);
+       LDKChannelPublicKeys ret_var = CounterpartyChannelTransactionParameters_get_pubkeys(&this_ptr_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -32247,67 +29514,43 @@ uint32_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_get_f
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_set_fees(uint32_t this_ptr, uint32_t val) {
-       LDKDirectionalChannelInfo this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_set_pubkeys(uint32_t this_ptr, uint32_t val) {
+       LDKCounterpartyChannelTransactionParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKRoutingFees val_conv;
+       LDKChannelPublicKeys val_conv;
        val_conv.inner = (void*)(val & (~1));
        val_conv.is_owned = (val & 1) || (val == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = RoutingFees_clone(&val_conv);
-       DirectionalChannelInfo_set_fees(&this_ptr_conv, val_conv);
+       val_conv = ChannelPublicKeys_clone(&val_conv);
+       CounterpartyChannelTransactionParameters_set_pubkeys(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_get_last_update_message(uint32_t this_ptr) {
-       LDKDirectionalChannelInfo this_ptr_conv;
+int16_t  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_get_selected_contest_delay(uint32_t this_ptr) {
+       LDKCounterpartyChannelTransactionParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelUpdate ret_var = DirectionalChannelInfo_get_last_update_message(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
-       }
-       return ret_ref;
+       int16_t ret_val = CounterpartyChannelTransactionParameters_get_selected_contest_delay(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_set_last_update_message(uint32_t this_ptr, uint32_t val) {
-       LDKDirectionalChannelInfo this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_set_selected_contest_delay(uint32_t this_ptr, int16_t val) {
+       LDKCounterpartyChannelTransactionParameters this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelUpdate val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = ChannelUpdate_clone(&val_conv);
-       DirectionalChannelInfo_set_last_update_message(&this_ptr_conv, val_conv);
+       CounterpartyChannelTransactionParameters_set_selected_contest_delay(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_new(int32_t last_update_arg, jboolean enabled_arg, int16_t cltv_expiry_delta_arg, int64_t htlc_minimum_msat_arg, uint32_t htlc_maximum_msat_arg, uint32_t fees_arg, uint32_t last_update_message_arg) {
-       void* htlc_maximum_msat_arg_ptr = (void*)(((uint64_t)htlc_maximum_msat_arg) & ~1);
-       CHECK_ACCESS(htlc_maximum_msat_arg_ptr);
-       LDKCOption_u64Z htlc_maximum_msat_arg_conv = *(LDKCOption_u64Z*)(htlc_maximum_msat_arg_ptr);
-       htlc_maximum_msat_arg_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)htlc_maximum_msat_arg) & ~1));
-       LDKRoutingFees fees_arg_conv;
-       fees_arg_conv.inner = (void*)(fees_arg & (~1));
-       fees_arg_conv.is_owned = (fees_arg & 1) || (fees_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(fees_arg_conv);
-       fees_arg_conv = RoutingFees_clone(&fees_arg_conv);
-       LDKChannelUpdate last_update_message_arg_conv;
-       last_update_message_arg_conv.inner = (void*)(last_update_message_arg & (~1));
-       last_update_message_arg_conv.is_owned = (last_update_message_arg & 1) || (last_update_message_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(last_update_message_arg_conv);
-       last_update_message_arg_conv = ChannelUpdate_clone(&last_update_message_arg_conv);
-       LDKDirectionalChannelInfo ret_var = DirectionalChannelInfo_new(last_update_arg, enabled_arg, cltv_expiry_delta_arg, htlc_minimum_msat_arg, htlc_maximum_msat_arg_conv, fees_arg_conv, last_update_message_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_new(uint32_t pubkeys_arg, int16_t selected_contest_delay_arg) {
+       LDKChannelPublicKeys pubkeys_arg_conv;
+       pubkeys_arg_conv.inner = (void*)(pubkeys_arg & (~1));
+       pubkeys_arg_conv.is_owned = (pubkeys_arg & 1) || (pubkeys_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(pubkeys_arg_conv);
+       pubkeys_arg_conv = ChannelPublicKeys_clone(&pubkeys_arg_conv);
+       LDKCounterpartyChannelTransactionParameters ret_var = CounterpartyChannelTransactionParameters_new(pubkeys_arg_conv, selected_contest_delay_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -32319,8 +29562,8 @@ uint32_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_new(i
        return ret_ref;
 }
 
-static inline uint64_t DirectionalChannelInfo_clone_ptr(LDKDirectionalChannelInfo *NONNULL_PTR arg) {
-       LDKDirectionalChannelInfo ret_var = DirectionalChannelInfo_clone(arg);
+static inline uint64_t CounterpartyChannelTransactionParameters_clone_ptr(LDKCounterpartyChannelTransactionParameters *NONNULL_PTR arg) {
+       LDKCounterpartyChannelTransactionParameters ret_var = CounterpartyChannelTransactionParameters_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -32331,21 +29574,183 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_clone_ptr(uint32_t arg) {
-       LDKDirectionalChannelInfo arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_clone_ptr(uint32_t arg) {
+       LDKCounterpartyChannelTransactionParameters arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = DirectionalChannelInfo_clone_ptr(&arg_conv);
+       int64_t ret_val = CounterpartyChannelTransactionParameters_clone_ptr(&arg_conv);
+       return ret_val;
+}
+
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKCounterpartyChannelTransactionParameters ret_var = CounterpartyChannelTransactionParameters_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)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));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       jboolean ret_val = ChannelTransactionParameters_is_populated(&this_arg_conv);
+       return ret_val;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_as_holder_broadcastable(uint32_t this_arg) {
+       LDKChannelTransactionParameters this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKDirectedChannelTransactionParameters ret_var = ChannelTransactionParameters_as_holder_broadcastable(&this_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_as_counterparty_broadcastable(uint32_t this_arg) {
+       LDKChannelTransactionParameters this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKDirectedChannelTransactionParameters ret_var = ChannelTransactionParameters_as_counterparty_broadcastable(&this_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_write(uint32_t obj) {
+       LDKCounterpartyChannelTransactionParameters obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = CounterpartyChannelTransactionParameters_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ), "LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ");
+       *ret_conv = CounterpartyChannelTransactionParameters_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_write(uint32_t obj) {
+       LDKChannelTransactionParameters obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ChannelTransactionParameters_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelTransactionParameters_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ), "LDKCResult_ChannelTransactionParametersDecodeErrorZ");
+       *ret_conv = ChannelTransactionParameters_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_DirectedChannelTransactionParameters_free(uint32_t this_obj) {
+       LDKDirectedChannelTransactionParameters this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       DirectedChannelTransactionParameters_free(this_obj_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_DirectedChannelTransactionParameters_broadcaster_pubkeys(uint32_t this_arg) {
+       LDKDirectedChannelTransactionParameters this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKChannelPublicKeys ret_var = DirectedChannelTransactionParameters_broadcaster_pubkeys(&this_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_DirectedChannelTransactionParameters_countersignatory_pubkeys(uint32_t this_arg) {
+       LDKDirectedChannelTransactionParameters this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKChannelPublicKeys ret_var = DirectedChannelTransactionParameters_countersignatory_pubkeys(&this_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+int16_t  __attribute__((visibility("default"))) TS_DirectedChannelTransactionParameters_contest_delay(uint32_t this_arg) {
+       LDKDirectedChannelTransactionParameters this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int16_t ret_val = DirectedChannelTransactionParameters_contest_delay(&this_arg_conv);
+       return ret_val;
+}
+
+jboolean  __attribute__((visibility("default"))) TS_DirectedChannelTransactionParameters_is_outbound(uint32_t this_arg) {
+       LDKDirectedChannelTransactionParameters this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       jboolean ret_val = DirectedChannelTransactionParameters_is_outbound(&this_arg_conv);
        return ret_val;
 }
 
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKDirectionalChannelInfo ret_var = DirectionalChannelInfo_clone(&orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_DirectedChannelTransactionParameters_funding_outpoint(uint32_t this_arg) {
+       LDKDirectedChannelTransactionParameters this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKOutPoint ret_var = DirectedChannelTransactionParameters_funding_outpoint(&this_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -32357,71 +29762,93 @@ uint32_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_clone
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_write(uint32_t obj) {
-       LDKDirectionalChannelInfo obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = DirectionalChannelInfo_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_DirectionalChannelInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DirectionalChannelInfoDecodeErrorZ), "LDKCResult_DirectionalChannelInfoDecodeErrorZ");
-       *ret_conv = DirectionalChannelInfo_read(ser_ref);
-       return (uint64_t)ret_conv;
+jboolean  __attribute__((visibility("default"))) TS_DirectedChannelTransactionParameters_opt_anchors(uint32_t this_arg) {
+       LDKDirectedChannelTransactionParameters this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       jboolean ret_val = DirectedChannelTransactionParameters_opt_anchors(&this_arg_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelInfo_free(uint32_t this_obj) {
-       LDKChannelInfo this_obj_conv;
+void  __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_free(uint32_t this_obj) {
+       LDKHolderCommitmentTransaction this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ChannelInfo_free(this_obj_conv);
+       HolderCommitmentTransaction_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_features(uint32_t this_ptr) {
-       LDKChannelInfo this_ptr_conv;
+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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelFeatures ret_var = ChannelInfo_get_features(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, HolderCommitmentTransaction_get_counterparty_sig(&this_ptr_conv).compact_form, 64);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelInfo_set_features(uint32_t this_ptr, uint32_t val) {
-       LDKChannelInfo this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_set_counterparty_sig(uint32_t this_ptr, int8_tArray val) {
+       LDKHolderCommitmentTransaction this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelFeatures val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = ChannelFeatures_clone(&val_conv);
-       ChannelInfo_set_features(&this_ptr_conv, val_conv);
+       LDKSignature val_ref;
+       CHECK(val->arr_len == 64);
+       memcpy(val_ref.compact_form, val->elems, 64);
+       HolderCommitmentTransaction_set_counterparty_sig(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_node_one(uint32_t this_ptr) {
-       LDKChannelInfo this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_set_counterparty_htlc_sigs(uint32_t this_ptr, ptrArray val) {
+       LDKHolderCommitmentTransaction this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNodeId ret_var = ChannelInfo_get_node_one(&this_ptr_conv);
+       LDKCVec_SignatureZ val_constr;
+       val_constr.datalen = val->arr_len;
+       if (val_constr.datalen > 0)
+               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ Elements");
+       else
+               val_constr.data = NULL;
+       int8_tArray* val_vals = (void*) val->elems;
+       for (size_t m = 0; m < val_constr.datalen; m++) {
+               int8_tArray val_conv_12 = val_vals[m];
+               LDKSignature val_conv_12_ref;
+               CHECK(val_conv_12->arr_len == 64);
+               memcpy(val_conv_12_ref.compact_form, val_conv_12->elems, 64);
+               val_constr.data[m] = val_conv_12_ref;
+       }
+       HolderCommitmentTransaction_set_counterparty_htlc_sigs(&this_ptr_conv, val_constr);
+}
+
+static inline uint64_t HolderCommitmentTransaction_clone_ptr(LDKHolderCommitmentTransaction *NONNULL_PTR arg) {
+       LDKHolderCommitmentTransaction ret_var = HolderCommitmentTransaction_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_clone_ptr(uint32_t arg) {
+       LDKHolderCommitmentTransaction arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = HolderCommitmentTransaction_clone_ptr(&arg_conv);
+       return ret_val;
+}
+
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKHolderCommitmentTransaction ret_var = HolderCommitmentTransaction_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -32433,57 +29860,57 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_node_one(uin
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelInfo_set_node_one(uint32_t this_ptr, uint32_t val) {
-       LDKChannelInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNodeId val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = NodeId_clone(&val_conv);
-       ChannelInfo_set_node_one(&this_ptr_conv, val_conv);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_one_to_two(uint32_t this_ptr) {
-       LDKChannelInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKDirectionalChannelInfo ret_var = ChannelInfo_get_one_to_two(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)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));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = HolderCommitmentTransaction_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelInfo_set_one_to_two(uint32_t this_ptr, uint32_t val) {
-       LDKChannelInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKDirectionalChannelInfo val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = DirectionalChannelInfo_clone(&val_conv);
-       ChannelInfo_set_one_to_two(&this_ptr_conv, val_conv);
+uint32_t  __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_HolderCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ), "LDKCResult_HolderCommitmentTransactionDecodeErrorZ");
+       *ret_conv = HolderCommitmentTransaction_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_node_two(uint32_t this_ptr) {
-       LDKChannelInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNodeId ret_var = ChannelInfo_get_node_two(&this_ptr_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) {
+       LDKCommitmentTransaction commitment_tx_conv;
+       commitment_tx_conv.inner = (void*)(commitment_tx & (~1));
+       commitment_tx_conv.is_owned = (commitment_tx & 1) || (commitment_tx == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_tx_conv);
+       commitment_tx_conv = CommitmentTransaction_clone(&commitment_tx_conv);
+       LDKSignature counterparty_sig_ref;
+       CHECK(counterparty_sig->arr_len == 64);
+       memcpy(counterparty_sig_ref.compact_form, counterparty_sig->elems, 64);
+       LDKCVec_SignatureZ counterparty_htlc_sigs_constr;
+       counterparty_htlc_sigs_constr.datalen = counterparty_htlc_sigs->arr_len;
+       if (counterparty_htlc_sigs_constr.datalen > 0)
+               counterparty_htlc_sigs_constr.data = MALLOC(counterparty_htlc_sigs_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ Elements");
+       else
+               counterparty_htlc_sigs_constr.data = NULL;
+       int8_tArray* counterparty_htlc_sigs_vals = (void*) counterparty_htlc_sigs->elems;
+       for (size_t m = 0; m < counterparty_htlc_sigs_constr.datalen; m++) {
+               int8_tArray counterparty_htlc_sigs_conv_12 = counterparty_htlc_sigs_vals[m];
+               LDKSignature counterparty_htlc_sigs_conv_12_ref;
+               CHECK(counterparty_htlc_sigs_conv_12->arr_len == 64);
+               memcpy(counterparty_htlc_sigs_conv_12_ref.compact_form, counterparty_htlc_sigs_conv_12->elems, 64);
+               counterparty_htlc_sigs_constr.data[m] = counterparty_htlc_sigs_conv_12_ref;
+       }
+       LDKPublicKey holder_funding_key_ref;
+       CHECK(holder_funding_key->arr_len == 33);
+       memcpy(holder_funding_key_ref.compressed_form, holder_funding_key->elems, 33);
+       LDKPublicKey counterparty_funding_key_ref;
+       CHECK(counterparty_funding_key->arr_len == 33);
+       memcpy(counterparty_funding_key_ref.compressed_form, counterparty_funding_key->elems, 33);
+       LDKHolderCommitmentTransaction ret_var = HolderCommitmentTransaction_new(commitment_tx_conv, counterparty_sig_ref, counterparty_htlc_sigs_constr, holder_funding_key_ref, counterparty_funding_key_ref);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -32495,108 +29922,83 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_node_two(uin
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelInfo_set_node_two(uint32_t this_ptr, uint32_t val) {
-       LDKChannelInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNodeId val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = NodeId_clone(&val_conv);
-       ChannelInfo_set_node_two(&this_ptr_conv, val_conv);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_two_to_one(uint32_t this_ptr) {
-       LDKChannelInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKDirectionalChannelInfo ret_var = ChannelInfo_get_two_to_one(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_free(uint32_t this_obj) {
+       LDKBuiltCommitmentTransaction this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       BuiltCommitmentTransaction_free(this_obj_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelInfo_set_two_to_one(uint32_t this_ptr, uint32_t val) {
-       LDKChannelInfo this_ptr_conv;
+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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKDirectionalChannelInfo val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = DirectionalChannelInfo_clone(&val_conv);
-       ChannelInfo_set_two_to_one(&this_ptr_conv, val_conv);
+       LDKTransaction ret_var = BuiltCommitmentTransaction_get_transaction(&this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       Transaction_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_capacity_sats(uint32_t this_ptr) {
-       LDKChannelInfo this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_set_transaction(uint32_t this_ptr, int8_tArray val) {
+       LDKBuiltCommitmentTransaction this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
-       *ret_copy = ChannelInfo_get_capacity_sats(&this_ptr_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+       LDKTransaction val_ref;
+       val_ref.datalen = val->arr_len;
+       val_ref.data = MALLOC(val_ref.datalen, "LDKTransaction Bytes");
+       memcpy(val_ref.data, val->elems, val_ref.datalen);
+       val_ref.data_is_owned = true;
+       BuiltCommitmentTransaction_set_transaction(&this_ptr_conv, val_ref);
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelInfo_set_capacity_sats(uint32_t this_ptr, uint32_t val) {
-       LDKChannelInfo this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_get_txid(uint32_t this_ptr) {
+       LDKBuiltCommitmentTransaction this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKCOption_u64Z val_conv = *(LDKCOption_u64Z*)(val_ptr);
-       val_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)val) & ~1));
-       ChannelInfo_set_capacity_sats(&this_ptr_conv, val_conv);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *BuiltCommitmentTransaction_get_txid(&this_ptr_conv), 32);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_announcement_message(uint32_t this_ptr) {
-       LDKChannelInfo this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_set_txid(uint32_t this_ptr, int8_tArray val) {
+       LDKBuiltCommitmentTransaction this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelAnnouncement ret_var = ChannelInfo_get_announcement_message(&this_ptr_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       BuiltCommitmentTransaction_set_txid(&this_ptr_conv, val_ref);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_new(int8_tArray transaction_arg, int8_tArray txid_arg) {
+       LDKTransaction transaction_arg_ref;
+       transaction_arg_ref.datalen = transaction_arg->arr_len;
+       transaction_arg_ref.data = MALLOC(transaction_arg_ref.datalen, "LDKTransaction Bytes");
+       memcpy(transaction_arg_ref.data, transaction_arg->elems, transaction_arg_ref.datalen);
+       transaction_arg_ref.data_is_owned = true;
+       LDKThirtyTwoBytes txid_arg_ref;
+       CHECK(txid_arg->arr_len == 32);
+       memcpy(txid_arg_ref.data, txid_arg->elems, 32);
+       LDKBuiltCommitmentTransaction ret_var = BuiltCommitmentTransaction_new(transaction_arg_ref, txid_arg_ref);
        uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
        CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ChannelInfo_set_announcement_message(uint32_t this_ptr, uint32_t val) {
-       LDKChannelInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelAnnouncement val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = ChannelAnnouncement_clone(&val_conv);
-       ChannelInfo_set_announcement_message(&this_ptr_conv, val_conv);
-}
-
-static inline uint64_t ChannelInfo_clone_ptr(LDKChannelInfo *NONNULL_PTR arg) {
-       LDKChannelInfo ret_var = ChannelInfo_clone(arg);
+static inline uint64_t BuiltCommitmentTransaction_clone_ptr(LDKBuiltCommitmentTransaction *NONNULL_PTR arg) {
+       LDKBuiltCommitmentTransaction ret_var = BuiltCommitmentTransaction_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -32607,21 +30009,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_ChannelInfo_clone_ptr(uint32_t arg) {
-       LDKChannelInfo arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_clone_ptr(uint32_t arg) {
+       LDKBuiltCommitmentTransaction arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ChannelInfo_clone_ptr(&arg_conv);
+       int64_t ret_val = BuiltCommitmentTransaction_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_clone(uint32_t orig) {
-       LDKChannelInfo orig_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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKChannelInfo ret_var = ChannelInfo_clone(&orig_conv);
+       LDKBuiltCommitmentTransaction ret_var = BuiltCommitmentTransaction_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -32633,97 +30035,270 @@ uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_clone(uint32_t o
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ChannelInfo_write(uint32_t obj) {
-       LDKChannelInfo obj_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_write(uint32_t obj) {
+       LDKBuiltCommitmentTransaction obj_conv;
        obj_conv.inner = (void*)(obj & (~1));
        obj_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ChannelInfo_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       LDKCVec_u8Z ret_var = BuiltCommitmentTransaction_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_read(int8_tArray ser) {
+uint32_t  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_read(int8_tArray ser) {
        LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ChannelInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelInfoDecodeErrorZ), "LDKCResult_ChannelInfoDecodeErrorZ");
-       *ret_conv = ChannelInfo_read(ser_ref);
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ), "LDKCResult_BuiltCommitmentTransactionDecodeErrorZ");
+       *ret_conv = BuiltCommitmentTransaction_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_RoutingFees_free(uint32_t this_obj) {
-       LDKRoutingFees this_obj_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_get_sighash_all(uint32_t this_arg, int8_tArray funding_redeemscript, int64_t channel_value_satoshis) {
+       LDKBuiltCommitmentTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKu8slice funding_redeemscript_ref;
+       funding_redeemscript_ref.datalen = funding_redeemscript->arr_len;
+       funding_redeemscript_ref.data = funding_redeemscript->elems;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, BuiltCommitmentTransaction_get_sighash_all(&this_arg_conv, funding_redeemscript_ref, channel_value_satoshis).data, 32);
+       return ret_arr;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_sign(uint32_t this_arg, int8_tArray funding_key, int8_tArray funding_redeemscript, int64_t channel_value_satoshis) {
+       LDKBuiltCommitmentTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       unsigned char funding_key_arr[32];
+       CHECK(funding_key->arr_len == 32);
+       memcpy(funding_key_arr, funding_key->elems, 32);
+       unsigned char (*funding_key_ref)[32] = &funding_key_arr;
+       LDKu8slice funding_redeemscript_ref;
+       funding_redeemscript_ref.datalen = funding_redeemscript->arr_len;
+       funding_redeemscript_ref.data = funding_redeemscript->elems;
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, BuiltCommitmentTransaction_sign(&this_arg_conv, funding_key_ref, funding_redeemscript_ref, channel_value_satoshis).compact_form, 64);
+       return ret_arr;
+}
+
+void  __attribute__((visibility("default"))) TS_ClosingTransaction_free(uint32_t this_obj) {
+       LDKClosingTransaction this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       RoutingFees_free(this_obj_conv);
+       ClosingTransaction_free(this_obj_conv);
 }
 
-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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = RoutingFees_get_base_msat(&this_ptr_conv);
+static inline uint64_t ClosingTransaction_clone_ptr(LDKClosingTransaction *NONNULL_PTR arg) {
+       LDKClosingTransaction ret_var = ClosingTransaction_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_ClosingTransaction_clone_ptr(uint32_t arg) {
+       LDKClosingTransaction arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ClosingTransaction_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_RoutingFees_set_base_msat(uint32_t this_ptr, int32_t val) {
-       LDKRoutingFees this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       RoutingFees_set_base_msat(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_ClosingTransaction_clone(uint32_t orig) {
+       LDKClosingTransaction orig_conv;
+       orig_conv.inner = (void*)(orig & (~1));
+       orig_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKClosingTransaction ret_var = ClosingTransaction_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+int64_t  __attribute__((visibility("default"))) TS_ClosingTransaction_hash(uint32_t o) {
+       LDKClosingTransaction o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       int64_t ret_val = ClosingTransaction_hash(&o_conv);
+       return ret_val;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ClosingTransaction_new(int64_t to_holder_value_sat, int64_t to_counterparty_value_sat, int8_tArray to_holder_script, int8_tArray to_counterparty_script, uint32_t funding_outpoint) {
+       LDKCVec_u8Z to_holder_script_ref;
+       to_holder_script_ref.datalen = to_holder_script->arr_len;
+       to_holder_script_ref.data = MALLOC(to_holder_script_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(to_holder_script_ref.data, to_holder_script->elems, to_holder_script_ref.datalen);
+       LDKCVec_u8Z to_counterparty_script_ref;
+       to_counterparty_script_ref.datalen = to_counterparty_script->arr_len;
+       to_counterparty_script_ref.data = MALLOC(to_counterparty_script_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(to_counterparty_script_ref.data, to_counterparty_script->elems, to_counterparty_script_ref.datalen);
+       LDKOutPoint funding_outpoint_conv;
+       funding_outpoint_conv.inner = (void*)(funding_outpoint & (~1));
+       funding_outpoint_conv.is_owned = (funding_outpoint & 1) || (funding_outpoint == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_outpoint_conv);
+       funding_outpoint_conv = OutPoint_clone(&funding_outpoint_conv);
+       LDKClosingTransaction ret_var = ClosingTransaction_new(to_holder_value_sat, to_counterparty_value_sat, to_holder_script_ref, to_counterparty_script_ref, funding_outpoint_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ClosingTransaction_trust(uint32_t this_arg) {
+       LDKClosingTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKTrustedClosingTransaction ret_var = ClosingTransaction_trust(&this_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ClosingTransaction_verify(uint32_t this_arg, uint32_t funding_outpoint) {
+       LDKClosingTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKOutPoint funding_outpoint_conv;
+       funding_outpoint_conv.inner = (void*)(funding_outpoint & (~1));
+       funding_outpoint_conv.is_owned = (funding_outpoint & 1) || (funding_outpoint == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(funding_outpoint_conv);
+       funding_outpoint_conv = OutPoint_clone(&funding_outpoint_conv);
+       LDKCResult_TrustedClosingTransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TrustedClosingTransactionNoneZ), "LDKCResult_TrustedClosingTransactionNoneZ");
+       *ret_conv = ClosingTransaction_verify(&this_arg_conv, funding_outpoint_conv);
+       return (uint64_t)ret_conv;
+}
+
+int64_t  __attribute__((visibility("default"))) TS_ClosingTransaction_to_holder_value_sat(uint32_t this_arg) {
+       LDKClosingTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int64_t ret_val = ClosingTransaction_to_holder_value_sat(&this_arg_conv);
+       return ret_val;
+}
+
+int64_t  __attribute__((visibility("default"))) TS_ClosingTransaction_to_counterparty_value_sat(uint32_t this_arg) {
+       LDKClosingTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int64_t ret_val = ClosingTransaction_to_counterparty_value_sat(&this_arg_conv);
+       return ret_val;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_ClosingTransaction_to_holder_script(uint32_t this_arg) {
+       LDKClosingTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKu8slice ret_var = ClosingTransaction_to_holder_script(&this_arg_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       return ret_arr;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_ClosingTransaction_to_counterparty_script(uint32_t this_arg) {
+       LDKClosingTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKu8slice ret_var = ClosingTransaction_to_counterparty_script(&this_arg_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       return ret_arr;
+}
+
+void  __attribute__((visibility("default"))) TS_TrustedClosingTransaction_free(uint32_t this_obj) {
+       LDKTrustedClosingTransaction this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       TrustedClosingTransaction_free(this_obj_conv);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_RoutingFees_get_proportional_millionths(uint32_t this_ptr) {
-       LDKRoutingFees this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = RoutingFees_get_proportional_millionths(&this_ptr_conv);
-       return ret_val;
+int8_tArray  __attribute__((visibility("default"))) TS_TrustedClosingTransaction_built_transaction(uint32_t this_arg) {
+       LDKTrustedClosingTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKTransaction ret_var = TrustedClosingTransaction_built_transaction(&this_arg_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       Transaction_free(ret_var);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_RoutingFees_set_proportional_millionths(uint32_t this_ptr, int32_t val) {
-       LDKRoutingFees this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       RoutingFees_set_proportional_millionths(&this_ptr_conv, val);
+int8_tArray  __attribute__((visibility("default"))) TS_TrustedClosingTransaction_get_sighash_all(uint32_t this_arg, int8_tArray funding_redeemscript, int64_t channel_value_satoshis) {
+       LDKTrustedClosingTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKu8slice funding_redeemscript_ref;
+       funding_redeemscript_ref.datalen = funding_redeemscript->arr_len;
+       funding_redeemscript_ref.data = funding_redeemscript->elems;
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, TrustedClosingTransaction_get_sighash_all(&this_arg_conv, funding_redeemscript_ref, channel_value_satoshis).data, 32);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RoutingFees_new(int32_t base_msat_arg, int32_t proportional_millionths_arg) {
-       LDKRoutingFees ret_var = RoutingFees_new(base_msat_arg, proportional_millionths_arg);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_TrustedClosingTransaction_sign(uint32_t this_arg, int8_tArray funding_key, int8_tArray funding_redeemscript, int64_t channel_value_satoshis) {
+       LDKTrustedClosingTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       unsigned char funding_key_arr[32];
+       CHECK(funding_key->arr_len == 32);
+       memcpy(funding_key_arr, funding_key->elems, 32);
+       unsigned char (*funding_key_ref)[32] = &funding_key_arr;
+       LDKu8slice funding_redeemscript_ref;
+       funding_redeemscript_ref.datalen = funding_redeemscript->arr_len;
+       funding_redeemscript_ref.data = funding_redeemscript->elems;
+       int8_tArray ret_arr = init_int8_tArray(64);
+       memcpy(ret_arr->elems, TrustedClosingTransaction_sign(&this_arg_conv, funding_key_ref, funding_redeemscript_ref, channel_value_satoshis).compact_form, 64);
+       return ret_arr;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_RoutingFees_eq(uint32_t a, uint32_t b) {
-       LDKRoutingFees a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKRoutingFees b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = RoutingFees_eq(&a_conv, &b_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_CommitmentTransaction_free(uint32_t this_obj) {
+       LDKCommitmentTransaction this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       CommitmentTransaction_free(this_obj_conv);
 }
 
-static inline uint64_t RoutingFees_clone_ptr(LDKRoutingFees *NONNULL_PTR arg) {
-       LDKRoutingFees ret_var = RoutingFees_clone(arg);
+static inline uint64_t CommitmentTransaction_clone_ptr(LDKCommitmentTransaction *NONNULL_PTR arg) {
+       LDKCommitmentTransaction ret_var = CommitmentTransaction_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -32734,21 +30309,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_RoutingFees_clone_ptr(uint32_t arg) {
-       LDKRoutingFees arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_clone_ptr(uint32_t arg) {
+       LDKCommitmentTransaction arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = RoutingFees_clone_ptr(&arg_conv);
+       int64_t ret_val = CommitmentTransaction_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RoutingFees_clone(uint32_t orig) {
-       LDKRoutingFees orig_conv;
+uint32_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_clone(uint32_t orig) {
+       LDKCommitmentTransaction orig_conv;
        orig_conv.inner = (void*)(orig & (~1));
        orig_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKRoutingFees ret_var = RoutingFees_clone(&orig_conv);
+       LDKCommitmentTransaction ret_var = CommitmentTransaction_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -32760,50 +30335,69 @@ uint32_t  __attribute__((visibility("default"))) TS_RoutingFees_clone(uint32_t o
        return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_RoutingFees_hash(uint32_t o) {
-       LDKRoutingFees o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = RoutingFees_hash(&o_conv);
-       return ret_val;
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_RoutingFees_write(uint32_t obj) {
-       LDKRoutingFees obj_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_CommitmentTransaction_write(uint32_t obj) {
+       LDKCommitmentTransaction obj_conv;
        obj_conv.inner = (void*)(obj & (~1));
        obj_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = RoutingFees_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       LDKCVec_u8Z ret_var = CommitmentTransaction_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RoutingFees_read(int8_tArray ser) {
+uint32_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_read(int8_tArray ser) {
        LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_RoutingFeesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RoutingFeesDecodeErrorZ), "LDKCResult_RoutingFeesDecodeErrorZ");
-       *ret_conv = RoutingFees_read(ser_ref);
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_CommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ), "LDKCResult_CommitmentTransactionDecodeErrorZ");
+       *ret_conv = CommitmentTransaction_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_free(uint32_t this_obj) {
-       LDKNodeAnnouncementInfo this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       NodeAnnouncementInfo_free(this_obj_conv);
+int64_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_commitment_number(uint32_t this_arg) {
+       LDKCommitmentTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int64_t ret_val = CommitmentTransaction_commitment_number(&this_arg_conv);
+       return ret_val;
 }
 
-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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNodeFeatures ret_var = NodeAnnouncementInfo_get_features(&this_ptr_conv);
+int64_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_to_broadcaster_value_sat(uint32_t this_arg) {
+       LDKCommitmentTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int64_t ret_val = CommitmentTransaction_to_broadcaster_value_sat(&this_arg_conv);
+       return ret_val;
+}
+
+int64_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_to_countersignatory_value_sat(uint32_t this_arg) {
+       LDKCommitmentTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int64_t ret_val = CommitmentTransaction_to_countersignatory_value_sat(&this_arg_conv);
+       return ret_val;
+}
+
+int32_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_feerate_per_kw(uint32_t this_arg) {
+       LDKCommitmentTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int32_t ret_val = CommitmentTransaction_feerate_per_kw(&this_arg_conv);
+       return ret_val;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_trust(uint32_t this_arg) {
+       LDKCommitmentTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKTrustedCommitmentTransaction ret_var = CommitmentTransaction_trust(&this_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -32815,165 +30409,52 @@ uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_get_fea
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_set_features(uint32_t this_ptr, uint32_t val) {
-       LDKNodeAnnouncementInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNodeFeatures val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = NodeFeatures_clone(&val_conv);
-       NodeAnnouncementInfo_set_features(&this_ptr_conv, val_conv);
-}
-
-int32_t  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_get_last_update(uint32_t this_ptr) {
-       LDKNodeAnnouncementInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = NodeAnnouncementInfo_get_last_update(&this_ptr_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_set_last_update(uint32_t this_ptr, int32_t val) {
-       LDKNodeAnnouncementInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       NodeAnnouncementInfo_set_last_update(&this_ptr_conv, val);
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_get_rgb(uint32_t this_ptr) {
-       LDKNodeAnnouncementInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(3, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *NodeAnnouncementInfo_get_rgb(&this_ptr_conv), 3);
-       return ret_arr;
-}
-
-void  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_set_rgb(uint32_t this_ptr, int8_tArray val) {
-       LDKNodeAnnouncementInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThreeBytes val_ref;
-       CHECK(*((uint32_t*)val) == 3);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 3);
-       NodeAnnouncementInfo_set_rgb(&this_ptr_conv, val_ref);
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_get_alias(uint32_t this_ptr) {
-       LDKNodeAnnouncementInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *NodeAnnouncementInfo_get_alias(&this_ptr_conv), 32);
-       return ret_arr;
-}
-
-void  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_set_alias(uint32_t this_ptr, int8_tArray val) {
-       LDKNodeAnnouncementInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKThirtyTwoBytes val_ref;
-       CHECK(*((uint32_t*)val) == 32);
-       memcpy(val_ref.data, (uint8_t*)(val + 4), 32);
-       NodeAnnouncementInfo_set_alias(&this_ptr_conv, val_ref);
-}
-
-void  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_set_addresses(uint32_t this_ptr, uint32_tArray val) {
-       LDKNodeAnnouncementInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_NetAddressZ val_constr;
-       val_constr.datalen = *((uint32_t*)val);
-       if (val_constr.datalen > 0)
-               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKNetAddress), "LDKCVec_NetAddressZ Elements");
-       else
-               val_constr.data = NULL;
-       uint32_t* val_vals = (uint32_t*)(val + 4);
-       for (size_t m = 0; m < val_constr.datalen; m++) {
-               uint32_t val_conv_12 = val_vals[m];
-               void* val_conv_12_ptr = (void*)(((uint64_t)val_conv_12) & ~1);
-               CHECK_ACCESS(val_conv_12_ptr);
-               LDKNetAddress val_conv_12_conv = *(LDKNetAddress*)(val_conv_12_ptr);
-               val_conv_12_conv = NetAddress_clone((LDKNetAddress*)(((uint64_t)val_conv_12) & ~1));
-               val_constr.data[m] = val_conv_12_conv;
-       }
-       NodeAnnouncementInfo_set_addresses(&this_ptr_conv, val_constr);
+uint32_t  __attribute__((visibility("default"))) TS_CommitmentTransaction_verify(uint32_t this_arg, uint32_t channel_parameters, uint32_t broadcaster_keys, uint32_t countersignatory_keys) {
+       LDKCommitmentTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKDirectedChannelTransactionParameters channel_parameters_conv;
+       channel_parameters_conv.inner = (void*)(channel_parameters & (~1));
+       channel_parameters_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_parameters_conv);
+       LDKChannelPublicKeys broadcaster_keys_conv;
+       broadcaster_keys_conv.inner = (void*)(broadcaster_keys & (~1));
+       broadcaster_keys_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(broadcaster_keys_conv);
+       LDKChannelPublicKeys countersignatory_keys_conv;
+       countersignatory_keys_conv.inner = (void*)(countersignatory_keys & (~1));
+       countersignatory_keys_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(countersignatory_keys_conv);
+       LDKCResult_TrustedCommitmentTransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ), "LDKCResult_TrustedCommitmentTransactionNoneZ");
+       *ret_conv = CommitmentTransaction_verify(&this_arg_conv, &channel_parameters_conv, &broadcaster_keys_conv, &countersignatory_keys_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_get_announcement_message(uint32_t this_ptr) {
-       LDKNodeAnnouncementInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNodeAnnouncement ret_var = NodeAnnouncementInfo_get_announcement_message(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_TrustedCommitmentTransaction_free(uint32_t this_obj) {
+       LDKTrustedCommitmentTransaction this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       TrustedCommitmentTransaction_free(this_obj_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_set_announcement_message(uint32_t this_ptr, uint32_t val) {
-       LDKNodeAnnouncementInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNodeAnnouncement val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = NodeAnnouncement_clone(&val_conv);
-       NodeAnnouncementInfo_set_announcement_message(&this_ptr_conv, val_conv);
+int8_tArray  __attribute__((visibility("default"))) TS_TrustedCommitmentTransaction_txid(uint32_t this_arg) {
+       LDKTrustedCommitmentTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, TrustedCommitmentTransaction_txid(&this_arg_conv).data, 32);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_new(uint32_t features_arg, int32_t last_update_arg, int8_tArray rgb_arg, int8_tArray alias_arg, uint32_tArray addresses_arg, uint32_t announcement_message_arg) {
-       LDKNodeFeatures features_arg_conv;
-       features_arg_conv.inner = (void*)(features_arg & (~1));
-       features_arg_conv.is_owned = (features_arg & 1) || (features_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(features_arg_conv);
-       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);
-       LDKThirtyTwoBytes alias_arg_ref;
-       CHECK(*((uint32_t*)alias_arg) == 32);
-       memcpy(alias_arg_ref.data, (uint8_t*)(alias_arg + 4), 32);
-       LDKCVec_NetAddressZ addresses_arg_constr;
-       addresses_arg_constr.datalen = *((uint32_t*)addresses_arg);
-       if (addresses_arg_constr.datalen > 0)
-               addresses_arg_constr.data = MALLOC(addresses_arg_constr.datalen * sizeof(LDKNetAddress), "LDKCVec_NetAddressZ Elements");
-       else
-               addresses_arg_constr.data = NULL;
-       uint32_t* addresses_arg_vals = (uint32_t*)(addresses_arg + 4);
-       for (size_t m = 0; m < addresses_arg_constr.datalen; m++) {
-               uint32_t addresses_arg_conv_12 = addresses_arg_vals[m];
-               void* addresses_arg_conv_12_ptr = (void*)(((uint64_t)addresses_arg_conv_12) & ~1);
-               CHECK_ACCESS(addresses_arg_conv_12_ptr);
-               LDKNetAddress addresses_arg_conv_12_conv = *(LDKNetAddress*)(addresses_arg_conv_12_ptr);
-               addresses_arg_constr.data[m] = addresses_arg_conv_12_conv;
-       }
-       LDKNodeAnnouncement announcement_message_arg_conv;
-       announcement_message_arg_conv.inner = (void*)(announcement_message_arg & (~1));
-       announcement_message_arg_conv.is_owned = (announcement_message_arg & 1) || (announcement_message_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(announcement_message_arg_conv);
-       announcement_message_arg_conv = NodeAnnouncement_clone(&announcement_message_arg_conv);
-       LDKNodeAnnouncementInfo ret_var = NodeAnnouncementInfo_new(features_arg_conv, last_update_arg, rgb_arg_ref, alias_arg_ref, addresses_arg_constr, announcement_message_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_TrustedCommitmentTransaction_built_transaction(uint32_t this_arg) {
+       LDKTrustedCommitmentTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKBuiltCommitmentTransaction ret_var = TrustedCommitmentTransaction_built_transaction(&this_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -32985,33 +30466,12 @@ uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_new(uin
        return ret_ref;
 }
 
-static inline uint64_t NodeAnnouncementInfo_clone_ptr(LDKNodeAnnouncementInfo *NONNULL_PTR arg) {
-       LDKNodeAnnouncementInfo ret_var = NodeAnnouncementInfo_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_clone_ptr(uint32_t arg) {
-       LDKNodeAnnouncementInfo arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = NodeAnnouncementInfo_clone_ptr(&arg_conv);
-       return ret_val;
-}
-
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKNodeAnnouncementInfo ret_var = NodeAnnouncementInfo_clone(&orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_TrustedCommitmentTransaction_keys(uint32_t this_arg) {
+       LDKTrustedCommitmentTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKTxCreationKeys ret_var = TrustedCommitmentTransaction_keys(&this_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -33023,141 +30483,136 @@ uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_clone(u
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_write(uint32_t obj) {
-       LDKNodeAnnouncementInfo obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = NodeAnnouncementInfo_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+jboolean  __attribute__((visibility("default"))) TS_TrustedCommitmentTransaction_opt_anchors(uint32_t this_arg) {
+       LDKTrustedCommitmentTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       jboolean ret_val = TrustedCommitmentTransaction_opt_anchors(&this_arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_NodeAnnouncementInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ), "LDKCResult_NodeAnnouncementInfoDecodeErrorZ");
-       *ret_conv = NodeAnnouncementInfo_read(ser_ref);
+uint32_t  __attribute__((visibility("default"))) TS_TrustedCommitmentTransaction_get_htlc_sigs(uint32_t this_arg, int8_tArray htlc_base_key, uint32_t channel_parameters) {
+       LDKTrustedCommitmentTransaction this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       unsigned char htlc_base_key_arr[32];
+       CHECK(htlc_base_key->arr_len == 32);
+       memcpy(htlc_base_key_arr, htlc_base_key->elems, 32);
+       unsigned char (*htlc_base_key_ref)[32] = &htlc_base_key_arr;
+       LDKDirectedChannelTransactionParameters channel_parameters_conv;
+       channel_parameters_conv.inner = (void*)(channel_parameters & (~1));
+       channel_parameters_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_parameters_conv);
+       LDKCResult_CVec_SignatureZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_SignatureZNoneZ), "LDKCResult_CVec_SignatureZNoneZ");
+       *ret_conv = TrustedCommitmentTransaction_get_htlc_sigs(&this_arg_conv, htlc_base_key_ref, &channel_parameters_conv);
        return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_NodeInfo_free(uint32_t this_obj) {
-       LDKNodeInfo this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       NodeInfo_free(this_obj_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(broadcaster_payment_basepoint->arr_len == 33);
+       memcpy(broadcaster_payment_basepoint_ref.compressed_form, broadcaster_payment_basepoint->elems, 33);
+       LDKPublicKey countersignatory_payment_basepoint_ref;
+       CHECK(countersignatory_payment_basepoint->arr_len == 33);
+       memcpy(countersignatory_payment_basepoint_ref.compressed_form, countersignatory_payment_basepoint->elems, 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;
 }
 
-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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_u64Z val_constr;
-       val_constr.datalen = *((uint32_t*)val);
-       if (val_constr.datalen > 0)
-               val_constr.data = MALLOC(val_constr.datalen * sizeof(int64_t), "LDKCVec_u64Z Elements");
-       else
-               val_constr.data = NULL;
-       int64_t* val_vals = (int64_t*)(val + 4);
-       for (size_t i = 0; i < val_constr.datalen; i++) {
-               int64_t val_conv_8 = val_vals[i];
-               val_constr.data[i] = val_conv_8;
-       }
-       NodeInfo_set_channels(&this_ptr_conv, val_constr);
+jboolean  __attribute__((visibility("default"))) TS_InitFeatures_eq(uint32_t a, uint32_t b) {
+       LDKInitFeatures a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       LDKInitFeatures b_conv;
+       b_conv.inner = (void*)(b & (~1));
+       b_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
+       jboolean ret_val = InitFeatures_eq(&a_conv, &b_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NodeInfo_get_lowest_inbound_channel_fees(uint32_t this_ptr) {
-       LDKNodeInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKRoutingFees ret_var = NodeInfo_get_lowest_inbound_channel_fees(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
-       }
-       return ret_ref;
+jboolean  __attribute__((visibility("default"))) TS_NodeFeatures_eq(uint32_t a, uint32_t b) {
+       LDKNodeFeatures a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       LDKNodeFeatures b_conv;
+       b_conv.inner = (void*)(b & (~1));
+       b_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
+       jboolean ret_val = NodeFeatures_eq(&a_conv, &b_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_NodeInfo_set_lowest_inbound_channel_fees(uint32_t this_ptr, uint32_t val) {
-       LDKNodeInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKRoutingFees val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = RoutingFees_clone(&val_conv);
-       NodeInfo_set_lowest_inbound_channel_fees(&this_ptr_conv, val_conv);
+jboolean  __attribute__((visibility("default"))) TS_ChannelFeatures_eq(uint32_t a, uint32_t b) {
+       LDKChannelFeatures a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       LDKChannelFeatures b_conv;
+       b_conv.inner = (void*)(b & (~1));
+       b_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
+       jboolean ret_val = ChannelFeatures_eq(&a_conv, &b_conv);
+       return ret_val;
+}
+
+jboolean  __attribute__((visibility("default"))) TS_InvoiceFeatures_eq(uint32_t a, uint32_t b) {
+       LDKInvoiceFeatures a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       LDKInvoiceFeatures b_conv;
+       b_conv.inner = (void*)(b & (~1));
+       b_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
+       jboolean ret_val = InvoiceFeatures_eq(&a_conv, &b_conv);
+       return ret_val;
+}
+
+jboolean  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_eq(uint32_t a, uint32_t b) {
+       LDKChannelTypeFeatures a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       LDKChannelTypeFeatures b_conv;
+       b_conv.inner = (void*)(b & (~1));
+       b_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
+       jboolean ret_val = ChannelTypeFeatures_eq(&a_conv, &b_conv);
+       return ret_val;
+}
+
+static inline uint64_t InitFeatures_clone_ptr(LDKInitFeatures *NONNULL_PTR arg) {
+       LDKInitFeatures ret_var = InitFeatures_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_NodeInfo_get_announcement_info(uint32_t this_ptr) {
-       LDKNodeInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNodeAnnouncementInfo ret_var = NodeInfo_get_announcement_info(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
-       }
        return ret_ref;
 }
-
-void  __attribute__((visibility("default"))) TS_NodeInfo_set_announcement_info(uint32_t this_ptr, uint32_t val) {
-       LDKNodeInfo this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNodeAnnouncementInfo val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = NodeAnnouncementInfo_clone(&val_conv);
-       NodeInfo_set_announcement_info(&this_ptr_conv, val_conv);
+int64_t  __attribute__((visibility("default"))) TS_InitFeatures_clone_ptr(uint32_t arg) {
+       LDKInitFeatures arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = InitFeatures_clone_ptr(&arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NodeInfo_new(int64_tArray channels_arg, uint32_t lowest_inbound_channel_fees_arg, uint32_t announcement_info_arg) {
-       LDKCVec_u64Z channels_arg_constr;
-       channels_arg_constr.datalen = *((uint32_t*)channels_arg);
-       if (channels_arg_constr.datalen > 0)
-               channels_arg_constr.data = MALLOC(channels_arg_constr.datalen * sizeof(int64_t), "LDKCVec_u64Z Elements");
-       else
-               channels_arg_constr.data = NULL;
-       int64_t* channels_arg_vals = (int64_t*)(channels_arg + 4);
-       for (size_t i = 0; i < channels_arg_constr.datalen; i++) {
-               int64_t channels_arg_conv_8 = channels_arg_vals[i];
-               channels_arg_constr.data[i] = channels_arg_conv_8;
-       }
-       LDKRoutingFees lowest_inbound_channel_fees_arg_conv;
-       lowest_inbound_channel_fees_arg_conv.inner = (void*)(lowest_inbound_channel_fees_arg & (~1));
-       lowest_inbound_channel_fees_arg_conv.is_owned = (lowest_inbound_channel_fees_arg & 1) || (lowest_inbound_channel_fees_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(lowest_inbound_channel_fees_arg_conv);
-       lowest_inbound_channel_fees_arg_conv = RoutingFees_clone(&lowest_inbound_channel_fees_arg_conv);
-       LDKNodeAnnouncementInfo announcement_info_arg_conv;
-       announcement_info_arg_conv.inner = (void*)(announcement_info_arg & (~1));
-       announcement_info_arg_conv.is_owned = (announcement_info_arg & 1) || (announcement_info_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(announcement_info_arg_conv);
-       announcement_info_arg_conv = NodeAnnouncementInfo_clone(&announcement_info_arg_conv);
-       LDKNodeInfo ret_var = NodeInfo_new(channels_arg_constr, lowest_inbound_channel_fees_arg_conv, announcement_info_arg_conv);
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKInitFeatures ret_var = InitFeatures_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -33169,8 +30624,8 @@ uint32_t  __attribute__((visibility("default"))) TS_NodeInfo_new(int64_tArray ch
        return ret_ref;
 }
 
-static inline uint64_t NodeInfo_clone_ptr(LDKNodeInfo *NONNULL_PTR arg) {
-       LDKNodeInfo ret_var = NodeInfo_clone(arg);
+static inline uint64_t NodeFeatures_clone_ptr(LDKNodeFeatures *NONNULL_PTR arg) {
+       LDKNodeFeatures ret_var = NodeFeatures_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -33181,21 +30636,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_NodeInfo_clone_ptr(uint32_t arg) {
-       LDKNodeInfo arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_NodeFeatures_clone_ptr(uint32_t arg) {
+       LDKNodeFeatures arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = NodeInfo_clone_ptr(&arg_conv);
+       int64_t ret_val = NodeFeatures_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NodeInfo_clone(uint32_t orig) {
-       LDKNodeInfo orig_conv;
+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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKNodeInfo ret_var = NodeInfo_clone(&orig_conv);
+       LDKNodeFeatures ret_var = NodeFeatures_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -33207,53 +30662,33 @@ uint32_t  __attribute__((visibility("default"))) TS_NodeInfo_clone(uint32_t orig
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_NodeInfo_write(uint32_t obj) {
-       LDKNodeInfo obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = NodeInfo_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NodeInfo_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_NodeInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeInfoDecodeErrorZ), "LDKCResult_NodeInfoDecodeErrorZ");
-       *ret_conv = NodeInfo_read(ser_ref);
-       return (uint64_t)ret_conv;
+static inline uint64_t ChannelFeatures_clone_ptr(LDKChannelFeatures *NONNULL_PTR arg) {
+       LDKChannelFeatures ret_var = ChannelFeatures_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-int8_tArray  __attribute__((visibility("default"))) TS_NetworkGraph_write(uint32_t obj) {
-       LDKNetworkGraph obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = NetworkGraph_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+       return ret_ref;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_NetworkGraphDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetworkGraphDecodeErrorZ), "LDKCResult_NetworkGraphDecodeErrorZ");
-       *ret_conv = NetworkGraph_read(ser_ref);
-       return (uint64_t)ret_conv;
+int64_t  __attribute__((visibility("default"))) TS_ChannelFeatures_clone_ptr(uint32_t arg) {
+       LDKChannelFeatures arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ChannelFeatures_clone_ptr(&arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_new(int8_tArray genesis_hash) {
-       LDKThirtyTwoBytes genesis_hash_ref;
-       CHECK(*((uint32_t*)genesis_hash) == 32);
-       memcpy(genesis_hash_ref.data, (uint8_t*)(genesis_hash + 4), 32);
-       LDKNetworkGraph ret_var = NetworkGraph_new(genesis_hash_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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKChannelFeatures ret_var = ChannelFeatures_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -33265,12 +30700,33 @@ uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_new(int8_tArray
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_read_only(uint32_t this_arg) {
-       LDKNetworkGraph this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKReadOnlyNetworkGraph ret_var = NetworkGraph_read_only(&this_arg_conv);
+static inline uint64_t InvoiceFeatures_clone_ptr(LDKInvoiceFeatures *NONNULL_PTR arg) {
+       LDKInvoiceFeatures ret_var = InvoiceFeatures_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_InvoiceFeatures_clone_ptr(uint32_t arg) {
+       LDKInvoiceFeatures arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = InvoiceFeatures_clone_ptr(&arg_conv);
+       return ret_val;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_InvoiceFeatures_clone(uint32_t orig) {
+       LDKInvoiceFeatures orig_conv;
+       orig_conv.inner = (void*)(orig & (~1));
+       orig_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKInvoiceFeatures ret_var = InvoiceFeatures_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -33278,184 +30734,90 @@ uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_read_only(uint3
        ret_ref = (uint64_t)ret_var.inner;
        if (ret_var.is_owned) {
                ret_ref |= 1;
-       }
-       return ret_ref;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_update_node_from_announcement(uint32_t this_arg, uint32_t msg) {
-       LDKNetworkGraph this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKNodeAnnouncement msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
-       *ret_conv = NetworkGraph_update_node_from_announcement(&this_arg_conv, &msg_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_update_node_from_unsigned_announcement(uint32_t this_arg, uint32_t msg) {
-       LDKNetworkGraph this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKUnsignedNodeAnnouncement msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
-       *ret_conv = NetworkGraph_update_node_from_unsigned_announcement(&this_arg_conv, &msg_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_update_channel_from_announcement(uint32_t this_arg, uint32_t msg, uint32_t chain_access) {
-       LDKNetworkGraph this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKChannelAnnouncement msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       void* chain_access_ptr = (void*)(((uint64_t)chain_access) & ~1);
-       CHECK_ACCESS(chain_access_ptr);
-       LDKCOption_AccessZ chain_access_conv = *(LDKCOption_AccessZ*)(chain_access_ptr);
-       // Warning: we may need a move here but no clone is available for LDKCOption_AccessZ
-       if (chain_access_conv.tag == LDKCOption_AccessZ_Some) {
-               // Manually implement clone for Java trait instances
-       }
-       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
-       *ret_conv = NetworkGraph_update_channel_from_announcement(&this_arg_conv, &msg_conv, chain_access_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_update_channel_from_unsigned_announcement(uint32_t this_arg, uint32_t msg, uint32_t chain_access) {
-       LDKNetworkGraph this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKUnsignedChannelAnnouncement msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       void* chain_access_ptr = (void*)(((uint64_t)chain_access) & ~1);
-       CHECK_ACCESS(chain_access_ptr);
-       LDKCOption_AccessZ chain_access_conv = *(LDKCOption_AccessZ*)(chain_access_ptr);
-       // Warning: we may need a move here but no clone is available for LDKCOption_AccessZ
-       if (chain_access_conv.tag == LDKCOption_AccessZ_Some) {
-               // Manually implement clone for Java trait instances
-       }
-       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
-       *ret_conv = NetworkGraph_update_channel_from_unsigned_announcement(&this_arg_conv, &msg_conv, chain_access_conv);
-       return (uint64_t)ret_conv;
-}
-
-void  __attribute__((visibility("default"))) TS_NetworkGraph_close_channel_from_update(uint32_t this_arg, int64_t short_channel_id, jboolean is_permanent) {
-       LDKNetworkGraph this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       NetworkGraph_close_channel_from_update(&this_arg_conv, short_channel_id, is_permanent);
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_NetworkGraph_fail_node(uint32_t this_arg, int8_tArray _node_id, jboolean is_permanent) {
-       LDKNetworkGraph this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKPublicKey _node_id_ref;
-       CHECK(*((uint32_t*)_node_id) == 33);
-       memcpy(_node_id_ref.compressed_form, (uint8_t*)(_node_id + 4), 33);
-       NetworkGraph_fail_node(&this_arg_conv, _node_id_ref, is_permanent);
+static inline uint64_t ChannelTypeFeatures_clone_ptr(LDKChannelTypeFeatures *NONNULL_PTR arg) {
+       LDKChannelTypeFeatures ret_var = ChannelTypeFeatures_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-void  __attribute__((visibility("default"))) TS_NetworkGraph_remove_stale_channels_with_time(uint32_t this_arg, int64_t current_time_unix) {
-       LDKNetworkGraph this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       NetworkGraph_remove_stale_channels_with_time(&this_arg_conv, current_time_unix);
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_clone_ptr(uint32_t arg) {
+       LDKChannelTypeFeatures arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ChannelTypeFeatures_clone_ptr(&arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_update_channel(uint32_t this_arg, uint32_t msg) {
-       LDKNetworkGraph this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKChannelUpdate msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
-       *ret_conv = NetworkGraph_update_channel(&this_arg_conv, &msg_conv);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_clone(uint32_t orig) {
+       LDKChannelTypeFeatures orig_conv;
+       orig_conv.inner = (void*)(orig & (~1));
+       orig_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKChannelTypeFeatures ret_var = ChannelTypeFeatures_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_update_channel_unsigned(uint32_t this_arg, uint32_t msg) {
-       LDKNetworkGraph this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKUnsignedChannelUpdate msg_conv;
-       msg_conv.inner = (void*)(msg & (~1));
-       msg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
-       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
-       *ret_conv = NetworkGraph_update_channel_unsigned(&this_arg_conv, &msg_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_InitFeatures_free(uint32_t this_obj) {
+       LDKInitFeatures this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       InitFeatures_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ReadOnlyNetworkGraph_get_addresses(uint32_t this_arg, int8_tArray pubkey) {
-       LDKReadOnlyNetworkGraph this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKPublicKey pubkey_ref;
-       CHECK(*((uint32_t*)pubkey) == 33);
-       memcpy(pubkey_ref.compressed_form, (uint8_t*)(pubkey + 4), 33);
-       LDKCOption_CVec_NetAddressZZ *ret_copy = MALLOC(sizeof(LDKCOption_CVec_NetAddressZZ), "LDKCOption_CVec_NetAddressZZ");
-       *ret_copy = ReadOnlyNetworkGraph_get_addresses(&this_arg_conv, pubkey_ref);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_NodeFeatures_free(uint32_t this_obj) {
+       LDKNodeFeatures this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       NodeFeatures_free(this_obj_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHop_free(uint32_t this_obj) {
-       LDKRouteHop this_obj_conv;
+void  __attribute__((visibility("default"))) TS_ChannelFeatures_free(uint32_t this_obj) {
+       LDKChannelFeatures this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       RouteHop_free(this_obj_conv);
+       ChannelFeatures_free(this_obj_conv);
 }
 
-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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), RouteHop_get_pubkey(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_InvoiceFeatures_free(uint32_t this_obj) {
+       LDKInvoiceFeatures this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       InvoiceFeatures_free(this_obj_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHop_set_pubkey(uint32_t this_ptr, int8_tArray val) {
-       LDKRouteHop this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       RouteHop_set_pubkey(&this_ptr_conv, val_ref);
+void  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_free(uint32_t this_obj) {
+       LDKChannelTypeFeatures this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       ChannelTypeFeatures_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RouteHop_get_node_features(uint32_t this_ptr) {
-       LDKRouteHop this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNodeFeatures ret_var = RouteHop_get_node_features(&this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_InitFeatures_empty() {
+       LDKInitFeatures ret_var = InitFeatures_empty();
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -33467,42 +30829,8 @@ uint32_t  __attribute__((visibility("default"))) TS_RouteHop_get_node_features(u
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHop_set_node_features(uint32_t this_ptr, uint32_t val) {
-       LDKRouteHop this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKNodeFeatures val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = NodeFeatures_clone(&val_conv);
-       RouteHop_set_node_features(&this_ptr_conv, val_conv);
-}
-
-int64_t  __attribute__((visibility("default"))) TS_RouteHop_get_short_channel_id(uint32_t this_ptr) {
-       LDKRouteHop this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = RouteHop_get_short_channel_id(&this_ptr_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_RouteHop_set_short_channel_id(uint32_t this_ptr, int64_t val) {
-       LDKRouteHop this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       RouteHop_set_short_channel_id(&this_ptr_conv, val);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_RouteHop_get_channel_features(uint32_t this_ptr) {
-       LDKRouteHop this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelFeatures ret_var = RouteHop_get_channel_features(&this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_InitFeatures_known() {
+       LDKInitFeatures ret_var = InitFeatures_known();
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -33514,68 +30842,52 @@ uint32_t  __attribute__((visibility("default"))) TS_RouteHop_get_channel_feature
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHop_set_channel_features(uint32_t this_ptr, uint32_t val) {
-       LDKRouteHop this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKChannelFeatures val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = ChannelFeatures_clone(&val_conv);
-       RouteHop_set_channel_features(&this_ptr_conv, val_conv);
-}
-
-int64_t  __attribute__((visibility("default"))) TS_RouteHop_get_fee_msat(uint32_t this_ptr) {
-       LDKRouteHop this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = RouteHop_get_fee_msat(&this_ptr_conv);
+jboolean  __attribute__((visibility("default"))) TS_InitFeatures_requires_unknown_bits(uint32_t this_arg) {
+       LDKInitFeatures this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       jboolean ret_val = InitFeatures_requires_unknown_bits(&this_arg_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHop_set_fee_msat(uint32_t this_ptr, int64_t val) {
-       LDKRouteHop this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       RouteHop_set_fee_msat(&this_ptr_conv, val);
-}
-
-int32_t  __attribute__((visibility("default"))) TS_RouteHop_get_cltv_expiry_delta(uint32_t this_ptr) {
-       LDKRouteHop this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = RouteHop_get_cltv_expiry_delta(&this_ptr_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_NodeFeatures_empty() {
+       LDKNodeFeatures ret_var = NodeFeatures_empty();
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHop_set_cltv_expiry_delta(uint32_t this_ptr, int32_t val) {
-       LDKRouteHop this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       RouteHop_set_cltv_expiry_delta(&this_ptr_conv, val);
+uint32_t  __attribute__((visibility("default"))) TS_NodeFeatures_known() {
+       LDKNodeFeatures ret_var = NodeFeatures_known();
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RouteHop_new(int8_tArray pubkey_arg, uint32_t node_features_arg, int64_t short_channel_id_arg, uint32_t channel_features_arg, int64_t fee_msat_arg, int32_t cltv_expiry_delta_arg) {
-       LDKPublicKey pubkey_arg_ref;
-       CHECK(*((uint32_t*)pubkey_arg) == 33);
-       memcpy(pubkey_arg_ref.compressed_form, (uint8_t*)(pubkey_arg + 4), 33);
-       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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(node_features_arg_conv);
-       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);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_features_arg_conv);
-       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);
+jboolean  __attribute__((visibility("default"))) TS_NodeFeatures_requires_unknown_bits(uint32_t this_arg) {
+       LDKNodeFeatures this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       jboolean ret_val = NodeFeatures_requires_unknown_bits(&this_arg_conv);
+       return ret_val;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelFeatures_empty() {
+       LDKChannelFeatures ret_var = ChannelFeatures_empty();
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -33587,33 +30899,8 @@ uint32_t  __attribute__((visibility("default"))) TS_RouteHop_new(int8_tArray pub
        return ret_ref;
 }
 
-static inline uint64_t RouteHop_clone_ptr(LDKRouteHop *NONNULL_PTR arg) {
-       LDKRouteHop ret_var = RouteHop_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_RouteHop_clone_ptr(uint32_t arg) {
-       LDKRouteHop arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = RouteHop_clone_ptr(&arg_conv);
-       return ret_val;
-}
-
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKRouteHop ret_var = RouteHop_clone(&orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelFeatures_known() {
+       LDKChannelFeatures ret_var = ChannelFeatures_known();
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -33625,193 +30912,52 @@ uint32_t  __attribute__((visibility("default"))) TS_RouteHop_clone(uint32_t orig
        return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_RouteHop_hash(uint32_t o) {
-       LDKRouteHop o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = RouteHop_hash(&o_conv);
-       return ret_val;
-}
-
-jboolean  __attribute__((visibility("default"))) TS_RouteHop_eq(uint32_t a, uint32_t b) {
-       LDKRouteHop a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKRouteHop b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = RouteHop_eq(&a_conv, &b_conv);
+jboolean  __attribute__((visibility("default"))) TS_ChannelFeatures_requires_unknown_bits(uint32_t this_arg) {
+       LDKChannelFeatures this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       jboolean ret_val = ChannelFeatures_requires_unknown_bits(&this_arg_conv);
        return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_RouteHop_write(uint32_t obj) {
-       LDKRouteHop obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = RouteHop_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_RouteHop_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_RouteHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHopDecodeErrorZ), "LDKCResult_RouteHopDecodeErrorZ");
-       *ret_conv = RouteHop_read(ser_ref);
-       return (uint64_t)ret_conv;
-}
-
-void  __attribute__((visibility("default"))) TS_Route_free(uint32_t this_obj) {
-       LDKRoute this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       Route_free(this_obj_conv);
-}
-
-ptrArray  __attribute__((visibility("default"))) TS_Route_get_paths(uint32_t this_ptr) {
-       LDKRoute this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_CVec_RouteHopZZ ret_var = Route_get_paths(&this_ptr_conv);
-       ptrArray ret_arr = NULL;
-       ret_arr = init_arr(ret_var.datalen, sizeof(uint32_t), "Native ptrArray Bytes");
-       uint32_tArray *ret_arr_ptr = (uint32_tArray*)(ret_arr + 4);
-       for (size_t m = 0; m < ret_var.datalen; m++) {
-               LDKCVec_RouteHopZ ret_conv_12_var = ret_var.data[m];
-               uint32_tArray ret_conv_12_arr = NULL;
-               ret_conv_12_arr = init_arr(ret_conv_12_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
-               uint32_t *ret_conv_12_arr_ptr = (uint32_t*)(ret_conv_12_arr + 4);
-               for (size_t k = 0; k < ret_conv_12_var.datalen; k++) {
-                       LDKRouteHop ret_conv_12_conv_10_var = ret_conv_12_var.data[k];
-                       uint64_t ret_conv_12_conv_10_ref = 0;
-                       CHECK((((uint64_t)ret_conv_12_conv_10_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-                       CHECK((((uint64_t)&ret_conv_12_conv_10_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_12_conv_10_var);
-                       ret_conv_12_conv_10_ref = (uint64_t)ret_conv_12_conv_10_var.inner;
-                       if (ret_conv_12_conv_10_var.is_owned) {
-                               ret_conv_12_conv_10_ref |= 1;
-                       }
-                       ret_conv_12_arr_ptr[k] = ret_conv_12_conv_10_ref;
-               }
-               
-               FREE(ret_conv_12_var.data);
-               ret_arr_ptr[m] = ret_conv_12_arr;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
-}
-
-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));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_CVec_RouteHopZZ val_constr;
-       val_constr.datalen = *((uint32_t*)val);
-       if (val_constr.datalen > 0)
-               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKCVec_RouteHopZ), "LDKCVec_CVec_RouteHopZZ Elements");
-       else
-               val_constr.data = NULL;
-       uint32_tArray* val_vals = (uint32_tArray*)(val + 4);
-       for (size_t m = 0; m < val_constr.datalen; m++) {
-               uint32_tArray val_conv_12 = val_vals[m];
-               LDKCVec_RouteHopZ val_conv_12_constr;
-               val_conv_12_constr.datalen = *((uint32_t*)val_conv_12);
-               if (val_conv_12_constr.datalen > 0)
-                       val_conv_12_constr.data = MALLOC(val_conv_12_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements");
-               else
-                       val_conv_12_constr.data = NULL;
-               uint32_t* val_conv_12_vals = (uint32_t*)(val_conv_12 + 4);
-               for (size_t k = 0; k < val_conv_12_constr.datalen; k++) {
-                       uint32_t val_conv_12_conv_10 = val_conv_12_vals[k];
-                       LDKRouteHop val_conv_12_conv_10_conv;
-                       val_conv_12_conv_10_conv.inner = (void*)(val_conv_12_conv_10 & (~1));
-                       val_conv_12_conv_10_conv.is_owned = (val_conv_12_conv_10 & 1) || (val_conv_12_conv_10 == 0);
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv_12_conv_10_conv);
-                       val_conv_12_conv_10_conv = RouteHop_clone(&val_conv_12_conv_10_conv);
-                       val_conv_12_constr.data[k] = val_conv_12_conv_10_conv;
-               }
-               val_constr.data[m] = val_conv_12_constr;
+uint32_t  __attribute__((visibility("default"))) TS_InvoiceFeatures_empty() {
+       LDKInvoiceFeatures ret_var = InvoiceFeatures_empty();
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
-       Route_set_paths(&this_ptr_conv, val_constr);
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Route_get_payee(uint32_t this_ptr) {
-       LDKRoute this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPayee ret_var = Route_get_payee(&this_ptr_conv);
+uint32_t  __attribute__((visibility("default"))) TS_InvoiceFeatures_known() {
+       LDKInvoiceFeatures ret_var = InvoiceFeatures_known();
        uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
        CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_Route_set_payee(uint32_t this_ptr, uint32_t val) {
-       LDKRoute this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPayee val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = Payee_clone(&val_conv);
-       Route_set_payee(&this_ptr_conv, val_conv);
+jboolean  __attribute__((visibility("default"))) TS_InvoiceFeatures_requires_unknown_bits(uint32_t this_arg) {
+       LDKInvoiceFeatures this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       jboolean ret_val = InvoiceFeatures_requires_unknown_bits(&this_arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Route_new(ptrArray paths_arg, uint32_t payee_arg) {
-       LDKCVec_CVec_RouteHopZZ paths_arg_constr;
-       paths_arg_constr.datalen = *((uint32_t*)paths_arg);
-       if (paths_arg_constr.datalen > 0)
-               paths_arg_constr.data = MALLOC(paths_arg_constr.datalen * sizeof(LDKCVec_RouteHopZ), "LDKCVec_CVec_RouteHopZZ Elements");
-       else
-               paths_arg_constr.data = NULL;
-       uint32_tArray* paths_arg_vals = (uint32_tArray*)(paths_arg + 4);
-       for (size_t m = 0; m < paths_arg_constr.datalen; m++) {
-               uint32_tArray paths_arg_conv_12 = paths_arg_vals[m];
-               LDKCVec_RouteHopZ paths_arg_conv_12_constr;
-               paths_arg_conv_12_constr.datalen = *((uint32_t*)paths_arg_conv_12);
-               if (paths_arg_conv_12_constr.datalen > 0)
-                       paths_arg_conv_12_constr.data = MALLOC(paths_arg_conv_12_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements");
-               else
-                       paths_arg_conv_12_constr.data = NULL;
-               uint32_t* paths_arg_conv_12_vals = (uint32_t*)(paths_arg_conv_12 + 4);
-               for (size_t k = 0; k < paths_arg_conv_12_constr.datalen; k++) {
-                       uint32_t paths_arg_conv_12_conv_10 = paths_arg_conv_12_vals[k];
-                       LDKRouteHop paths_arg_conv_12_conv_10_conv;
-                       paths_arg_conv_12_conv_10_conv.inner = (void*)(paths_arg_conv_12_conv_10 & (~1));
-                       paths_arg_conv_12_conv_10_conv.is_owned = (paths_arg_conv_12_conv_10 & 1) || (paths_arg_conv_12_conv_10 == 0);
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(paths_arg_conv_12_conv_10_conv);
-                       paths_arg_conv_12_conv_10_conv = RouteHop_clone(&paths_arg_conv_12_conv_10_conv);
-                       paths_arg_conv_12_constr.data[k] = paths_arg_conv_12_conv_10_conv;
-               }
-               paths_arg_constr.data[m] = paths_arg_conv_12_constr;
-       }
-       LDKPayee payee_arg_conv;
-       payee_arg_conv.inner = (void*)(payee_arg & (~1));
-       payee_arg_conv.is_owned = (payee_arg & 1) || (payee_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(payee_arg_conv);
-       payee_arg_conv = Payee_clone(&payee_arg_conv);
-       LDKRoute ret_var = Route_new(paths_arg_constr, payee_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_empty() {
+       LDKChannelTypeFeatures ret_var = ChannelTypeFeatures_empty();
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -33822,34 +30968,9 @@ uint32_t  __attribute__((visibility("default"))) TS_Route_new(ptrArray paths_arg
        }
        return ret_ref;
 }
-
-static inline uint64_t Route_clone_ptr(LDKRoute *NONNULL_PTR arg) {
-       LDKRoute ret_var = Route_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_Route_clone_ptr(uint32_t arg) {
-       LDKRoute arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = Route_clone_ptr(&arg_conv);
-       return ret_val;
-}
-
-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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKRoute ret_var = Route_clone(&orig_conv);
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_known() {
+       LDKChannelTypeFeatures ret_var = ChannelTypeFeatures_known();
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -33861,81 +30982,155 @@ uint32_t  __attribute__((visibility("default"))) TS_Route_clone(uint32_t orig) {
        return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_Route_hash(uint32_t o) {
-       LDKRoute o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = Route_hash(&o_conv);
+jboolean  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_requires_unknown_bits(uint32_t this_arg) {
+       LDKChannelTypeFeatures this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       jboolean ret_val = ChannelTypeFeatures_requires_unknown_bits(&this_arg_conv);
        return ret_val;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_Route_eq(uint32_t a, uint32_t b) {
-       LDKRoute a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKRoute b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = Route_eq(&a_conv, &b_conv);
-       return ret_val;
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = InitFeatures_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_Route_get_total_fees(uint32_t this_arg) {
-       LDKRoute this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = Route_get_total_fees(&this_arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_InitFeatures_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_InitFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitFeaturesDecodeErrorZ), "LDKCResult_InitFeaturesDecodeErrorZ");
+       *ret_conv = InitFeatures_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_Route_get_total_amount(uint32_t this_arg) {
-       LDKRoute this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = Route_get_total_amount(&this_arg_conv);
-       return ret_val;
+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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ChannelFeatures_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_Route_write(uint32_t obj) {
-       LDKRoute obj_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelFeatures_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ChannelFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ), "LDKCResult_ChannelFeaturesDecodeErrorZ");
+       *ret_conv = ChannelFeatures_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = Route_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       LDKCVec_u8Z ret_var = NodeFeatures_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Route_read(int8_tArray ser) {
+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_RouteDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteDecodeErrorZ), "LDKCResult_RouteDecodeErrorZ");
-       *ret_conv = Route_read(ser_ref);
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_NodeFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeFeaturesDecodeErrorZ), "LDKCResult_NodeFeaturesDecodeErrorZ");
+       *ret_conv = NodeFeatures_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteParameters_free(uint32_t this_obj) {
-       LDKRouteParameters this_obj_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_InvoiceFeatures_write(uint32_t obj) {
+       LDKInvoiceFeatures obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = InvoiceFeatures_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_InvoiceFeatures_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_InvoiceFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceFeaturesDecodeErrorZ), "LDKCResult_InvoiceFeaturesDecodeErrorZ");
+       *ret_conv = InvoiceFeatures_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_write(uint32_t obj) {
+       LDKChannelTypeFeatures obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ChannelTypeFeatures_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelTypeFeatures_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ChannelTypeFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTypeFeaturesDecodeErrorZ), "LDKCResult_ChannelTypeFeaturesDecodeErrorZ");
+       *ret_conv = ChannelTypeFeatures_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_ShutdownScript_free(uint32_t this_obj) {
+       LDKShutdownScript this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       RouteParameters_free(this_obj_conv);
+       ShutdownScript_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RouteParameters_get_payee(uint32_t this_ptr) {
-       LDKRouteParameters this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPayee ret_var = RouteParameters_get_payee(&this_ptr_conv);
+static inline uint64_t ShutdownScript_clone_ptr(LDKShutdownScript *NONNULL_PTR arg) {
+       LDKShutdownScript ret_var = ShutdownScript_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_ShutdownScript_clone_ptr(uint32_t arg) {
+       LDKShutdownScript arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ShutdownScript_clone_ptr(&arg_conv);
+       return ret_val;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ShutdownScript_clone(uint32_t orig) {
+       LDKShutdownScript orig_conv;
+       orig_conv.inner = (void*)(orig & (~1));
+       orig_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKShutdownScript ret_var = ShutdownScript_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -33947,60 +31142,43 @@ uint32_t  __attribute__((visibility("default"))) TS_RouteParameters_get_payee(ui
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteParameters_set_payee(uint32_t this_ptr, uint32_t val) {
-       LDKRouteParameters this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPayee val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = Payee_clone(&val_conv);
-       RouteParameters_set_payee(&this_ptr_conv, val_conv);
-}
-
-int64_t  __attribute__((visibility("default"))) TS_RouteParameters_get_final_value_msat(uint32_t this_ptr) {
-       LDKRouteParameters this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = RouteParameters_get_final_value_msat(&this_ptr_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_RouteParameters_set_final_value_msat(uint32_t this_ptr, int64_t val) {
-       LDKRouteParameters this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       RouteParameters_set_final_value_msat(&this_ptr_conv, val);
+void  __attribute__((visibility("default"))) TS_InvalidShutdownScript_free(uint32_t this_obj) {
+       LDKInvalidShutdownScript this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       InvalidShutdownScript_free(this_obj_conv);
 }
 
-int32_t  __attribute__((visibility("default"))) TS_RouteParameters_get_final_cltv_expiry_delta(uint32_t this_ptr) {
-       LDKRouteParameters this_ptr_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_InvalidShutdownScript_get_script(uint32_t this_ptr) {
+       LDKInvalidShutdownScript this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int32_t ret_val = RouteParameters_get_final_cltv_expiry_delta(&this_ptr_conv);
-       return ret_val;
+       LDKu8slice ret_var = InvalidShutdownScript_get_script(&this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteParameters_set_final_cltv_expiry_delta(uint32_t this_ptr, int32_t val) {
-       LDKRouteParameters this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_InvalidShutdownScript_set_script(uint32_t this_ptr, int8_tArray val) {
+       LDKInvalidShutdownScript this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       RouteParameters_set_final_cltv_expiry_delta(&this_ptr_conv, val);
+       LDKCVec_u8Z val_ref;
+       val_ref.datalen = val->arr_len;
+       val_ref.data = MALLOC(val_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(val_ref.data, val->elems, val_ref.datalen);
+       InvalidShutdownScript_set_script(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RouteParameters_new(uint32_t payee_arg, int64_t final_value_msat_arg, int32_t final_cltv_expiry_delta_arg) {
-       LDKPayee payee_arg_conv;
-       payee_arg_conv.inner = (void*)(payee_arg & (~1));
-       payee_arg_conv.is_owned = (payee_arg & 1) || (payee_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(payee_arg_conv);
-       payee_arg_conv = Payee_clone(&payee_arg_conv);
-       LDKRouteParameters ret_var = RouteParameters_new(payee_arg_conv, final_value_msat_arg, final_cltv_expiry_delta_arg);
+uint32_t  __attribute__((visibility("default"))) TS_InvalidShutdownScript_new(int8_tArray script_arg) {
+       LDKCVec_u8Z script_arg_ref;
+       script_arg_ref.datalen = script_arg->arr_len;
+       script_arg_ref.data = MALLOC(script_arg_ref.datalen, "LDKCVec_u8Z Bytes");
+       memcpy(script_arg_ref.data, script_arg->elems, script_arg_ref.datalen);
+       LDKInvalidShutdownScript ret_var = InvalidShutdownScript_new(script_arg_ref);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -34012,8 +31190,8 @@ uint32_t  __attribute__((visibility("default"))) TS_RouteParameters_new(uint32_t
        return ret_ref;
 }
 
-static inline uint64_t RouteParameters_clone_ptr(LDKRouteParameters *NONNULL_PTR arg) {
-       LDKRouteParameters ret_var = RouteParameters_clone(arg);
+static inline uint64_t InvalidShutdownScript_clone_ptr(LDKInvalidShutdownScript *NONNULL_PTR arg) {
+       LDKInvalidShutdownScript ret_var = InvalidShutdownScript_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -34024,21 +31202,59 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_RouteParameters_clone_ptr(uint32_t arg) {
-       LDKRouteParameters arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_InvalidShutdownScript_clone_ptr(uint32_t arg) {
+       LDKInvalidShutdownScript arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = RouteParameters_clone_ptr(&arg_conv);
+       int64_t ret_val = InvalidShutdownScript_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RouteParameters_clone(uint32_t orig) {
-       LDKRouteParameters orig_conv;
+uint32_t  __attribute__((visibility("default"))) TS_InvalidShutdownScript_clone(uint32_t orig) {
+       LDKInvalidShutdownScript orig_conv;
        orig_conv.inner = (void*)(orig & (~1));
        orig_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKRouteParameters ret_var = RouteParameters_clone(&orig_conv);
+       LDKInvalidShutdownScript ret_var = InvalidShutdownScript_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_ShutdownScript_write(uint32_t obj) {
+       LDKShutdownScript obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ShutdownScript_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ShutdownScript_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ShutdownScriptDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptDecodeErrorZ), "LDKCResult_ShutdownScriptDecodeErrorZ");
+       *ret_conv = ShutdownScript_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ShutdownScript_new_p2wpkh(int8_tArray pubkey_hash) {
+       unsigned char pubkey_hash_arr[20];
+       CHECK(pubkey_hash->arr_len == 20);
+       memcpy(pubkey_hash_arr, pubkey_hash->elems, 20);
+       unsigned char (*pubkey_hash_ref)[20] = &pubkey_hash_arr;
+       LDKShutdownScript ret_var = ShutdownScript_new_p2wpkh(pubkey_hash_ref);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -34050,204 +31266,118 @@ uint32_t  __attribute__((visibility("default"))) TS_RouteParameters_clone(uint32
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_RouteParameters_write(uint32_t obj) {
-       LDKRouteParameters obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = RouteParameters_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_ShutdownScript_new_p2wsh(int8_tArray script_hash) {
+       unsigned char script_hash_arr[32];
+       CHECK(script_hash->arr_len == 32);
+       memcpy(script_hash_arr, script_hash->elems, 32);
+       unsigned char (*script_hash_ref)[32] = &script_hash_arr;
+       LDKShutdownScript ret_var = ShutdownScript_new_p2wsh(script_hash_ref);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RouteParameters_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_RouteParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteParametersDecodeErrorZ), "LDKCResult_RouteParametersDecodeErrorZ");
-       *ret_conv = RouteParameters_read(ser_ref);
+uint32_t  __attribute__((visibility("default"))) TS_ShutdownScript_new_witness_program(int8_t version, int8_tArray program) {
+       LDKu8slice program_ref;
+       program_ref.datalen = program->arr_len;
+       program_ref.data = program->elems;
+       LDKCResult_ShutdownScriptInvalidShutdownScriptZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownScriptInvalidShutdownScriptZ), "LDKCResult_ShutdownScriptInvalidShutdownScriptZ");
+       *ret_conv = ShutdownScript_new_witness_program(version, program_ref);
        return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_Payee_free(uint32_t this_obj) {
-       LDKPayee this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       Payee_free(this_obj_conv);
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_Payee_get_pubkey(uint32_t this_ptr) {
-       LDKPayee this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), Payee_get_pubkey(&this_ptr_conv).compressed_form, 33);
+int8_tArray  __attribute__((visibility("default"))) TS_ShutdownScript_into_inner(uint32_t this_arg) {
+       LDKShutdownScript this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       this_arg_conv = ShutdownScript_clone(&this_arg_conv);
+       LDKCVec_u8Z ret_var = ShutdownScript_into_inner(this_arg_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_Payee_set_pubkey(uint32_t this_ptr, int8_tArray val) {
-       LDKPayee this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       Payee_set_pubkey(&this_ptr_conv, val_ref);
+int8_tArray  __attribute__((visibility("default"))) TS_ShutdownScript_as_legacy_pubkey(uint32_t this_arg) {
+       LDKShutdownScript this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, ShutdownScript_as_legacy_pubkey(&this_arg_conv).compressed_form, 33);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Payee_get_features(uint32_t this_ptr) {
-       LDKPayee this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKInvoiceFeatures ret_var = Payee_get_features(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
-       }
-       return ret_ref;
+jboolean  __attribute__((visibility("default"))) TS_ShutdownScript_is_compatible(uint32_t this_arg, uint32_t features) {
+       LDKShutdownScript this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKInitFeatures features_conv;
+       features_conv.inner = (void*)(features & (~1));
+       features_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(features_conv);
+       jboolean ret_val = ShutdownScript_is_compatible(&this_arg_conv, &features_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_Payee_set_features(uint32_t this_ptr, uint32_t val) {
-       LDKPayee this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKInvoiceFeatures val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = InvoiceFeatures_clone(&val_conv);
-       Payee_set_features(&this_ptr_conv, val_conv);
+void  __attribute__((visibility("default"))) TS_CustomMessageReader_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKCustomMessageReader this_ptr_conv = *(LDKCustomMessageReader*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       CustomMessageReader_free(this_ptr_conv);
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_Payee_get_route_hints(uint32_t this_ptr) {
-       LDKPayee this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_RouteHintZ ret_var = Payee_get_route_hints(&this_ptr_conv);
-       uint32_tArray ret_arr = NULL;
-       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++) {
-               LDKRouteHint ret_conv_11_var = ret_var.data[l];
-               uint64_t ret_conv_11_ref = 0;
-               CHECK((((uint64_t)ret_conv_11_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_conv_11_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_11_var);
-               ret_conv_11_ref = (uint64_t)ret_conv_11_var.inner;
-               if (ret_conv_11_var.is_owned) {
-                       ret_conv_11_ref |= 1;
-               }
-               ret_arr_ptr[l] = ret_conv_11_ref;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+static inline uint64_t Type_clone_ptr(LDKType *NONNULL_PTR arg) {
+       LDKType* ret_ret = MALLOC(sizeof(LDKType), "LDKType");
+       *ret_ret = Type_clone(arg);
+       return (uint64_t)ret_ret;
 }
-
-void  __attribute__((visibility("default"))) TS_Payee_set_route_hints(uint32_t this_ptr, uint32_tArray val) {
-       LDKPayee this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_RouteHintZ val_constr;
-       val_constr.datalen = *((uint32_t*)val);
-       if (val_constr.datalen > 0)
-               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKRouteHint), "LDKCVec_RouteHintZ Elements");
-       else
-               val_constr.data = NULL;
-       uint32_t* val_vals = (uint32_t*)(val + 4);
-       for (size_t l = 0; l < val_constr.datalen; l++) {
-               uint32_t val_conv_11 = val_vals[l];
-               LDKRouteHint val_conv_11_conv;
-               val_conv_11_conv.inner = (void*)(val_conv_11 & (~1));
-               val_conv_11_conv.is_owned = (val_conv_11 & 1) || (val_conv_11 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv_11_conv);
-               val_conv_11_conv = RouteHint_clone(&val_conv_11_conv);
-               val_constr.data[l] = val_conv_11_conv;
-       }
-       Payee_set_route_hints(&this_ptr_conv, val_constr);
+int64_t  __attribute__((visibility("default"))) TS_Type_clone_ptr(uint32_t arg) {
+       void* arg_ptr = (void*)(((uint64_t)arg) & ~1);
+       if (!(arg & 1)) { CHECK_ACCESS(arg_ptr); }
+       LDKType* arg_conv = (LDKType*)arg_ptr;
+       int64_t ret_val = Type_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Payee_get_expiry_time(uint32_t this_ptr) {
-       LDKPayee this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
-       *ret_copy = Payee_get_expiry_time(&this_ptr_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_Type_clone(uint32_t orig) {
+       void* orig_ptr = (void*)(((uint64_t)orig) & ~1);
+       if (!(orig & 1)) { CHECK_ACCESS(orig_ptr); }
+       LDKType* orig_conv = (LDKType*)orig_ptr;
+       LDKType* ret_ret = MALLOC(sizeof(LDKType), "LDKType");
+       *ret_ret = Type_clone(orig_conv);
+       return (uint64_t)ret_ret;
 }
 
-void  __attribute__((visibility("default"))) TS_Payee_set_expiry_time(uint32_t this_ptr, uint32_t val) {
-       LDKPayee this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKCOption_u64Z val_conv = *(LDKCOption_u64Z*)(val_ptr);
-       val_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)val) & ~1));
-       Payee_set_expiry_time(&this_ptr_conv, val_conv);
+void  __attribute__((visibility("default"))) TS_Type_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKType this_ptr_conv = *(LDKType*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       Type_free(this_ptr_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Payee_new(int8_tArray pubkey_arg, uint32_t features_arg, uint32_tArray route_hints_arg, uint32_t expiry_time_arg) {
-       LDKPublicKey pubkey_arg_ref;
-       CHECK(*((uint32_t*)pubkey_arg) == 33);
-       memcpy(pubkey_arg_ref.compressed_form, (uint8_t*)(pubkey_arg + 4), 33);
-       LDKInvoiceFeatures features_arg_conv;
-       features_arg_conv.inner = (void*)(features_arg & (~1));
-       features_arg_conv.is_owned = (features_arg & 1) || (features_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(features_arg_conv);
-       features_arg_conv = InvoiceFeatures_clone(&features_arg_conv);
-       LDKCVec_RouteHintZ route_hints_arg_constr;
-       route_hints_arg_constr.datalen = *((uint32_t*)route_hints_arg);
-       if (route_hints_arg_constr.datalen > 0)
-               route_hints_arg_constr.data = MALLOC(route_hints_arg_constr.datalen * sizeof(LDKRouteHint), "LDKCVec_RouteHintZ Elements");
-       else
-               route_hints_arg_constr.data = NULL;
-       uint32_t* route_hints_arg_vals = (uint32_t*)(route_hints_arg + 4);
-       for (size_t l = 0; l < route_hints_arg_constr.datalen; l++) {
-               uint32_t route_hints_arg_conv_11 = route_hints_arg_vals[l];
-               LDKRouteHint route_hints_arg_conv_11_conv;
-               route_hints_arg_conv_11_conv.inner = (void*)(route_hints_arg_conv_11 & (~1));
-               route_hints_arg_conv_11_conv.is_owned = (route_hints_arg_conv_11 & 1) || (route_hints_arg_conv_11 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(route_hints_arg_conv_11_conv);
-               route_hints_arg_conv_11_conv = RouteHint_clone(&route_hints_arg_conv_11_conv);
-               route_hints_arg_constr.data[l] = route_hints_arg_conv_11_conv;
-       }
-       void* expiry_time_arg_ptr = (void*)(((uint64_t)expiry_time_arg) & ~1);
-       CHECK_ACCESS(expiry_time_arg_ptr);
-       LDKCOption_u64Z expiry_time_arg_conv = *(LDKCOption_u64Z*)(expiry_time_arg_ptr);
-       expiry_time_arg_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)expiry_time_arg) & ~1));
-       LDKPayee ret_var = Payee_new(pubkey_arg_ref, features_arg_conv, route_hints_arg_constr, expiry_time_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_NodeId_free(uint32_t this_obj) {
+       LDKNodeId this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       NodeId_free(this_obj_conv);
 }
 
-static inline uint64_t Payee_clone_ptr(LDKPayee *NONNULL_PTR arg) {
-       LDKPayee ret_var = Payee_clone(arg);
+static inline uint64_t NodeId_clone_ptr(LDKNodeId *NONNULL_PTR arg) {
+       LDKNodeId ret_var = NodeId_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -34258,21 +31388,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_Payee_clone_ptr(uint32_t arg) {
-       LDKPayee arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_NodeId_clone_ptr(uint32_t arg) {
+       LDKNodeId arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = Payee_clone_ptr(&arg_conv);
+       int64_t ret_val = NodeId_clone_ptr(&arg_conv);
        return ret_val;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_Payee_clone(uint32_t orig) {
-       LDKPayee orig_conv;
+
+uint32_t  __attribute__((visibility("default"))) TS_NodeId_clone(uint32_t orig) {
+       LDKNodeId orig_conv;
        orig_conv.inner = (void*)(orig & (~1));
        orig_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKPayee ret_var = Payee_clone(&orig_conv);
+       LDKNodeId ret_var = NodeId_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -34284,70 +31414,98 @@ uint32_t  __attribute__((visibility("default"))) TS_Payee_clone(uint32_t orig) {
        return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_Payee_hash(uint32_t o) {
-       LDKPayee o_conv;
+uint32_t  __attribute__((visibility("default"))) TS_NodeId_from_pubkey(int8_tArray pubkey) {
+       LDKPublicKey pubkey_ref;
+       CHECK(pubkey->arr_len == 33);
+       memcpy(pubkey_ref.compressed_form, pubkey->elems, 33);
+       LDKNodeId ret_var = NodeId_from_pubkey(pubkey_ref);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
+}
+
+int8_tArray  __attribute__((visibility("default"))) TS_NodeId_as_slice(uint32_t this_arg) {
+       LDKNodeId this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKu8slice ret_var = NodeId_as_slice(&this_arg_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       return ret_arr;
+}
+
+int64_t  __attribute__((visibility("default"))) TS_NodeId_hash(uint32_t o) {
+       LDKNodeId o_conv;
        o_conv.inner = (void*)(o & (~1));
        o_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = Payee_hash(&o_conv);
-       return ret_val;
-}
-
-jboolean  __attribute__((visibility("default"))) TS_Payee_eq(uint32_t a, uint32_t b) {
-       LDKPayee a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKPayee b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = Payee_eq(&a_conv, &b_conv);
+       int64_t ret_val = NodeId_hash(&o_conv);
        return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_Payee_write(uint32_t obj) {
-       LDKPayee obj_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_NodeId_write(uint32_t obj) {
+       LDKNodeId obj_conv;
        obj_conv.inner = (void*)(obj & (~1));
        obj_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = Payee_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       LDKCVec_u8Z ret_var = NodeId_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Payee_read(int8_tArray ser) {
+uint32_t  __attribute__((visibility("default"))) TS_NodeId_read(int8_tArray ser) {
        LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_PayeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeeDecodeErrorZ), "LDKCResult_PayeeDecodeErrorZ");
-       *ret_conv = Payee_read(ser_ref);
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_NodeIdDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeIdDecodeErrorZ), "LDKCResult_NodeIdDecodeErrorZ");
+       *ret_conv = NodeId_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Payee_from_node_id(int8_tArray pubkey) {
-       LDKPublicKey pubkey_ref;
-       CHECK(*((uint32_t*)pubkey) == 33);
-       memcpy(pubkey_ref.compressed_form, (uint8_t*)(pubkey + 4), 33);
-       LDKPayee ret_var = Payee_from_node_id(pubkey_ref);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
+void  __attribute__((visibility("default"))) TS_NetworkGraph_free(uint32_t this_obj) {
+       LDKNetworkGraph this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       NetworkGraph_free(this_obj_conv);
+}
+
+static inline uint64_t NetworkGraph_clone_ptr(LDKNetworkGraph *NONNULL_PTR arg) {
+       LDKNetworkGraph ret_var = NetworkGraph_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
        return ret_ref;
 }
+int64_t  __attribute__((visibility("default"))) TS_NetworkGraph_clone_ptr(uint32_t arg) {
+       LDKNetworkGraph arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = NetworkGraph_clone_ptr(&arg_conv);
+       return ret_val;
+}
 
-uint32_t  __attribute__((visibility("default"))) TS_Payee_for_keysend(int8_tArray pubkey) {
-       LDKPublicKey pubkey_ref;
-       CHECK(*((uint32_t*)pubkey) == 33);
-       memcpy(pubkey_ref.compressed_form, (uint8_t*)(pubkey + 4), 33);
-       LDKPayee ret_var = Payee_for_keysend(pubkey_ref);
+uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_clone(uint32_t orig) {
+       LDKNetworkGraph orig_conv;
+       orig_conv.inner = (void*)(orig & (~1));
+       orig_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKNetworkGraph ret_var = NetworkGraph_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -34359,120 +31517,124 @@ uint32_t  __attribute__((visibility("default"))) TS_Payee_for_keysend(int8_tArra
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHint_free(uint32_t this_obj) {
-       LDKRouteHint this_obj_conv;
+void  __attribute__((visibility("default"))) TS_ReadOnlyNetworkGraph_free(uint32_t this_obj) {
+       LDKReadOnlyNetworkGraph this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       RouteHint_free(this_obj_conv);
+       ReadOnlyNetworkGraph_free(this_obj_conv);
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_RouteHint_get_a(uint32_t this_ptr) {
-       LDKRouteHint this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_RouteHintHopZ ret_var = RouteHint_get_a(&this_ptr_conv);
-       uint32_tArray ret_arr = NULL;
-       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 o = 0; o < ret_var.datalen; o++) {
-               LDKRouteHintHop ret_conv_14_var = ret_var.data[o];
-               uint64_t ret_conv_14_ref = 0;
-               CHECK((((uint64_t)ret_conv_14_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_conv_14_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_14_var);
-               ret_conv_14_ref = (uint64_t)ret_conv_14_var.inner;
-               if (ret_conv_14_var.is_owned) {
-                       ret_conv_14_ref |= 1;
-               }
-               ret_arr_ptr[o] = ret_conv_14_ref;
-       }
-       
-       FREE(ret_var.data);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_NetworkUpdate_free(uint32_t this_ptr) {
+       if ((this_ptr & 1) != 0) return;
+       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
+       CHECK_ACCESS(this_ptr_ptr);
+       LDKNetworkUpdate this_ptr_conv = *(LDKNetworkUpdate*)(this_ptr_ptr);
+       FREE((void*)this_ptr);
+       NetworkUpdate_free(this_ptr_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHint_set_a(uint32_t this_ptr, uint32_tArray val) {
-       LDKRouteHint this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCVec_RouteHintHopZ val_constr;
-       val_constr.datalen = *((uint32_t*)val);
-       if (val_constr.datalen > 0)
-               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKRouteHintHop), "LDKCVec_RouteHintHopZ Elements");
-       else
-               val_constr.data = NULL;
-       uint32_t* val_vals = (uint32_t*)(val + 4);
-       for (size_t o = 0; o < val_constr.datalen; o++) {
-               uint32_t val_conv_14 = val_vals[o];
-               LDKRouteHintHop val_conv_14_conv;
-               val_conv_14_conv.inner = (void*)(val_conv_14 & (~1));
-               val_conv_14_conv.is_owned = (val_conv_14 & 1) || (val_conv_14 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv_14_conv);
-               val_conv_14_conv = RouteHintHop_clone(&val_conv_14_conv);
-               val_constr.data[o] = val_conv_14_conv;
-       }
-       RouteHint_set_a(&this_ptr_conv, val_constr);
+static inline uint64_t NetworkUpdate_clone_ptr(LDKNetworkUpdate *NONNULL_PTR arg) {
+       LDKNetworkUpdate *ret_copy = MALLOC(sizeof(LDKNetworkUpdate), "LDKNetworkUpdate");
+       *ret_copy = NetworkUpdate_clone(arg);
+uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_NetworkUpdate_clone_ptr(uint32_t arg) {
+       LDKNetworkUpdate* arg_conv = (LDKNetworkUpdate*)arg;
+       int64_t ret_val = NetworkUpdate_clone_ptr(arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RouteHint_new(uint32_tArray a_arg) {
-       LDKCVec_RouteHintHopZ a_arg_constr;
-       a_arg_constr.datalen = *((uint32_t*)a_arg);
-       if (a_arg_constr.datalen > 0)
-               a_arg_constr.data = MALLOC(a_arg_constr.datalen * sizeof(LDKRouteHintHop), "LDKCVec_RouteHintHopZ Elements");
-       else
-               a_arg_constr.data = NULL;
-       uint32_t* a_arg_vals = (uint32_t*)(a_arg + 4);
-       for (size_t o = 0; o < a_arg_constr.datalen; o++) {
-               uint32_t a_arg_conv_14 = a_arg_vals[o];
-               LDKRouteHintHop a_arg_conv_14_conv;
-               a_arg_conv_14_conv.inner = (void*)(a_arg_conv_14 & (~1));
-               a_arg_conv_14_conv.is_owned = (a_arg_conv_14 & 1) || (a_arg_conv_14 == 0);
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(a_arg_conv_14_conv);
-               a_arg_conv_14_conv = RouteHintHop_clone(&a_arg_conv_14_conv);
-               a_arg_constr.data[o] = a_arg_conv_14_conv;
-       }
-       LDKRouteHint ret_var = RouteHint_new(a_arg_constr);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
+uint32_t  __attribute__((visibility("default"))) TS_NetworkUpdate_clone(uint32_t orig) {
+       LDKNetworkUpdate* orig_conv = (LDKNetworkUpdate*)orig;
+       LDKNetworkUpdate *ret_copy = MALLOC(sizeof(LDKNetworkUpdate), "LDKNetworkUpdate");
+       *ret_copy = NetworkUpdate_clone(orig_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-static inline uint64_t RouteHint_clone_ptr(LDKRouteHint *NONNULL_PTR arg) {
-       LDKRouteHint ret_var = RouteHint_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_NetworkUpdate_channel_update_message(uint32_t msg) {
+       LDKChannelUpdate msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = (msg & 1) || (msg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       msg_conv = ChannelUpdate_clone(&msg_conv);
+       LDKNetworkUpdate *ret_copy = MALLOC(sizeof(LDKNetworkUpdate), "LDKNetworkUpdate");
+       *ret_copy = NetworkUpdate_channel_update_message(msg_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_NetworkUpdate_channel_closed(int64_t short_channel_id, jboolean is_permanent) {
+       LDKNetworkUpdate *ret_copy = MALLOC(sizeof(LDKNetworkUpdate), "LDKNetworkUpdate");
+       *ret_copy = NetworkUpdate_channel_closed(short_channel_id, is_permanent);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
+
+uint32_t  __attribute__((visibility("default"))) TS_NetworkUpdate_node_failure(int8_tArray node_id, jboolean is_permanent) {
+       LDKPublicKey node_id_ref;
+       CHECK(node_id->arr_len == 33);
+       memcpy(node_id_ref.compressed_form, node_id->elems, 33);
+       LDKNetworkUpdate *ret_copy = MALLOC(sizeof(LDKNetworkUpdate), "LDKNetworkUpdate");
+       *ret_copy = NetworkUpdate_node_failure(node_id_ref, is_permanent);
+       uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_RouteHint_clone_ptr(uint32_t arg) {
-       LDKRouteHint arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = RouteHint_clone_ptr(&arg_conv);
-       return ret_val;
+
+int8_tArray  __attribute__((visibility("default"))) TS_NetworkUpdate_write(uint32_t obj) {
+       LDKNetworkUpdate* obj_conv = (LDKNetworkUpdate*)obj;
+       LDKCVec_u8Z ret_var = NetworkUpdate_write(obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_NetworkUpdate_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_COption_NetworkUpdateZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_COption_NetworkUpdateZDecodeErrorZ), "LDKCResult_COption_NetworkUpdateZDecodeErrorZ");
+       *ret_conv = NetworkUpdate_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_NetGraphMsgHandler_as_EventHandler(uint32_t this_arg) {
+       LDKNetGraphMsgHandler this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKEventHandler* ret_ret = MALLOC(sizeof(LDKEventHandler), "LDKEventHandler");
+       *ret_ret = NetGraphMsgHandler_as_EventHandler(&this_arg_conv);
+       return (uint64_t)ret_ret;
+}
+
+void  __attribute__((visibility("default"))) TS_NetGraphMsgHandler_free(uint32_t this_obj) {
+       LDKNetGraphMsgHandler this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       NetGraphMsgHandler_free(this_obj_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;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKRouteHint ret_var = RouteHint_clone(&orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_NetGraphMsgHandler_new(uint32_t network_graph, uint32_t chain_access, uint32_t logger) {
+       LDKNetworkGraph network_graph_conv;
+       network_graph_conv.inner = (void*)(network_graph & (~1));
+       network_graph_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(network_graph_conv);
+       void* chain_access_ptr = (void*)(((uint64_t)chain_access) & ~1);
+       CHECK_ACCESS(chain_access_ptr);
+       LDKCOption_AccessZ chain_access_conv = *(LDKCOption_AccessZ*)(chain_access_ptr);
+       // Warning: we may need a move here but no clone is available for LDKCOption_AccessZ
+       if (chain_access_conv.tag == LDKCOption_AccessZ_Some) {
+               // Manually implement clone for Java trait instances
+       }
+       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
+       CHECK_ACCESS(logger_ptr);
+       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
+       LDKNetGraphMsgHandler ret_var = NetGraphMsgHandler_new(&network_graph_conv, chain_access_conv, logger_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -34484,155 +31646,130 @@ uint32_t  __attribute__((visibility("default"))) TS_RouteHint_clone(uint32_t ori
        return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_RouteHint_hash(uint32_t o) {
-       LDKRouteHint o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = RouteHint_hash(&o_conv);
-       return ret_val;
-}
-
-jboolean  __attribute__((visibility("default"))) TS_RouteHint_eq(uint32_t a, uint32_t b) {
-       LDKRouteHint a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKRouteHint b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = RouteHint_eq(&a_conv, &b_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_NetGraphMsgHandler_add_chain_access(uint32_t this_arg, uint32_t chain_access) {
+       LDKNetGraphMsgHandler this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       void* chain_access_ptr = (void*)(((uint64_t)chain_access) & ~1);
+       CHECK_ACCESS(chain_access_ptr);
+       LDKCOption_AccessZ chain_access_conv = *(LDKCOption_AccessZ*)(chain_access_ptr);
+       // Warning: we may need a move here but no clone is available for LDKCOption_AccessZ
+       if (chain_access_conv.tag == LDKCOption_AccessZ_Some) {
+               // Manually implement clone for Java trait instances
+       }
+       NetGraphMsgHandler_add_chain_access(&this_arg_conv, chain_access_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_RouteHint_write(uint32_t obj) {
-       LDKRouteHint obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = RouteHint_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_NetGraphMsgHandler_as_RoutingMessageHandler(uint32_t this_arg) {
+       LDKNetGraphMsgHandler this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKRoutingMessageHandler* ret_ret = MALLOC(sizeof(LDKRoutingMessageHandler), "LDKRoutingMessageHandler");
+       *ret_ret = NetGraphMsgHandler_as_RoutingMessageHandler(&this_arg_conv);
+       return (uint64_t)ret_ret;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RouteHint_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_RouteHintDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintDecodeErrorZ), "LDKCResult_RouteHintDecodeErrorZ");
-       *ret_conv = RouteHint_read(ser_ref);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_NetGraphMsgHandler_as_MessageSendEventsProvider(uint32_t this_arg) {
+       LDKNetGraphMsgHandler this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKMessageSendEventsProvider* ret_ret = MALLOC(sizeof(LDKMessageSendEventsProvider), "LDKMessageSendEventsProvider");
+       *ret_ret = NetGraphMsgHandler_as_MessageSendEventsProvider(&this_arg_conv);
+       return (uint64_t)ret_ret;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHintHop_free(uint32_t this_obj) {
-       LDKRouteHintHop this_obj_conv;
+void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_free(uint32_t this_obj) {
+       LDKDirectionalChannelInfo this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       RouteHintHop_free(this_obj_conv);
+       DirectionalChannelInfo_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_RouteHintHop_get_src_node_id(uint32_t this_ptr) {
-       LDKRouteHintHop this_ptr_conv;
+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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), RouteHintHop_get_src_node_id(&this_ptr_conv).compressed_form, 33);
-       return ret_arr;
+       int32_t ret_val = DirectionalChannelInfo_get_last_update(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHintHop_set_src_node_id(uint32_t this_ptr, int8_tArray val) {
-       LDKRouteHintHop this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_set_last_update(uint32_t this_ptr, int32_t val) {
+       LDKDirectionalChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       RouteHintHop_set_src_node_id(&this_ptr_conv, val_ref);
+       DirectionalChannelInfo_set_last_update(&this_ptr_conv, val);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_RouteHintHop_get_short_channel_id(uint32_t this_ptr) {
-       LDKRouteHintHop this_ptr_conv;
+jboolean  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_get_enabled(uint32_t this_ptr) {
+       LDKDirectionalChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = RouteHintHop_get_short_channel_id(&this_ptr_conv);
+       jboolean ret_val = DirectionalChannelInfo_get_enabled(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHintHop_set_short_channel_id(uint32_t this_ptr, int64_t val) {
-       LDKRouteHintHop this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_set_enabled(uint32_t this_ptr, jboolean val) {
+       LDKDirectionalChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       RouteHintHop_set_short_channel_id(&this_ptr_conv, val);
+       DirectionalChannelInfo_set_enabled(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RouteHintHop_get_fees(uint32_t this_ptr) {
-       LDKRouteHintHop this_ptr_conv;
+int16_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_get_cltv_expiry_delta(uint32_t this_ptr) {
+       LDKDirectionalChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKRoutingFees ret_var = RouteHintHop_get_fees(&this_ptr_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       int16_t ret_val = DirectionalChannelInfo_get_cltv_expiry_delta(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHintHop_set_fees(uint32_t this_ptr, uint32_t val) {
-       LDKRouteHintHop this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_set_cltv_expiry_delta(uint32_t this_ptr, int16_t val) {
+       LDKDirectionalChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKRoutingFees val_conv;
-       val_conv.inner = (void*)(val & (~1));
-       val_conv.is_owned = (val & 1) || (val == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = RoutingFees_clone(&val_conv);
-       RouteHintHop_set_fees(&this_ptr_conv, val_conv);
+       DirectionalChannelInfo_set_cltv_expiry_delta(&this_ptr_conv, val);
 }
 
-int16_t  __attribute__((visibility("default"))) TS_RouteHintHop_get_cltv_expiry_delta(uint32_t this_ptr) {
-       LDKRouteHintHop this_ptr_conv;
+int64_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_get_htlc_minimum_msat(uint32_t this_ptr) {
+       LDKDirectionalChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = RouteHintHop_get_cltv_expiry_delta(&this_ptr_conv);
+       int64_t ret_val = DirectionalChannelInfo_get_htlc_minimum_msat(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHintHop_set_cltv_expiry_delta(uint32_t this_ptr, int16_t val) {
-       LDKRouteHintHop this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_set_htlc_minimum_msat(uint32_t this_ptr, int64_t val) {
+       LDKDirectionalChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       RouteHintHop_set_cltv_expiry_delta(&this_ptr_conv, val);
+       DirectionalChannelInfo_set_htlc_minimum_msat(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RouteHintHop_get_htlc_minimum_msat(uint32_t this_ptr) {
-       LDKRouteHintHop this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_get_htlc_maximum_msat(uint32_t this_ptr) {
+       LDKDirectionalChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
        LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
-       *ret_copy = RouteHintHop_get_htlc_minimum_msat(&this_ptr_conv);
+       *ret_copy = DirectionalChannelInfo_get_htlc_maximum_msat(&this_ptr_conv);
        uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHintHop_set_htlc_minimum_msat(uint32_t this_ptr, uint32_t val) {
-       LDKRouteHintHop this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_set_htlc_maximum_msat(uint32_t this_ptr, uint32_t val) {
+       LDKDirectionalChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
@@ -34640,50 +31777,87 @@ void  __attribute__((visibility("default"))) TS_RouteHintHop_set_htlc_minimum_ms
        CHECK_ACCESS(val_ptr);
        LDKCOption_u64Z val_conv = *(LDKCOption_u64Z*)(val_ptr);
        val_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)val) & ~1));
-       RouteHintHop_set_htlc_minimum_msat(&this_ptr_conv, val_conv);
+       DirectionalChannelInfo_set_htlc_maximum_msat(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RouteHintHop_get_htlc_maximum_msat(uint32_t this_ptr) {
-       LDKRouteHintHop this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_get_fees(uint32_t this_ptr) {
+       LDKDirectionalChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
-       *ret_copy = RouteHintHop_get_htlc_maximum_msat(&this_ptr_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
+       LDKRoutingFees ret_var = DirectionalChannelInfo_get_fees(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_RouteHintHop_set_htlc_maximum_msat(uint32_t this_ptr, uint32_t val) {
-       LDKRouteHintHop this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_set_fees(uint32_t this_ptr, uint32_t val) {
+       LDKDirectionalChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       void* val_ptr = (void*)(((uint64_t)val) & ~1);
-       CHECK_ACCESS(val_ptr);
-       LDKCOption_u64Z val_conv = *(LDKCOption_u64Z*)(val_ptr);
-       val_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)val) & ~1));
-       RouteHintHop_set_htlc_maximum_msat(&this_ptr_conv, val_conv);
+       LDKRoutingFees val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = RoutingFees_clone(&val_conv);
+       DirectionalChannelInfo_set_fees(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RouteHintHop_new(int8_tArray src_node_id_arg, int64_t short_channel_id_arg, uint32_t fees_arg, int16_t cltv_expiry_delta_arg, uint32_t htlc_minimum_msat_arg, uint32_t htlc_maximum_msat_arg) {
-       LDKPublicKey src_node_id_arg_ref;
-       CHECK(*((uint32_t*)src_node_id_arg) == 33);
-       memcpy(src_node_id_arg_ref.compressed_form, (uint8_t*)(src_node_id_arg + 4), 33);
-       LDKRoutingFees fees_arg_conv;
-       fees_arg_conv.inner = (void*)(fees_arg & (~1));
-       fees_arg_conv.is_owned = (fees_arg & 1) || (fees_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(fees_arg_conv);
-       fees_arg_conv = RoutingFees_clone(&fees_arg_conv);
-       void* htlc_minimum_msat_arg_ptr = (void*)(((uint64_t)htlc_minimum_msat_arg) & ~1);
-       CHECK_ACCESS(htlc_minimum_msat_arg_ptr);
-       LDKCOption_u64Z htlc_minimum_msat_arg_conv = *(LDKCOption_u64Z*)(htlc_minimum_msat_arg_ptr);
-       htlc_minimum_msat_arg_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)htlc_minimum_msat_arg) & ~1));
+uint32_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_get_last_update_message(uint32_t this_ptr) {
+       LDKDirectionalChannelInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKChannelUpdate ret_var = DirectionalChannelInfo_get_last_update_message(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       if ((uint64_t)ret_var.inner > 4096) {
+               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+               ret_ref = (uint64_t)ret_var.inner;
+               if (ret_var.is_owned) {
+                       ret_ref |= 1;
+               }
+       }
+       return ret_ref;
+}
+
+void  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_set_last_update_message(uint32_t this_ptr, uint32_t val) {
+       LDKDirectionalChannelInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKChannelUpdate val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = ChannelUpdate_clone(&val_conv);
+       DirectionalChannelInfo_set_last_update_message(&this_ptr_conv, val_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_new(int32_t last_update_arg, jboolean enabled_arg, int16_t cltv_expiry_delta_arg, int64_t htlc_minimum_msat_arg, uint32_t htlc_maximum_msat_arg, uint32_t fees_arg, uint32_t last_update_message_arg) {
        void* htlc_maximum_msat_arg_ptr = (void*)(((uint64_t)htlc_maximum_msat_arg) & ~1);
        CHECK_ACCESS(htlc_maximum_msat_arg_ptr);
        LDKCOption_u64Z htlc_maximum_msat_arg_conv = *(LDKCOption_u64Z*)(htlc_maximum_msat_arg_ptr);
        htlc_maximum_msat_arg_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)htlc_maximum_msat_arg) & ~1));
-       LDKRouteHintHop ret_var = RouteHintHop_new(src_node_id_arg_ref, short_channel_id_arg, fees_arg_conv, cltv_expiry_delta_arg, htlc_minimum_msat_arg_conv, htlc_maximum_msat_arg_conv);
+       LDKRoutingFees fees_arg_conv;
+       fees_arg_conv.inner = (void*)(fees_arg & (~1));
+       fees_arg_conv.is_owned = (fees_arg & 1) || (fees_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(fees_arg_conv);
+       fees_arg_conv = RoutingFees_clone(&fees_arg_conv);
+       LDKChannelUpdate last_update_message_arg_conv;
+       last_update_message_arg_conv.inner = (void*)(last_update_message_arg & (~1));
+       last_update_message_arg_conv.is_owned = (last_update_message_arg & 1) || (last_update_message_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(last_update_message_arg_conv);
+       last_update_message_arg_conv = ChannelUpdate_clone(&last_update_message_arg_conv);
+       LDKDirectionalChannelInfo ret_var = DirectionalChannelInfo_new(last_update_arg, enabled_arg, cltv_expiry_delta_arg, htlc_minimum_msat_arg, htlc_maximum_msat_arg_conv, fees_arg_conv, last_update_message_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -34695,8 +31869,8 @@ uint32_t  __attribute__((visibility("default"))) TS_RouteHintHop_new(int8_tArray
        return ret_ref;
 }
 
-static inline uint64_t RouteHintHop_clone_ptr(LDKRouteHintHop *NONNULL_PTR arg) {
-       LDKRouteHintHop ret_var = RouteHintHop_clone(arg);
+static inline uint64_t DirectionalChannelInfo_clone_ptr(LDKDirectionalChannelInfo *NONNULL_PTR arg) {
+       LDKDirectionalChannelInfo ret_var = DirectionalChannelInfo_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -34707,21 +31881,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_RouteHintHop_clone_ptr(uint32_t arg) {
-       LDKRouteHintHop arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_clone_ptr(uint32_t arg) {
+       LDKDirectionalChannelInfo arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = RouteHintHop_clone_ptr(&arg_conv);
+       int64_t ret_val = DirectionalChannelInfo_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RouteHintHop_clone(uint32_t orig) {
-       LDKRouteHintHop orig_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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKRouteHintHop ret_var = RouteHintHop_clone(&orig_conv);
+       LDKDirectionalChannelInfo ret_var = DirectionalChannelInfo_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -34733,123 +31907,41 @@ uint32_t  __attribute__((visibility("default"))) TS_RouteHintHop_clone(uint32_t
        return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_RouteHintHop_hash(uint32_t o) {
-       LDKRouteHintHop o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = RouteHintHop_hash(&o_conv);
-       return ret_val;
-}
-
-jboolean  __attribute__((visibility("default"))) TS_RouteHintHop_eq(uint32_t a, uint32_t b) {
-       LDKRouteHintHop a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKRouteHintHop b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = RouteHintHop_eq(&a_conv, &b_conv);
-       return ret_val;
-}
-
-int8_tArray  __attribute__((visibility("default"))) TS_RouteHintHop_write(uint32_t obj) {
-       LDKRouteHintHop obj_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_write(uint32_t obj) {
+       LDKDirectionalChannelInfo obj_conv;
        obj_conv.inner = (void*)(obj & (~1));
        obj_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = RouteHintHop_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       LDKCVec_u8Z ret_var = DirectionalChannelInfo_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RouteHintHop_read(int8_tArray ser) {
+uint32_t  __attribute__((visibility("default"))) TS_DirectionalChannelInfo_read(int8_tArray ser) {
        LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_RouteHintHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintHopDecodeErrorZ), "LDKCResult_RouteHintHopDecodeErrorZ");
-       *ret_conv = RouteHintHop_read(ser_ref);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_find_route(int8_tArray our_node_pubkey, uint32_t params, uint32_t network, uint32_tArray first_hops, uint32_t logger, uint32_t scorer) {
-       LDKPublicKey our_node_pubkey_ref;
-       CHECK(*((uint32_t*)our_node_pubkey) == 33);
-       memcpy(our_node_pubkey_ref.compressed_form, (uint8_t*)(our_node_pubkey + 4), 33);
-       LDKRouteParameters params_conv;
-       params_conv.inner = (void*)(params & (~1));
-       params_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(params_conv);
-       LDKNetworkGraph network_conv;
-       network_conv.inner = (void*)(network & (~1));
-       network_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(network_conv);
-       LDKCVec_ChannelDetailsZ first_hops_constr;
-       LDKCVec_ChannelDetailsZ *first_hops_ptr = NULL;
-       if (first_hops != 0) {
-               first_hops_constr.datalen = *((uint32_t*)first_hops);
-               if (first_hops_constr.datalen > 0)
-                       first_hops_constr.data = MALLOC(first_hops_constr.datalen * sizeof(LDKChannelDetails), "LDKCVec_ChannelDetailsZ Elements");
-               else
-                       first_hops_constr.data = NULL;
-               uint32_t* first_hops_vals = (uint32_t*)(first_hops + 4);
-               for (size_t q = 0; q < first_hops_constr.datalen; q++) {
-                       uint32_t first_hops_conv_16 = first_hops_vals[q];
-                       LDKChannelDetails first_hops_conv_16_conv;
-                       first_hops_conv_16_conv.inner = (void*)(first_hops_conv_16 & (~1));
-                       first_hops_conv_16_conv.is_owned = (first_hops_conv_16 & 1) || (first_hops_conv_16 == 0);
-                       CHECK_INNER_FIELD_ACCESS_OR_NULL(first_hops_conv_16_conv);
-                       first_hops_constr.data[q] = first_hops_conv_16_conv;
-               }
-               first_hops_ptr = &first_hops_constr;
-       }
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       CHECK_ACCESS(logger_ptr);
-       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
-       void* scorer_ptr = (void*)(((uint64_t)scorer) & ~1);
-       if (!(scorer & 1)) { CHECK_ACCESS(scorer_ptr); }
-       LDKScore* scorer_conv = (LDKScore*)scorer_ptr;
-       LDKCResult_RouteLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteLightningErrorZ), "LDKCResult_RouteLightningErrorZ");
-       *ret_conv = find_route(our_node_pubkey_ref, &params_conv, &network_conv, first_hops_ptr, logger_conv, scorer_conv);
-       if (first_hops_ptr != NULL) { FREE(first_hops_constr.data); }
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_DirectionalChannelInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DirectionalChannelInfoDecodeErrorZ), "LDKCResult_DirectionalChannelInfoDecodeErrorZ");
+       *ret_conv = DirectionalChannelInfo_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_Score_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKScore this_ptr_conv = *(LDKScore*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       Score_free(this_ptr_conv);
-}
-
-void  __attribute__((visibility("default"))) TS_LockableScore_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKLockableScore this_ptr_conv = *(LDKLockableScore*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       LockableScore_free(this_ptr_conv);
-}
-
-void  __attribute__((visibility("default"))) TS_MultiThreadedLockableScore_free(uint32_t this_obj) {
-       LDKMultiThreadedLockableScore this_obj_conv;
+void  __attribute__((visibility("default"))) TS_ChannelInfo_free(uint32_t this_obj) {
+       LDKChannelInfo this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       MultiThreadedLockableScore_free(this_obj_conv);
+       ChannelInfo_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MultiThreadedLockableScore_new(uint32_t score) {
-       void* score_ptr = (void*)(((uint64_t)score) & ~1);
-       CHECK_ACCESS(score_ptr);
-       LDKScore score_conv = *(LDKScore*)(score_ptr);
-       LDKMultiThreadedLockableScore ret_var = MultiThreadedLockableScore_new(score_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_features(uint32_t this_ptr) {
+       LDKChannelInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKChannelFeatures ret_var = ChannelInfo_get_features(&this_ptr_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -34861,109 +31953,225 @@ uint32_t  __attribute__((visibility("default"))) TS_MultiThreadedLockableScore_n
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_Scorer_free(uint32_t this_obj) {
-       LDKScorer this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       Scorer_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_ChannelInfo_set_features(uint32_t this_ptr, uint32_t val) {
+       LDKChannelInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKChannelFeatures val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = ChannelFeatures_clone(&val_conv);
+       ChannelInfo_set_features(&this_ptr_conv, val_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_ScoringParameters_free(uint32_t this_obj) {
-       LDKScoringParameters this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ScoringParameters_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_node_one(uint32_t this_ptr) {
+       LDKChannelInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKNodeId ret_var = ChannelInfo_get_node_one(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ScoringParameters_get_base_penalty_msat(uint32_t this_ptr) {
-       LDKScoringParameters this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelInfo_set_node_one(uint32_t this_ptr, uint32_t val) {
+       LDKChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ScoringParameters_get_base_penalty_msat(&this_ptr_conv);
-       return ret_val;
+       LDKNodeId val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = NodeId_clone(&val_conv);
+       ChannelInfo_set_node_one(&this_ptr_conv, val_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_ScoringParameters_set_base_penalty_msat(uint32_t this_ptr, int64_t val) {
-       LDKScoringParameters this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_one_to_two(uint32_t this_ptr) {
+       LDKChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ScoringParameters_set_base_penalty_msat(&this_ptr_conv, val);
+       LDKDirectionalChannelInfo ret_var = ChannelInfo_get_one_to_two(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       if ((uint64_t)ret_var.inner > 4096) {
+               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+               ret_ref = (uint64_t)ret_var.inner;
+               if (ret_var.is_owned) {
+                       ret_ref |= 1;
+               }
+       }
+       return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ScoringParameters_get_failure_penalty_msat(uint32_t this_ptr) {
-       LDKScoringParameters this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelInfo_set_one_to_two(uint32_t this_ptr, uint32_t val) {
+       LDKChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ScoringParameters_get_failure_penalty_msat(&this_ptr_conv);
-       return ret_val;
+       LDKDirectionalChannelInfo val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = DirectionalChannelInfo_clone(&val_conv);
+       ChannelInfo_set_one_to_two(&this_ptr_conv, val_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_ScoringParameters_set_failure_penalty_msat(uint32_t this_ptr, int64_t val) {
-       LDKScoringParameters this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_node_two(uint32_t this_ptr) {
+       LDKChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ScoringParameters_set_failure_penalty_msat(&this_ptr_conv, val);
+       LDKNodeId ret_var = ChannelInfo_get_node_two(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int16_t  __attribute__((visibility("default"))) TS_ScoringParameters_get_overuse_penalty_start_1024th(uint32_t this_ptr) {
-       LDKScoringParameters this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelInfo_set_node_two(uint32_t this_ptr, uint32_t val) {
+       LDKChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int16_t ret_val = ScoringParameters_get_overuse_penalty_start_1024th(&this_ptr_conv);
-       return ret_val;
+       LDKNodeId val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = NodeId_clone(&val_conv);
+       ChannelInfo_set_node_two(&this_ptr_conv, val_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_two_to_one(uint32_t this_ptr) {
+       LDKChannelInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKDirectionalChannelInfo ret_var = ChannelInfo_get_two_to_one(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       if ((uint64_t)ret_var.inner > 4096) {
+               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+               ret_ref = (uint64_t)ret_var.inner;
+               if (ret_var.is_owned) {
+                       ret_ref |= 1;
+               }
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ScoringParameters_set_overuse_penalty_start_1024th(uint32_t this_ptr, int16_t val) {
-       LDKScoringParameters this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelInfo_set_two_to_one(uint32_t this_ptr, uint32_t val) {
+       LDKChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ScoringParameters_set_overuse_penalty_start_1024th(&this_ptr_conv, val);
+       LDKDirectionalChannelInfo val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = DirectionalChannelInfo_clone(&val_conv);
+       ChannelInfo_set_two_to_one(&this_ptr_conv, val_conv);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ScoringParameters_get_overuse_penalty_msat_per_1024th(uint32_t this_ptr) {
-       LDKScoringParameters this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_capacity_sats(uint32_t this_ptr) {
+       LDKChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ScoringParameters_get_overuse_penalty_msat_per_1024th(&this_ptr_conv);
-       return ret_val;
+       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
+       *ret_copy = ChannelInfo_get_capacity_sats(&this_ptr_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ScoringParameters_set_overuse_penalty_msat_per_1024th(uint32_t this_ptr, int64_t val) {
-       LDKScoringParameters this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelInfo_set_capacity_sats(uint32_t this_ptr, uint32_t val) {
+       LDKChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ScoringParameters_set_overuse_penalty_msat_per_1024th(&this_ptr_conv, val);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKCOption_u64Z val_conv = *(LDKCOption_u64Z*)(val_ptr);
+       val_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)val) & ~1));
+       ChannelInfo_set_capacity_sats(&this_ptr_conv, val_conv);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ScoringParameters_get_failure_penalty_half_life(uint32_t this_ptr) {
-       LDKScoringParameters this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_get_announcement_message(uint32_t this_ptr) {
+       LDKChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = ScoringParameters_get_failure_penalty_half_life(&this_ptr_conv);
-       return ret_val;
+       LDKChannelAnnouncement ret_var = ChannelInfo_get_announcement_message(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       if ((uint64_t)ret_var.inner > 4096) {
+               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+               ret_ref = (uint64_t)ret_var.inner;
+               if (ret_var.is_owned) {
+                       ret_ref |= 1;
+               }
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_ScoringParameters_set_failure_penalty_half_life(uint32_t this_ptr, int64_t val) {
-       LDKScoringParameters this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_ChannelInfo_set_announcement_message(uint32_t this_ptr, uint32_t val) {
+       LDKChannelInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       ScoringParameters_set_failure_penalty_half_life(&this_ptr_conv, val);
+       LDKChannelAnnouncement val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = ChannelAnnouncement_clone(&val_conv);
+       ChannelInfo_set_announcement_message(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ScoringParameters_new(int64_t base_penalty_msat_arg, int64_t failure_penalty_msat_arg, int16_t overuse_penalty_start_1024th_arg, int64_t overuse_penalty_msat_per_1024th_arg, int64_t failure_penalty_half_life_arg) {
-       LDKScoringParameters ret_var = ScoringParameters_new(base_penalty_msat_arg, failure_penalty_msat_arg, overuse_penalty_start_1024th_arg, overuse_penalty_msat_per_1024th_arg, failure_penalty_half_life_arg);
+static inline uint64_t ChannelInfo_clone_ptr(LDKChannelInfo *NONNULL_PTR arg) {
+       LDKChannelInfo ret_var = ChannelInfo_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
+       return ret_ref;
+}
+int64_t  __attribute__((visibility("default"))) TS_ChannelInfo_clone_ptr(uint32_t arg) {
+       LDKChannelInfo arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = ChannelInfo_clone_ptr(&arg_conv);
+       return ret_val;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_clone(uint32_t orig) {
+       LDKChannelInfo orig_conv;
+       orig_conv.inner = (void*)(orig & (~1));
+       orig_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKChannelInfo ret_var = ChannelInfo_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -34975,60 +32183,71 @@ uint32_t  __attribute__((visibility("default"))) TS_ScoringParameters_new(int64_
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_ScoringParameters_write(uint32_t obj) {
-       LDKScoringParameters obj_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_ChannelInfo_write(uint32_t obj) {
+       LDKChannelInfo obj_conv;
        obj_conv.inner = (void*)(obj & (~1));
        obj_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = ScoringParameters_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
+       LDKCVec_u8Z ret_var = ChannelInfo_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
        CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ScoringParameters_read(int8_tArray ser) {
+uint32_t  __attribute__((visibility("default"))) TS_ChannelInfo_read(int8_tArray ser) {
        LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ScoringParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ScoringParametersDecodeErrorZ), "LDKCResult_ScoringParametersDecodeErrorZ");
-       *ret_conv = ScoringParameters_read(ser_ref);
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ChannelInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelInfoDecodeErrorZ), "LDKCResult_ChannelInfoDecodeErrorZ");
+       *ret_conv = ChannelInfo_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Scorer_new(uint32_t params) {
-       LDKScoringParameters params_conv;
-       params_conv.inner = (void*)(params & (~1));
-       params_conv.is_owned = (params & 1) || (params == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(params_conv);
-       // Warning: we need a move here but no clone is available for LDKScoringParameters
-       LDKScorer ret_var = Scorer_new(params_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_RoutingFees_free(uint32_t this_obj) {
+       LDKRoutingFees this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       RoutingFees_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Scorer_default() {
-       LDKScorer ret_var = Scorer_default();
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = RoutingFees_get_base_msat(&this_ptr_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ScoringParameters_default() {
-       LDKScoringParameters ret_var = ScoringParameters_default();
+void  __attribute__((visibility("default"))) TS_RoutingFees_set_base_msat(uint32_t this_ptr, int32_t val) {
+       LDKRoutingFees this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       RoutingFees_set_base_msat(&this_ptr_conv, val);
+}
+
+int32_t  __attribute__((visibility("default"))) TS_RoutingFees_get_proportional_millionths(uint32_t this_ptr) {
+       LDKRoutingFees this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = RoutingFees_get_proportional_millionths(&this_ptr_conv);
+       return ret_val;
+}
+
+void  __attribute__((visibility("default"))) TS_RoutingFees_set_proportional_millionths(uint32_t this_ptr, int32_t val) {
+       LDKRoutingFees this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       RoutingFees_set_proportional_millionths(&this_ptr_conv, val);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_RoutingFees_new(int32_t base_msat_arg, int32_t proportional_millionths_arg) {
+       LDKRoutingFees ret_var = RoutingFees_new(base_msat_arg, proportional_millionths_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -35040,48 +32259,46 @@ uint32_t  __attribute__((visibility("default"))) TS_ScoringParameters_default()
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Scorer_as_Score(uint32_t this_arg) {
-       LDKScorer this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKScore* ret_ret = MALLOC(sizeof(LDKScore), "LDKScore");
-       *ret_ret = Scorer_as_Score(&this_arg_conv);
-       return (uint64_t)ret_ret;
+jboolean  __attribute__((visibility("default"))) TS_RoutingFees_eq(uint32_t a, uint32_t b) {
+       LDKRoutingFees a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       LDKRoutingFees b_conv;
+       b_conv.inner = (void*)(b & (~1));
+       b_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
+       jboolean ret_val = RoutingFees_eq(&a_conv, &b_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_Scorer_write(uint32_t obj) {
-       LDKScorer obj_conv;
-       obj_conv.inner = (void*)(obj & (~1));
-       obj_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
-       LDKCVec_u8Z ret_var = Scorer_write(&obj_conv);
-       int8_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), ret_var.data, ret_var.datalen);
-       CVec_u8Z_free(ret_var);
-       return ret_arr;
+static inline uint64_t RoutingFees_clone_ptr(LDKRoutingFees *NONNULL_PTR arg) {
+       LDKRoutingFees ret_var = RoutingFees_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-uint32_t  __attribute__((visibility("default"))) TS_Scorer_read(int8_tArray ser) {
-       LDKu8slice ser_ref;
-       ser_ref.datalen = *((uint32_t*)ser);
-       ser_ref.data = (int8_t*)(ser + 4);
-       LDKCResult_ScorerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ScorerDecodeErrorZ), "LDKCResult_ScorerDecodeErrorZ");
-       *ret_conv = Scorer_read(ser_ref);
-       return (uint64_t)ret_conv;
+       return ret_ref;
 }
-
-void  __attribute__((visibility("default"))) TS_FilesystemPersister_free(uint32_t this_obj) {
-       LDKFilesystemPersister this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       FilesystemPersister_free(this_obj_conv);
+int64_t  __attribute__((visibility("default"))) TS_RoutingFees_clone_ptr(uint32_t arg) {
+       LDKRoutingFees arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = RoutingFees_clone_ptr(&arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_FilesystemPersister_new(jstring path_to_channel_data) {
-       LDKStr path_to_channel_data_conv = str_ref_to_owned_c(path_to_channel_data);
-       LDKFilesystemPersister ret_var = FilesystemPersister_new(path_to_channel_data_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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKRoutingFees ret_var = RoutingFees_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -35093,95 +32310,50 @@ uint32_t  __attribute__((visibility("default"))) TS_FilesystemPersister_new(jstr
        return ret_ref;
 }
 
-jstring  __attribute__((visibility("default"))) TS_FilesystemPersister_get_data_dir(uint32_t this_arg) {
-       LDKFilesystemPersister this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKStr ret_str = FilesystemPersister_get_data_dir(&this_arg_conv);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_FilesystemPersister_persist_manager(jstring data_dir, uint32_t manager) {
-       LDKStr data_dir_conv = str_ref_to_owned_c(data_dir);
-       LDKChannelManager manager_conv;
-       manager_conv.inner = (void*)(manager & (~1));
-       manager_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(manager_conv);
-       LDKCResult_NoneErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneErrorZ), "LDKCResult_NoneErrorZ");
-       *ret_conv = FilesystemPersister_persist_manager(data_dir_conv, &manager_conv);
-       return (uint64_t)ret_conv;
+int64_t  __attribute__((visibility("default"))) TS_RoutingFees_hash(uint32_t o) {
+       LDKRoutingFees o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       int64_t ret_val = RoutingFees_hash(&o_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_FilesystemPersister_read_channelmonitors(uint32_t this_arg, uint32_t keys_manager) {
-       LDKFilesystemPersister this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       void* keys_manager_ptr = (void*)(((uint64_t)keys_manager) & ~1);
-       CHECK_ACCESS(keys_manager_ptr);
-       LDKKeysInterface keys_manager_conv = *(LDKKeysInterface*)(keys_manager_ptr);
-       LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ), "LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ");
-       *ret_conv = FilesystemPersister_read_channelmonitors(&this_arg_conv, keys_manager_conv);
-       return (uint64_t)ret_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_RoutingFees_write(uint32_t obj) {
+       LDKRoutingFees obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = RoutingFees_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_FilesystemPersister_as_Persist(uint32_t this_arg) {
-       LDKFilesystemPersister this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKPersist* ret_ret = MALLOC(sizeof(LDKPersist), "LDKPersist");
-       *ret_ret = FilesystemPersister_as_Persist(&this_arg_conv);
-       return (uint64_t)ret_ret;
+uint32_t  __attribute__((visibility("default"))) TS_RoutingFees_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_RoutingFeesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RoutingFeesDecodeErrorZ), "LDKCResult_RoutingFeesDecodeErrorZ");
+       *ret_conv = RoutingFees_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_BackgroundProcessor_free(uint32_t this_obj) {
-       LDKBackgroundProcessor this_obj_conv;
+void  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_free(uint32_t this_obj) {
+       LDKNodeAnnouncementInfo this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       BackgroundProcessor_free(this_obj_conv);
-}
-
-void  __attribute__((visibility("default"))) TS_ChannelManagerPersister_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKChannelManagerPersister this_ptr_conv = *(LDKChannelManagerPersister*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       ChannelManagerPersister_free(this_ptr_conv);
+       NodeAnnouncementInfo_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_BackgroundProcessor_start(uint32_t persister, uint32_t event_handler, uint32_t chain_monitor, uint32_t channel_manager, uint32_t net_graph_msg_handler, uint32_t peer_manager, uint32_t logger) {
-       void* persister_ptr = (void*)(((uint64_t)persister) & ~1);
-       CHECK_ACCESS(persister_ptr);
-       LDKChannelManagerPersister persister_conv = *(LDKChannelManagerPersister*)(persister_ptr);
-       void* event_handler_ptr = (void*)(((uint64_t)event_handler) & ~1);
-       CHECK_ACCESS(event_handler_ptr);
-       LDKEventHandler event_handler_conv = *(LDKEventHandler*)(event_handler_ptr);
-       LDKChainMonitor chain_monitor_conv;
-       chain_monitor_conv.inner = (void*)(chain_monitor & (~1));
-       chain_monitor_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(chain_monitor_conv);
-       LDKChannelManager channel_manager_conv;
-       channel_manager_conv.inner = (void*)(channel_manager & (~1));
-       channel_manager_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_manager_conv);
-       LDKNetGraphMsgHandler net_graph_msg_handler_conv;
-       net_graph_msg_handler_conv.inner = (void*)(net_graph_msg_handler & (~1));
-       net_graph_msg_handler_conv.is_owned = (net_graph_msg_handler & 1) || (net_graph_msg_handler == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(net_graph_msg_handler_conv);
-       LDKPeerManager peer_manager_conv;
-       peer_manager_conv.inner = (void*)(peer_manager & (~1));
-       peer_manager_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(peer_manager_conv);
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       CHECK_ACCESS(logger_ptr);
-       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
-       LDKBackgroundProcessor ret_var = BackgroundProcessor_start(persister_conv, event_handler_conv, &chain_monitor_conv, &channel_manager_conv, net_graph_msg_handler_conv, &peer_manager_conv, logger_conv);
+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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKNodeFeatures ret_var = NodeAnnouncementInfo_get_features(&this_ptr_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -35193,80 +32365,165 @@ uint32_t  __attribute__((visibility("default"))) TS_BackgroundProcessor_start(ui
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_BackgroundProcessor_join(uint32_t this_arg) {
-       LDKBackgroundProcessor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       // Warning: we need a move here but no clone is available for LDKBackgroundProcessor
-       LDKCResult_NoneErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneErrorZ), "LDKCResult_NoneErrorZ");
-       *ret_conv = BackgroundProcessor_join(this_arg_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_set_features(uint32_t this_ptr, uint32_t val) {
+       LDKNodeAnnouncementInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKNodeFeatures val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = NodeFeatures_clone(&val_conv);
+       NodeAnnouncementInfo_set_features(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_BackgroundProcessor_stop(uint32_t this_arg) {
-       LDKBackgroundProcessor this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       // Warning: we need a move here but no clone is available for LDKBackgroundProcessor
-       LDKCResult_NoneErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneErrorZ), "LDKCResult_NoneErrorZ");
-       *ret_conv = BackgroundProcessor_stop(this_arg_conv);
-       return (uint64_t)ret_conv;
+int32_t  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_get_last_update(uint32_t this_ptr) {
+       LDKNodeAnnouncementInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = NodeAnnouncementInfo_get_last_update(&this_ptr_conv);
+       return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_check_platform() {
-       check_platform();
+void  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_set_last_update(uint32_t this_ptr, int32_t val) {
+       LDKNodeAnnouncementInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       NodeAnnouncementInfo_set_last_update(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_Invoice_free(uint32_t this_obj) {
-       LDKInvoice this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       Invoice_free(this_obj_conv);
+int8_tArray  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_get_rgb(uint32_t this_ptr) {
+       LDKNodeAnnouncementInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(3);
+       memcpy(ret_arr->elems, *NodeAnnouncementInfo_get_rgb(&this_ptr_conv), 3);
+       return ret_arr;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_Invoice_eq(uint32_t a, uint32_t b) {
-       LDKInvoice a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKInvoice b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = Invoice_eq(&a_conv, &b_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_set_rgb(uint32_t this_ptr, int8_tArray val) {
+       LDKNodeAnnouncementInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKThreeBytes val_ref;
+       CHECK(val->arr_len == 3);
+       memcpy(val_ref.data, val->elems, 3);
+       NodeAnnouncementInfo_set_rgb(&this_ptr_conv, val_ref);
 }
 
-static inline uint64_t Invoice_clone_ptr(LDKInvoice *NONNULL_PTR arg) {
-       LDKInvoice ret_var = Invoice_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
+int8_tArray  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_get_alias(uint32_t this_ptr) {
+       LDKNodeAnnouncementInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(32);
+       memcpy(ret_arr->elems, *NodeAnnouncementInfo_get_alias(&this_ptr_conv), 32);
+       return ret_arr;
+}
+
+void  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_set_alias(uint32_t this_ptr, int8_tArray val) {
+       LDKNodeAnnouncementInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKThirtyTwoBytes val_ref;
+       CHECK(val->arr_len == 32);
+       memcpy(val_ref.data, val->elems, 32);
+       NodeAnnouncementInfo_set_alias(&this_ptr_conv, val_ref);
+}
+
+void  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_set_addresses(uint32_t this_ptr, uint32_tArray val) {
+       LDKNodeAnnouncementInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCVec_NetAddressZ val_constr;
+       val_constr.datalen = val->arr_len;
+       if (val_constr.datalen > 0)
+               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKNetAddress), "LDKCVec_NetAddressZ Elements");
+       else
+               val_constr.data = NULL;
+       uint32_t* val_vals = val->elems;
+       for (size_t m = 0; m < val_constr.datalen; m++) {
+               uint32_t val_conv_12 = val_vals[m];
+               void* val_conv_12_ptr = (void*)(((uint64_t)val_conv_12) & ~1);
+               CHECK_ACCESS(val_conv_12_ptr);
+               LDKNetAddress val_conv_12_conv = *(LDKNetAddress*)(val_conv_12_ptr);
+               val_conv_12_conv = NetAddress_clone((LDKNetAddress*)(((uint64_t)val_conv_12) & ~1));
+               val_constr.data[m] = val_conv_12_conv;
+       }
+       NodeAnnouncementInfo_set_addresses(&this_ptr_conv, val_constr);
 }
+
+uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_get_announcement_message(uint32_t this_ptr) {
+       LDKNodeAnnouncementInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKNodeAnnouncement ret_var = NodeAnnouncementInfo_get_announcement_message(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       if ((uint64_t)ret_var.inner > 4096) {
+               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+               ret_ref = (uint64_t)ret_var.inner;
+               if (ret_var.is_owned) {
+                       ret_ref |= 1;
+               }
+       }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_Invoice_clone_ptr(uint32_t arg) {
-       LDKInvoice arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = Invoice_clone_ptr(&arg_conv);
-       return ret_val;
+
+void  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_set_announcement_message(uint32_t this_ptr, uint32_t val) {
+       LDKNodeAnnouncementInfo this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKNodeAnnouncement val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = NodeAnnouncement_clone(&val_conv);
+       NodeAnnouncementInfo_set_announcement_message(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Invoice_clone(uint32_t orig) {
-       LDKInvoice orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKInvoice ret_var = Invoice_clone(&orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_new(uint32_t features_arg, int32_t last_update_arg, int8_tArray rgb_arg, int8_tArray alias_arg, uint32_tArray addresses_arg, uint32_t announcement_message_arg) {
+       LDKNodeFeatures features_arg_conv;
+       features_arg_conv.inner = (void*)(features_arg & (~1));
+       features_arg_conv.is_owned = (features_arg & 1) || (features_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(features_arg_conv);
+       features_arg_conv = NodeFeatures_clone(&features_arg_conv);
+       LDKThreeBytes rgb_arg_ref;
+       CHECK(rgb_arg->arr_len == 3);
+       memcpy(rgb_arg_ref.data, rgb_arg->elems, 3);
+       LDKThirtyTwoBytes alias_arg_ref;
+       CHECK(alias_arg->arr_len == 32);
+       memcpy(alias_arg_ref.data, alias_arg->elems, 32);
+       LDKCVec_NetAddressZ addresses_arg_constr;
+       addresses_arg_constr.datalen = addresses_arg->arr_len;
+       if (addresses_arg_constr.datalen > 0)
+               addresses_arg_constr.data = MALLOC(addresses_arg_constr.datalen * sizeof(LDKNetAddress), "LDKCVec_NetAddressZ Elements");
+       else
+               addresses_arg_constr.data = NULL;
+       uint32_t* addresses_arg_vals = addresses_arg->elems;
+       for (size_t m = 0; m < addresses_arg_constr.datalen; m++) {
+               uint32_t addresses_arg_conv_12 = addresses_arg_vals[m];
+               void* addresses_arg_conv_12_ptr = (void*)(((uint64_t)addresses_arg_conv_12) & ~1);
+               CHECK_ACCESS(addresses_arg_conv_12_ptr);
+               LDKNetAddress addresses_arg_conv_12_conv = *(LDKNetAddress*)(addresses_arg_conv_12_ptr);
+               addresses_arg_constr.data[m] = addresses_arg_conv_12_conv;
+       }
+       LDKNodeAnnouncement announcement_message_arg_conv;
+       announcement_message_arg_conv.inner = (void*)(announcement_message_arg & (~1));
+       announcement_message_arg_conv.is_owned = (announcement_message_arg & 1) || (announcement_message_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(announcement_message_arg_conv);
+       announcement_message_arg_conv = NodeAnnouncement_clone(&announcement_message_arg_conv);
+       LDKNodeAnnouncementInfo ret_var = NodeAnnouncementInfo_new(features_arg_conv, last_update_arg, rgb_arg_ref, alias_arg_ref, addresses_arg_constr, announcement_message_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -35278,29 +32535,8 @@ uint32_t  __attribute__((visibility("default"))) TS_Invoice_clone(uint32_t orig)
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_SignedRawInvoice_free(uint32_t this_obj) {
-       LDKSignedRawInvoice this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       SignedRawInvoice_free(this_obj_conv);
-}
-
-jboolean  __attribute__((visibility("default"))) TS_SignedRawInvoice_eq(uint32_t a, uint32_t b) {
-       LDKSignedRawInvoice a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKSignedRawInvoice b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = SignedRawInvoice_eq(&a_conv, &b_conv);
-       return ret_val;
-}
-
-static inline uint64_t SignedRawInvoice_clone_ptr(LDKSignedRawInvoice *NONNULL_PTR arg) {
-       LDKSignedRawInvoice ret_var = SignedRawInvoice_clone(arg);
+static inline uint64_t NodeAnnouncementInfo_clone_ptr(LDKNodeAnnouncementInfo *NONNULL_PTR arg) {
+       LDKNodeAnnouncementInfo ret_var = NodeAnnouncementInfo_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -35311,21 +32547,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_SignedRawInvoice_clone_ptr(uint32_t arg) {
-       LDKSignedRawInvoice arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_clone_ptr(uint32_t arg) {
+       LDKNodeAnnouncementInfo arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = SignedRawInvoice_clone_ptr(&arg_conv);
+       int64_t ret_val = NodeAnnouncementInfo_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SignedRawInvoice_clone(uint32_t orig) {
-       LDKSignedRawInvoice orig_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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKSignedRawInvoice ret_var = SignedRawInvoice_clone(&orig_conv);
+       LDKNodeAnnouncementInfo ret_var = NodeAnnouncementInfo_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -35337,173 +32573,141 @@ uint32_t  __attribute__((visibility("default"))) TS_SignedRawInvoice_clone(uint3
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_RawInvoice_free(uint32_t this_obj) {
-       LDKRawInvoice this_obj_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_write(uint32_t obj) {
+       LDKNodeAnnouncementInfo obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = NodeAnnouncementInfo_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_NodeAnnouncementInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ), "LDKCResult_NodeAnnouncementInfoDecodeErrorZ");
+       *ret_conv = NodeAnnouncementInfo_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_NodeInfo_free(uint32_t this_obj) {
+       LDKNodeInfo this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       RawInvoice_free(this_obj_conv);
+       NodeInfo_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RawInvoice_get_data(uint32_t this_ptr) {
-       LDKRawInvoice this_ptr_conv;
+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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCVec_u64Z val_constr;
+       val_constr.datalen = val->arr_len;
+       if (val_constr.datalen > 0)
+               val_constr.data = MALLOC(val_constr.datalen * sizeof(int64_t), "LDKCVec_u64Z Elements");
+       else
+               val_constr.data = NULL;
+       int64_t* val_vals = val->elems;
+       for (size_t i = 0; i < val_constr.datalen; i++) {
+               int64_t val_conv_8 = val_vals[i];
+               val_constr.data[i] = val_conv_8;
+       }
+       NodeInfo_set_channels(&this_ptr_conv, val_constr);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_NodeInfo_get_lowest_inbound_channel_fees(uint32_t this_ptr) {
+       LDKNodeInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKRawDataPart ret_var = RawInvoice_get_data(&this_ptr_conv);
+       LDKRoutingFees ret_var = NodeInfo_get_lowest_inbound_channel_fees(&this_ptr_conv);
        uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       if ((uint64_t)ret_var.inner > 4096) {
+               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
        CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
+               ret_ref = (uint64_t)ret_var.inner;
+               if (ret_var.is_owned) {
+                       ret_ref |= 1;
+               }
        }
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_RawInvoice_set_data(uint32_t this_ptr, uint32_t val) {
-       LDKRawInvoice this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_NodeInfo_set_lowest_inbound_channel_fees(uint32_t this_ptr, uint32_t val) {
+       LDKNodeInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKRawDataPart val_conv;
+       LDKRoutingFees val_conv;
        val_conv.inner = (void*)(val & (~1));
        val_conv.is_owned = (val & 1) || (val == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = RawDataPart_clone(&val_conv);
-       RawInvoice_set_data(&this_ptr_conv, val_conv);
-}
-
-jboolean  __attribute__((visibility("default"))) TS_RawInvoice_eq(uint32_t a, uint32_t b) {
-       LDKRawInvoice a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKRawInvoice b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = RawInvoice_eq(&a_conv, &b_conv);
-       return ret_val;
-}
-
-static inline uint64_t RawInvoice_clone_ptr(LDKRawInvoice *NONNULL_PTR arg) {
-       LDKRawInvoice ret_var = RawInvoice_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_RawInvoice_clone_ptr(uint32_t arg) {
-       LDKRawInvoice arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = RawInvoice_clone_ptr(&arg_conv);
-       return ret_val;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_RawInvoice_clone(uint32_t orig) {
-       LDKRawInvoice orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKRawInvoice ret_var = RawInvoice_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
-}
-
-void  __attribute__((visibility("default"))) TS_RawDataPart_free(uint32_t this_obj) {
-       LDKRawDataPart this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       RawDataPart_free(this_obj_conv);
+       val_conv = RoutingFees_clone(&val_conv);
+       NodeInfo_set_lowest_inbound_channel_fees(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RawDataPart_get_timestamp(uint32_t this_ptr) {
-       LDKRawDataPart this_ptr_conv;
+uint32_t  __attribute__((visibility("default"))) TS_NodeInfo_get_announcement_info(uint32_t this_ptr) {
+       LDKNodeInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPositiveTimestamp ret_var = RawDataPart_get_timestamp(&this_ptr_conv);
+       LDKNodeAnnouncementInfo ret_var = NodeInfo_get_announcement_info(&this_ptr_conv);
        uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       if ((uint64_t)ret_var.inner > 4096) {
+               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
        CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
+               ret_ref = (uint64_t)ret_var.inner;
+               if (ret_var.is_owned) {
+                       ret_ref |= 1;
+               }
        }
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_RawDataPart_set_timestamp(uint32_t this_ptr, uint32_t val) {
-       LDKRawDataPart this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_NodeInfo_set_announcement_info(uint32_t this_ptr, uint32_t val) {
+       LDKNodeInfo this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       LDKPositiveTimestamp val_conv;
+       LDKNodeAnnouncementInfo val_conv;
        val_conv.inner = (void*)(val & (~1));
        val_conv.is_owned = (val & 1) || (val == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
-       val_conv = PositiveTimestamp_clone(&val_conv);
-       RawDataPart_set_timestamp(&this_ptr_conv, val_conv);
-}
-
-jboolean  __attribute__((visibility("default"))) TS_RawDataPart_eq(uint32_t a, uint32_t b) {
-       LDKRawDataPart a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKRawDataPart b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = RawDataPart_eq(&a_conv, &b_conv);
-       return ret_val;
-}
-
-static inline uint64_t RawDataPart_clone_ptr(LDKRawDataPart *NONNULL_PTR arg) {
-       LDKRawDataPart ret_var = RawDataPart_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_RawDataPart_clone_ptr(uint32_t arg) {
-       LDKRawDataPart arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = RawDataPart_clone_ptr(&arg_conv);
-       return ret_val;
+       val_conv = NodeAnnouncementInfo_clone(&val_conv);
+       NodeInfo_set_announcement_info(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RawDataPart_clone(uint32_t orig) {
-       LDKRawDataPart orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKRawDataPart ret_var = RawDataPart_clone(&orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_NodeInfo_new(int64_tArray channels_arg, uint32_t lowest_inbound_channel_fees_arg, uint32_t announcement_info_arg) {
+       LDKCVec_u64Z channels_arg_constr;
+       channels_arg_constr.datalen = channels_arg->arr_len;
+       if (channels_arg_constr.datalen > 0)
+               channels_arg_constr.data = MALLOC(channels_arg_constr.datalen * sizeof(int64_t), "LDKCVec_u64Z Elements");
+       else
+               channels_arg_constr.data = NULL;
+       int64_t* channels_arg_vals = channels_arg->elems;
+       for (size_t i = 0; i < channels_arg_constr.datalen; i++) {
+               int64_t channels_arg_conv_8 = channels_arg_vals[i];
+               channels_arg_constr.data[i] = channels_arg_conv_8;
+       }
+       LDKRoutingFees lowest_inbound_channel_fees_arg_conv;
+       lowest_inbound_channel_fees_arg_conv.inner = (void*)(lowest_inbound_channel_fees_arg & (~1));
+       lowest_inbound_channel_fees_arg_conv.is_owned = (lowest_inbound_channel_fees_arg & 1) || (lowest_inbound_channel_fees_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(lowest_inbound_channel_fees_arg_conv);
+       lowest_inbound_channel_fees_arg_conv = RoutingFees_clone(&lowest_inbound_channel_fees_arg_conv);
+       LDKNodeAnnouncementInfo announcement_info_arg_conv;
+       announcement_info_arg_conv.inner = (void*)(announcement_info_arg & (~1));
+       announcement_info_arg_conv.is_owned = (announcement_info_arg & 1) || (announcement_info_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(announcement_info_arg_conv);
+       announcement_info_arg_conv = NodeAnnouncementInfo_clone(&announcement_info_arg_conv);
+       LDKNodeInfo ret_var = NodeInfo_new(channels_arg_constr, lowest_inbound_channel_fees_arg_conv, announcement_info_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -35515,29 +32719,8 @@ uint32_t  __attribute__((visibility("default"))) TS_RawDataPart_clone(uint32_t o
        return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_PositiveTimestamp_free(uint32_t this_obj) {
-       LDKPositiveTimestamp this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       PositiveTimestamp_free(this_obj_conv);
-}
-
-jboolean  __attribute__((visibility("default"))) TS_PositiveTimestamp_eq(uint32_t a, uint32_t b) {
-       LDKPositiveTimestamp a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKPositiveTimestamp b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = PositiveTimestamp_eq(&a_conv, &b_conv);
-       return ret_val;
-}
-
-static inline uint64_t PositiveTimestamp_clone_ptr(LDKPositiveTimestamp *NONNULL_PTR arg) {
-       LDKPositiveTimestamp ret_var = PositiveTimestamp_clone(arg);
+static inline uint64_t NodeInfo_clone_ptr(LDKNodeInfo *NONNULL_PTR arg) {
+       LDKNodeInfo ret_var = NodeInfo_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -35548,21 +32731,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_PositiveTimestamp_clone_ptr(uint32_t arg) {
-       LDKPositiveTimestamp arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_NodeInfo_clone_ptr(uint32_t arg) {
+       LDKNodeInfo arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = PositiveTimestamp_clone_ptr(&arg_conv);
+       int64_t ret_val = NodeInfo_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PositiveTimestamp_clone(uint32_t orig) {
-       LDKPositiveTimestamp orig_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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKPositiveTimestamp ret_var = PositiveTimestamp_clone(&orig_conv);
+       LDKNodeInfo ret_var = NodeInfo_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -35574,297 +32757,255 @@ uint32_t  __attribute__((visibility("default"))) TS_PositiveTimestamp_clone(uint
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SiPrefix_clone(uint32_t orig) {
-       LDKSiPrefix* orig_conv = (LDKSiPrefix*)(orig & ~1);
-       uint32_t ret_conv = LDKSiPrefix_to_js(SiPrefix_clone(orig_conv));
-       return ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_SiPrefix_milli() {
-       uint32_t ret_conv = LDKSiPrefix_to_js(SiPrefix_milli());
-       return ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_SiPrefix_micro() {
-       uint32_t ret_conv = LDKSiPrefix_to_js(SiPrefix_micro());
-       return ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_SiPrefix_nano() {
-       uint32_t ret_conv = LDKSiPrefix_to_js(SiPrefix_nano());
-       return ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_SiPrefix_pico() {
-       uint32_t ret_conv = LDKSiPrefix_to_js(SiPrefix_pico());
-       return ret_conv;
-}
-
-jboolean  __attribute__((visibility("default"))) TS_SiPrefix_eq(uint32_t a, uint32_t b) {
-       LDKSiPrefix* a_conv = (LDKSiPrefix*)(a & ~1);
-       LDKSiPrefix* b_conv = (LDKSiPrefix*)(b & ~1);
-       jboolean ret_val = SiPrefix_eq(a_conv, b_conv);
-       return ret_val;
-}
-
-int64_t  __attribute__((visibility("default"))) TS_SiPrefix_multiplier(uint32_t this_arg) {
-       LDKSiPrefix* this_arg_conv = (LDKSiPrefix*)(this_arg & ~1);
-       int64_t ret_val = SiPrefix_multiplier(this_arg_conv);
-       return ret_val;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_Currency_clone(uint32_t orig) {
-       LDKCurrency* orig_conv = (LDKCurrency*)(orig & ~1);
-       uint32_t ret_conv = LDKCurrency_to_js(Currency_clone(orig_conv));
-       return ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_Currency_bitcoin() {
-       uint32_t ret_conv = LDKCurrency_to_js(Currency_bitcoin());
-       return ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_Currency_bitcoin_testnet() {
-       uint32_t ret_conv = LDKCurrency_to_js(Currency_bitcoin_testnet());
-       return ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_Currency_regtest() {
-       uint32_t ret_conv = LDKCurrency_to_js(Currency_regtest());
-       return ret_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_NodeInfo_write(uint32_t obj) {
+       LDKNodeInfo obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = NodeInfo_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Currency_simnet() {
-       uint32_t ret_conv = LDKCurrency_to_js(Currency_simnet());
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_NodeInfo_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_NodeInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeInfoDecodeErrorZ), "LDKCResult_NodeInfoDecodeErrorZ");
+       *ret_conv = NodeInfo_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Currency_signet() {
-       uint32_t ret_conv = LDKCurrency_to_js(Currency_signet());
-       return ret_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_NetworkGraph_write(uint32_t obj) {
+       LDKNetworkGraph obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = NetworkGraph_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_Currency_hash(uint32_t o) {
-       LDKCurrency* o_conv = (LDKCurrency*)(o & ~1);
-       int64_t ret_val = Currency_hash(o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_NetworkGraphDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetworkGraphDecodeErrorZ), "LDKCResult_NetworkGraphDecodeErrorZ");
+       *ret_conv = NetworkGraph_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_Currency_eq(uint32_t a, uint32_t b) {
-       LDKCurrency* a_conv = (LDKCurrency*)(a & ~1);
-       LDKCurrency* b_conv = (LDKCurrency*)(b & ~1);
-       jboolean ret_val = Currency_eq(a_conv, b_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_new(int8_tArray genesis_hash) {
+       LDKThirtyTwoBytes genesis_hash_ref;
+       CHECK(genesis_hash->arr_len == 32);
+       memcpy(genesis_hash_ref.data, genesis_hash->elems, 32);
+       LDKNetworkGraph ret_var = NetworkGraph_new(genesis_hash_ref);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_Sha256_free(uint32_t this_obj) {
-       LDKSha256 this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       Sha256_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_read_only(uint32_t this_arg) {
+       LDKNetworkGraph this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKReadOnlyNetworkGraph ret_var = NetworkGraph_read_only(&this_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-static inline uint64_t Sha256_clone_ptr(LDKSha256 *NONNULL_PTR arg) {
-       LDKSha256 ret_var = Sha256_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_update_node_from_announcement(uint32_t this_arg, uint32_t msg) {
+       LDKNetworkGraph this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKNodeAnnouncement msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
+       *ret_conv = NetworkGraph_update_node_from_announcement(&this_arg_conv, &msg_conv);
+       return (uint64_t)ret_conv;
 }
-int64_t  __attribute__((visibility("default"))) TS_Sha256_clone_ptr(uint32_t arg) {
-       LDKSha256 arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = Sha256_clone_ptr(&arg_conv);
-       return ret_val;
+
+uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_update_node_from_unsigned_announcement(uint32_t this_arg, uint32_t msg) {
+       LDKNetworkGraph this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKUnsignedNodeAnnouncement msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
+       *ret_conv = NetworkGraph_update_node_from_unsigned_announcement(&this_arg_conv, &msg_conv);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Sha256_clone(uint32_t orig) {
-       LDKSha256 orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKSha256 ret_var = Sha256_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
+uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_update_channel_from_announcement(uint32_t this_arg, uint32_t msg, uint32_t chain_access) {
+       LDKNetworkGraph this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKChannelAnnouncement msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       void* chain_access_ptr = (void*)(((uint64_t)chain_access) & ~1);
+       CHECK_ACCESS(chain_access_ptr);
+       LDKCOption_AccessZ chain_access_conv = *(LDKCOption_AccessZ*)(chain_access_ptr);
+       // Warning: we may need a move here but no clone is available for LDKCOption_AccessZ
+       if (chain_access_conv.tag == LDKCOption_AccessZ_Some) {
+               // Manually implement clone for Java trait instances
        }
-       return ret_ref;
+       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
+       *ret_conv = NetworkGraph_update_channel_from_announcement(&this_arg_conv, &msg_conv, chain_access_conv);
+       return (uint64_t)ret_conv;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_Sha256_hash(uint32_t o) {
-       LDKSha256 o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = Sha256_hash(&o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_update_channel_from_unsigned_announcement(uint32_t this_arg, uint32_t msg, uint32_t chain_access) {
+       LDKNetworkGraph this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKUnsignedChannelAnnouncement msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       void* chain_access_ptr = (void*)(((uint64_t)chain_access) & ~1);
+       CHECK_ACCESS(chain_access_ptr);
+       LDKCOption_AccessZ chain_access_conv = *(LDKCOption_AccessZ*)(chain_access_ptr);
+       // Warning: we may need a move here but no clone is available for LDKCOption_AccessZ
+       if (chain_access_conv.tag == LDKCOption_AccessZ_Some) {
+               // Manually implement clone for Java trait instances
+       }
+       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
+       *ret_conv = NetworkGraph_update_channel_from_unsigned_announcement(&this_arg_conv, &msg_conv, chain_access_conv);
+       return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_Sha256_eq(uint32_t a, uint32_t b) {
-       LDKSha256 a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKSha256 b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = Sha256_eq(&a_conv, &b_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_NetworkGraph_close_channel_from_update(uint32_t this_arg, int64_t short_channel_id, jboolean is_permanent) {
+       LDKNetworkGraph this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       NetworkGraph_close_channel_from_update(&this_arg_conv, short_channel_id, is_permanent);
 }
 
-void  __attribute__((visibility("default"))) TS_Description_free(uint32_t this_obj) {
-       LDKDescription this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       Description_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_NetworkGraph_fail_node(uint32_t this_arg, int8_tArray _node_id, jboolean is_permanent) {
+       LDKNetworkGraph this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKPublicKey _node_id_ref;
+       CHECK(_node_id->arr_len == 33);
+       memcpy(_node_id_ref.compressed_form, _node_id->elems, 33);
+       NetworkGraph_fail_node(&this_arg_conv, _node_id_ref, is_permanent);
 }
 
-static inline uint64_t Description_clone_ptr(LDKDescription *NONNULL_PTR arg) {
-       LDKDescription ret_var = Description_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_Description_clone_ptr(uint32_t arg) {
-       LDKDescription arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = Description_clone_ptr(&arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_NetworkGraph_remove_stale_channels_with_time(uint32_t this_arg, int64_t current_time_unix) {
+       LDKNetworkGraph this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       NetworkGraph_remove_stale_channels_with_time(&this_arg_conv, current_time_unix);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Description_clone(uint32_t orig) {
-       LDKDescription orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKDescription ret_var = Description_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_update_channel(uint32_t this_arg, uint32_t msg) {
+       LDKNetworkGraph this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKChannelUpdate msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
+       *ret_conv = NetworkGraph_update_channel(&this_arg_conv, &msg_conv);
+       return (uint64_t)ret_conv;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_Description_hash(uint32_t o) {
-       LDKDescription o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = Description_hash(&o_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_NetworkGraph_update_channel_unsigned(uint32_t this_arg, uint32_t msg) {
+       LDKNetworkGraph this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKUnsignedChannelUpdate msg_conv;
+       msg_conv.inner = (void*)(msg & (~1));
+       msg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_conv);
+       LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ");
+       *ret_conv = NetworkGraph_update_channel_unsigned(&this_arg_conv, &msg_conv);
+       return (uint64_t)ret_conv;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_Description_eq(uint32_t a, uint32_t b) {
-       LDKDescription a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKDescription b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = Description_eq(&a_conv, &b_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_ReadOnlyNetworkGraph_get_addresses(uint32_t this_arg, int8_tArray pubkey) {
+       LDKReadOnlyNetworkGraph this_arg_conv;
+       this_arg_conv.inner = (void*)(this_arg & (~1));
+       this_arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+       LDKPublicKey pubkey_ref;
+       CHECK(pubkey->arr_len == 33);
+       memcpy(pubkey_ref.compressed_form, pubkey->elems, 33);
+       LDKCOption_CVec_NetAddressZZ *ret_copy = MALLOC(sizeof(LDKCOption_CVec_NetAddressZZ), "LDKCOption_CVec_NetAddressZZ");
+       *ret_copy = ReadOnlyNetworkGraph_get_addresses(&this_arg_conv, pubkey_ref);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_PayeePubKey_free(uint32_t this_obj) {
-       LDKPayeePubKey this_obj_conv;
+void  __attribute__((visibility("default"))) TS_RouteHop_free(uint32_t this_obj) {
+       LDKRouteHop this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       PayeePubKey_free(this_obj_conv);
+       RouteHop_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_PayeePubKey_get_a(uint32_t this_ptr) {
-       LDKPayeePubKey this_ptr_conv;
+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));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), PayeePubKey_get_a(&this_ptr_conv).compressed_form, 33);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, RouteHop_get_pubkey(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-void  __attribute__((visibility("default"))) TS_PayeePubKey_set_a(uint32_t this_ptr, int8_tArray val) {
-       LDKPayeePubKey this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_RouteHop_set_pubkey(uint32_t this_ptr, int8_tArray val) {
+       LDKRouteHop this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
        LDKPublicKey val_ref;
-       CHECK(*((uint32_t*)val) == 33);
-       memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33);
-       PayeePubKey_set_a(&this_ptr_conv, val_ref);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_PayeePubKey_new(int8_tArray a_arg) {
-       LDKPublicKey a_arg_ref;
-       CHECK(*((uint32_t*)a_arg) == 33);
-       memcpy(a_arg_ref.compressed_form, (uint8_t*)(a_arg + 4), 33);
-       LDKPayeePubKey ret_var = PayeePubKey_new(a_arg_ref);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
-}
-
-static inline uint64_t PayeePubKey_clone_ptr(LDKPayeePubKey *NONNULL_PTR arg) {
-       LDKPayeePubKey ret_var = PayeePubKey_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_PayeePubKey_clone_ptr(uint32_t arg) {
-       LDKPayeePubKey arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = PayeePubKey_clone_ptr(&arg_conv);
-       return ret_val;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       RouteHop_set_pubkey(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PayeePubKey_clone(uint32_t orig) {
-       LDKPayeePubKey orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKPayeePubKey ret_var = PayeePubKey_clone(&orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_RouteHop_get_node_features(uint32_t this_ptr) {
+       LDKRouteHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKNodeFeatures ret_var = RouteHop_get_node_features(&this_ptr_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -35876,63 +33017,42 @@ uint32_t  __attribute__((visibility("default"))) TS_PayeePubKey_clone(uint32_t o
        return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_PayeePubKey_hash(uint32_t o) {
-       LDKPayeePubKey o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = PayeePubKey_hash(&o_conv);
-       return ret_val;
-}
-
-jboolean  __attribute__((visibility("default"))) TS_PayeePubKey_eq(uint32_t a, uint32_t b) {
-       LDKPayeePubKey a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKPayeePubKey b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = PayeePubKey_eq(&a_conv, &b_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_ExpiryTime_free(uint32_t this_obj) {
-       LDKExpiryTime this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       ExpiryTime_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_RouteHop_set_node_features(uint32_t this_ptr, uint32_t val) {
+       LDKRouteHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKNodeFeatures val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = NodeFeatures_clone(&val_conv);
+       RouteHop_set_node_features(&this_ptr_conv, val_conv);
 }
 
-static inline uint64_t ExpiryTime_clone_ptr(LDKExpiryTime *NONNULL_PTR arg) {
-       LDKExpiryTime ret_var = ExpiryTime_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_ExpiryTime_clone_ptr(uint32_t arg) {
-       LDKExpiryTime arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = ExpiryTime_clone_ptr(&arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_RouteHop_get_short_channel_id(uint32_t this_ptr) {
+       LDKRouteHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = RouteHop_get_short_channel_id(&this_ptr_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_ExpiryTime_clone(uint32_t orig) {
-       LDKExpiryTime orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKExpiryTime ret_var = ExpiryTime_clone(&orig_conv);
+void  __attribute__((visibility("default"))) TS_RouteHop_set_short_channel_id(uint32_t this_ptr, int64_t val) {
+       LDKRouteHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       RouteHop_set_short_channel_id(&this_ptr_conv, val);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_RouteHop_get_channel_features(uint32_t this_ptr) {
+       LDKRouteHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKChannelFeatures ret_var = RouteHop_get_channel_features(&this_ptr_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -35944,55 +33064,68 @@ uint32_t  __attribute__((visibility("default"))) TS_ExpiryTime_clone(uint32_t or
        return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_ExpiryTime_hash(uint32_t o) {
-       LDKExpiryTime o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = ExpiryTime_hash(&o_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_RouteHop_set_channel_features(uint32_t this_ptr, uint32_t val) {
+       LDKRouteHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKChannelFeatures val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = ChannelFeatures_clone(&val_conv);
+       RouteHop_set_channel_features(&this_ptr_conv, val_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_ExpiryTime_eq(uint32_t a, uint32_t b) {
-       LDKExpiryTime a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKExpiryTime b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = ExpiryTime_eq(&a_conv, &b_conv);
+int64_t  __attribute__((visibility("default"))) TS_RouteHop_get_fee_msat(uint32_t this_ptr) {
+       LDKRouteHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = RouteHop_get_fee_msat(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_MinFinalCltvExpiry_free(uint32_t this_obj) {
-       LDKMinFinalCltvExpiry this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       MinFinalCltvExpiry_free(this_obj_conv);
+void  __attribute__((visibility("default"))) TS_RouteHop_set_fee_msat(uint32_t this_ptr, int64_t val) {
+       LDKRouteHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       RouteHop_set_fee_msat(&this_ptr_conv, val);
 }
 
-int64_t  __attribute__((visibility("default"))) TS_MinFinalCltvExpiry_get_a(uint32_t this_ptr) {
-       LDKMinFinalCltvExpiry this_ptr_conv;
+int32_t  __attribute__((visibility("default"))) TS_RouteHop_get_cltv_expiry_delta(uint32_t this_ptr) {
+       LDKRouteHop this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = MinFinalCltvExpiry_get_a(&this_ptr_conv);
+       int32_t ret_val = RouteHop_get_cltv_expiry_delta(&this_ptr_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_MinFinalCltvExpiry_set_a(uint32_t this_ptr, int64_t val) {
-       LDKMinFinalCltvExpiry this_ptr_conv;
+void  __attribute__((visibility("default"))) TS_RouteHop_set_cltv_expiry_delta(uint32_t this_ptr, int32_t val) {
+       LDKRouteHop this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       MinFinalCltvExpiry_set_a(&this_ptr_conv, val);
+       RouteHop_set_cltv_expiry_delta(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MinFinalCltvExpiry_new(int64_t a_arg) {
-       LDKMinFinalCltvExpiry ret_var = MinFinalCltvExpiry_new(a_arg);
+uint32_t  __attribute__((visibility("default"))) TS_RouteHop_new(int8_tArray pubkey_arg, uint32_t node_features_arg, int64_t short_channel_id_arg, uint32_t channel_features_arg, int64_t fee_msat_arg, int32_t cltv_expiry_delta_arg) {
+       LDKPublicKey pubkey_arg_ref;
+       CHECK(pubkey_arg->arr_len == 33);
+       memcpy(pubkey_arg_ref.compressed_form, pubkey_arg->elems, 33);
+       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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(node_features_arg_conv);
+       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);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_features_arg_conv);
+       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);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -36004,8 +33137,8 @@ uint32_t  __attribute__((visibility("default"))) TS_MinFinalCltvExpiry_new(int64
        return ret_ref;
 }
 
-static inline uint64_t MinFinalCltvExpiry_clone_ptr(LDKMinFinalCltvExpiry *NONNULL_PTR arg) {
-       LDKMinFinalCltvExpiry ret_var = MinFinalCltvExpiry_clone(arg);
+static inline uint64_t RouteHop_clone_ptr(LDKRouteHop *NONNULL_PTR arg) {
+       LDKRouteHop ret_var = RouteHop_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -36016,21 +33149,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_MinFinalCltvExpiry_clone_ptr(uint32_t arg) {
-       LDKMinFinalCltvExpiry arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_RouteHop_clone_ptr(uint32_t arg) {
+       LDKRouteHop arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = MinFinalCltvExpiry_clone_ptr(&arg_conv);
+       int64_t ret_val = RouteHop_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_MinFinalCltvExpiry_clone(uint32_t orig) {
-       LDKMinFinalCltvExpiry 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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKMinFinalCltvExpiry ret_var = MinFinalCltvExpiry_clone(&orig_conv);
+       LDKRouteHop ret_var = RouteHop_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -36042,137 +33175,193 @@ uint32_t  __attribute__((visibility("default"))) TS_MinFinalCltvExpiry_clone(uin
        return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_MinFinalCltvExpiry_hash(uint32_t o) {
-       LDKMinFinalCltvExpiry o_conv;
+int64_t  __attribute__((visibility("default"))) TS_RouteHop_hash(uint32_t o) {
+       LDKRouteHop o_conv;
        o_conv.inner = (void*)(o & (~1));
        o_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = MinFinalCltvExpiry_hash(&o_conv);
+       int64_t ret_val = RouteHop_hash(&o_conv);
        return ret_val;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_MinFinalCltvExpiry_eq(uint32_t a, uint32_t b) {
-       LDKMinFinalCltvExpiry a_conv;
+jboolean  __attribute__((visibility("default"))) TS_RouteHop_eq(uint32_t a, uint32_t b) {
+       LDKRouteHop a_conv;
        a_conv.inner = (void*)(a & (~1));
        a_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKMinFinalCltvExpiry b_conv;
+       LDKRouteHop b_conv;
        b_conv.inner = (void*)(b & (~1));
        b_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = MinFinalCltvExpiry_eq(&a_conv, &b_conv);
+       jboolean ret_val = RouteHop_eq(&a_conv, &b_conv);
        return ret_val;
 }
 
-void  __attribute__((visibility("default"))) TS_Fallback_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKFallback this_ptr_conv = *(LDKFallback*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       Fallback_free(this_ptr_conv);
+int8_tArray  __attribute__((visibility("default"))) TS_RouteHop_write(uint32_t obj) {
+       LDKRouteHop obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = RouteHop_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-static inline uint64_t Fallback_clone_ptr(LDKFallback *NONNULL_PTR arg) {
-       LDKFallback *ret_copy = MALLOC(sizeof(LDKFallback), "LDKFallback");
-       *ret_copy = Fallback_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_Fallback_clone_ptr(uint32_t arg) {
-       LDKFallback* arg_conv = (LDKFallback*)arg;
-       int64_t ret_val = Fallback_clone_ptr(arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_RouteHop_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_RouteHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHopDecodeErrorZ), "LDKCResult_RouteHopDecodeErrorZ");
+       *ret_conv = RouteHop_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Fallback_clone(uint32_t orig) {
-       LDKFallback* orig_conv = (LDKFallback*)orig;
-       LDKFallback *ret_copy = MALLOC(sizeof(LDKFallback), "LDKFallback");
-       *ret_copy = Fallback_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_Route_free(uint32_t this_obj) {
+       LDKRoute this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       Route_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Fallback_seg_wit_program(int8_t version, int8_tArray program) {
+ptrArray  __attribute__((visibility("default"))) TS_Route_get_paths(uint32_t this_ptr) {
+       LDKRoute this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCVec_CVec_RouteHopZZ ret_var = Route_get_paths(&this_ptr_conv);
+       ptrArray ret_arr = NULL;
+       ret_arr = init_ptrArray(ret_var.datalen);
+       uint32_tArray *ret_arr_ptr = (uint32_tArray*)(ret_arr + 4);
+       for (size_t m = 0; m < ret_var.datalen; m++) {
+               LDKCVec_RouteHopZ ret_conv_12_var = ret_var.data[m];
+               uint32_tArray ret_conv_12_arr = NULL;
+               ret_conv_12_arr = init_uint32_tArray(ret_conv_12_var.datalen);
+               uint32_t *ret_conv_12_arr_ptr = (uint32_t*)(ret_conv_12_arr + 4);
+               for (size_t k = 0; k < ret_conv_12_var.datalen; k++) {
+                       LDKRouteHop ret_conv_12_conv_10_var = ret_conv_12_var.data[k];
+                       uint64_t ret_conv_12_conv_10_ref = 0;
+                       CHECK((((uint64_t)ret_conv_12_conv_10_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+                       CHECK((((uint64_t)&ret_conv_12_conv_10_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_12_conv_10_var);
+                       ret_conv_12_conv_10_ref = (uint64_t)ret_conv_12_conv_10_var.inner;
+                       if (ret_conv_12_conv_10_var.is_owned) {
+                               ret_conv_12_conv_10_ref |= 1;
+                       }
+                       ret_conv_12_arr_ptr[k] = ret_conv_12_conv_10_ref;
+               }
+               
+               FREE(ret_conv_12_var.data);
+               ret_arr_ptr[m] = ret_conv_12_arr;
+       }
        
-       LDKCVec_u8Z program_ref;
-       program_ref.datalen = *((uint32_t*)program);
-       program_ref.data = MALLOC(program_ref.datalen, "LDKCVec_u8Z Bytes");
-       memcpy(program_ref.data, (uint8_t*)(program + 4), program_ref.datalen);
-       LDKFallback *ret_copy = MALLOC(sizeof(LDKFallback), "LDKFallback");
-       *ret_copy = Fallback_seg_wit_program((LDKu5){ ._0 = version }, program_ref);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+       FREE(ret_var.data);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Fallback_pub_key_hash(int8_tArray a) {
-       LDKTwentyBytes a_ref;
-       CHECK(*((uint32_t*)a) == 20);
-       memcpy(a_ref.data, (uint8_t*)(a + 4), 20);
-       LDKFallback *ret_copy = MALLOC(sizeof(LDKFallback), "LDKFallback");
-       *ret_copy = Fallback_pub_key_hash(a_ref);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+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));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCVec_CVec_RouteHopZZ val_constr;
+       val_constr.datalen = val->arr_len;
+       if (val_constr.datalen > 0)
+               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKCVec_RouteHopZ), "LDKCVec_CVec_RouteHopZZ Elements");
+       else
+               val_constr.data = NULL;
+       uint32_tArray* val_vals = (void*) val->elems;
+       for (size_t m = 0; m < val_constr.datalen; m++) {
+               uint32_tArray val_conv_12 = val_vals[m];
+               LDKCVec_RouteHopZ val_conv_12_constr;
+               val_conv_12_constr.datalen = val_conv_12->arr_len;
+               if (val_conv_12_constr.datalen > 0)
+                       val_conv_12_constr.data = MALLOC(val_conv_12_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements");
+               else
+                       val_conv_12_constr.data = NULL;
+               uint32_t* val_conv_12_vals = val_conv_12->elems;
+               for (size_t k = 0; k < val_conv_12_constr.datalen; k++) {
+                       uint32_t val_conv_12_conv_10 = val_conv_12_vals[k];
+                       LDKRouteHop val_conv_12_conv_10_conv;
+                       val_conv_12_conv_10_conv.inner = (void*)(val_conv_12_conv_10 & (~1));
+                       val_conv_12_conv_10_conv.is_owned = (val_conv_12_conv_10 & 1) || (val_conv_12_conv_10 == 0);
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv_12_conv_10_conv);
+                       val_conv_12_conv_10_conv = RouteHop_clone(&val_conv_12_conv_10_conv);
+                       val_conv_12_constr.data[k] = val_conv_12_conv_10_conv;
+               }
+               val_constr.data[m] = val_conv_12_constr;
+       }
+       Route_set_paths(&this_ptr_conv, val_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Fallback_script_hash(int8_tArray a) {
-       LDKTwentyBytes a_ref;
-       CHECK(*((uint32_t*)a) == 20);
-       memcpy(a_ref.data, (uint8_t*)(a + 4), 20);
-       LDKFallback *ret_copy = MALLOC(sizeof(LDKFallback), "LDKFallback");
-       *ret_copy = Fallback_script_hash(a_ref);
-       uint64_t ret_ref = (uint64_t)ret_copy;
+uint32_t  __attribute__((visibility("default"))) TS_Route_get_payee(uint32_t this_ptr) {
+       LDKRoute this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPayee ret_var = Route_get_payee(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       if ((uint64_t)ret_var.inner > 4096) {
+               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+               ret_ref = (uint64_t)ret_var.inner;
+               if (ret_var.is_owned) {
+                       ret_ref |= 1;
+               }
+       }
        return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_Fallback_hash(uint32_t o) {
-       LDKFallback* o_conv = (LDKFallback*)o;
-       int64_t ret_val = Fallback_hash(o_conv);
-       return ret_val;
-}
-
-jboolean  __attribute__((visibility("default"))) TS_Fallback_eq(uint32_t a, uint32_t b) {
-       LDKFallback* a_conv = (LDKFallback*)a;
-       LDKFallback* b_conv = (LDKFallback*)b;
-       jboolean ret_val = Fallback_eq(a_conv, b_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_InvoiceSignature_free(uint32_t this_obj) {
-       LDKInvoiceSignature this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       InvoiceSignature_free(this_obj_conv);
-}
-
-static inline uint64_t InvoiceSignature_clone_ptr(LDKInvoiceSignature *NONNULL_PTR arg) {
-       LDKInvoiceSignature ret_var = InvoiceSignature_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_InvoiceSignature_clone_ptr(uint32_t arg) {
-       LDKInvoiceSignature arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = InvoiceSignature_clone_ptr(&arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_Route_set_payee(uint32_t this_ptr, uint32_t val) {
+       LDKRoute this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPayee val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = Payee_clone(&val_conv);
+       Route_set_payee(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InvoiceSignature_clone(uint32_t orig) {
-       LDKInvoiceSignature orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKInvoiceSignature ret_var = InvoiceSignature_clone(&orig_conv);
+uint32_t  __attribute__((visibility("default"))) TS_Route_new(ptrArray paths_arg, uint32_t payee_arg) {
+       LDKCVec_CVec_RouteHopZZ paths_arg_constr;
+       paths_arg_constr.datalen = paths_arg->arr_len;
+       if (paths_arg_constr.datalen > 0)
+               paths_arg_constr.data = MALLOC(paths_arg_constr.datalen * sizeof(LDKCVec_RouteHopZ), "LDKCVec_CVec_RouteHopZZ Elements");
+       else
+               paths_arg_constr.data = NULL;
+       uint32_tArray* paths_arg_vals = (void*) paths_arg->elems;
+       for (size_t m = 0; m < paths_arg_constr.datalen; m++) {
+               uint32_tArray paths_arg_conv_12 = paths_arg_vals[m];
+               LDKCVec_RouteHopZ paths_arg_conv_12_constr;
+               paths_arg_conv_12_constr.datalen = paths_arg_conv_12->arr_len;
+               if (paths_arg_conv_12_constr.datalen > 0)
+                       paths_arg_conv_12_constr.data = MALLOC(paths_arg_conv_12_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements");
+               else
+                       paths_arg_conv_12_constr.data = NULL;
+               uint32_t* paths_arg_conv_12_vals = paths_arg_conv_12->elems;
+               for (size_t k = 0; k < paths_arg_conv_12_constr.datalen; k++) {
+                       uint32_t paths_arg_conv_12_conv_10 = paths_arg_conv_12_vals[k];
+                       LDKRouteHop paths_arg_conv_12_conv_10_conv;
+                       paths_arg_conv_12_conv_10_conv.inner = (void*)(paths_arg_conv_12_conv_10 & (~1));
+                       paths_arg_conv_12_conv_10_conv.is_owned = (paths_arg_conv_12_conv_10 & 1) || (paths_arg_conv_12_conv_10 == 0);
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(paths_arg_conv_12_conv_10_conv);
+                       paths_arg_conv_12_conv_10_conv = RouteHop_clone(&paths_arg_conv_12_conv_10_conv);
+                       paths_arg_conv_12_constr.data[k] = paths_arg_conv_12_conv_10_conv;
+               }
+               paths_arg_constr.data[m] = paths_arg_conv_12_constr;
+       }
+       LDKPayee payee_arg_conv;
+       payee_arg_conv.inner = (void*)(payee_arg & (~1));
+       payee_arg_conv.is_owned = (payee_arg & 1) || (payee_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(payee_arg_conv);
+       payee_arg_conv = Payee_clone(&payee_arg_conv);
+       LDKRoute ret_var = Route_new(paths_arg_constr, payee_arg_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -36184,29 +33373,8 @@ uint32_t  __attribute__((visibility("default"))) TS_InvoiceSignature_clone(uint3
        return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_InvoiceSignature_eq(uint32_t a, uint32_t b) {
-       LDKInvoiceSignature a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKInvoiceSignature b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = InvoiceSignature_eq(&a_conv, &b_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_PrivateRoute_free(uint32_t this_obj) {
-       LDKPrivateRoute this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       PrivateRoute_free(this_obj_conv);
-}
-
-static inline uint64_t PrivateRoute_clone_ptr(LDKPrivateRoute *NONNULL_PTR arg) {
-       LDKPrivateRoute ret_var = PrivateRoute_clone(arg);
+static inline uint64_t Route_clone_ptr(LDKRoute *NONNULL_PTR arg) {
+       LDKRoute ret_var = Route_clone(arg);
 uint64_t ret_ref = 0;
 CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
 CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -36217,21 +33385,21 @@ if (ret_var.is_owned) {
 }
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_PrivateRoute_clone_ptr(uint32_t arg) {
-       LDKPrivateRoute arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_Route_clone_ptr(uint32_t arg) {
+       LDKRoute arg_conv;
        arg_conv.inner = (void*)(arg & (~1));
        arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = PrivateRoute_clone_ptr(&arg_conv);
+       int64_t ret_val = Route_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PrivateRoute_clone(uint32_t orig) {
-       LDKPrivateRoute orig_conv;
+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;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKPrivateRoute ret_var = PrivateRoute_clone(&orig_conv);
+       LDKRoute ret_var = Route_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -36243,72 +33411,81 @@ uint32_t  __attribute__((visibility("default"))) TS_PrivateRoute_clone(uint32_t
        return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_PrivateRoute_hash(uint32_t o) {
-       LDKPrivateRoute o_conv;
+int64_t  __attribute__((visibility("default"))) TS_Route_hash(uint32_t o) {
+       LDKRoute o_conv;
        o_conv.inner = (void*)(o & (~1));
        o_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = PrivateRoute_hash(&o_conv);
+       int64_t ret_val = Route_hash(&o_conv);
        return ret_val;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_PrivateRoute_eq(uint32_t a, uint32_t b) {
-       LDKPrivateRoute a_conv;
+jboolean  __attribute__((visibility("default"))) TS_Route_eq(uint32_t a, uint32_t b) {
+       LDKRoute a_conv;
        a_conv.inner = (void*)(a & (~1));
        a_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKPrivateRoute b_conv;
+       LDKRoute b_conv;
        b_conv.inner = (void*)(b & (~1));
        b_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = PrivateRoute_eq(&a_conv, &b_conv);
+       jboolean ret_val = Route_eq(&a_conv, &b_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SignedRawInvoice_into_parts(uint32_t this_arg) {
-       LDKSignedRawInvoice this_arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_Route_get_total_fees(uint32_t this_arg) {
+       LDKRoute this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
+       this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       this_arg_conv = SignedRawInvoice_clone(&this_arg_conv);
-       LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ* ret_conv = MALLOC(sizeof(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ), "LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ");
-       *ret_conv = SignedRawInvoice_into_parts(this_arg_conv);
-       return ((uint64_t)ret_conv);
+       int64_t ret_val = Route_get_total_fees(&this_arg_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SignedRawInvoice_raw_invoice(uint32_t this_arg) {
-       LDKSignedRawInvoice this_arg_conv;
+int64_t  __attribute__((visibility("default"))) TS_Route_get_total_amount(uint32_t this_arg) {
+       LDKRoute this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = false;
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKRawInvoice ret_var = SignedRawInvoice_raw_invoice(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+       int64_t ret_val = Route_get_total_amount(&this_arg_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_SignedRawInvoice_hash(uint32_t this_arg) {
-       LDKSignedRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *SignedRawInvoice_hash(&this_arg_conv), 32);
+int8_tArray  __attribute__((visibility("default"))) TS_Route_write(uint32_t obj) {
+       LDKRoute obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = Route_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SignedRawInvoice_signature(uint32_t this_arg) {
-       LDKSignedRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKInvoiceSignature ret_var = SignedRawInvoice_signature(&this_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_Route_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_RouteDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteDecodeErrorZ), "LDKCResult_RouteDecodeErrorZ");
+       *ret_conv = Route_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_RouteParameters_free(uint32_t this_obj) {
+       LDKRouteParameters this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       RouteParameters_free(this_obj_conv);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_RouteParameters_get_payee(uint32_t this_ptr) {
+       LDKRouteParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPayee ret_var = RouteParameters_get_payee(&this_ptr_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -36320,165 +33497,165 @@ uint32_t  __attribute__((visibility("default"))) TS_SignedRawInvoice_signature(u
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SignedRawInvoice_recover_payee_pub_key(uint32_t this_arg) {
-       LDKSignedRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCResult_PayeePubKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeePubKeyErrorZ), "LDKCResult_PayeePubKeyErrorZ");
-       *ret_conv = SignedRawInvoice_recover_payee_pub_key(&this_arg_conv);
-       return (uint64_t)ret_conv;
+void  __attribute__((visibility("default"))) TS_RouteParameters_set_payee(uint32_t this_ptr, uint32_t val) {
+       LDKRouteParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPayee val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = Payee_clone(&val_conv);
+       RouteParameters_set_payee(&this_ptr_conv, val_conv);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_SignedRawInvoice_check_signature(uint32_t this_arg) {
-       LDKSignedRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       jboolean ret_val = SignedRawInvoice_check_signature(&this_arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_RouteParameters_get_final_value_msat(uint32_t this_ptr) {
+       LDKRouteParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = RouteParameters_get_final_value_msat(&this_ptr_conv);
        return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_RawInvoice_hash(uint32_t this_arg) {
-       LDKRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), RawInvoice_hash(&this_arg_conv).data, 32);
-       return ret_arr;
+void  __attribute__((visibility("default"))) TS_RouteParameters_set_final_value_msat(uint32_t this_ptr, int64_t val) {
+       LDKRouteParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       RouteParameters_set_final_value_msat(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RawInvoice_payment_hash(uint32_t this_arg) {
-       LDKRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKSha256 ret_var = RawInvoice_payment_hash(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
-       }
-       return ret_ref;
+int32_t  __attribute__((visibility("default"))) TS_RouteParameters_get_final_cltv_expiry_delta(uint32_t this_ptr) {
+       LDKRouteParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int32_t ret_val = RouteParameters_get_final_cltv_expiry_delta(&this_ptr_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RawInvoice_description(uint32_t this_arg) {
-       LDKRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKDescription ret_var = RawInvoice_description(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_RouteParameters_set_final_cltv_expiry_delta(uint32_t this_ptr, int32_t val) {
+       LDKRouteParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       RouteParameters_set_final_cltv_expiry_delta(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RawInvoice_payee_pub_key(uint32_t this_arg) {
-       LDKRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKPayeePubKey ret_var = RawInvoice_payee_pub_key(&this_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_RouteParameters_new(uint32_t payee_arg, int64_t final_value_msat_arg, int32_t final_cltv_expiry_delta_arg) {
+       LDKPayee payee_arg_conv;
+       payee_arg_conv.inner = (void*)(payee_arg & (~1));
+       payee_arg_conv.is_owned = (payee_arg & 1) || (payee_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(payee_arg_conv);
+       payee_arg_conv = Payee_clone(&payee_arg_conv);
+       LDKRouteParameters ret_var = RouteParameters_new(payee_arg_conv, final_value_msat_arg, final_cltv_expiry_delta_arg);
        uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
        CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RawInvoice_description_hash(uint32_t this_arg) {
-       LDKRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKSha256 ret_var = RawInvoice_description_hash(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
-       }
+static inline uint64_t RouteParameters_clone_ptr(LDKRouteParameters *NONNULL_PTR arg) {
+       LDKRouteParameters ret_var = RouteParameters_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
+}
        return ret_ref;
 }
+int64_t  __attribute__((visibility("default"))) TS_RouteParameters_clone_ptr(uint32_t arg) {
+       LDKRouteParameters arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = RouteParameters_clone_ptr(&arg_conv);
+       return ret_val;
+}
 
-uint32_t  __attribute__((visibility("default"))) TS_RawInvoice_expiry_time(uint32_t this_arg) {
-       LDKRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKExpiryTime ret_var = RawInvoice_expiry_time(&this_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_RouteParameters_clone(uint32_t orig) {
+       LDKRouteParameters orig_conv;
+       orig_conv.inner = (void*)(orig & (~1));
+       orig_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKRouteParameters ret_var = RouteParameters_clone(&orig_conv);
        uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
        CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RawInvoice_min_final_cltv_expiry(uint32_t this_arg) {
-       LDKRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKMinFinalCltvExpiry ret_var = RawInvoice_min_final_cltv_expiry(&this_arg_conv);
-       uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
-       }
-       return ret_ref;
+int8_tArray  __attribute__((visibility("default"))) TS_RouteParameters_write(uint32_t obj) {
+       LDKRouteParameters obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = RouteParameters_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_RouteParameters_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_RouteParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteParametersDecodeErrorZ), "LDKCResult_RouteParametersDecodeErrorZ");
+       *ret_conv = RouteParameters_read(ser_ref);
+       return (uint64_t)ret_conv;
+}
+
+void  __attribute__((visibility("default"))) TS_Payee_free(uint32_t this_obj) {
+       LDKPayee this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       Payee_free(this_obj_conv);
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_RawInvoice_payment_secret(uint32_t this_arg) {
-       LDKRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), RawInvoice_payment_secret(&this_arg_conv).data, 32);
+int8_tArray  __attribute__((visibility("default"))) TS_Payee_get_pubkey(uint32_t this_ptr) {
+       LDKPayee this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, Payee_get_pubkey(&this_ptr_conv).compressed_form, 33);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RawInvoice_features(uint32_t this_arg) {
-       LDKRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKInvoiceFeatures ret_var = RawInvoice_features(&this_arg_conv);
+void  __attribute__((visibility("default"))) TS_Payee_set_pubkey(uint32_t this_ptr, int8_tArray val) {
+       LDKPayee this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       Payee_set_pubkey(&this_ptr_conv, val_ref);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_Payee_get_features(uint32_t this_ptr) {
+       LDKPayee this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKInvoiceFeatures ret_var = Payee_get_features(&this_ptr_conv);
        uint64_t ret_ref = 0;
        if ((uint64_t)ret_var.inner > 4096) {
                CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
@@ -36492,89 +33669,160 @@ uint32_t  __attribute__((visibility("default"))) TS_RawInvoice_features(uint32_t
        return ret_ref;
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_RawInvoice_private_routes(uint32_t this_arg) {
-       LDKRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCVec_PrivateRouteZ ret_var = RawInvoice_private_routes(&this_arg_conv);
+void  __attribute__((visibility("default"))) TS_Payee_set_features(uint32_t this_ptr, uint32_t val) {
+       LDKPayee this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKInvoiceFeatures val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = InvoiceFeatures_clone(&val_conv);
+       Payee_set_features(&this_ptr_conv, val_conv);
+}
+
+uint32_tArray  __attribute__((visibility("default"))) TS_Payee_get_route_hints(uint32_t this_ptr) {
+       LDKPayee this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCVec_RouteHintZ ret_var = Payee_get_route_hints(&this_ptr_conv);
        uint32_tArray ret_arr = NULL;
-       ret_arr = init_arr(ret_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
+       ret_arr = init_uint32_tArray(ret_var.datalen);
        uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
-       for (size_t o = 0; o < ret_var.datalen; o++) {
-               LDKPrivateRoute ret_conv_14_var = ret_var.data[o];
-               uint64_t ret_conv_14_ref = 0;
-               CHECK((((uint64_t)ret_conv_14_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_conv_14_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_14_var);
-               ret_conv_14_ref = (uint64_t)ret_conv_14_var.inner;
-               if (ret_conv_14_var.is_owned) {
-                       ret_conv_14_ref |= 1;
+       for (size_t l = 0; l < ret_var.datalen; l++) {
+               LDKRouteHint ret_conv_11_var = ret_var.data[l];
+               uint64_t ret_conv_11_ref = 0;
+               CHECK((((uint64_t)ret_conv_11_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+               CHECK((((uint64_t)&ret_conv_11_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_11_var);
+               ret_conv_11_ref = (uint64_t)ret_conv_11_var.inner;
+               if (ret_conv_11_var.is_owned) {
+                       ret_conv_11_ref |= 1;
                }
-               ret_arr_ptr[o] = ret_conv_14_ref;
+               ret_arr_ptr[l] = ret_conv_11_ref;
        }
        
        FREE(ret_var.data);
        return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RawInvoice_amount_pico_btc(uint32_t this_arg) {
-       LDKRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
+void  __attribute__((visibility("default"))) TS_Payee_set_route_hints(uint32_t this_ptr, uint32_tArray val) {
+       LDKPayee this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCVec_RouteHintZ val_constr;
+       val_constr.datalen = val->arr_len;
+       if (val_constr.datalen > 0)
+               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKRouteHint), "LDKCVec_RouteHintZ Elements");
+       else
+               val_constr.data = NULL;
+       uint32_t* val_vals = val->elems;
+       for (size_t l = 0; l < val_constr.datalen; l++) {
+               uint32_t val_conv_11 = val_vals[l];
+               LDKRouteHint val_conv_11_conv;
+               val_conv_11_conv.inner = (void*)(val_conv_11 & (~1));
+               val_conv_11_conv.is_owned = (val_conv_11 & 1) || (val_conv_11 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv_11_conv);
+               val_conv_11_conv = RouteHint_clone(&val_conv_11_conv);
+               val_constr.data[l] = val_conv_11_conv;
+       }
+       Payee_set_route_hints(&this_ptr_conv, val_constr);
+}
+
+uint32_t  __attribute__((visibility("default"))) TS_Payee_get_expiry_time(uint32_t this_ptr) {
+       LDKPayee this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
        LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
-       *ret_copy = RawInvoice_amount_pico_btc(&this_arg_conv);
+       *ret_copy = Payee_get_expiry_time(&this_ptr_conv);
        uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RawInvoice_currency(uint32_t this_arg) {
-       LDKRawInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       uint32_t ret_conv = LDKCurrency_to_js(RawInvoice_currency(&this_arg_conv));
-       return ret_conv;
+void  __attribute__((visibility("default"))) TS_Payee_set_expiry_time(uint32_t this_ptr, uint32_t val) {
+       LDKPayee this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKCOption_u64Z val_conv = *(LDKCOption_u64Z*)(val_ptr);
+       val_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)val) & ~1));
+       Payee_set_expiry_time(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PositiveTimestamp_from_unix_timestamp(int64_t unix_seconds) {
-       LDKCResult_PositiveTimestampCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PositiveTimestampCreationErrorZ), "LDKCResult_PositiveTimestampCreationErrorZ");
-       *ret_conv = PositiveTimestamp_from_unix_timestamp(unix_seconds);
-       return (uint64_t)ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_Payee_new(int8_tArray pubkey_arg, uint32_t features_arg, uint32_tArray route_hints_arg, uint32_t expiry_time_arg) {
+       LDKPublicKey pubkey_arg_ref;
+       CHECK(pubkey_arg->arr_len == 33);
+       memcpy(pubkey_arg_ref.compressed_form, pubkey_arg->elems, 33);
+       LDKInvoiceFeatures features_arg_conv;
+       features_arg_conv.inner = (void*)(features_arg & (~1));
+       features_arg_conv.is_owned = (features_arg & 1) || (features_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(features_arg_conv);
+       features_arg_conv = InvoiceFeatures_clone(&features_arg_conv);
+       LDKCVec_RouteHintZ route_hints_arg_constr;
+       route_hints_arg_constr.datalen = route_hints_arg->arr_len;
+       if (route_hints_arg_constr.datalen > 0)
+               route_hints_arg_constr.data = MALLOC(route_hints_arg_constr.datalen * sizeof(LDKRouteHint), "LDKCVec_RouteHintZ Elements");
+       else
+               route_hints_arg_constr.data = NULL;
+       uint32_t* route_hints_arg_vals = route_hints_arg->elems;
+       for (size_t l = 0; l < route_hints_arg_constr.datalen; l++) {
+               uint32_t route_hints_arg_conv_11 = route_hints_arg_vals[l];
+               LDKRouteHint route_hints_arg_conv_11_conv;
+               route_hints_arg_conv_11_conv.inner = (void*)(route_hints_arg_conv_11 & (~1));
+               route_hints_arg_conv_11_conv.is_owned = (route_hints_arg_conv_11 & 1) || (route_hints_arg_conv_11 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(route_hints_arg_conv_11_conv);
+               route_hints_arg_conv_11_conv = RouteHint_clone(&route_hints_arg_conv_11_conv);
+               route_hints_arg_constr.data[l] = route_hints_arg_conv_11_conv;
+       }
+       void* expiry_time_arg_ptr = (void*)(((uint64_t)expiry_time_arg) & ~1);
+       CHECK_ACCESS(expiry_time_arg_ptr);
+       LDKCOption_u64Z expiry_time_arg_conv = *(LDKCOption_u64Z*)(expiry_time_arg_ptr);
+       expiry_time_arg_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)expiry_time_arg) & ~1));
+       LDKPayee ret_var = Payee_new(pubkey_arg_ref, features_arg_conv, route_hints_arg_constr, expiry_time_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PositiveTimestamp_from_system_time(int64_t time) {
-       LDKCResult_PositiveTimestampCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PositiveTimestampCreationErrorZ), "LDKCResult_PositiveTimestampCreationErrorZ");
-       *ret_conv = PositiveTimestamp_from_system_time(time);
-       return (uint64_t)ret_conv;
+static inline uint64_t Payee_clone_ptr(LDKPayee *NONNULL_PTR arg) {
+       LDKPayee ret_var = Payee_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-int64_t  __attribute__((visibility("default"))) TS_PositiveTimestamp_as_unix_timestamp(uint32_t this_arg) {
-       LDKPositiveTimestamp this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = PositiveTimestamp_as_unix_timestamp(&this_arg_conv);
-       return ret_val;
+       return ret_ref;
 }
-
-int64_t  __attribute__((visibility("default"))) TS_PositiveTimestamp_as_time(uint32_t this_arg) {
-       LDKPositiveTimestamp this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = PositiveTimestamp_as_time(&this_arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_Payee_clone_ptr(uint32_t arg) {
+       LDKPayee arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = Payee_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Invoice_into_signed_raw(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       this_arg_conv = Invoice_clone(&this_arg_conv);
-       LDKSignedRawInvoice ret_var = Invoice_into_signed_raw(this_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_Payee_clone(uint32_t orig) {
+       LDKPayee orig_conv;
+       orig_conv.inner = (void*)(orig & (~1));
+       orig_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKPayee ret_var = Payee_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -36586,133 +33834,100 @@ uint32_t  __attribute__((visibility("default"))) TS_Invoice_into_signed_raw(uint
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Invoice_check_signature(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCResult_NoneSemanticErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneSemanticErrorZ), "LDKCResult_NoneSemanticErrorZ");
-       *ret_conv = Invoice_check_signature(&this_arg_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_Invoice_from_signed(uint32_t signed_invoice) {
-       LDKSignedRawInvoice signed_invoice_conv;
-       signed_invoice_conv.inner = (void*)(signed_invoice & (~1));
-       signed_invoice_conv.is_owned = (signed_invoice & 1) || (signed_invoice == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(signed_invoice_conv);
-       signed_invoice_conv = SignedRawInvoice_clone(&signed_invoice_conv);
-       LDKCResult_InvoiceSemanticErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceSemanticErrorZ), "LDKCResult_InvoiceSemanticErrorZ");
-       *ret_conv = Invoice_from_signed(signed_invoice_conv);
-       return (uint64_t)ret_conv;
-}
-
-int64_t  __attribute__((visibility("default"))) TS_Invoice_timestamp(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = Invoice_timestamp(&this_arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_Payee_hash(uint32_t o) {
+       LDKPayee o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       int64_t ret_val = Payee_hash(&o_conv);
        return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_Invoice_payment_hash(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *Invoice_payment_hash(&this_arg_conv), 32);
-       return ret_arr;
+jboolean  __attribute__((visibility("default"))) TS_Payee_eq(uint32_t a, uint32_t b) {
+       LDKPayee a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       LDKPayee b_conv;
+       b_conv.inner = (void*)(b & (~1));
+       b_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
+       jboolean ret_val = Payee_eq(&a_conv, &b_conv);
+       return ret_val;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_Invoice_payee_pub_key(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), Invoice_payee_pub_key(&this_arg_conv).compressed_form, 33);
+int8_tArray  __attribute__((visibility("default"))) TS_Payee_write(uint32_t obj) {
+       LDKPayee obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = Payee_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
        return ret_arr;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_Invoice_payment_secret(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int8_tArray ret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), *Invoice_payment_secret(&this_arg_conv), 32);
-       return ret_arr;
+uint32_t  __attribute__((visibility("default"))) TS_Payee_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_PayeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PayeeDecodeErrorZ), "LDKCResult_PayeeDecodeErrorZ");
+       *ret_conv = Payee_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Invoice_features(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKInvoiceFeatures ret_var = Invoice_features(&this_arg_conv);
+uint32_t  __attribute__((visibility("default"))) TS_Payee_from_node_id(int8_tArray pubkey) {
+       LDKPublicKey pubkey_ref;
+       CHECK(pubkey->arr_len == 33);
+       memcpy(pubkey_ref.compressed_form, pubkey->elems, 33);
+       LDKPayee ret_var = Payee_from_node_id(pubkey_ref);
        uint64_t ret_ref = 0;
-       if ((uint64_t)ret_var.inner > 4096) {
-               CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
        CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-               ret_ref = (uint64_t)ret_var.inner;
-               if (ret_var.is_owned) {
-                       ret_ref |= 1;
-               }
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
        }
        return ret_ref;
 }
 
-int8_tArray  __attribute__((visibility("default"))) TS_Invoice_recover_payee_pub_key(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int8_tArray ret_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes");
-       memcpy((uint8_t*)(ret_arr + 4), Invoice_recover_payee_pub_key(&this_arg_conv).compressed_form, 33);
-       return ret_arr;
-}
-
-int64_t  __attribute__((visibility("default"))) TS_Invoice_expiry_time(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = Invoice_expiry_time(&this_arg_conv);
-       return ret_val;
-}
-
-jboolean  __attribute__((visibility("default"))) TS_Invoice_is_expired(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       jboolean ret_val = Invoice_is_expired(&this_arg_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_Payee_for_keysend(int8_tArray pubkey) {
+       LDKPublicKey pubkey_ref;
+       CHECK(pubkey->arr_len == 33);
+       memcpy(pubkey_ref.compressed_form, pubkey->elems, 33);
+       LDKPayee ret_var = Payee_for_keysend(pubkey_ref);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_Invoice_min_final_cltv_expiry(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = Invoice_min_final_cltv_expiry(&this_arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_RouteHint_free(uint32_t this_obj) {
+       LDKRouteHint this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       RouteHint_free(this_obj_conv);
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_Invoice_private_routes(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCVec_PrivateRouteZ ret_var = Invoice_private_routes(&this_arg_conv);
+uint32_tArray  __attribute__((visibility("default"))) TS_RouteHint_get_a(uint32_t this_ptr) {
+       LDKRouteHint this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCVec_RouteHintHopZ ret_var = RouteHint_get_a(&this_ptr_conv);
        uint32_tArray ret_arr = NULL;
-       ret_arr = init_arr(ret_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes");
+       ret_arr = init_uint32_tArray(ret_var.datalen);
        uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4);
        for (size_t o = 0; o < ret_var.datalen; o++) {
-               LDKPrivateRoute ret_conv_14_var = ret_var.data[o];
+               LDKRouteHintHop ret_conv_14_var = ret_var.data[o];
                uint64_t ret_conv_14_ref = 0;
                CHECK((((uint64_t)ret_conv_14_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
                CHECK((((uint64_t)&ret_conv_14_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -36728,119 +33943,86 @@ uint32_tArray  __attribute__((visibility("default"))) TS_Invoice_private_routes(
        return ret_arr;
 }
 
-uint32_tArray  __attribute__((visibility("default"))) TS_Invoice_route_hints(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCVec_RouteHintZ ret_var = Invoice_route_hints(&this_arg_conv);
-       uint32_tArray ret_arr = NULL;
-       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++) {
-               LDKRouteHint ret_conv_11_var = ret_var.data[l];
-               uint64_t ret_conv_11_ref = 0;
-               CHECK((((uint64_t)ret_conv_11_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-               CHECK((((uint64_t)&ret_conv_11_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-               CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_conv_11_var);
-               ret_conv_11_ref = (uint64_t)ret_conv_11_var.inner;
-               if (ret_conv_11_var.is_owned) {
-                       ret_conv_11_ref |= 1;
-               }
-               ret_arr_ptr[l] = ret_conv_11_ref;
+void  __attribute__((visibility("default"))) TS_RouteHint_set_a(uint32_t this_ptr, uint32_tArray val) {
+       LDKRouteHint this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCVec_RouteHintHopZ val_constr;
+       val_constr.datalen = val->arr_len;
+       if (val_constr.datalen > 0)
+               val_constr.data = MALLOC(val_constr.datalen * sizeof(LDKRouteHintHop), "LDKCVec_RouteHintHopZ Elements");
+       else
+               val_constr.data = NULL;
+       uint32_t* val_vals = val->elems;
+       for (size_t o = 0; o < val_constr.datalen; o++) {
+               uint32_t val_conv_14 = val_vals[o];
+               LDKRouteHintHop val_conv_14_conv;
+               val_conv_14_conv.inner = (void*)(val_conv_14 & (~1));
+               val_conv_14_conv.is_owned = (val_conv_14 & 1) || (val_conv_14 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv_14_conv);
+               val_conv_14_conv = RouteHintHop_clone(&val_conv_14_conv);
+               val_constr.data[o] = val_conv_14_conv;
        }
-       
-       FREE(ret_var.data);
-       return ret_arr;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_Invoice_currency(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       uint32_t ret_conv = LDKCurrency_to_js(Invoice_currency(&this_arg_conv));
-       return ret_conv;
+       RouteHint_set_a(&this_ptr_conv, val_constr);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Invoice_amount_milli_satoshis(uint32_t this_arg) {
-       LDKInvoice this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
-       *ret_copy = Invoice_amount_milli_satoshis(&this_arg_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
+uint32_t  __attribute__((visibility("default"))) TS_RouteHint_new(uint32_tArray a_arg) {
+       LDKCVec_RouteHintHopZ a_arg_constr;
+       a_arg_constr.datalen = a_arg->arr_len;
+       if (a_arg_constr.datalen > 0)
+               a_arg_constr.data = MALLOC(a_arg_constr.datalen * sizeof(LDKRouteHintHop), "LDKCVec_RouteHintHopZ Elements");
+       else
+               a_arg_constr.data = NULL;
+       uint32_t* a_arg_vals = a_arg->elems;
+       for (size_t o = 0; o < a_arg_constr.datalen; o++) {
+               uint32_t a_arg_conv_14 = a_arg_vals[o];
+               LDKRouteHintHop a_arg_conv_14_conv;
+               a_arg_conv_14_conv.inner = (void*)(a_arg_conv_14 & (~1));
+               a_arg_conv_14_conv.is_owned = (a_arg_conv_14 & 1) || (a_arg_conv_14 == 0);
+               CHECK_INNER_FIELD_ACCESS_OR_NULL(a_arg_conv_14_conv);
+               a_arg_conv_14_conv = RouteHintHop_clone(&a_arg_conv_14_conv);
+               a_arg_constr.data[o] = a_arg_conv_14_conv;
+       }
+       LDKRouteHint ret_var = RouteHint_new(a_arg_constr);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_Description_new(jstring description) {
-       LDKStr description_conv = str_ref_to_owned_c(description);
-       LDKCResult_DescriptionCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DescriptionCreationErrorZ), "LDKCResult_DescriptionCreationErrorZ");
-       *ret_conv = Description_new(description_conv);
-       return (uint64_t)ret_conv;
-}
-
-jstring  __attribute__((visibility("default"))) TS_Description_into_inner(uint32_t this_arg) {
-       LDKDescription this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       this_arg_conv = Description_clone(&this_arg_conv);
-       LDKStr ret_str = Description_into_inner(this_arg_conv);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ExpiryTime_from_seconds(int64_t seconds) {
-       LDKCResult_ExpiryTimeCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ExpiryTimeCreationErrorZ), "LDKCResult_ExpiryTimeCreationErrorZ");
-       *ret_conv = ExpiryTime_from_seconds(seconds);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ExpiryTime_from_duration(int64_t duration) {
-       LDKCResult_ExpiryTimeCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ExpiryTimeCreationErrorZ), "LDKCResult_ExpiryTimeCreationErrorZ");
-       *ret_conv = ExpiryTime_from_duration(duration);
-       return (uint64_t)ret_conv;
+static inline uint64_t RouteHint_clone_ptr(LDKRouteHint *NONNULL_PTR arg) {
+       LDKRouteHint ret_var = RouteHint_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-int64_t  __attribute__((visibility("default"))) TS_ExpiryTime_as_seconds(uint32_t this_arg) {
-       LDKExpiryTime this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = ExpiryTime_as_seconds(&this_arg_conv);
-       return ret_val;
+       return ret_ref;
 }
-
-int64_t  __attribute__((visibility("default"))) TS_ExpiryTime_as_duration(uint32_t this_arg) {
-       LDKExpiryTime this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       int64_t ret_val = ExpiryTime_as_duration(&this_arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_RouteHint_clone_ptr(uint32_t arg) {
+       LDKRouteHint arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = RouteHint_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PrivateRoute_new(uint32_t hops) {
-       LDKRouteHint hops_conv;
-       hops_conv.inner = (void*)(hops & (~1));
-       hops_conv.is_owned = (hops & 1) || (hops == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(hops_conv);
-       hops_conv = RouteHint_clone(&hops_conv);
-       LDKCResult_PrivateRouteCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PrivateRouteCreationErrorZ), "LDKCResult_PrivateRouteCreationErrorZ");
-       *ret_conv = PrivateRoute_new(hops_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_PrivateRoute_into_inner(uint32_t this_arg) {
-       LDKPrivateRoute this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       this_arg_conv = PrivateRoute_clone(&this_arg_conv);
-       LDKRouteHint ret_var = PrivateRoute_into_inner(this_arg_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;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKRouteHint ret_var = RouteHint_clone(&orig_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -36852,235 +34034,372 @@ uint32_t  __attribute__((visibility("default"))) TS_PrivateRoute_into_inner(uint
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CreationError_clone(uint32_t orig) {
-       LDKCreationError* orig_conv = (LDKCreationError*)(orig & ~1);
-       uint32_t ret_conv = LDKCreationError_to_js(CreationError_clone(orig_conv));
-       return ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CreationError_description_too_long() {
-       uint32_t ret_conv = LDKCreationError_to_js(CreationError_description_too_long());
-       return ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CreationError_route_too_long() {
-       uint32_t ret_conv = LDKCreationError_to_js(CreationError_route_too_long());
-       return ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_CreationError_timestamp_out_of_bounds() {
-       uint32_t ret_conv = LDKCreationError_to_js(CreationError_timestamp_out_of_bounds());
-       return ret_conv;
+int64_t  __attribute__((visibility("default"))) TS_RouteHint_hash(uint32_t o) {
+       LDKRouteHint o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       int64_t ret_val = RouteHint_hash(&o_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CreationError_expiry_time_out_of_bounds() {
-       uint32_t ret_conv = LDKCreationError_to_js(CreationError_expiry_time_out_of_bounds());
-       return ret_conv;
+jboolean  __attribute__((visibility("default"))) TS_RouteHint_eq(uint32_t a, uint32_t b) {
+       LDKRouteHint a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       LDKRouteHint b_conv;
+       b_conv.inner = (void*)(b & (~1));
+       b_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
+       jboolean ret_val = RouteHint_eq(&a_conv, &b_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_CreationError_invalid_amount() {
-       uint32_t ret_conv = LDKCreationError_to_js(CreationError_invalid_amount());
-       return ret_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_RouteHint_write(uint32_t obj) {
+       LDKRouteHint obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = RouteHint_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_CreationError_eq(uint32_t a, uint32_t b) {
-       LDKCreationError* a_conv = (LDKCreationError*)(a & ~1);
-       LDKCreationError* b_conv = (LDKCreationError*)(b & ~1);
-       jboolean ret_val = CreationError_eq(a_conv, b_conv);
-       return ret_val;
+uint32_t  __attribute__((visibility("default"))) TS_RouteHint_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_RouteHintDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintDecodeErrorZ), "LDKCResult_RouteHintDecodeErrorZ");
+       *ret_conv = RouteHint_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-jstring  __attribute__((visibility("default"))) TS_CreationError_to_str(uint32_t o) {
-       LDKCreationError* o_conv = (LDKCreationError*)(o & ~1);
-       LDKStr ret_str = CreationError_to_str(o_conv);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
+void  __attribute__((visibility("default"))) TS_RouteHintHop_free(uint32_t this_obj) {
+       LDKRouteHintHop this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       RouteHintHop_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SemanticError_clone(uint32_t orig) {
-       LDKSemanticError* orig_conv = (LDKSemanticError*)(orig & ~1);
-       uint32_t ret_conv = LDKSemanticError_to_js(SemanticError_clone(orig_conv));
-       return ret_conv;
+int8_tArray  __attribute__((visibility("default"))) TS_RouteHintHop_get_src_node_id(uint32_t this_ptr) {
+       LDKRouteHintHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int8_tArray ret_arr = init_int8_tArray(33);
+       memcpy(ret_arr->elems, RouteHintHop_get_src_node_id(&this_ptr_conv).compressed_form, 33);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SemanticError_no_payment_hash() {
-       uint32_t ret_conv = LDKSemanticError_to_js(SemanticError_no_payment_hash());
-       return ret_conv;
+void  __attribute__((visibility("default"))) TS_RouteHintHop_set_src_node_id(uint32_t this_ptr, int8_tArray val) {
+       LDKRouteHintHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKPublicKey val_ref;
+       CHECK(val->arr_len == 33);
+       memcpy(val_ref.compressed_form, val->elems, 33);
+       RouteHintHop_set_src_node_id(&this_ptr_conv, val_ref);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SemanticError_multiple_payment_hashes() {
-       uint32_t ret_conv = LDKSemanticError_to_js(SemanticError_multiple_payment_hashes());
-       return ret_conv;
+int64_t  __attribute__((visibility("default"))) TS_RouteHintHop_get_short_channel_id(uint32_t this_ptr) {
+       LDKRouteHintHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = RouteHintHop_get_short_channel_id(&this_ptr_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SemanticError_no_description() {
-       uint32_t ret_conv = LDKSemanticError_to_js(SemanticError_no_description());
-       return ret_conv;
+void  __attribute__((visibility("default"))) TS_RouteHintHop_set_short_channel_id(uint32_t this_ptr, int64_t val) {
+       LDKRouteHintHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       RouteHintHop_set_short_channel_id(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SemanticError_multiple_descriptions() {
-       uint32_t ret_conv = LDKSemanticError_to_js(SemanticError_multiple_descriptions());
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_RouteHintHop_get_fees(uint32_t this_ptr) {
+       LDKRouteHintHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKRoutingFees ret_var = RouteHintHop_get_fees(&this_ptr_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SemanticError_no_payment_secret() {
-       uint32_t ret_conv = LDKSemanticError_to_js(SemanticError_no_payment_secret());
-       return ret_conv;
+void  __attribute__((visibility("default"))) TS_RouteHintHop_set_fees(uint32_t this_ptr, uint32_t val) {
+       LDKRouteHintHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKRoutingFees val_conv;
+       val_conv.inner = (void*)(val & (~1));
+       val_conv.is_owned = (val & 1) || (val == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(val_conv);
+       val_conv = RoutingFees_clone(&val_conv);
+       RouteHintHop_set_fees(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SemanticError_multiple_payment_secrets() {
-       uint32_t ret_conv = LDKSemanticError_to_js(SemanticError_multiple_payment_secrets());
-       return ret_conv;
+int16_t  __attribute__((visibility("default"))) TS_RouteHintHop_get_cltv_expiry_delta(uint32_t this_ptr) {
+       LDKRouteHintHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int16_t ret_val = RouteHintHop_get_cltv_expiry_delta(&this_ptr_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SemanticError_invalid_features() {
-       uint32_t ret_conv = LDKSemanticError_to_js(SemanticError_invalid_features());
-       return ret_conv;
+void  __attribute__((visibility("default"))) TS_RouteHintHop_set_cltv_expiry_delta(uint32_t this_ptr, int16_t val) {
+       LDKRouteHintHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       RouteHintHop_set_cltv_expiry_delta(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SemanticError_invalid_recovery_id() {
-       uint32_t ret_conv = LDKSemanticError_to_js(SemanticError_invalid_recovery_id());
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_RouteHintHop_get_htlc_minimum_msat(uint32_t this_ptr) {
+       LDKRouteHintHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
+       *ret_copy = RouteHintHop_get_htlc_minimum_msat(&this_ptr_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SemanticError_invalid_signature() {
-       uint32_t ret_conv = LDKSemanticError_to_js(SemanticError_invalid_signature());
-       return ret_conv;
+void  __attribute__((visibility("default"))) TS_RouteHintHop_set_htlc_minimum_msat(uint32_t this_ptr, uint32_t val) {
+       LDKRouteHintHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKCOption_u64Z val_conv = *(LDKCOption_u64Z*)(val_ptr);
+       val_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)val) & ~1));
+       RouteHintHop_set_htlc_minimum_msat(&this_ptr_conv, val_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SemanticError_imprecise_amount() {
-       uint32_t ret_conv = LDKSemanticError_to_js(SemanticError_imprecise_amount());
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_RouteHintHop_get_htlc_maximum_msat(uint32_t this_ptr) {
+       LDKRouteHintHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       LDKCOption_u64Z *ret_copy = MALLOC(sizeof(LDKCOption_u64Z), "LDKCOption_u64Z");
+       *ret_copy = RouteHintHop_get_htlc_maximum_msat(&this_ptr_conv);
+       uint64_t ret_ref = (uint64_t)ret_copy;
+       return ret_ref;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_SemanticError_eq(uint32_t a, uint32_t b) {
-       LDKSemanticError* a_conv = (LDKSemanticError*)(a & ~1);
-       LDKSemanticError* b_conv = (LDKSemanticError*)(b & ~1);
-       jboolean ret_val = SemanticError_eq(a_conv, b_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_RouteHintHop_set_htlc_maximum_msat(uint32_t this_ptr, uint32_t val) {
+       LDKRouteHintHop this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       void* val_ptr = (void*)(((uint64_t)val) & ~1);
+       CHECK_ACCESS(val_ptr);
+       LDKCOption_u64Z val_conv = *(LDKCOption_u64Z*)(val_ptr);
+       val_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)val) & ~1));
+       RouteHintHop_set_htlc_maximum_msat(&this_ptr_conv, val_conv);
 }
 
-jstring  __attribute__((visibility("default"))) TS_SemanticError_to_str(uint32_t o) {
-       LDKSemanticError* o_conv = (LDKSemanticError*)(o & ~1);
-       LDKStr ret_str = SemanticError_to_str(o_conv);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_RouteHintHop_new(int8_tArray src_node_id_arg, int64_t short_channel_id_arg, uint32_t fees_arg, int16_t cltv_expiry_delta_arg, uint32_t htlc_minimum_msat_arg, uint32_t htlc_maximum_msat_arg) {
+       LDKPublicKey src_node_id_arg_ref;
+       CHECK(src_node_id_arg->arr_len == 33);
+       memcpy(src_node_id_arg_ref.compressed_form, src_node_id_arg->elems, 33);
+       LDKRoutingFees fees_arg_conv;
+       fees_arg_conv.inner = (void*)(fees_arg & (~1));
+       fees_arg_conv.is_owned = (fees_arg & 1) || (fees_arg == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(fees_arg_conv);
+       fees_arg_conv = RoutingFees_clone(&fees_arg_conv);
+       void* htlc_minimum_msat_arg_ptr = (void*)(((uint64_t)htlc_minimum_msat_arg) & ~1);
+       CHECK_ACCESS(htlc_minimum_msat_arg_ptr);
+       LDKCOption_u64Z htlc_minimum_msat_arg_conv = *(LDKCOption_u64Z*)(htlc_minimum_msat_arg_ptr);
+       htlc_minimum_msat_arg_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)htlc_minimum_msat_arg) & ~1));
+       void* htlc_maximum_msat_arg_ptr = (void*)(((uint64_t)htlc_maximum_msat_arg) & ~1);
+       CHECK_ACCESS(htlc_maximum_msat_arg_ptr);
+       LDKCOption_u64Z htlc_maximum_msat_arg_conv = *(LDKCOption_u64Z*)(htlc_maximum_msat_arg_ptr);
+       htlc_maximum_msat_arg_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)htlc_maximum_msat_arg) & ~1));
+       LDKRouteHintHop ret_var = RouteHintHop_new(src_node_id_arg_ref, short_channel_id_arg, fees_arg_conv, cltv_expiry_delta_arg, htlc_minimum_msat_arg_conv, htlc_maximum_msat_arg_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
+       return ret_ref;
 }
 
-void  __attribute__((visibility("default"))) TS_SignOrCreationError_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKSignOrCreationError this_ptr_conv = *(LDKSignOrCreationError*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       SignOrCreationError_free(this_ptr_conv);
+static inline uint64_t RouteHintHop_clone_ptr(LDKRouteHintHop *NONNULL_PTR arg) {
+       LDKRouteHintHop ret_var = RouteHintHop_clone(arg);
+uint64_t ret_ref = 0;
+CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+ret_ref = (uint64_t)ret_var.inner;
+if (ret_var.is_owned) {
+       ret_ref |= 1;
 }
-
-static inline uint64_t SignOrCreationError_clone_ptr(LDKSignOrCreationError *NONNULL_PTR arg) {
-       LDKSignOrCreationError *ret_copy = MALLOC(sizeof(LDKSignOrCreationError), "LDKSignOrCreationError");
-       *ret_copy = SignOrCreationError_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
        return ret_ref;
 }
-int64_t  __attribute__((visibility("default"))) TS_SignOrCreationError_clone_ptr(uint32_t arg) {
-       LDKSignOrCreationError* arg_conv = (LDKSignOrCreationError*)arg;
-       int64_t ret_val = SignOrCreationError_clone_ptr(arg_conv);
+int64_t  __attribute__((visibility("default"))) TS_RouteHintHop_clone_ptr(uint32_t arg) {
+       LDKRouteHintHop arg_conv;
+       arg_conv.inner = (void*)(arg & (~1));
+       arg_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
+       int64_t ret_val = RouteHintHop_clone_ptr(&arg_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SignOrCreationError_clone(uint32_t orig) {
-       LDKSignOrCreationError* orig_conv = (LDKSignOrCreationError*)orig;
-       LDKSignOrCreationError *ret_copy = MALLOC(sizeof(LDKSignOrCreationError), "LDKSignOrCreationError");
-       *ret_copy = SignOrCreationError_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
+uint32_t  __attribute__((visibility("default"))) TS_RouteHintHop_clone(uint32_t orig) {
+       LDKRouteHintHop orig_conv;
+       orig_conv.inner = (void*)(orig & (~1));
+       orig_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
+       LDKRouteHintHop ret_var = RouteHintHop_clone(&orig_conv);
+       uint64_t ret_ref = 0;
+       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
+       ret_ref = (uint64_t)ret_var.inner;
+       if (ret_var.is_owned) {
+               ret_ref |= 1;
+       }
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SignOrCreationError_sign_error() {
-       LDKSignOrCreationError *ret_copy = MALLOC(sizeof(LDKSignOrCreationError), "LDKSignOrCreationError");
-       *ret_copy = SignOrCreationError_sign_error();
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+int64_t  __attribute__((visibility("default"))) TS_RouteHintHop_hash(uint32_t o) {
+       LDKRouteHintHop o_conv;
+       o_conv.inner = (void*)(o & (~1));
+       o_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
+       int64_t ret_val = RouteHintHop_hash(&o_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_SignOrCreationError_creation_error(uint32_t a) {
-       LDKCreationError a_conv = LDKCreationError_from_js(a);
-       LDKSignOrCreationError *ret_copy = MALLOC(sizeof(LDKSignOrCreationError), "LDKSignOrCreationError");
-       *ret_copy = SignOrCreationError_creation_error(a_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+jboolean  __attribute__((visibility("default"))) TS_RouteHintHop_eq(uint32_t a, uint32_t b) {
+       LDKRouteHintHop a_conv;
+       a_conv.inner = (void*)(a & (~1));
+       a_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
+       LDKRouteHintHop b_conv;
+       b_conv.inner = (void*)(b & (~1));
+       b_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
+       jboolean ret_val = RouteHintHop_eq(&a_conv, &b_conv);
+       return ret_val;
 }
 
-jboolean  __attribute__((visibility("default"))) TS_SignOrCreationError_eq(uint32_t a, uint32_t b) {
-       LDKSignOrCreationError* a_conv = (LDKSignOrCreationError*)a;
-       LDKSignOrCreationError* b_conv = (LDKSignOrCreationError*)b;
-       jboolean ret_val = SignOrCreationError_eq(a_conv, b_conv);
-       return ret_val;
+int8_tArray  __attribute__((visibility("default"))) TS_RouteHintHop_write(uint32_t obj) {
+       LDKRouteHintHop obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = RouteHintHop_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-jstring  __attribute__((visibility("default"))) TS_SignOrCreationError_to_str(uint32_t o) {
-       LDKSignOrCreationError* o_conv = (LDKSignOrCreationError*)o;
-       LDKStr ret_str = SignOrCreationError_to_str(o_conv);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
+uint32_t  __attribute__((visibility("default"))) TS_RouteHintHop_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_RouteHintHopDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteHintHopDecodeErrorZ), "LDKCResult_RouteHintHopDecodeErrorZ");
+       *ret_conv = RouteHintHop_read(ser_ref);
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_InvoicePayer_free(uint32_t this_obj) {
-       LDKInvoicePayer this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       InvoicePayer_free(this_obj_conv);
+uint32_t  __attribute__((visibility("default"))) TS_find_route(int8_tArray our_node_pubkey, uint32_t params, uint32_t network, uint32_tArray first_hops, uint32_t logger, uint32_t scorer) {
+       LDKPublicKey our_node_pubkey_ref;
+       CHECK(our_node_pubkey->arr_len == 33);
+       memcpy(our_node_pubkey_ref.compressed_form, our_node_pubkey->elems, 33);
+       LDKRouteParameters params_conv;
+       params_conv.inner = (void*)(params & (~1));
+       params_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(params_conv);
+       LDKNetworkGraph network_conv;
+       network_conv.inner = (void*)(network & (~1));
+       network_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(network_conv);
+       LDKCVec_ChannelDetailsZ first_hops_constr;
+       LDKCVec_ChannelDetailsZ *first_hops_ptr = NULL;
+       if (first_hops != 0) {
+               first_hops_constr.datalen = first_hops->arr_len;
+               if (first_hops_constr.datalen > 0)
+                       first_hops_constr.data = MALLOC(first_hops_constr.datalen * sizeof(LDKChannelDetails), "LDKCVec_ChannelDetailsZ Elements");
+               else
+                       first_hops_constr.data = NULL;
+               uint32_t* first_hops_vals = first_hops->elems;
+               for (size_t q = 0; q < first_hops_constr.datalen; q++) {
+                       uint32_t first_hops_conv_16 = first_hops_vals[q];
+                       LDKChannelDetails first_hops_conv_16_conv;
+                       first_hops_conv_16_conv.inner = (void*)(first_hops_conv_16 & (~1));
+                       first_hops_conv_16_conv.is_owned = (first_hops_conv_16 & 1) || (first_hops_conv_16 == 0);
+                       CHECK_INNER_FIELD_ACCESS_OR_NULL(first_hops_conv_16_conv);
+                       first_hops_constr.data[q] = first_hops_conv_16_conv;
+               }
+               first_hops_ptr = &first_hops_constr;
+       }
+       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
+       CHECK_ACCESS(logger_ptr);
+       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
+       void* scorer_ptr = (void*)(((uint64_t)scorer) & ~1);
+       if (!(scorer & 1)) { CHECK_ACCESS(scorer_ptr); }
+       LDKScore* scorer_conv = (LDKScore*)scorer_ptr;
+       LDKCResult_RouteLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteLightningErrorZ), "LDKCResult_RouteLightningErrorZ");
+       *ret_conv = find_route(our_node_pubkey_ref, &params_conv, &network_conv, first_hops_ptr, logger_conv, scorer_conv);
+       if (first_hops_ptr != NULL) { FREE(first_hops_constr.data); }
+       return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_Payer_free(uint32_t this_ptr) {
+void  __attribute__((visibility("default"))) TS_Score_free(uint32_t this_ptr) {
        if ((this_ptr & 1) != 0) return;
        void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
        CHECK_ACCESS(this_ptr_ptr);
-       LDKPayer this_ptr_conv = *(LDKPayer*)(this_ptr_ptr);
+       LDKScore this_ptr_conv = *(LDKScore*)(this_ptr_ptr);
        FREE((void*)this_ptr);
-       Payer_free(this_ptr_conv);
+       Score_free(this_ptr_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_Router_free(uint32_t this_ptr) {
+void  __attribute__((visibility("default"))) TS_LockableScore_free(uint32_t this_ptr) {
        if ((this_ptr & 1) != 0) return;
        void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
        CHECK_ACCESS(this_ptr_ptr);
-       LDKRouter this_ptr_conv = *(LDKRouter*)(this_ptr_ptr);
+       LDKLockableScore this_ptr_conv = *(LDKLockableScore*)(this_ptr_ptr);
        FREE((void*)this_ptr);
-       Router_free(this_ptr_conv);
+       LockableScore_free(this_ptr_conv);
 }
 
-void  __attribute__((visibility("default"))) TS_RetryAttempts_free(uint32_t this_obj) {
-       LDKRetryAttempts this_obj_conv;
+void  __attribute__((visibility("default"))) TS_MultiThreadedLockableScore_free(uint32_t this_obj) {
+       LDKMultiThreadedLockableScore this_obj_conv;
        this_obj_conv.inner = (void*)(this_obj & (~1));
        this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
        CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       RetryAttempts_free(this_obj_conv);
-}
-
-int64_t  __attribute__((visibility("default"))) TS_RetryAttempts_get_a(uint32_t this_ptr) {
-       LDKRetryAttempts this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       int64_t ret_val = RetryAttempts_get_a(&this_ptr_conv);
-       return ret_val;
-}
-
-void  __attribute__((visibility("default"))) TS_RetryAttempts_set_a(uint32_t this_ptr, int64_t val) {
-       LDKRetryAttempts this_ptr_conv;
-       this_ptr_conv.inner = (void*)(this_ptr & (~1));
-       this_ptr_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
-       RetryAttempts_set_a(&this_ptr_conv, val);
+       MultiThreadedLockableScore_free(this_obj_conv);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RetryAttempts_new(int64_t a_arg) {
-       LDKRetryAttempts ret_var = RetryAttempts_new(a_arg);
+uint32_t  __attribute__((visibility("default"))) TS_MultiThreadedLockableScore_new(uint32_t score) {
+       void* score_ptr = (void*)(((uint64_t)score) & ~1);
+       CHECK_ACCESS(score_ptr);
+       LDKScore score_conv = *(LDKScore*)(score_ptr);
+       LDKMultiThreadedLockableScore ret_var = MultiThreadedLockableScore_new(score_conv);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -37092,149 +34411,101 @@ uint32_t  __attribute__((visibility("default"))) TS_RetryAttempts_new(int64_t a_
        return ret_ref;
 }
 
-static inline uint64_t RetryAttempts_clone_ptr(LDKRetryAttempts *NONNULL_PTR arg) {
-       LDKRetryAttempts ret_var = RetryAttempts_clone(arg);
-uint64_t ret_ref = 0;
-CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-ret_ref = (uint64_t)ret_var.inner;
-if (ret_var.is_owned) {
-       ret_ref |= 1;
-}
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_ScoringParameters_free(uint32_t this_obj) {
+       LDKScoringParameters this_obj_conv;
+       this_obj_conv.inner = (void*)(this_obj & (~1));
+       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
+       ScoringParameters_free(this_obj_conv);
 }
-int64_t  __attribute__((visibility("default"))) TS_RetryAttempts_clone_ptr(uint32_t arg) {
-       LDKRetryAttempts arg_conv;
-       arg_conv.inner = (void*)(arg & (~1));
-       arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(arg_conv);
-       int64_t ret_val = RetryAttempts_clone_ptr(&arg_conv);
+
+int64_t  __attribute__((visibility("default"))) TS_ScoringParameters_get_base_penalty_msat(uint32_t this_ptr) {
+       LDKScoringParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = ScoringParameters_get_base_penalty_msat(&this_ptr_conv);
        return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_RetryAttempts_clone(uint32_t orig) {
-       LDKRetryAttempts orig_conv;
-       orig_conv.inner = (void*)(orig & (~1));
-       orig_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(orig_conv);
-       LDKRetryAttempts ret_var = RetryAttempts_clone(&orig_conv);
-       uint64_t ret_ref = 0;
-       CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
-       CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var);
-       ret_ref = (uint64_t)ret_var.inner;
-       if (ret_var.is_owned) {
-               ret_ref |= 1;
-       }
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_ScoringParameters_set_base_penalty_msat(uint32_t this_ptr, int64_t val) {
+       LDKScoringParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ScoringParameters_set_base_penalty_msat(&this_ptr_conv, val);
 }
 
-jboolean  __attribute__((visibility("default"))) TS_RetryAttempts_eq(uint32_t a, uint32_t b) {
-       LDKRetryAttempts a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       LDKRetryAttempts b_conv;
-       b_conv.inner = (void*)(b & (~1));
-       b_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv);
-       jboolean ret_val = RetryAttempts_eq(&a_conv, &b_conv);
+int64_t  __attribute__((visibility("default"))) TS_ScoringParameters_get_failure_penalty_msat(uint32_t this_ptr) {
+       LDKScoringParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = ScoringParameters_get_failure_penalty_msat(&this_ptr_conv);
        return ret_val;
 }
 
-int64_t  __attribute__((visibility("default"))) TS_RetryAttempts_hash(uint32_t o) {
-       LDKRetryAttempts o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       int64_t ret_val = RetryAttempts_hash(&o_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_ScoringParameters_set_failure_penalty_msat(uint32_t this_ptr, int64_t val) {
+       LDKScoringParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ScoringParameters_set_failure_penalty_msat(&this_ptr_conv, val);
 }
 
-void  __attribute__((visibility("default"))) TS_PaymentError_free(uint32_t this_ptr) {
-       if ((this_ptr & 1) != 0) return;
-       void* this_ptr_ptr = (void*)(((uint64_t)this_ptr) & ~1);
-       CHECK_ACCESS(this_ptr_ptr);
-       LDKPaymentError this_ptr_conv = *(LDKPaymentError*)(this_ptr_ptr);
-       FREE((void*)this_ptr);
-       PaymentError_free(this_ptr_conv);
+int16_t  __attribute__((visibility("default"))) TS_ScoringParameters_get_overuse_penalty_start_1024th(uint32_t this_ptr) {
+       LDKScoringParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int16_t ret_val = ScoringParameters_get_overuse_penalty_start_1024th(&this_ptr_conv);
+       return ret_val;
 }
 
-static inline uint64_t PaymentError_clone_ptr(LDKPaymentError *NONNULL_PTR arg) {
-       LDKPaymentError *ret_copy = MALLOC(sizeof(LDKPaymentError), "LDKPaymentError");
-       *ret_copy = PaymentError_clone(arg);
-uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
-}
-int64_t  __attribute__((visibility("default"))) TS_PaymentError_clone_ptr(uint32_t arg) {
-       LDKPaymentError* arg_conv = (LDKPaymentError*)arg;
-       int64_t ret_val = PaymentError_clone_ptr(arg_conv);
-       return ret_val;
+void  __attribute__((visibility("default"))) TS_ScoringParameters_set_overuse_penalty_start_1024th(uint32_t this_ptr, int16_t val) {
+       LDKScoringParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ScoringParameters_set_overuse_penalty_start_1024th(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PaymentError_clone(uint32_t orig) {
-       LDKPaymentError* orig_conv = (LDKPaymentError*)orig;
-       LDKPaymentError *ret_copy = MALLOC(sizeof(LDKPaymentError), "LDKPaymentError");
-       *ret_copy = PaymentError_clone(orig_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+int64_t  __attribute__((visibility("default"))) TS_ScoringParameters_get_overuse_penalty_msat_per_1024th(uint32_t this_ptr) {
+       LDKScoringParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = ScoringParameters_get_overuse_penalty_msat_per_1024th(&this_ptr_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PaymentError_invoice(jstring a) {
-       LDKStr a_conv = str_ref_to_owned_c(a);
-       LDKPaymentError *ret_copy = MALLOC(sizeof(LDKPaymentError), "LDKPaymentError");
-       *ret_copy = PaymentError_invoice(a_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_ScoringParameters_set_overuse_penalty_msat_per_1024th(uint32_t this_ptr, int64_t val) {
+       LDKScoringParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ScoringParameters_set_overuse_penalty_msat_per_1024th(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PaymentError_routing(uint32_t a) {
-       LDKLightningError a_conv;
-       a_conv.inner = (void*)(a & (~1));
-       a_conv.is_owned = (a & 1) || (a == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv);
-       a_conv = LightningError_clone(&a_conv);
-       LDKPaymentError *ret_copy = MALLOC(sizeof(LDKPaymentError), "LDKPaymentError");
-       *ret_copy = PaymentError_routing(a_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+int64_t  __attribute__((visibility("default"))) TS_ScoringParameters_get_failure_penalty_half_life(uint32_t this_ptr) {
+       LDKScoringParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       int64_t ret_val = ScoringParameters_get_failure_penalty_half_life(&this_ptr_conv);
+       return ret_val;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_PaymentError_sending(uint32_t a) {
-       void* a_ptr = (void*)(((uint64_t)a) & ~1);
-       CHECK_ACCESS(a_ptr);
-       LDKPaymentSendFailure a_conv = *(LDKPaymentSendFailure*)(a_ptr);
-       a_conv = PaymentSendFailure_clone((LDKPaymentSendFailure*)(((uint64_t)a) & ~1));
-       LDKPaymentError *ret_copy = MALLOC(sizeof(LDKPaymentError), "LDKPaymentError");
-       *ret_copy = PaymentError_sending(a_conv);
-       uint64_t ret_ref = (uint64_t)ret_copy;
-       return ret_ref;
+void  __attribute__((visibility("default"))) TS_ScoringParameters_set_failure_penalty_half_life(uint32_t this_ptr, int64_t val) {
+       LDKScoringParameters this_ptr_conv;
+       this_ptr_conv.inner = (void*)(this_ptr & (~1));
+       this_ptr_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_ptr_conv);
+       ScoringParameters_set_failure_penalty_half_life(&this_ptr_conv, val);
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InvoicePayer_new(uint32_t payer, uint32_t router, uint32_t scorer, uint32_t logger, uint32_t event_handler, uint32_t retry_attempts) {
-       void* payer_ptr = (void*)(((uint64_t)payer) & ~1);
-       CHECK_ACCESS(payer_ptr);
-       LDKPayer payer_conv = *(LDKPayer*)(payer_ptr);
-       void* router_ptr = (void*)(((uint64_t)router) & ~1);
-       CHECK_ACCESS(router_ptr);
-       LDKRouter router_conv = *(LDKRouter*)(router_ptr);
-       LDKMultiThreadedLockableScore scorer_conv;
-       scorer_conv.inner = (void*)(scorer & (~1));
-       scorer_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(scorer_conv);
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       CHECK_ACCESS(logger_ptr);
-       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
-       void* event_handler_ptr = (void*)(((uint64_t)event_handler) & ~1);
-       CHECK_ACCESS(event_handler_ptr);
-       LDKEventHandler event_handler_conv = *(LDKEventHandler*)(event_handler_ptr);
-       LDKRetryAttempts retry_attempts_conv;
-       retry_attempts_conv.inner = (void*)(retry_attempts & (~1));
-       retry_attempts_conv.is_owned = (retry_attempts & 1) || (retry_attempts == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(retry_attempts_conv);
-       retry_attempts_conv = RetryAttempts_clone(&retry_attempts_conv);
-       LDKInvoicePayer ret_var = InvoicePayer_new(payer_conv, router_conv, &scorer_conv, logger_conv, event_handler_conv, retry_attempts_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ScoringParameters_new(int64_t base_penalty_msat_arg, int64_t failure_penalty_msat_arg, int16_t overuse_penalty_start_1024th_arg, int64_t overuse_penalty_msat_per_1024th_arg, int64_t failure_penalty_half_life_arg) {
+       LDKScoringParameters ret_var = ScoringParameters_new(base_penalty_msat_arg, failure_penalty_msat_arg, overuse_penalty_start_1024th_arg, overuse_penalty_msat_per_1024th_arg, failure_penalty_half_life_arg);
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -37246,108 +34517,29 @@ uint32_t  __attribute__((visibility("default"))) TS_InvoicePayer_new(uint32_t pa
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_InvoicePayer_pay_invoice(uint32_t this_arg, uint32_t invoice) {
-       LDKInvoicePayer this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKInvoice invoice_conv;
-       invoice_conv.inner = (void*)(invoice & (~1));
-       invoice_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(invoice_conv);
-       LDKCResult_PaymentIdPaymentErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentErrorZ), "LDKCResult_PaymentIdPaymentErrorZ");
-       *ret_conv = InvoicePayer_pay_invoice(&this_arg_conv, &invoice_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_InvoicePayer_pay_zero_value_invoice(uint32_t this_arg, uint32_t invoice, int64_t amount_msats) {
-       LDKInvoicePayer this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKInvoice invoice_conv;
-       invoice_conv.inner = (void*)(invoice & (~1));
-       invoice_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(invoice_conv);
-       LDKCResult_PaymentIdPaymentErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentErrorZ), "LDKCResult_PaymentIdPaymentErrorZ");
-       *ret_conv = InvoicePayer_pay_zero_value_invoice(&this_arg_conv, &invoice_conv, amount_msats);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_InvoicePayer_pay_pubkey(uint32_t this_arg, int8_tArray pubkey, int8_tArray payment_preimage, int64_t amount_msats, int32_t final_cltv_expiry_delta) {
-       LDKInvoicePayer this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKPublicKey pubkey_ref;
-       CHECK(*((uint32_t*)pubkey) == 33);
-       memcpy(pubkey_ref.compressed_form, (uint8_t*)(pubkey + 4), 33);
-       LDKThirtyTwoBytes payment_preimage_ref;
-       CHECK(*((uint32_t*)payment_preimage) == 32);
-       memcpy(payment_preimage_ref.data, (uint8_t*)(payment_preimage + 4), 32);
-       LDKCResult_PaymentIdPaymentErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentIdPaymentErrorZ), "LDKCResult_PaymentIdPaymentErrorZ");
-       *ret_conv = InvoicePayer_pay_pubkey(&this_arg_conv, pubkey_ref, payment_preimage_ref, amount_msats, final_cltv_expiry_delta);
-       return (uint64_t)ret_conv;
-}
-
-void  __attribute__((visibility("default"))) TS_InvoicePayer_remove_cached_payment(uint32_t this_arg, int8_tArray payment_hash) {
-       LDKInvoicePayer this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       unsigned char payment_hash_arr[32];
-       CHECK(*((uint32_t*)payment_hash) == 32);
-       memcpy(payment_hash_arr, (uint8_t*)(payment_hash + 4), 32);
-       unsigned char (*payment_hash_ref)[32] = &payment_hash_arr;
-       InvoicePayer_remove_cached_payment(&this_arg_conv, payment_hash_ref);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_InvoicePayer_as_EventHandler(uint32_t this_arg) {
-       LDKInvoicePayer this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKEventHandler* ret_ret = MALLOC(sizeof(LDKEventHandler), "LDKEventHandler");
-       *ret_ret = InvoicePayer_as_EventHandler(&this_arg_conv);
-       return (uint64_t)ret_ret;
+int8_tArray  __attribute__((visibility("default"))) TS_ScoringParameters_write(uint32_t obj) {
+       LDKScoringParameters obj_conv;
+       obj_conv.inner = (void*)(obj & (~1));
+       obj_conv.is_owned = false;
+       CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv);
+       LDKCVec_u8Z ret_var = ScoringParameters_write(&obj_conv);
+       int8_tArray ret_arr = init_int8_tArray(ret_var.datalen);
+       memcpy(ret_arr->elems, ret_var.data, ret_var.datalen);
+       CVec_u8Z_free(ret_var);
+       return ret_arr;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_create_invoice_from_channelmanager(uint32_t channelmanager, uint32_t keys_manager, uint32_t network, uint32_t amt_msat, jstring description) {
-       LDKChannelManager channelmanager_conv;
-       channelmanager_conv.inner = (void*)(channelmanager & (~1));
-       channelmanager_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(channelmanager_conv);
-       void* keys_manager_ptr = (void*)(((uint64_t)keys_manager) & ~1);
-       CHECK_ACCESS(keys_manager_ptr);
-       LDKKeysInterface keys_manager_conv = *(LDKKeysInterface*)(keys_manager_ptr);
-       LDKCurrency network_conv = LDKCurrency_from_js(network);
-       void* amt_msat_ptr = (void*)(((uint64_t)amt_msat) & ~1);
-       CHECK_ACCESS(amt_msat_ptr);
-       LDKCOption_u64Z amt_msat_conv = *(LDKCOption_u64Z*)(amt_msat_ptr);
-       amt_msat_conv = COption_u64Z_clone((LDKCOption_u64Z*)(((uint64_t)amt_msat) & ~1));
-       LDKStr description_conv = str_ref_to_owned_c(description);
-       LDKCResult_InvoiceSignOrCreationErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceSignOrCreationErrorZ), "LDKCResult_InvoiceSignOrCreationErrorZ");
-       *ret_conv = create_invoice_from_channelmanager(&channelmanager_conv, keys_manager_conv, network_conv, amt_msat_conv, description_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ScoringParameters_read(int8_tArray ser) {
+       LDKu8slice ser_ref;
+       ser_ref.datalen = ser->arr_len;
+       ser_ref.data = ser->elems;
+       LDKCResult_ScoringParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ScoringParametersDecodeErrorZ), "LDKCResult_ScoringParametersDecodeErrorZ");
+       *ret_conv = ScoringParameters_read(ser_ref);
        return (uint64_t)ret_conv;
 }
 
-void  __attribute__((visibility("default"))) TS_DefaultRouter_free(uint32_t this_obj) {
-       LDKDefaultRouter this_obj_conv;
-       this_obj_conv.inner = (void*)(this_obj & (~1));
-       this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0);
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv);
-       DefaultRouter_free(this_obj_conv);
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_DefaultRouter_new(uint32_t network_graph, uint32_t logger) {
-       LDKNetworkGraph network_graph_conv;
-       network_graph_conv.inner = (void*)(network_graph & (~1));
-       network_graph_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(network_graph_conv);
-       void* logger_ptr = (void*)(((uint64_t)logger) & ~1);
-       CHECK_ACCESS(logger_ptr);
-       LDKLogger logger_conv = *(LDKLogger*)(logger_ptr);
-       LDKDefaultRouter ret_var = DefaultRouter_new(&network_graph_conv, logger_conv);
+uint32_t  __attribute__((visibility("default"))) TS_ScoringParameters_default() {
+       LDKScoringParameters ret_var = ScoringParameters_default();
        uint64_t ret_ref = 0;
        CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
        CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
@@ -37359,82 +34551,3 @@ uint32_t  __attribute__((visibility("default"))) TS_DefaultRouter_new(uint32_t n
        return ret_ref;
 }
 
-uint32_t  __attribute__((visibility("default"))) TS_DefaultRouter_as_Router(uint32_t this_arg) {
-       LDKDefaultRouter this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKRouter* ret_ret = MALLOC(sizeof(LDKRouter), "LDKRouter");
-       *ret_ret = DefaultRouter_as_Router(&this_arg_conv);
-       return (uint64_t)ret_ret;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_ChannelManager_as_Payer(uint32_t this_arg) {
-       LDKChannelManager this_arg_conv;
-       this_arg_conv.inner = (void*)(this_arg & (~1));
-       this_arg_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv);
-       LDKPayer* ret_ret = MALLOC(sizeof(LDKPayer), "LDKPayer");
-       *ret_ret = ChannelManager_as_Payer(&this_arg_conv);
-       return (uint64_t)ret_ret;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_SiPrefix_from_str(jstring s) {
-       LDKStr s_conv = str_ref_to_owned_c(s);
-       LDKCResult_SiPrefixNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SiPrefixNoneZ), "LDKCResult_SiPrefixNoneZ");
-       *ret_conv = SiPrefix_from_str(s_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_Invoice_from_str(jstring s) {
-       LDKStr s_conv = str_ref_to_owned_c(s);
-       LDKCResult_InvoiceNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_InvoiceNoneZ), "LDKCResult_InvoiceNoneZ");
-       *ret_conv = Invoice_from_str(s_conv);
-       return (uint64_t)ret_conv;
-}
-
-uint32_t  __attribute__((visibility("default"))) TS_SignedRawInvoice_from_str(jstring s) {
-       LDKStr s_conv = str_ref_to_owned_c(s);
-       LDKCResult_SignedRawInvoiceNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SignedRawInvoiceNoneZ), "LDKCResult_SignedRawInvoiceNoneZ");
-       *ret_conv = SignedRawInvoice_from_str(s_conv);
-       return (uint64_t)ret_conv;
-}
-
-jstring  __attribute__((visibility("default"))) TS_Invoice_to_str(uint32_t o) {
-       LDKInvoice o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       LDKStr ret_str = Invoice_to_str(&o_conv);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
-}
-
-jstring  __attribute__((visibility("default"))) TS_SignedRawInvoice_to_str(uint32_t o) {
-       LDKSignedRawInvoice o_conv;
-       o_conv.inner = (void*)(o & (~1));
-       o_conv.is_owned = false;
-       CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv);
-       LDKStr ret_str = SignedRawInvoice_to_str(&o_conv);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
-}
-
-jstring  __attribute__((visibility("default"))) TS_Currency_to_str(uint32_t o) {
-       LDKCurrency* o_conv = (LDKCurrency*)(o & ~1);
-       LDKStr ret_str = Currency_to_str(o_conv);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
-}
-
-jstring  __attribute__((visibility("default"))) TS_SiPrefix_to_str(uint32_t o) {
-       LDKSiPrefix* o_conv = (LDKSiPrefix*)(o & ~1);
-       LDKStr ret_str = SiPrefix_to_str(o_conv);
-       jstring ret_conv = str_ref_to_ts(ret_str.chars, ret_str.len);
-       Str_free(ret_str);
-       return ret_conv;
-}
-
diff --git a/ts/bindings.mts b/ts/bindings.mts
new file mode 100644 (file)
index 0000000..3ac095c
--- /dev/null
@@ -0,0 +1,21975 @@
+
+function freer(f: () => void) { f() }
+const finalizer = new FinalizationRegistry(freer);
+const memory = new WebAssembly.Memory({initial: 256});
+
+const imports: any = {};
+imports.env = {};
+
+imports.env.memoryBase = 0;
+imports.env.memory = memory;
+imports.env.tableBase = 0;
+imports.env.table = new WebAssembly.Table({initial: 4, element: 'anyfunc'});
+
+imports.env["abort"] = function () {
+       console.error("ABORT");
+};
+imports.env["js_invoke_function"] = function(fn: number, arg1: number, arg2: number, arg3: number, arg4: number, arg5: number, arg6: number, arg7: number, arg8: number, arg9: number, arg10: number) {
+       console.log('function called from wasm:', fn, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10);
+};
+imports.env["js_free_function_ptr"] = function(fn: number) {
+       console.log("function ptr free'd from wasm:", fn);
+};
+
+imports.wasi_snapshot_preview1 = {
+       "fd_write" : () => {
+               console.log("ABORT");
+       },
+       "random_get" : () => {
+               console.log("RAND GET");
+       },
+       "environ_sizes_get" : () => {
+               console.log("wasi_snapshot_preview1:environ_sizes_get");
+       },
+       "proc_exit" : () => {
+               console.log("wasi_snapshot_preview1:proc_exit");
+       },
+       "environ_get" : () => {
+               console.log("wasi_snapshot_preview1:environ_get");
+       },
+};
+
+var wasm = null;
+let isWasmInitialized: boolean = false;
+
+export async function initializeWasm(uri) {
+       const stream = fetch(uri);
+       const { instance: wasmInstance } = await WebAssembly.instantiateStreaming(stream, imports);
+       wasm = wasmInstance.exports;
+       isWasmInitialized = true;
+};
+
+
+
+
+// WASM CODEC
+
+const nextMultipleOfFour = (value: number) => {
+       return Math.ceil(value / 4) * 4;
+}
+
+const encodeUint8Array = (inputArray) => {
+       const cArrayPointer = wasm.TS_malloc(inputArray.length + 4);
+       const arrayLengthView = new Uint32Array(memory.buffer, cArrayPointer, 1);
+       arrayLengthView[0] = inputArray.length;
+       const arrayMemoryView = new Uint8Array(memory.buffer, cArrayPointer + 4, inputArray.length);
+       arrayMemoryView.set(inputArray);
+       return cArrayPointer;
+}
+
+const encodeUint32Array = (inputArray) => {
+       const cArrayPointer = wasm.TS_malloc((inputArray.length + 1) * 4);
+       const arrayMemoryView = new Uint32Array(memory.buffer, cArrayPointer, inputArray.length);
+       arrayMemoryView.set(inputArray, 1);
+       arrayMemoryView[0] = inputArray.length;
+       return cArrayPointer;
+}
+
+const getArrayLength = (arrayPointer) => {
+       const arraySizeViewer = new Uint32Array(
+               memory.buffer, // value
+               arrayPointer, // offset
+               1 // one int
+       );
+       return arraySizeViewer[0];
+}
+const decodeUint8Array = (arrayPointer, free = true) => {
+       const arraySize = getArrayLength(arrayPointer);
+       const actualArrayViewer = new Uint8Array(
+               memory.buffer, // value
+               arrayPointer + 4, // offset (ignoring length bytes)
+               arraySize // uint8 count
+       );
+       // Clone the contents, TODO: In the future we should wrap the Viewer in a class that
+       // will free the underlying memory when it becomes unreachable instead of copying here.
+       const actualArray = actualArrayViewer.slice(0, arraySize);
+       if (free) {
+               wasm.TS_free(arrayPointer);
+       }
+       return actualArray;
+}
+const decodeUint32Array = (arrayPointer, free = true) => {
+       const arraySize = getArrayLength(arrayPointer);
+       const actualArrayViewer = new Uint32Array(
+               memory.buffer, // value
+               arrayPointer + 4, // offset (ignoring length bytes)
+               arraySize // uint32 count
+       );
+       // Clone the contents, TODO: In the future we should wrap the Viewer in a class that
+       // will free the underlying memory when it becomes unreachable instead of copying here.
+       const actualArray = actualArrayViewer.slice(0, arraySize);
+       if (free) {
+               wasm.TS_free(arrayPointer);
+       }
+       return actualArray;
+}
+
+const encodeString = (string) => {
+       // make malloc count divisible by 4
+       const memoryNeed = nextMultipleOfFour(string.length + 1);
+       const stringPointer = wasm.TS_malloc(memoryNeed);
+       const stringMemoryView = new Uint8Array(
+               memory.buffer, // value
+               stringPointer, // offset
+               string.length + 1 // length
+       );
+       for (let i = 0; i < string.length; i++) {
+               stringMemoryView[i] = string.charCodeAt(i);
+       }
+       stringMemoryView[string.length] = 0;
+       return stringPointer;
+}
+
+const decodeString = (stringPointer, free = true) => {
+       const memoryView = new Uint8Array(memory.buffer, stringPointer);
+       let cursor = 0;
+       let result = '';
+
+       while (memoryView[cursor] !== 0) {
+               result += String.fromCharCode(memoryView[cursor]);
+               cursor++;
+       }
+
+       if (free) {
+               wasm.wasm_free(stringPointer);
+       }
+
+       return result;
+};
+
+export class VecOrSliceDef {
+    public dataptr: number;
+    public datalen: number;
+    public stride: number;
+    public constructor(dataptr: number, datalen: number, stride: number) {
+        this.dataptr = dataptr;
+        this.datalen = datalen;
+        this.stride = stride;
+    }
+}
+
+/*
+TODO: load WASM file
+static {
+    System.loadLibrary("lightningjni");
+    init(java.lang.Enum.class, VecOrSliceDef.class);
+    init_class_cache();
+}
+
+static native void init(java.lang.Class c, java.lang.Class slicedef);
+static native void init_class_cache();
+
+public static native boolean deref_bool(long ptr);
+public static native long deref_long(long ptr);
+public static native void free_heap_ptr(long ptr);
+public static native byte[] read_bytes(long ptr, long len);
+public static native byte[] get_u8_slice_bytes(long slice_ptr);
+public static native long bytes_to_u8_vec(byte[] bytes);
+public static native long new_txpointer_copy_data(byte[] txdata);
+public static native void txpointer_free(long ptr);
+public static native byte[] txpointer_get_buffer(long ptr);
+public static native long vec_slice_len(long vec);
+public static native long new_empty_slice_vec();
+*/
+
+
+            export enum AccessError {
+                /**
+ * The requested chain is unknown.
+ */
+LDKAccessError_UnknownChain,
+                               /**
+ * The requested transaction doesn't exist or hasn't confirmed.
+ */
+LDKAccessError_UnknownTx,
+                               
+            }
+
+            export enum COption_NoneZ {
+                /**
+ * When we're in this state, this COption_NoneZ contains a
+ */
+LDKCOption_NoneZ_Some,
+                               /**
+ * When we're in this state, this COption_NoneZ contains nothing
+ */
+LDKCOption_NoneZ_None,
+                               
+            }
+
+            export enum ChannelMonitorUpdateErr {
+                /**
+ * Used to indicate a temporary failure (eg connection to a watchtower or remote backup of
+our state failed, but is expected to succeed at some point in the future).
+
+Such a failure will \"freeze\" a channel, preventing us from revoking old states or
+submitting new commitment transactions to the counterparty. Once the update(s) that failed
+have been successfully applied, a [`MonitorEvent::UpdateCompleted`] event should be returned
+via [`Watch::release_pending_monitor_events`] which will then restore the channel to an
+operational state.
+
+Note that a given ChannelManager will *never* re-generate a given ChannelMonitorUpdate. If
+you return a TemporaryFailure you must ensure that it is written to disk safely before
+writing out the latest ChannelManager state.
+
+Even when a channel has been \"frozen\" updates to the ChannelMonitor can continue to occur
+(eg if an inbound HTLC which we forwarded was claimed upstream resulting in us attempting
+to claim it on this channel) and those updates must be applied wherever they can be. At
+least one such updated ChannelMonitor must be persisted otherwise PermanentFailure should
+be returned to get things on-chain ASAP using only the in-memory copy. Obviously updates to
+the channel which would invalidate previous ChannelMonitors are not made when a channel has
+been \"frozen\".
+
+Note that even if updates made after TemporaryFailure succeed you must still provide a
+[`MonitorEvent::UpdateCompleted`] to ensure you have the latest monitor and re-enable
+normal channel operation. Note that this is normally generated through a call to
+[`ChainMonitor::channel_monitor_updated`].
+
+Note that the update being processed here will not be replayed for you when you return a
+[`MonitorEvent::UpdateCompleted`] event via [`Watch::release_pending_monitor_events`], so
+you must store the update itself on your own local disk prior to returning a
+TemporaryFailure. You may, of course, employ a journaling approach, storing only the
+ChannelMonitorUpdate on disk without updating the monitor itself, replaying the journal at
+reload-time.
+
+For deployments where a copy of ChannelMonitors and other local state are backed up in a
+remote location (with local copies persisted immediately), it is anticipated that all
+updates will return TemporaryFailure until the remote copies could be updated.
+
+[`ChainMonitor::channel_monitor_updated`]: chainmonitor::ChainMonitor::channel_monitor_updated
+ */
+LDKChannelMonitorUpdateErr_TemporaryFailure,
+                               /**
+ * Used to indicate no further channel monitor updates will be allowed (eg we've moved on to a
+different watchtower and cannot update with all watchtowers that were previously informed
+of this channel).
+
+At reception of this error, ChannelManager will force-close the channel and return at
+least a final ChannelMonitorUpdate::ChannelForceClosed which must be delivered to at
+least one ChannelMonitor copy. Revocation secret MUST NOT be released and offchain channel
+update must be rejected.
+
+This failure may also signal a failure to update the local persisted copy of one of
+the channel monitor instance.
+
+Note that even when you fail a holder commitment transaction update, you must store the
+update to ensure you can claim from it in case of a duplicate copy of this ChannelMonitor
+broadcasts it (e.g distributed channel-monitor deployment)
+
+In case of distributed watchtowers deployment, the new version must be written to disk, as
+state may have been stored but rejected due to a block forcing a commitment broadcast. This
+storage is used to claim outputs of rejected state confirmed onchain by another watchtower,
+lagging behind on block processing.
+ */
+LDKChannelMonitorUpdateErr_PermanentFailure,
+                               
+            }
+
+            export enum ConfirmationTarget {
+                /**
+ * We are happy with this transaction confirming slowly when feerate drops some.
+ */
+LDKConfirmationTarget_Background,
+                               /**
+ * We'd like this transaction to confirm without major delay, but 12-18 blocks is fine.
+ */
+LDKConfirmationTarget_Normal,
+                               /**
+ * We'd like this transaction to confirm in the next few blocks.
+ */
+LDKConfirmationTarget_HighPriority,
+                               
+            }
+
+            export enum Level {
+                /**
+ * Designates extremely verbose information, including gossip-induced messages
+ */
+LDKLevel_Gossip,
+                               /**
+ * Designates very low priority, often extremely verbose, information
+ */
+LDKLevel_Trace,
+                               /**
+ * Designates lower priority information
+ */
+LDKLevel_Debug,
+                               /**
+ * Designates useful information
+ */
+LDKLevel_Info,
+                               /**
+ * Designates hazardous situations
+ */
+LDKLevel_Warn,
+                               /**
+ * Designates very serious errors
+ */
+LDKLevel_Error,
+                               
+            }
+
+            export enum Network {
+                /**
+ * The main Bitcoin blockchain.
+ */
+LDKNetwork_Bitcoin,
+                               /**
+ * The testnet3 blockchain.
+ */
+LDKNetwork_Testnet,
+                               /**
+ * A local test blockchain.
+ */
+LDKNetwork_Regtest,
+                               /**
+ * A blockchain on which blocks are signed instead of mined.
+ */
+LDKNetwork_Signet,
+                               
+            }
+
+            export enum Secp256k1Error {
+                /**
+ * Signature failed verification
+ */
+LDKSecp256k1Error_IncorrectSignature,
+                               /**
+ * Badly sized message ("messages" are actually fixed-sized digests; see the MESSAGE_SIZE constant)
+ */
+LDKSecp256k1Error_InvalidMessage,
+                               /**
+ * Bad public key
+ */
+LDKSecp256k1Error_InvalidPublicKey,
+                               /**
+ * Bad signature
+ */
+LDKSecp256k1Error_InvalidSignature,
+                               /**
+ * Bad secret key
+ */
+LDKSecp256k1Error_InvalidSecretKey,
+                               /**
+ * Bad recovery id
+ */
+LDKSecp256k1Error_InvalidRecoveryId,
+                               /**
+ * Invalid tweak for add_assign or mul_assign
+ */
+LDKSecp256k1Error_InvalidTweak,
+                               /**
+ * tweak_add_check failed on an xonly public key
+ */
+LDKSecp256k1Error_TweakCheckFailed,
+                               /**
+ * Didn't pass enough memory to context creation with preallocated memory
+ */
+LDKSecp256k1Error_NotEnoughMemory,
+                               
+            }
+       // struct LDKCVec_u8Z TxOut_get_script_pubkey (struct LDKTxOut* thing)
+       export function TxOut_get_script_pubkey(thing: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TxOut_get_script_pubkey(thing);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // uint64_t TxOut_get_value (struct LDKTxOut* thing)
+       export function TxOut_get_value(thing: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TxOut_get_value(thing);
+               return nativeResponseValue;
+       }
+       // struct LDKChannelConfig CResult_ChannelConfigDecodeErrorZ_get_ok(LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ChannelConfigDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelConfigDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_ChannelConfigDecodeErrorZ_get_err(LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ChannelConfigDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelConfigDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKOutPoint CResult_OutPointDecodeErrorZ_get_ok(LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_OutPointDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_OutPointDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_OutPointDecodeErrorZ_get_err(LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_OutPointDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_OutPointDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKSecretKey CResult_SecretKeyErrorZ_get_ok(LDKCResult_SecretKeyErrorZ *NONNULL_PTR owner);
+       export function CResult_SecretKeyErrorZ_get_ok(owner: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_SecretKeyErrorZ_get_ok(owner);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // enum LDKSecp256k1Error CResult_SecretKeyErrorZ_get_err(LDKCResult_SecretKeyErrorZ *NONNULL_PTR owner);
+       export function CResult_SecretKeyErrorZ_get_err(owner: number): Secp256k1Error {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_SecretKeyErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKPublicKey CResult_PublicKeyErrorZ_get_ok(LDKCResult_PublicKeyErrorZ *NONNULL_PTR owner);
+       export function CResult_PublicKeyErrorZ_get_ok(owner: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PublicKeyErrorZ_get_ok(owner);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // enum LDKSecp256k1Error CResult_PublicKeyErrorZ_get_err(LDKCResult_PublicKeyErrorZ *NONNULL_PTR owner);
+       export function CResult_PublicKeyErrorZ_get_err(owner: number): Secp256k1Error {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PublicKeyErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKTxCreationKeys CResult_TxCreationKeysDecodeErrorZ_get_ok(LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_TxCreationKeysDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TxCreationKeysDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_TxCreationKeysDecodeErrorZ_get_err(LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_TxCreationKeysDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TxCreationKeysDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKChannelPublicKeys CResult_ChannelPublicKeysDecodeErrorZ_get_ok(LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ChannelPublicKeysDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelPublicKeysDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_ChannelPublicKeysDecodeErrorZ_get_err(LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ChannelPublicKeysDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelPublicKeysDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKTxCreationKeys CResult_TxCreationKeysErrorZ_get_ok(LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR owner);
+       export function CResult_TxCreationKeysErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TxCreationKeysErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // enum LDKSecp256k1Error CResult_TxCreationKeysErrorZ_get_err(LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR owner);
+       export function CResult_TxCreationKeysErrorZ_get_err(owner: number): Secp256k1Error {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TxCreationKeysErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       export class LDKCOption_u32Z {
+               protected constructor() {}
+       }
+       export class LDKCOption_u32Z_Some extends LDKCOption_u32Z {
+               constructor(public some: number) { super(); }
+       }
+       export class LDKCOption_u32Z_None extends LDKCOption_u32Z {
+               constructor() { super(); }
+       }
+       export function LDKCOption_u32Z_ref_from_ptr(ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LDKCOption_u32Z_ref_from_ptr(ptr);
+               return nativeResponseValue;
+       }
+       // struct LDKHTLCOutputInCommitment CResult_HTLCOutputInCommitmentDecodeErrorZ_get_ok(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_HTLCOutputInCommitmentDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_HTLCOutputInCommitmentDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_HTLCOutputInCommitmentDecodeErrorZ_get_err(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_HTLCOutputInCommitmentDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_HTLCOutputInCommitmentDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKCounterpartyChannelTransactionParameters CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_ok(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_err(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKChannelTransactionParameters CResult_ChannelTransactionParametersDecodeErrorZ_get_ok(LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ChannelTransactionParametersDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelTransactionParametersDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_ChannelTransactionParametersDecodeErrorZ_get_err(LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ChannelTransactionParametersDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelTransactionParametersDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKHolderCommitmentTransaction CResult_HolderCommitmentTransactionDecodeErrorZ_get_ok(LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_HolderCommitmentTransactionDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_HolderCommitmentTransactionDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_HolderCommitmentTransactionDecodeErrorZ_get_err(LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_HolderCommitmentTransactionDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_HolderCommitmentTransactionDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKBuiltCommitmentTransaction CResult_BuiltCommitmentTransactionDecodeErrorZ_get_ok(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_BuiltCommitmentTransactionDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_BuiltCommitmentTransactionDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_BuiltCommitmentTransactionDecodeErrorZ_get_err(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_BuiltCommitmentTransactionDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_BuiltCommitmentTransactionDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKTrustedClosingTransaction *CResult_TrustedClosingTransactionNoneZ_get_ok(LDKCResult_TrustedClosingTransactionNoneZ *NONNULL_PTR owner);
+       export function CResult_TrustedClosingTransactionNoneZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TrustedClosingTransactionNoneZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // void CResult_TrustedClosingTransactionNoneZ_get_err(LDKCResult_TrustedClosingTransactionNoneZ *NONNULL_PTR owner);
+       export function CResult_TrustedClosingTransactionNoneZ_get_err(owner: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TrustedClosingTransactionNoneZ_get_err(owner);
+               // debug statements here
+       }
+       // struct LDKCommitmentTransaction CResult_CommitmentTransactionDecodeErrorZ_get_ok(LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_CommitmentTransactionDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_CommitmentTransactionDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_CommitmentTransactionDecodeErrorZ_get_err(LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_CommitmentTransactionDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_CommitmentTransactionDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKTrustedCommitmentTransaction *CResult_TrustedCommitmentTransactionNoneZ_get_ok(LDKCResult_TrustedCommitmentTransactionNoneZ *NONNULL_PTR owner);
+       export function CResult_TrustedCommitmentTransactionNoneZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TrustedCommitmentTransactionNoneZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // void CResult_TrustedCommitmentTransactionNoneZ_get_err(LDKCResult_TrustedCommitmentTransactionNoneZ *NONNULL_PTR owner);
+       export function CResult_TrustedCommitmentTransactionNoneZ_get_err(owner: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TrustedCommitmentTransactionNoneZ_get_err(owner);
+               // debug statements here
+       }
+       // struct LDKCVec_SignatureZ CResult_CVec_SignatureZNoneZ_get_ok(LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR owner);
+       export function CResult_CVec_SignatureZNoneZ_get_ok(owner: number): Uint8Array[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_CVec_SignatureZNoneZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // void CResult_CVec_SignatureZNoneZ_get_err(LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR owner);
+       export function CResult_CVec_SignatureZNoneZ_get_err(owner: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_CVec_SignatureZNoneZ_get_err(owner);
+               // debug statements here
+       }
+       // struct LDKShutdownScript CResult_ShutdownScriptDecodeErrorZ_get_ok(LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ShutdownScriptDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ShutdownScriptDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_ShutdownScriptDecodeErrorZ_get_err(LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ShutdownScriptDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ShutdownScriptDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKShutdownScript CResult_ShutdownScriptInvalidShutdownScriptZ_get_ok(LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR owner);
+       export function CResult_ShutdownScriptInvalidShutdownScriptZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ShutdownScriptInvalidShutdownScriptZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKInvalidShutdownScript CResult_ShutdownScriptInvalidShutdownScriptZ_get_err(LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR owner);
+       export function CResult_ShutdownScriptInvalidShutdownScriptZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ShutdownScriptInvalidShutdownScriptZ_get_err(owner);
+               return nativeResponseValue;
+       }
+
+
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
+
+               export interface LDKType {
+                       type_id (): number;
+                       debug_str (): String;
+                       write (): Uint8Array;
+               }
+
+               export function LDKType_new(impl: LDKType): number {
+            throw new Error('unimplemented'); // TODO: bind to WASM
+        }
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
+
+
+       // uint16_t Type_type_id LDKType *NONNULL_PTR this_arg
+       export function Type_type_id(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Type_type_id(this_arg);
+               return nativeResponseValue;
+       }
+       // LDKStr Type_debug_str LDKType *NONNULL_PTR this_arg
+       export function Type_debug_str(this_arg: number): String {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Type_debug_str(this_arg);
+               return nativeResponseValue;
+       }
+       // LDKCVec_u8Z Type_write LDKType *NONNULL_PTR this_arg
+       export function Type_write(this_arg: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Type_write(this_arg);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       export class LDKCOption_TypeZ {
+               protected constructor() {}
+       }
+       export class LDKCOption_TypeZ_Some extends LDKCOption_TypeZ {
+               constructor(public some: number) { super(); }
+       }
+       export class LDKCOption_TypeZ_None extends LDKCOption_TypeZ {
+               constructor() { super(); }
+       }
+       export function LDKCOption_TypeZ_ref_from_ptr(ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LDKCOption_TypeZ_ref_from_ptr(ptr);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_TypeZ CResult_COption_TypeZDecodeErrorZ_get_ok(LDKCResult_COption_TypeZDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_COption_TypeZDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_TypeZDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_COption_TypeZDecodeErrorZ_get_err(LDKCResult_COption_TypeZDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_COption_TypeZDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_TypeZDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKStr CResult_StringErrorZ_get_ok(LDKCResult_StringErrorZ *NONNULL_PTR owner);
+       export function CResult_StringErrorZ_get_ok(owner: number): String {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_StringErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // enum LDKSecp256k1Error CResult_StringErrorZ_get_err(LDKCResult_StringErrorZ *NONNULL_PTR owner);
+       export function CResult_StringErrorZ_get_err(owner: number): Secp256k1Error {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_StringErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKChannelMonitorUpdate CResult_ChannelMonitorUpdateDecodeErrorZ_get_ok(LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ChannelMonitorUpdateDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelMonitorUpdateDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_ChannelMonitorUpdateDecodeErrorZ_get_err(LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ChannelMonitorUpdateDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelMonitorUpdateDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       export class LDKMonitorEvent {
+               protected constructor() {}
+       }
+       export class LDKMonitorEvent_HTLCEvent extends LDKMonitorEvent {
+               constructor(public htlc_event: number) { super(); }
+       }
+       export class LDKMonitorEvent_CommitmentTxConfirmed extends LDKMonitorEvent {
+               constructor(public commitment_tx_confirmed: number) { super(); }
+       }
+       export class LDKMonitorEvent_UpdateCompleted extends LDKMonitorEvent {
+               constructor(public funding_txo: number, public monitor_update_id: number) { super(); }
+       }
+       export class LDKMonitorEvent_UpdateFailed extends LDKMonitorEvent {
+               constructor(public update_failed: number) { super(); }
+       }
+       export function LDKMonitorEvent_ref_from_ptr(ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LDKMonitorEvent_ref_from_ptr(ptr);
+               return nativeResponseValue;
+       }
+       export class LDKCOption_MonitorEventZ {
+               protected constructor() {}
+       }
+       export class LDKCOption_MonitorEventZ_Some extends LDKCOption_MonitorEventZ {
+               constructor(public some: number) { super(); }
+       }
+       export class LDKCOption_MonitorEventZ_None extends LDKCOption_MonitorEventZ {
+               constructor() { super(); }
+       }
+       export function LDKCOption_MonitorEventZ_ref_from_ptr(ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LDKCOption_MonitorEventZ_ref_from_ptr(ptr);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_MonitorEventZ CResult_COption_MonitorEventZDecodeErrorZ_get_ok(LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_COption_MonitorEventZDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_MonitorEventZDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_COption_MonitorEventZDecodeErrorZ_get_err(LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_COption_MonitorEventZDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_MonitorEventZDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKHTLCUpdate CResult_HTLCUpdateDecodeErrorZ_get_ok(LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_HTLCUpdateDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_HTLCUpdateDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_HTLCUpdateDecodeErrorZ_get_err(LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_HTLCUpdateDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_HTLCUpdateDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // void CResult_NoneNoneZ_get_ok(LDKCResult_NoneNoneZ *NONNULL_PTR owner);
+       export function CResult_NoneNoneZ_get_ok(owner: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NoneNoneZ_get_ok(owner);
+               // debug statements here
+       }
+       // void CResult_NoneNoneZ_get_err(LDKCResult_NoneNoneZ *NONNULL_PTR owner);
+       export function CResult_NoneNoneZ_get_err(owner: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NoneNoneZ_get_err(owner);
+               // debug statements here
+       }
+       // struct LDKOutPoint C2Tuple_OutPointScriptZ_get_a(LDKC2Tuple_OutPointScriptZ *NONNULL_PTR owner);
+       export function C2Tuple_OutPointScriptZ_get_a(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_OutPointScriptZ_get_a(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z C2Tuple_OutPointScriptZ_get_b(LDKC2Tuple_OutPointScriptZ *NONNULL_PTR owner);
+       export function C2Tuple_OutPointScriptZ_get_b(owner: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_OutPointScriptZ_get_b(owner);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // uint32_t C2Tuple_u32ScriptZ_get_a(LDKC2Tuple_u32ScriptZ *NONNULL_PTR owner);
+       export function C2Tuple_u32ScriptZ_get_a(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_u32ScriptZ_get_a(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z C2Tuple_u32ScriptZ_get_b(LDKC2Tuple_u32ScriptZ *NONNULL_PTR owner);
+       export function C2Tuple_u32ScriptZ_get_b(owner: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_u32ScriptZ_get_b(owner);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKThirtyTwoBytes C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_a(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR owner);
+       export function C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_a(owner: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_a(owner);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCVec_C2Tuple_u32ScriptZZ C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_b(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR owner);
+       export function C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_b(owner: number): number[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_b(owner);
+               return nativeResponseValue;
+       }
+       export class LDKPaymentPurpose {
+               protected constructor() {}
+       }
+       export class LDKPaymentPurpose_InvoicePayment extends LDKPaymentPurpose {
+               constructor(public payment_preimage: Uint8Array, public payment_secret: Uint8Array) { super(); }
+       }
+       export class LDKPaymentPurpose_SpontaneousPayment extends LDKPaymentPurpose {
+               constructor(public spontaneous_payment: Uint8Array) { super(); }
+       }
+       export function LDKPaymentPurpose_ref_from_ptr(ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LDKPaymentPurpose_ref_from_ptr(ptr);
+               return nativeResponseValue;
+       }
+       export class LDKCOption_u64Z {
+               protected constructor() {}
+       }
+       export class LDKCOption_u64Z_Some extends LDKCOption_u64Z {
+               constructor(public some: number) { super(); }
+       }
+       export class LDKCOption_u64Z_None extends LDKCOption_u64Z {
+               constructor() { super(); }
+       }
+       export function LDKCOption_u64Z_ref_from_ptr(ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LDKCOption_u64Z_ref_from_ptr(ptr);
+               return nativeResponseValue;
+       }
+       export class LDKNetworkUpdate {
+               protected constructor() {}
+       }
+       export class LDKNetworkUpdate_ChannelUpdateMessage extends LDKNetworkUpdate {
+               constructor(public msg: number) { super(); }
+       }
+       export class LDKNetworkUpdate_ChannelClosed extends LDKNetworkUpdate {
+               constructor(public short_channel_id: number, public is_permanent: boolean) { super(); }
+       }
+       export class LDKNetworkUpdate_NodeFailure extends LDKNetworkUpdate {
+               constructor(public node_id: Uint8Array, public is_permanent: boolean) { super(); }
+       }
+       export function LDKNetworkUpdate_ref_from_ptr(ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LDKNetworkUpdate_ref_from_ptr(ptr);
+               return nativeResponseValue;
+       }
+       export class LDKCOption_NetworkUpdateZ {
+               protected constructor() {}
+       }
+       export class LDKCOption_NetworkUpdateZ_Some extends LDKCOption_NetworkUpdateZ {
+               constructor(public some: number) { super(); }
+       }
+       export class LDKCOption_NetworkUpdateZ_None extends LDKCOption_NetworkUpdateZ {
+               constructor() { super(); }
+       }
+       export function LDKCOption_NetworkUpdateZ_ref_from_ptr(ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LDKCOption_NetworkUpdateZ_ref_from_ptr(ptr);
+               return nativeResponseValue;
+       }
+       export class LDKSpendableOutputDescriptor {
+               protected constructor() {}
+       }
+       export class LDKSpendableOutputDescriptor_StaticOutput extends LDKSpendableOutputDescriptor {
+               constructor(public outpoint: number, public output: number) { super(); }
+       }
+       export class LDKSpendableOutputDescriptor_DelayedPaymentOutput extends LDKSpendableOutputDescriptor {
+               constructor(public delayed_payment_output: number) { super(); }
+       }
+       export class LDKSpendableOutputDescriptor_StaticPaymentOutput extends LDKSpendableOutputDescriptor {
+               constructor(public static_payment_output: number) { super(); }
+       }
+       export function LDKSpendableOutputDescriptor_ref_from_ptr(ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LDKSpendableOutputDescriptor_ref_from_ptr(ptr);
+               return nativeResponseValue;
+       }
+       export class LDKClosureReason {
+               protected constructor() {}
+       }
+       export class LDKClosureReason_CounterpartyForceClosed extends LDKClosureReason {
+               constructor(public peer_msg: String) { super(); }
+       }
+       export class LDKClosureReason_HolderForceClosed extends LDKClosureReason {
+               constructor() { super(); }
+       }
+       export class LDKClosureReason_CooperativeClosure extends LDKClosureReason {
+               constructor() { super(); }
+       }
+       export class LDKClosureReason_CommitmentTxConfirmed extends LDKClosureReason {
+               constructor() { super(); }
+       }
+       export class LDKClosureReason_FundingTimedOut extends LDKClosureReason {
+               constructor() { super(); }
+       }
+       export class LDKClosureReason_ProcessingError extends LDKClosureReason {
+               constructor(public err: String) { super(); }
+       }
+       export class LDKClosureReason_DisconnectedPeer extends LDKClosureReason {
+               constructor() { super(); }
+       }
+       export class LDKClosureReason_OutdatedChannelManager extends LDKClosureReason {
+               constructor() { super(); }
+       }
+       export function LDKClosureReason_ref_from_ptr(ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LDKClosureReason_ref_from_ptr(ptr);
+               return nativeResponseValue;
+       }
+       export class LDKEvent {
+               protected constructor() {}
+       }
+       export class LDKEvent_FundingGenerationReady extends LDKEvent {
+               constructor(public temporary_channel_id: Uint8Array, public channel_value_satoshis: number, public output_script: Uint8Array, public user_channel_id: number) { super(); }
+       }
+       export class LDKEvent_PaymentReceived extends LDKEvent {
+               constructor(public payment_hash: Uint8Array, public amt: number, public purpose: number) { super(); }
+       }
+       export class LDKEvent_PaymentSent extends LDKEvent {
+               constructor(public payment_id: Uint8Array, public payment_preimage: Uint8Array, public payment_hash: Uint8Array, public fee_paid_msat: number) { super(); }
+       }
+       export class LDKEvent_PaymentPathFailed extends LDKEvent {
+               constructor(public payment_id: Uint8Array, public payment_hash: Uint8Array, public rejected_by_dest: boolean, public network_update: number, public all_paths_failed: boolean, public path: number[], public short_channel_id: number, public retry: number) { super(); }
+       }
+       export class LDKEvent_PaymentFailed extends LDKEvent {
+               constructor(public payment_id: Uint8Array, public payment_hash: Uint8Array) { super(); }
+       }
+       export class LDKEvent_PendingHTLCsForwardable extends LDKEvent {
+               constructor(public time_forwardable: number) { super(); }
+       }
+       export class LDKEvent_SpendableOutputs extends LDKEvent {
+               constructor(public outputs: number[]) { super(); }
+       }
+       export class LDKEvent_PaymentForwarded extends LDKEvent {
+               constructor(public fee_earned_msat: number, public claim_from_onchain_tx: boolean) { super(); }
+       }
+       export class LDKEvent_ChannelClosed extends LDKEvent {
+               constructor(public channel_id: Uint8Array, public user_channel_id: number, public reason: number) { super(); }
+       }
+       export class LDKEvent_DiscardFunding extends LDKEvent {
+               constructor(public channel_id: Uint8Array, public transaction: Uint8Array) { super(); }
+       }
+       export class LDKEvent_PaymentPathSuccessful extends LDKEvent {
+               constructor(public payment_id: Uint8Array, public payment_hash: Uint8Array, public path: number[]) { super(); }
+       }
+       export function LDKEvent_ref_from_ptr(ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LDKEvent_ref_from_ptr(ptr);
+               return nativeResponseValue;
+       }
+       // uintptr_t C2Tuple_usizeTransactionZ_get_a(LDKC2Tuple_usizeTransactionZ *NONNULL_PTR owner);
+       export function C2Tuple_usizeTransactionZ_get_a(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_usizeTransactionZ_get_a(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKTransaction C2Tuple_usizeTransactionZ_get_b(LDKC2Tuple_usizeTransactionZ *NONNULL_PTR owner);
+       export function C2Tuple_usizeTransactionZ_get_b(owner: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_usizeTransactionZ_get_b(owner);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // uint32_t C2Tuple_u32TxOutZ_get_a(LDKC2Tuple_u32TxOutZ *NONNULL_PTR owner);
+       export function C2Tuple_u32TxOutZ_get_a(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_u32TxOutZ_get_a(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKTxOut C2Tuple_u32TxOutZ_get_b(LDKC2Tuple_u32TxOutZ *NONNULL_PTR owner);
+       export function C2Tuple_u32TxOutZ_get_b(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_u32TxOutZ_get_b(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKThirtyTwoBytes C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_a(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR owner);
+       export function C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_a(owner: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_a(owner);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCVec_C2Tuple_u32TxOutZZ C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_b(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR owner);
+       export function C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_b(owner: number): number[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_b(owner);
+               return nativeResponseValue;
+       }
+       export class LDKBalance {
+               protected constructor() {}
+       }
+       export class LDKBalance_ClaimableOnChannelClose extends LDKBalance {
+               constructor(public claimable_amount_satoshis: number) { super(); }
+       }
+       export class LDKBalance_ClaimableAwaitingConfirmations extends LDKBalance {
+               constructor(public claimable_amount_satoshis: number, public confirmation_height: number) { super(); }
+       }
+       export class LDKBalance_ContentiousClaimable extends LDKBalance {
+               constructor(public claimable_amount_satoshis: number, public timeout_height: number) { super(); }
+       }
+       export class LDKBalance_MaybeClaimableHTLCAwaitingTimeout extends LDKBalance {
+               constructor(public claimable_amount_satoshis: number, public claimable_height: number) { super(); }
+       }
+       export function LDKBalance_ref_from_ptr(ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LDKBalance_ref_from_ptr(ptr);
+               return nativeResponseValue;
+       }
+       // struct LDKSignature C2Tuple_SignatureCVec_SignatureZZ_get_a(LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR owner);
+       export function C2Tuple_SignatureCVec_SignatureZZ_get_a(owner: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_SignatureCVec_SignatureZZ_get_a(owner);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCVec_SignatureZ C2Tuple_SignatureCVec_SignatureZZ_get_b(LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR owner);
+       export function C2Tuple_SignatureCVec_SignatureZZ_get_b(owner: number): Uint8Array[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_SignatureCVec_SignatureZZ_get_b(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKC2Tuple_SignatureCVec_SignatureZZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_ok(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR owner);
+       export function CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // void CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_err(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR owner);
+       export function CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_err(owner: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_err(owner);
+               // debug statements here
+       }
+       // struct LDKSignature CResult_SignatureNoneZ_get_ok(LDKCResult_SignatureNoneZ *NONNULL_PTR owner);
+       export function CResult_SignatureNoneZ_get_ok(owner: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_SignatureNoneZ_get_ok(owner);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void CResult_SignatureNoneZ_get_err(LDKCResult_SignatureNoneZ *NONNULL_PTR owner);
+       export function CResult_SignatureNoneZ_get_err(owner: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_SignatureNoneZ_get_err(owner);
+               // debug statements here
+       }
+
+
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
+
+               export interface LDKBaseSign {
+                       get_per_commitment_point (idx: number): Uint8Array;
+                       release_commitment_secret (idx: number): Uint8Array;
+                       validate_holder_commitment (holder_tx: number): number;
+                       channel_keys_id (): Uint8Array;
+                       sign_counterparty_commitment (commitment_tx: number): number;
+                       validate_counterparty_revocation (idx: number, secret: Uint8Array): number;
+                       sign_holder_commitment_and_htlcs (commitment_tx: number): number;
+                       sign_justice_revoked_output (justice_tx: Uint8Array, input: number, amount: number, per_commitment_key: Uint8Array): number;
+                       sign_justice_revoked_htlc (justice_tx: Uint8Array, input: number, amount: number, per_commitment_key: Uint8Array, htlc: number): number;
+                       sign_counterparty_htlc_transaction (htlc_tx: Uint8Array, input: number, amount: number, per_commitment_point: Uint8Array, htlc: number): number;
+                       sign_closing_transaction (closing_tx: number): number;
+                       sign_channel_announcement (msg: number): number;
+                       ready_channel (channel_parameters: number): void;
+               }
+
+               export function LDKBaseSign_new(impl: LDKBaseSign, pubkeys: number): number {
+            throw new Error('unimplemented'); // TODO: bind to WASM
+        }
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
+
+
+       // LDKPublicKey BaseSign_get_per_commitment_point LDKBaseSign *NONNULL_PTR this_arg, uint64_t idx
+       export function BaseSign_get_per_commitment_point(this_arg: number, idx: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BaseSign_get_per_commitment_point(this_arg, idx);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // LDKThirtyTwoBytes BaseSign_release_commitment_secret LDKBaseSign *NONNULL_PTR this_arg, uint64_t idx
+       export function BaseSign_release_commitment_secret(this_arg: number, idx: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BaseSign_release_commitment_secret(this_arg, idx);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // LDKCResult_NoneNoneZ BaseSign_validate_holder_commitment LDKBaseSign *NONNULL_PTR this_arg, const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx
+       export function BaseSign_validate_holder_commitment(this_arg: number, holder_tx: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BaseSign_validate_holder_commitment(this_arg, holder_tx);
+               return nativeResponseValue;
+       }
+       // LDKThirtyTwoBytes BaseSign_channel_keys_id LDKBaseSign *NONNULL_PTR this_arg
+       export function BaseSign_channel_keys_id(this_arg: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BaseSign_channel_keys_id(this_arg);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ BaseSign_sign_counterparty_commitment LDKBaseSign *NONNULL_PTR this_arg, const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx
+       export function BaseSign_sign_counterparty_commitment(this_arg: number, commitment_tx: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BaseSign_sign_counterparty_commitment(this_arg, commitment_tx);
+               return nativeResponseValue;
+       }
+       // LDKCResult_NoneNoneZ BaseSign_validate_counterparty_revocation LDKBaseSign *NONNULL_PTR this_arg, uint64_t idx, const uint8_t (*secret)[32]
+       export function BaseSign_validate_counterparty_revocation(this_arg: number, idx: number, secret: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BaseSign_validate_counterparty_revocation(this_arg, idx, encodeUint8Array(secret));
+               return nativeResponseValue;
+       }
+       // LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ BaseSign_sign_holder_commitment_and_htlcs LDKBaseSign *NONNULL_PTR this_arg, const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx
+       export function BaseSign_sign_holder_commitment_and_htlcs(this_arg: number, commitment_tx: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BaseSign_sign_holder_commitment_and_htlcs(this_arg, commitment_tx);
+               return nativeResponseValue;
+       }
+       // LDKCResult_SignatureNoneZ BaseSign_sign_justice_revoked_output LDKBaseSign *NONNULL_PTR this_arg, struct LDKTransaction justice_tx, uintptr_t input, uint64_t amount, const uint8_t (*per_commitment_key)[32]
+       export function BaseSign_sign_justice_revoked_output(this_arg: number, justice_tx: Uint8Array, input: number, amount: number, per_commitment_key: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BaseSign_sign_justice_revoked_output(this_arg, encodeUint8Array(justice_tx), input, amount, encodeUint8Array(per_commitment_key));
+               return nativeResponseValue;
+       }
+       // LDKCResult_SignatureNoneZ BaseSign_sign_justice_revoked_htlc LDKBaseSign *NONNULL_PTR this_arg, struct LDKTransaction justice_tx, uintptr_t input, uint64_t amount, const uint8_t (*per_commitment_key)[32], const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc
+       export function BaseSign_sign_justice_revoked_htlc(this_arg: number, justice_tx: Uint8Array, input: number, amount: number, per_commitment_key: Uint8Array, htlc: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BaseSign_sign_justice_revoked_htlc(this_arg, encodeUint8Array(justice_tx), input, amount, encodeUint8Array(per_commitment_key), htlc);
+               return nativeResponseValue;
+       }
+       // LDKCResult_SignatureNoneZ BaseSign_sign_counterparty_htlc_transaction LDKBaseSign *NONNULL_PTR this_arg, struct LDKTransaction htlc_tx, uintptr_t input, uint64_t amount, struct LDKPublicKey per_commitment_point, const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc
+       export function BaseSign_sign_counterparty_htlc_transaction(this_arg: number, htlc_tx: Uint8Array, input: number, amount: number, per_commitment_point: Uint8Array, htlc: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BaseSign_sign_counterparty_htlc_transaction(this_arg, encodeUint8Array(htlc_tx), input, amount, encodeUint8Array(per_commitment_point), htlc);
+               return nativeResponseValue;
+       }
+       // LDKCResult_SignatureNoneZ BaseSign_sign_closing_transaction LDKBaseSign *NONNULL_PTR this_arg, const struct LDKClosingTransaction *NONNULL_PTR closing_tx
+       export function BaseSign_sign_closing_transaction(this_arg: number, closing_tx: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BaseSign_sign_closing_transaction(this_arg, closing_tx);
+               return nativeResponseValue;
+       }
+       // LDKCResult_SignatureNoneZ BaseSign_sign_channel_announcement LDKBaseSign *NONNULL_PTR this_arg, const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg
+       export function BaseSign_sign_channel_announcement(this_arg: number, msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BaseSign_sign_channel_announcement(this_arg, msg);
+               return nativeResponseValue;
+       }
+       // void BaseSign_ready_channel LDKBaseSign *NONNULL_PTR this_arg, const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters
+       export function BaseSign_ready_channel(this_arg: number, channel_parameters: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BaseSign_ready_channel(this_arg, channel_parameters);
+               // debug statements here
+       }
+       // LDKChannelPublicKeys BaseSign_get_pubkeys LDKBaseSign *NONNULL_PTR this_arg
+       export function BaseSign_get_pubkeys(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BaseSign_get_pubkeys(this_arg);
+               return nativeResponseValue;
+       }
+
+
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
+
+               export interface LDKSign {
+                       write (): Uint8Array;
+               }
+
+               export function LDKSign_new(impl: LDKSign, BaseSign: LDKBaseSign, pubkeys: number): number {
+            throw new Error('unimplemented'); // TODO: bind to WASM
+        }
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
+
+
+       // LDKCVec_u8Z Sign_write LDKSign *NONNULL_PTR this_arg
+       export function Sign_write(this_arg: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Sign_write(this_arg);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKThirtyTwoBytes C2Tuple_BlockHashChannelMonitorZ_get_a(LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR owner);
+       export function C2Tuple_BlockHashChannelMonitorZ_get_a(owner: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_BlockHashChannelMonitorZ_get_a(owner);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKChannelMonitor C2Tuple_BlockHashChannelMonitorZ_get_b(LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR owner);
+       export function C2Tuple_BlockHashChannelMonitorZ_get_b(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_BlockHashChannelMonitorZ_get_b(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKC2Tuple_BlockHashChannelMonitorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_ok(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_err(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKRouteHop CResult_RouteHopDecodeErrorZ_get_ok(LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_RouteHopDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteHopDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_RouteHopDecodeErrorZ_get_err(LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_RouteHopDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteHopDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKRoute CResult_RouteDecodeErrorZ_get_ok(LDKCResult_RouteDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_RouteDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_RouteDecodeErrorZ_get_err(LDKCResult_RouteDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_RouteDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKRouteParameters CResult_RouteParametersDecodeErrorZ_get_ok(LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_RouteParametersDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteParametersDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_RouteParametersDecodeErrorZ_get_err(LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_RouteParametersDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteParametersDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKPayee CResult_PayeeDecodeErrorZ_get_ok(LDKCResult_PayeeDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_PayeeDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PayeeDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_PayeeDecodeErrorZ_get_err(LDKCResult_PayeeDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_PayeeDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PayeeDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKRouteHint CResult_RouteHintDecodeErrorZ_get_ok(LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_RouteHintDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteHintDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_RouteHintDecodeErrorZ_get_err(LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_RouteHintDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteHintDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKRouteHintHop CResult_RouteHintHopDecodeErrorZ_get_ok(LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_RouteHintHopDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteHintHopDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_RouteHintHopDecodeErrorZ_get_err(LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_RouteHintHopDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteHintHopDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKRoute CResult_RouteLightningErrorZ_get_ok(LDKCResult_RouteLightningErrorZ *NONNULL_PTR owner);
+       export function CResult_RouteLightningErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteLightningErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKLightningError CResult_RouteLightningErrorZ_get_err(LDKCResult_RouteLightningErrorZ *NONNULL_PTR owner);
+       export function CResult_RouteLightningErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteLightningErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // void CResult_NoneLightningErrorZ_get_ok(LDKCResult_NoneLightningErrorZ *NONNULL_PTR owner);
+       export function CResult_NoneLightningErrorZ_get_ok(owner: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NoneLightningErrorZ_get_ok(owner);
+               // debug statements here
+       }
+       // struct LDKLightningError CResult_NoneLightningErrorZ_get_err(LDKCResult_NoneLightningErrorZ *NONNULL_PTR owner);
+       export function CResult_NoneLightningErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NoneLightningErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKPublicKey C2Tuple_PublicKeyTypeZ_get_a(LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR owner);
+       export function C2Tuple_PublicKeyTypeZ_get_a(owner: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_PublicKeyTypeZ_get_a(owner);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKType C2Tuple_PublicKeyTypeZ_get_b(LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR owner);
+       export function C2Tuple_PublicKeyTypeZ_get_b(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_PublicKeyTypeZ_get_b(owner);
+               return nativeResponseValue;
+       }
+       export class LDKErrorAction {
+               protected constructor() {}
+       }
+       export class LDKErrorAction_DisconnectPeer extends LDKErrorAction {
+               constructor(public msg: number) { super(); }
+       }
+       export class LDKErrorAction_IgnoreError extends LDKErrorAction {
+               constructor() { super(); }
+       }
+       export class LDKErrorAction_IgnoreAndLog extends LDKErrorAction {
+               constructor(public ignore_and_log: Level) { super(); }
+       }
+       export class LDKErrorAction_IgnoreDuplicateGossip extends LDKErrorAction {
+               constructor() { super(); }
+       }
+       export class LDKErrorAction_SendErrorMessage extends LDKErrorAction {
+               constructor(public msg: number) { super(); }
+       }
+       export function LDKErrorAction_ref_from_ptr(ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LDKErrorAction_ref_from_ptr(ptr);
+               return nativeResponseValue;
+       }
+       export class LDKMessageSendEvent {
+               protected constructor() {}
+       }
+       export class LDKMessageSendEvent_SendAcceptChannel extends LDKMessageSendEvent {
+               constructor(public node_id: Uint8Array, public msg: number) { super(); }
+       }
+       export class LDKMessageSendEvent_SendOpenChannel extends LDKMessageSendEvent {
+               constructor(public node_id: Uint8Array, public msg: number) { super(); }
+       }
+       export class LDKMessageSendEvent_SendFundingCreated extends LDKMessageSendEvent {
+               constructor(public node_id: Uint8Array, public msg: number) { super(); }
+       }
+       export class LDKMessageSendEvent_SendFundingSigned extends LDKMessageSendEvent {
+               constructor(public node_id: Uint8Array, public msg: number) { super(); }
+       }
+       export class LDKMessageSendEvent_SendFundingLocked extends LDKMessageSendEvent {
+               constructor(public node_id: Uint8Array, public msg: number) { super(); }
+       }
+       export class LDKMessageSendEvent_SendAnnouncementSignatures extends LDKMessageSendEvent {
+               constructor(public node_id: Uint8Array, public msg: number) { super(); }
+       }
+       export class LDKMessageSendEvent_UpdateHTLCs extends LDKMessageSendEvent {
+               constructor(public node_id: Uint8Array, public updates: number) { super(); }
+       }
+       export class LDKMessageSendEvent_SendRevokeAndACK extends LDKMessageSendEvent {
+               constructor(public node_id: Uint8Array, public msg: number) { super(); }
+       }
+       export class LDKMessageSendEvent_SendClosingSigned extends LDKMessageSendEvent {
+               constructor(public node_id: Uint8Array, public msg: number) { super(); }
+       }
+       export class LDKMessageSendEvent_SendShutdown extends LDKMessageSendEvent {
+               constructor(public node_id: Uint8Array, public msg: number) { super(); }
+       }
+       export class LDKMessageSendEvent_SendChannelReestablish extends LDKMessageSendEvent {
+               constructor(public node_id: Uint8Array, public msg: number) { super(); }
+       }
+       export class LDKMessageSendEvent_BroadcastChannelAnnouncement extends LDKMessageSendEvent {
+               constructor(public msg: number, public update_msg: number) { super(); }
+       }
+       export class LDKMessageSendEvent_BroadcastNodeAnnouncement extends LDKMessageSendEvent {
+               constructor(public msg: number) { super(); }
+       }
+       export class LDKMessageSendEvent_BroadcastChannelUpdate extends LDKMessageSendEvent {
+               constructor(public msg: number) { super(); }
+       }
+       export class LDKMessageSendEvent_SendChannelUpdate extends LDKMessageSendEvent {
+               constructor(public node_id: Uint8Array, public msg: number) { super(); }
+       }
+       export class LDKMessageSendEvent_HandleError extends LDKMessageSendEvent {
+               constructor(public node_id: Uint8Array, public action: number) { super(); }
+       }
+       export class LDKMessageSendEvent_SendChannelRangeQuery extends LDKMessageSendEvent {
+               constructor(public node_id: Uint8Array, public msg: number) { super(); }
+       }
+       export class LDKMessageSendEvent_SendShortIdsQuery extends LDKMessageSendEvent {
+               constructor(public node_id: Uint8Array, public msg: number) { super(); }
+       }
+       export class LDKMessageSendEvent_SendReplyChannelRange extends LDKMessageSendEvent {
+               constructor(public node_id: Uint8Array, public msg: number) { super(); }
+       }
+       export function LDKMessageSendEvent_ref_from_ptr(ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LDKMessageSendEvent_ref_from_ptr(ptr);
+               return nativeResponseValue;
+       }
+       // bool CResult_boolLightningErrorZ_get_ok(LDKCResult_boolLightningErrorZ *NONNULL_PTR owner);
+       export function CResult_boolLightningErrorZ_get_ok(owner: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_boolLightningErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKLightningError CResult_boolLightningErrorZ_get_err(LDKCResult_boolLightningErrorZ *NONNULL_PTR owner);
+       export function CResult_boolLightningErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_boolLightningErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKChannelAnnouncement C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR owner);
+       export function C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKChannelUpdate C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR owner);
+       export function C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKChannelUpdate C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR owner);
+       export function C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z CResult_CVec_u8ZPeerHandleErrorZ_get_ok(LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR owner);
+       export function CResult_CVec_u8ZPeerHandleErrorZ_get_ok(owner: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_CVec_u8ZPeerHandleErrorZ_get_ok(owner);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKPeerHandleError CResult_CVec_u8ZPeerHandleErrorZ_get_err(LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR owner);
+       export function CResult_CVec_u8ZPeerHandleErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_CVec_u8ZPeerHandleErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // void CResult_NonePeerHandleErrorZ_get_ok(LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR owner);
+       export function CResult_NonePeerHandleErrorZ_get_ok(owner: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NonePeerHandleErrorZ_get_ok(owner);
+               // debug statements here
+       }
+       // struct LDKPeerHandleError CResult_NonePeerHandleErrorZ_get_err(LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR owner);
+       export function CResult_NonePeerHandleErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NonePeerHandleErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // bool CResult_boolPeerHandleErrorZ_get_ok(LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR owner);
+       export function CResult_boolPeerHandleErrorZ_get_ok(owner: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_boolPeerHandleErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKPeerHandleError CResult_boolPeerHandleErrorZ_get_err(LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR owner);
+       export function CResult_boolPeerHandleErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_boolPeerHandleErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKTxOut CResult_TxOutAccessErrorZ_get_ok(LDKCResult_TxOutAccessErrorZ *NONNULL_PTR owner);
+       export function CResult_TxOutAccessErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TxOutAccessErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // enum LDKAccessError CResult_TxOutAccessErrorZ_get_err(LDKCResult_TxOutAccessErrorZ *NONNULL_PTR owner);
+       export function CResult_TxOutAccessErrorZ_get_err(owner: number): AccessError {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TxOutAccessErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // void CResult_NoneChannelMonitorUpdateErrZ_get_ok(LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR owner);
+       export function CResult_NoneChannelMonitorUpdateErrZ_get_ok(owner: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NoneChannelMonitorUpdateErrZ_get_ok(owner);
+               // debug statements here
+       }
+       // enum LDKChannelMonitorUpdateErr CResult_NoneChannelMonitorUpdateErrZ_get_err(LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR owner);
+       export function CResult_NoneChannelMonitorUpdateErrZ_get_err(owner: number): ChannelMonitorUpdateErr {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NoneChannelMonitorUpdateErrZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       export class LDKCOption_C2Tuple_usizeTransactionZZ {
+               protected constructor() {}
+       }
+       export class LDKCOption_C2Tuple_usizeTransactionZZ_Some extends LDKCOption_C2Tuple_usizeTransactionZZ {
+               constructor(public some: number) { super(); }
+       }
+       export class LDKCOption_C2Tuple_usizeTransactionZZ_None extends LDKCOption_C2Tuple_usizeTransactionZZ {
+               constructor() { super(); }
+       }
+       export function LDKCOption_C2Tuple_usizeTransactionZZ_ref_from_ptr(ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LDKCOption_C2Tuple_usizeTransactionZZ_ref_from_ptr(ptr);
+               return nativeResponseValue;
+       }
+       export class LDKCOption_ClosureReasonZ {
+               protected constructor() {}
+       }
+       export class LDKCOption_ClosureReasonZ_Some extends LDKCOption_ClosureReasonZ {
+               constructor(public some: number) { super(); }
+       }
+       export class LDKCOption_ClosureReasonZ_None extends LDKCOption_ClosureReasonZ {
+               constructor() { super(); }
+       }
+       export function LDKCOption_ClosureReasonZ_ref_from_ptr(ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LDKCOption_ClosureReasonZ_ref_from_ptr(ptr);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_ClosureReasonZ CResult_COption_ClosureReasonZDecodeErrorZ_get_ok(LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_COption_ClosureReasonZDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_ClosureReasonZDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_COption_ClosureReasonZDecodeErrorZ_get_err(LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_COption_ClosureReasonZDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_ClosureReasonZDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       export class LDKCOption_EventZ {
+               protected constructor() {}
+       }
+       export class LDKCOption_EventZ_Some extends LDKCOption_EventZ {
+               constructor(public some: number) { super(); }
+       }
+       export class LDKCOption_EventZ_None extends LDKCOption_EventZ {
+               constructor() { super(); }
+       }
+       export function LDKCOption_EventZ_ref_from_ptr(ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LDKCOption_EventZ_ref_from_ptr(ptr);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_EventZ CResult_COption_EventZDecodeErrorZ_get_ok(LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_COption_EventZDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_EventZDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_COption_EventZDecodeErrorZ_get_err(LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_COption_EventZDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_EventZDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKNodeId CResult_NodeIdDecodeErrorZ_get_ok(LDKCResult_NodeIdDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_NodeIdDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NodeIdDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_NodeIdDecodeErrorZ_get_err(LDKCResult_NodeIdDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_NodeIdDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NodeIdDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_NetworkUpdateZ CResult_COption_NetworkUpdateZDecodeErrorZ_get_ok(LDKCResult_COption_NetworkUpdateZDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_COption_NetworkUpdateZDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_NetworkUpdateZDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_COption_NetworkUpdateZDecodeErrorZ_get_err(LDKCResult_COption_NetworkUpdateZDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_COption_NetworkUpdateZDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_NetworkUpdateZDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+
+
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
+
+               export interface LDKAccess {
+                       get_utxo (genesis_hash: Uint8Array, short_channel_id: number): number;
+               }
+
+               export function LDKAccess_new(impl: LDKAccess): number {
+            throw new Error('unimplemented'); // TODO: bind to WASM
+        }
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
+
+
+       // LDKCResult_TxOutAccessErrorZ Access_get_utxo LDKAccess *NONNULL_PTR this_arg, const uint8_t (*genesis_hash)[32], uint64_t short_channel_id
+       export function Access_get_utxo(this_arg: number, genesis_hash: Uint8Array, short_channel_id: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Access_get_utxo(this_arg, encodeUint8Array(genesis_hash), short_channel_id);
+               return nativeResponseValue;
+       }
+       export class LDKCOption_AccessZ {
+               protected constructor() {}
+       }
+       export class LDKCOption_AccessZ_Some extends LDKCOption_AccessZ {
+               constructor(public some: number) { super(); }
+       }
+       export class LDKCOption_AccessZ_None extends LDKCOption_AccessZ {
+               constructor() { super(); }
+       }
+       export function LDKCOption_AccessZ_ref_from_ptr(ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LDKCOption_AccessZ_ref_from_ptr(ptr);
+               return nativeResponseValue;
+       }
+       // struct LDKDirectionalChannelInfo CResult_DirectionalChannelInfoDecodeErrorZ_get_ok(LDKCResult_DirectionalChannelInfoDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_DirectionalChannelInfoDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_DirectionalChannelInfoDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_DirectionalChannelInfoDecodeErrorZ_get_err(LDKCResult_DirectionalChannelInfoDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_DirectionalChannelInfoDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_DirectionalChannelInfoDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKChannelInfo CResult_ChannelInfoDecodeErrorZ_get_ok(LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ChannelInfoDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelInfoDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_ChannelInfoDecodeErrorZ_get_err(LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ChannelInfoDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelInfoDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKRoutingFees CResult_RoutingFeesDecodeErrorZ_get_ok(LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_RoutingFeesDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RoutingFeesDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_RoutingFeesDecodeErrorZ_get_err(LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_RoutingFeesDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RoutingFeesDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       export class LDKNetAddress {
+               protected constructor() {}
+       }
+       export class LDKNetAddress_IPv4 extends LDKNetAddress {
+               constructor(public addr: Uint8Array, public port: number) { super(); }
+       }
+       export class LDKNetAddress_IPv6 extends LDKNetAddress {
+               constructor(public addr: Uint8Array, public port: number) { super(); }
+       }
+       export class LDKNetAddress_OnionV2 extends LDKNetAddress {
+               constructor(public onion_v2: Uint8Array) { super(); }
+       }
+       export class LDKNetAddress_OnionV3 extends LDKNetAddress {
+               constructor(public ed25519_pubkey: Uint8Array, public checksum: number, public version: number, public port: number) { super(); }
+       }
+       export function LDKNetAddress_ref_from_ptr(ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LDKNetAddress_ref_from_ptr(ptr);
+               return nativeResponseValue;
+       }
+       // struct LDKNodeAnnouncementInfo CResult_NodeAnnouncementInfoDecodeErrorZ_get_ok(LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_NodeAnnouncementInfoDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NodeAnnouncementInfoDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_NodeAnnouncementInfoDecodeErrorZ_get_err(LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_NodeAnnouncementInfoDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NodeAnnouncementInfoDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKNodeInfo CResult_NodeInfoDecodeErrorZ_get_ok(LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_NodeInfoDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NodeInfoDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_NodeInfoDecodeErrorZ_get_err(LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_NodeInfoDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NodeInfoDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKNetworkGraph CResult_NetworkGraphDecodeErrorZ_get_ok(LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_NetworkGraphDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NetworkGraphDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_NetworkGraphDecodeErrorZ_get_err(LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_NetworkGraphDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NetworkGraphDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       export class LDKCOption_CVec_NetAddressZZ {
+               protected constructor() {}
+       }
+       export class LDKCOption_CVec_NetAddressZZ_Some extends LDKCOption_CVec_NetAddressZZ {
+               constructor(public some: number[]) { super(); }
+       }
+       export class LDKCOption_CVec_NetAddressZZ_None extends LDKCOption_CVec_NetAddressZZ {
+               constructor() { super(); }
+       }
+       export function LDKCOption_CVec_NetAddressZZ_ref_from_ptr(ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LDKCOption_CVec_NetAddressZZ_ref_from_ptr(ptr);
+               return nativeResponseValue;
+       }
+       // struct LDKScoringParameters *CResult_ScoringParametersDecodeErrorZ_get_ok(LDKCResult_ScoringParametersDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ScoringParametersDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ScoringParametersDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_ScoringParametersDecodeErrorZ_get_err(LDKCResult_ScoringParametersDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ScoringParametersDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ScoringParametersDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKInitFeatures CResult_InitFeaturesDecodeErrorZ_get_ok(LDKCResult_InitFeaturesDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_InitFeaturesDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_InitFeaturesDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_InitFeaturesDecodeErrorZ_get_err(LDKCResult_InitFeaturesDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_InitFeaturesDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_InitFeaturesDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKChannelFeatures CResult_ChannelFeaturesDecodeErrorZ_get_ok(LDKCResult_ChannelFeaturesDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ChannelFeaturesDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelFeaturesDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_ChannelFeaturesDecodeErrorZ_get_err(LDKCResult_ChannelFeaturesDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ChannelFeaturesDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelFeaturesDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKNodeFeatures CResult_NodeFeaturesDecodeErrorZ_get_ok(LDKCResult_NodeFeaturesDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_NodeFeaturesDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NodeFeaturesDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_NodeFeaturesDecodeErrorZ_get_err(LDKCResult_NodeFeaturesDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_NodeFeaturesDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NodeFeaturesDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKInvoiceFeatures CResult_InvoiceFeaturesDecodeErrorZ_get_ok(LDKCResult_InvoiceFeaturesDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_InvoiceFeaturesDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_InvoiceFeaturesDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_InvoiceFeaturesDecodeErrorZ_get_err(LDKCResult_InvoiceFeaturesDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_InvoiceFeaturesDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_InvoiceFeaturesDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKChannelTypeFeatures CResult_ChannelTypeFeaturesDecodeErrorZ_get_ok(LDKCResult_ChannelTypeFeaturesDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ChannelTypeFeaturesDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelTypeFeaturesDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_ChannelTypeFeaturesDecodeErrorZ_get_err(LDKCResult_ChannelTypeFeaturesDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ChannelTypeFeaturesDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelTypeFeaturesDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKNetAddress CResult_NetAddressDecodeErrorZ_get_ok(LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_NetAddressDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NetAddressDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_NetAddressDecodeErrorZ_get_err(LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_NetAddressDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NetAddressDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKAcceptChannel CResult_AcceptChannelDecodeErrorZ_get_ok(LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_AcceptChannelDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_AcceptChannelDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_AcceptChannelDecodeErrorZ_get_err(LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_AcceptChannelDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_AcceptChannelDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKAnnouncementSignatures CResult_AnnouncementSignaturesDecodeErrorZ_get_ok(LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_AnnouncementSignaturesDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_AnnouncementSignaturesDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_AnnouncementSignaturesDecodeErrorZ_get_err(LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_AnnouncementSignaturesDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_AnnouncementSignaturesDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKChannelReestablish CResult_ChannelReestablishDecodeErrorZ_get_ok(LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ChannelReestablishDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelReestablishDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_ChannelReestablishDecodeErrorZ_get_err(LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ChannelReestablishDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelReestablishDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKClosingSigned CResult_ClosingSignedDecodeErrorZ_get_ok(LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ClosingSignedDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ClosingSignedDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_ClosingSignedDecodeErrorZ_get_err(LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ClosingSignedDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ClosingSignedDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKClosingSignedFeeRange CResult_ClosingSignedFeeRangeDecodeErrorZ_get_ok(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ClosingSignedFeeRangeDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_ClosingSignedFeeRangeDecodeErrorZ_get_err(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ClosingSignedFeeRangeDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKCommitmentSigned CResult_CommitmentSignedDecodeErrorZ_get_ok(LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_CommitmentSignedDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_CommitmentSignedDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_CommitmentSignedDecodeErrorZ_get_err(LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_CommitmentSignedDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_CommitmentSignedDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKFundingCreated CResult_FundingCreatedDecodeErrorZ_get_ok(LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_FundingCreatedDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_FundingCreatedDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_FundingCreatedDecodeErrorZ_get_err(LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_FundingCreatedDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_FundingCreatedDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKFundingSigned CResult_FundingSignedDecodeErrorZ_get_ok(LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_FundingSignedDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_FundingSignedDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_FundingSignedDecodeErrorZ_get_err(LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_FundingSignedDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_FundingSignedDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKFundingLocked CResult_FundingLockedDecodeErrorZ_get_ok(LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_FundingLockedDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_FundingLockedDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_FundingLockedDecodeErrorZ_get_err(LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_FundingLockedDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_FundingLockedDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKInit CResult_InitDecodeErrorZ_get_ok(LDKCResult_InitDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_InitDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_InitDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_InitDecodeErrorZ_get_err(LDKCResult_InitDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_InitDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_InitDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKOpenChannel CResult_OpenChannelDecodeErrorZ_get_ok(LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_OpenChannelDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_OpenChannelDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_OpenChannelDecodeErrorZ_get_err(LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_OpenChannelDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_OpenChannelDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKRevokeAndACK CResult_RevokeAndACKDecodeErrorZ_get_ok(LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_RevokeAndACKDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RevokeAndACKDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_RevokeAndACKDecodeErrorZ_get_err(LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_RevokeAndACKDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RevokeAndACKDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKShutdown CResult_ShutdownDecodeErrorZ_get_ok(LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ShutdownDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ShutdownDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_ShutdownDecodeErrorZ_get_err(LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ShutdownDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ShutdownDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKUpdateFailHTLC CResult_UpdateFailHTLCDecodeErrorZ_get_ok(LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_UpdateFailHTLCDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UpdateFailHTLCDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_UpdateFailHTLCDecodeErrorZ_get_err(LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_UpdateFailHTLCDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UpdateFailHTLCDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKUpdateFailMalformedHTLC CResult_UpdateFailMalformedHTLCDecodeErrorZ_get_ok(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_UpdateFailMalformedHTLCDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_UpdateFailMalformedHTLCDecodeErrorZ_get_err(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_UpdateFailMalformedHTLCDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKUpdateFee CResult_UpdateFeeDecodeErrorZ_get_ok(LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_UpdateFeeDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UpdateFeeDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_UpdateFeeDecodeErrorZ_get_err(LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_UpdateFeeDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UpdateFeeDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKUpdateFulfillHTLC CResult_UpdateFulfillHTLCDecodeErrorZ_get_ok(LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_UpdateFulfillHTLCDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UpdateFulfillHTLCDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_UpdateFulfillHTLCDecodeErrorZ_get_err(LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_UpdateFulfillHTLCDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UpdateFulfillHTLCDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKUpdateAddHTLC CResult_UpdateAddHTLCDecodeErrorZ_get_ok(LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_UpdateAddHTLCDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UpdateAddHTLCDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_UpdateAddHTLCDecodeErrorZ_get_err(LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_UpdateAddHTLCDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UpdateAddHTLCDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKPing CResult_PingDecodeErrorZ_get_ok(LDKCResult_PingDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_PingDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PingDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_PingDecodeErrorZ_get_err(LDKCResult_PingDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_PingDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PingDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKPong CResult_PongDecodeErrorZ_get_ok(LDKCResult_PongDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_PongDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PongDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_PongDecodeErrorZ_get_err(LDKCResult_PongDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_PongDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PongDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKUnsignedChannelAnnouncement CResult_UnsignedChannelAnnouncementDecodeErrorZ_get_ok(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_UnsignedChannelAnnouncementDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_UnsignedChannelAnnouncementDecodeErrorZ_get_err(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_UnsignedChannelAnnouncementDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKChannelAnnouncement CResult_ChannelAnnouncementDecodeErrorZ_get_ok(LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ChannelAnnouncementDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelAnnouncementDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_ChannelAnnouncementDecodeErrorZ_get_err(LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ChannelAnnouncementDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelAnnouncementDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKUnsignedChannelUpdate CResult_UnsignedChannelUpdateDecodeErrorZ_get_ok(LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_UnsignedChannelUpdateDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UnsignedChannelUpdateDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_UnsignedChannelUpdateDecodeErrorZ_get_err(LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_UnsignedChannelUpdateDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UnsignedChannelUpdateDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKChannelUpdate CResult_ChannelUpdateDecodeErrorZ_get_ok(LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ChannelUpdateDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelUpdateDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_ChannelUpdateDecodeErrorZ_get_err(LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ChannelUpdateDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelUpdateDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKErrorMessage CResult_ErrorMessageDecodeErrorZ_get_ok(LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ErrorMessageDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ErrorMessageDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_ErrorMessageDecodeErrorZ_get_err(LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ErrorMessageDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ErrorMessageDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKUnsignedNodeAnnouncement CResult_UnsignedNodeAnnouncementDecodeErrorZ_get_ok(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_UnsignedNodeAnnouncementDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_UnsignedNodeAnnouncementDecodeErrorZ_get_err(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_UnsignedNodeAnnouncementDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKNodeAnnouncement CResult_NodeAnnouncementDecodeErrorZ_get_ok(LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_NodeAnnouncementDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NodeAnnouncementDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_NodeAnnouncementDecodeErrorZ_get_err(LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_NodeAnnouncementDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NodeAnnouncementDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKQueryShortChannelIds CResult_QueryShortChannelIdsDecodeErrorZ_get_ok(LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_QueryShortChannelIdsDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_QueryShortChannelIdsDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_QueryShortChannelIdsDecodeErrorZ_get_err(LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_QueryShortChannelIdsDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_QueryShortChannelIdsDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKReplyShortChannelIdsEnd CResult_ReplyShortChannelIdsEndDecodeErrorZ_get_ok(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ReplyShortChannelIdsEndDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_ReplyShortChannelIdsEndDecodeErrorZ_get_err(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ReplyShortChannelIdsEndDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKQueryChannelRange CResult_QueryChannelRangeDecodeErrorZ_get_ok(LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_QueryChannelRangeDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_QueryChannelRangeDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_QueryChannelRangeDecodeErrorZ_get_err(LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_QueryChannelRangeDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_QueryChannelRangeDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKReplyChannelRange CResult_ReplyChannelRangeDecodeErrorZ_get_ok(LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ReplyChannelRangeDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ReplyChannelRangeDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_ReplyChannelRangeDecodeErrorZ_get_err(LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_ReplyChannelRangeDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ReplyChannelRangeDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKGossipTimestampFilter CResult_GossipTimestampFilterDecodeErrorZ_get_ok(LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_GossipTimestampFilterDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_GossipTimestampFilterDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_GossipTimestampFilterDecodeErrorZ_get_err(LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_GossipTimestampFilterDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_GossipTimestampFilterDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDelayedPaymentOutputDescriptor CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_ok(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_err(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKStaticPaymentOutputDescriptor CResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_ok(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_err(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKSpendableOutputDescriptor CResult_SpendableOutputDescriptorDecodeErrorZ_get_ok(LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_SpendableOutputDescriptorDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_SpendableOutputDescriptorDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_SpendableOutputDescriptorDecodeErrorZ_get_err(LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_SpendableOutputDescriptorDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_SpendableOutputDescriptorDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKSign CResult_SignDecodeErrorZ_get_ok(LDKCResult_SignDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_SignDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_SignDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_SignDecodeErrorZ_get_err(LDKCResult_SignDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_SignDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_SignDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKRecoverableSignature CResult_RecoverableSignatureNoneZ_get_ok(LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR owner);
+       export function CResult_RecoverableSignatureNoneZ_get_ok(owner: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RecoverableSignatureNoneZ_get_ok(owner);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void CResult_RecoverableSignatureNoneZ_get_err(LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR owner);
+       export function CResult_RecoverableSignatureNoneZ_get_err(owner: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RecoverableSignatureNoneZ_get_err(owner);
+               // debug statements here
+       }
+       // struct LDKCVec_CVec_u8ZZ CResult_CVec_CVec_u8ZZNoneZ_get_ok(LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR owner);
+       export function CResult_CVec_CVec_u8ZZNoneZ_get_ok(owner: number): Uint8Array[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_CVec_CVec_u8ZZNoneZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // void CResult_CVec_CVec_u8ZZNoneZ_get_err(LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR owner);
+       export function CResult_CVec_CVec_u8ZZNoneZ_get_err(owner: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_CVec_CVec_u8ZZNoneZ_get_err(owner);
+               // debug statements here
+       }
+       // struct LDKInMemorySigner CResult_InMemorySignerDecodeErrorZ_get_ok(LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_InMemorySignerDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_InMemorySignerDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_InMemorySignerDecodeErrorZ_get_err(LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_InMemorySignerDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_InMemorySignerDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKTransaction CResult_TransactionNoneZ_get_ok(LDKCResult_TransactionNoneZ *NONNULL_PTR owner);
+       export function CResult_TransactionNoneZ_get_ok(owner: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TransactionNoneZ_get_ok(owner);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void CResult_TransactionNoneZ_get_err(LDKCResult_TransactionNoneZ *NONNULL_PTR owner);
+       export function CResult_TransactionNoneZ_get_err(owner: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TransactionNoneZ_get_err(owner);
+               // debug statements here
+       }
+
+
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
+
+               export interface LDKFilter {
+                       register_tx (txid: Uint8Array, script_pubkey: Uint8Array): void;
+                       register_output (output: number): number;
+               }
+
+               export function LDKFilter_new(impl: LDKFilter): number {
+            throw new Error('unimplemented'); // TODO: bind to WASM
+        }
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
+
+
+       // void Filter_register_tx LDKFilter *NONNULL_PTR this_arg, const uint8_t (*txid)[32], struct LDKu8slice script_pubkey
+       export function Filter_register_tx(this_arg: number, txid: Uint8Array, script_pubkey: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Filter_register_tx(this_arg, encodeUint8Array(txid), encodeUint8Array(script_pubkey));
+               // debug statements here
+       }
+       // LDKCOption_C2Tuple_usizeTransactionZZ Filter_register_output LDKFilter *NONNULL_PTR this_arg, struct LDKWatchedOutput output
+       export function Filter_register_output(this_arg: number, output: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Filter_register_output(this_arg, output);
+               return nativeResponseValue;
+       }
+       export class LDKCOption_FilterZ {
+               protected constructor() {}
+       }
+       export class LDKCOption_FilterZ_Some extends LDKCOption_FilterZ {
+               constructor(public some: number) { super(); }
+       }
+       export class LDKCOption_FilterZ_None extends LDKCOption_FilterZ {
+               constructor() { super(); }
+       }
+       export function LDKCOption_FilterZ_ref_from_ptr(ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LDKCOption_FilterZ_ref_from_ptr(ptr);
+               return nativeResponseValue;
+       }
+       // struct LDKLockedChannelMonitor *CResult_LockedChannelMonitorNoneZ_get_ok(LDKCResult_LockedChannelMonitorNoneZ *NONNULL_PTR owner);
+       export function CResult_LockedChannelMonitorNoneZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_LockedChannelMonitorNoneZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // void CResult_LockedChannelMonitorNoneZ_get_err(LDKCResult_LockedChannelMonitorNoneZ *NONNULL_PTR owner);
+       export function CResult_LockedChannelMonitorNoneZ_get_err(owner: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_LockedChannelMonitorNoneZ_get_err(owner);
+               // debug statements here
+       }
+       export class LDKAPIError {
+               protected constructor() {}
+       }
+       export class LDKAPIError_APIMisuseError extends LDKAPIError {
+               constructor(public err: String) { super(); }
+       }
+       export class LDKAPIError_FeeRateTooHigh extends LDKAPIError {
+               constructor(public err: String, public feerate: number) { super(); }
+       }
+       export class LDKAPIError_RouteError extends LDKAPIError {
+               constructor(public err: String) { super(); }
+       }
+       export class LDKAPIError_ChannelUnavailable extends LDKAPIError {
+               constructor(public err: String) { super(); }
+       }
+       export class LDKAPIError_MonitorUpdateFailed extends LDKAPIError {
+               constructor() { super(); }
+       }
+       export class LDKAPIError_IncompatibleShutdownScript extends LDKAPIError {
+               constructor(public script: number) { super(); }
+       }
+       export function LDKAPIError_ref_from_ptr(ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LDKAPIError_ref_from_ptr(ptr);
+               return nativeResponseValue;
+       }
+       // void CResult_NoneAPIErrorZ_get_ok(LDKCResult_NoneAPIErrorZ *NONNULL_PTR owner);
+       export function CResult_NoneAPIErrorZ_get_ok(owner: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NoneAPIErrorZ_get_ok(owner);
+               // debug statements here
+       }
+       // struct LDKAPIError CResult_NoneAPIErrorZ_get_err(LDKCResult_NoneAPIErrorZ *NONNULL_PTR owner);
+       export function CResult_NoneAPIErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NoneAPIErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       export class LDKCOption_u16Z {
+               protected constructor() {}
+       }
+       export class LDKCOption_u16Z_Some extends LDKCOption_u16Z {
+               constructor(public some: number) { super(); }
+       }
+       export class LDKCOption_u16Z_None extends LDKCOption_u16Z {
+               constructor() { super(); }
+       }
+       export function LDKCOption_u16Z_ref_from_ptr(ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LDKCOption_u16Z_ref_from_ptr(ptr);
+               return nativeResponseValue;
+       }
+       // struct LDKThirtyTwoBytes CResult__u832APIErrorZ_get_ok(LDKCResult__u832APIErrorZ *NONNULL_PTR owner);
+       export function CResult__u832APIErrorZ_get_ok(owner: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult__u832APIErrorZ_get_ok(owner);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKAPIError CResult__u832APIErrorZ_get_err(LDKCResult__u832APIErrorZ *NONNULL_PTR owner);
+       export function CResult__u832APIErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult__u832APIErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       export class LDKPaymentSendFailure {
+               protected constructor() {}
+       }
+       export class LDKPaymentSendFailure_ParameterError extends LDKPaymentSendFailure {
+               constructor(public parameter_error: number) { super(); }
+       }
+       export class LDKPaymentSendFailure_PathParameterError extends LDKPaymentSendFailure {
+               constructor(public path_parameter_error: number[]) { super(); }
+       }
+       export class LDKPaymentSendFailure_AllFailedRetrySafe extends LDKPaymentSendFailure {
+               constructor(public all_failed_retry_safe: number[]) { super(); }
+       }
+       export class LDKPaymentSendFailure_PartialFailure extends LDKPaymentSendFailure {
+               constructor(public results: number[], public failed_paths_retry: number, public payment_id: Uint8Array) { super(); }
+       }
+       export function LDKPaymentSendFailure_ref_from_ptr(ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LDKPaymentSendFailure_ref_from_ptr(ptr);
+               return nativeResponseValue;
+       }
+       // struct LDKThirtyTwoBytes CResult_PaymentIdPaymentSendFailureZ_get_ok(LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR owner);
+       export function CResult_PaymentIdPaymentSendFailureZ_get_ok(owner: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentIdPaymentSendFailureZ_get_ok(owner);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKPaymentSendFailure CResult_PaymentIdPaymentSendFailureZ_get_err(LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR owner);
+       export function CResult_PaymentIdPaymentSendFailureZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentIdPaymentSendFailureZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // void CResult_NonePaymentSendFailureZ_get_ok(LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR owner);
+       export function CResult_NonePaymentSendFailureZ_get_ok(owner: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NonePaymentSendFailureZ_get_ok(owner);
+               // debug statements here
+       }
+       // struct LDKPaymentSendFailure CResult_NonePaymentSendFailureZ_get_err(LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR owner);
+       export function CResult_NonePaymentSendFailureZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NonePaymentSendFailureZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentIdZ_get_a(LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR owner);
+       export function C2Tuple_PaymentHashPaymentIdZ_get_a(owner: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_PaymentHashPaymentIdZ_get_a(owner);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentIdZ_get_b(LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR owner);
+       export function C2Tuple_PaymentHashPaymentIdZ_get_b(owner: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_PaymentHashPaymentIdZ_get_b(owner);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKC2Tuple_PaymentHashPaymentIdZ CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_ok(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR owner);
+       export function CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKPaymentSendFailure CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_err(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR owner);
+       export function CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentSecretZ_get_a(LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR owner);
+       export function C2Tuple_PaymentHashPaymentSecretZ_get_a(owner: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_PaymentHashPaymentSecretZ_get_a(owner);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentSecretZ_get_b(LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR owner);
+       export function C2Tuple_PaymentHashPaymentSecretZ_get_b(owner: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_PaymentHashPaymentSecretZ_get_b(owner);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKC2Tuple_PaymentHashPaymentSecretZ CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_get_ok(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *NONNULL_PTR owner);
+       export function CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // void CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_get_err(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *NONNULL_PTR owner);
+       export function CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_get_err(owner: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_get_err(owner);
+               // debug statements here
+       }
+       // struct LDKC2Tuple_PaymentHashPaymentSecretZ CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_ok(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *NONNULL_PTR owner);
+       export function CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKAPIError CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_err(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *NONNULL_PTR owner);
+       export function CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKThirtyTwoBytes CResult_PaymentSecretNoneZ_get_ok(LDKCResult_PaymentSecretNoneZ *NONNULL_PTR owner);
+       export function CResult_PaymentSecretNoneZ_get_ok(owner: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentSecretNoneZ_get_ok(owner);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void CResult_PaymentSecretNoneZ_get_err(LDKCResult_PaymentSecretNoneZ *NONNULL_PTR owner);
+       export function CResult_PaymentSecretNoneZ_get_err(owner: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentSecretNoneZ_get_err(owner);
+               // debug statements here
+       }
+       // struct LDKThirtyTwoBytes CResult_PaymentSecretAPIErrorZ_get_ok(LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR owner);
+       export function CResult_PaymentSecretAPIErrorZ_get_ok(owner: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentSecretAPIErrorZ_get_ok(owner);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKAPIError CResult_PaymentSecretAPIErrorZ_get_err(LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR owner);
+       export function CResult_PaymentSecretAPIErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentSecretAPIErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKThirtyTwoBytes CResult_PaymentPreimageAPIErrorZ_get_ok(LDKCResult_PaymentPreimageAPIErrorZ *NONNULL_PTR owner);
+       export function CResult_PaymentPreimageAPIErrorZ_get_ok(owner: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentPreimageAPIErrorZ_get_ok(owner);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKAPIError CResult_PaymentPreimageAPIErrorZ_get_err(LDKCResult_PaymentPreimageAPIErrorZ *NONNULL_PTR owner);
+       export function CResult_PaymentPreimageAPIErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentPreimageAPIErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+
+
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
+
+               export interface LDKWatch {
+                       watch_channel (funding_txo: number, monitor: number): number;
+                       update_channel (funding_txo: number, update: number): number;
+                       release_pending_monitor_events (): number[];
+               }
+
+               export function LDKWatch_new(impl: LDKWatch): number {
+            throw new Error('unimplemented'); // TODO: bind to WASM
+        }
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
+
+
+       // LDKCResult_NoneChannelMonitorUpdateErrZ Watch_watch_channel LDKWatch *NONNULL_PTR this_arg, struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor
+       export function Watch_watch_channel(this_arg: number, funding_txo: number, monitor: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Watch_watch_channel(this_arg, funding_txo, monitor);
+               return nativeResponseValue;
+       }
+       // LDKCResult_NoneChannelMonitorUpdateErrZ Watch_update_channel LDKWatch *NONNULL_PTR this_arg, struct LDKOutPoint funding_txo, struct LDKChannelMonitorUpdate update
+       export function Watch_update_channel(this_arg: number, funding_txo: number, update: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Watch_update_channel(this_arg, funding_txo, update);
+               return nativeResponseValue;
+       }
+       // LDKCVec_MonitorEventZ Watch_release_pending_monitor_events LDKWatch *NONNULL_PTR this_arg
+       export function Watch_release_pending_monitor_events(this_arg: number): number[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Watch_release_pending_monitor_events(this_arg);
+               return nativeResponseValue;
+       }
+
+
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
+
+               export interface LDKBroadcasterInterface {
+                       broadcast_transaction (tx: Uint8Array): void;
+               }
+
+               export function LDKBroadcasterInterface_new(impl: LDKBroadcasterInterface): number {
+            throw new Error('unimplemented'); // TODO: bind to WASM
+        }
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
+
+
+       // void BroadcasterInterface_broadcast_transaction LDKBroadcasterInterface *NONNULL_PTR this_arg, struct LDKTransaction tx
+       export function BroadcasterInterface_broadcast_transaction(this_arg: number, tx: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BroadcasterInterface_broadcast_transaction(this_arg, encodeUint8Array(tx));
+               // debug statements here
+       }
+
+
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
+
+               export interface LDKKeysInterface {
+                       get_node_secret (): Uint8Array;
+                       get_destination_script (): Uint8Array;
+                       get_shutdown_scriptpubkey (): number;
+                       get_channel_signer (inbound: boolean, channel_value_satoshis: number): number;
+                       get_secure_random_bytes (): Uint8Array;
+                       read_chan_signer (reader: Uint8Array): number;
+                       sign_invoice (invoice_preimage: Uint8Array): number;
+                       get_inbound_payment_key_material (): Uint8Array;
+               }
+
+               export function LDKKeysInterface_new(impl: LDKKeysInterface): number {
+            throw new Error('unimplemented'); // TODO: bind to WASM
+        }
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
+
+
+       // LDKSecretKey KeysInterface_get_node_secret LDKKeysInterface *NONNULL_PTR this_arg
+       export function KeysInterface_get_node_secret(this_arg: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_KeysInterface_get_node_secret(this_arg);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // LDKCVec_u8Z KeysInterface_get_destination_script LDKKeysInterface *NONNULL_PTR this_arg
+       export function KeysInterface_get_destination_script(this_arg: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_KeysInterface_get_destination_script(this_arg);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // LDKShutdownScript KeysInterface_get_shutdown_scriptpubkey LDKKeysInterface *NONNULL_PTR this_arg
+       export function KeysInterface_get_shutdown_scriptpubkey(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_KeysInterface_get_shutdown_scriptpubkey(this_arg);
+               return nativeResponseValue;
+       }
+       // LDKSign KeysInterface_get_channel_signer LDKKeysInterface *NONNULL_PTR this_arg, bool inbound, uint64_t channel_value_satoshis
+       export function KeysInterface_get_channel_signer(this_arg: number, inbound: boolean, channel_value_satoshis: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_KeysInterface_get_channel_signer(this_arg, inbound, channel_value_satoshis);
+               return nativeResponseValue;
+       }
+       // LDKThirtyTwoBytes KeysInterface_get_secure_random_bytes LDKKeysInterface *NONNULL_PTR this_arg
+       export function KeysInterface_get_secure_random_bytes(this_arg: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_KeysInterface_get_secure_random_bytes(this_arg);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // LDKCResult_SignDecodeErrorZ KeysInterface_read_chan_signer LDKKeysInterface *NONNULL_PTR 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!");
+               }
+               const nativeResponseValue = wasm.TS_KeysInterface_read_chan_signer(this_arg, encodeUint8Array(reader));
+               return nativeResponseValue;
+       }
+       // LDKCResult_RecoverableSignatureNoneZ KeysInterface_sign_invoice LDKKeysInterface *NONNULL_PTR this_arg, struct LDKCVec_u8Z invoice_preimage
+       export function KeysInterface_sign_invoice(this_arg: number, invoice_preimage: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_KeysInterface_sign_invoice(this_arg, encodeUint8Array(invoice_preimage));
+               return nativeResponseValue;
+       }
+       // LDKThirtyTwoBytes KeysInterface_get_inbound_payment_key_material LDKKeysInterface *NONNULL_PTR this_arg
+       export function KeysInterface_get_inbound_payment_key_material(this_arg: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_KeysInterface_get_inbound_payment_key_material(this_arg);
+               return decodeUint8Array(nativeResponseValue);
+       }
+
+
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
+
+               export interface LDKFeeEstimator {
+                       get_est_sat_per_1000_weight (confirmation_target: ConfirmationTarget): number;
+               }
+
+               export function LDKFeeEstimator_new(impl: LDKFeeEstimator): number {
+            throw new Error('unimplemented'); // TODO: bind to WASM
+        }
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
+
+
+       // uint32_t FeeEstimator_get_est_sat_per_1000_weight LDKFeeEstimator *NONNULL_PTR this_arg, enum LDKConfirmationTarget confirmation_target
+       export function FeeEstimator_get_est_sat_per_1000_weight(this_arg: number, confirmation_target: ConfirmationTarget): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FeeEstimator_get_est_sat_per_1000_weight(this_arg, confirmation_target);
+               return nativeResponseValue;
+       }
+
+
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
+
+               export interface LDKLogger {
+                       log (record: number): void;
+               }
+
+               export function LDKLogger_new(impl: LDKLogger): number {
+            throw new Error('unimplemented'); // TODO: bind to WASM
+        }
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
+
+
+       // struct LDKThirtyTwoBytes C2Tuple_BlockHashChannelManagerZ_get_a(LDKC2Tuple_BlockHashChannelManagerZ *NONNULL_PTR owner);
+       export function C2Tuple_BlockHashChannelManagerZ_get_a(owner: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_BlockHashChannelManagerZ_get_a(owner);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKChannelManager *C2Tuple_BlockHashChannelManagerZ_get_b(LDKC2Tuple_BlockHashChannelManagerZ *NONNULL_PTR owner);
+       export function C2Tuple_BlockHashChannelManagerZ_get_b(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_BlockHashChannelManagerZ_get_b(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKC2Tuple_BlockHashChannelManagerZ *CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_ok(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_ok(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_ok(owner);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_err(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ *NONNULL_PTR owner);
+       export function CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_err(owner: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_err(owner);
+               return nativeResponseValue;
+       }
+
+
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
+
+               export interface LDKMessageSendEventsProvider {
+                       get_and_clear_pending_msg_events (): number[];
+               }
+
+               export function LDKMessageSendEventsProvider_new(impl: LDKMessageSendEventsProvider): number {
+            throw new Error('unimplemented'); // TODO: bind to WASM
+        }
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
+
+
+       // LDKCVec_MessageSendEventZ MessageSendEventsProvider_get_and_clear_pending_msg_events LDKMessageSendEventsProvider *NONNULL_PTR this_arg
+       export function MessageSendEventsProvider_get_and_clear_pending_msg_events(this_arg: number): number[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageSendEventsProvider_get_and_clear_pending_msg_events(this_arg);
+               return nativeResponseValue;
+       }
+
+
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
+
+               export interface LDKEventHandler {
+                       handle_event (event: number): void;
+               }
+
+               export function LDKEventHandler_new(impl: LDKEventHandler): number {
+            throw new Error('unimplemented'); // TODO: bind to WASM
+        }
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
+
+
+       // void EventHandler_handle_event LDKEventHandler *NONNULL_PTR this_arg, const struct LDKEvent *NONNULL_PTR event
+       export function EventHandler_handle_event(this_arg: number, event: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_EventHandler_handle_event(this_arg, event);
+               // debug statements here
+       }
+
+
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
+
+               export interface LDKEventsProvider {
+                       process_pending_events (handler: number): void;
+               }
+
+               export function LDKEventsProvider_new(impl: LDKEventsProvider): number {
+            throw new Error('unimplemented'); // TODO: bind to WASM
+        }
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
+
+
+       // void EventsProvider_process_pending_events LDKEventsProvider *NONNULL_PTR this_arg, struct LDKEventHandler handler
+       export function EventsProvider_process_pending_events(this_arg: number, handler: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_EventsProvider_process_pending_events(this_arg, handler);
+               // debug statements here
+       }
+
+
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
+
+               export interface LDKListen {
+                       block_connected (block: Uint8Array, height: number): void;
+                       block_disconnected (header: Uint8Array, height: number): void;
+               }
+
+               export function LDKListen_new(impl: LDKListen): number {
+            throw new Error('unimplemented'); // TODO: bind to WASM
+        }
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
+
+
+       // void Listen_block_connected LDKListen *NONNULL_PTR this_arg, struct LDKu8slice block, uint32_t height
+       export function Listen_block_connected(this_arg: number, block: Uint8Array, height: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Listen_block_connected(this_arg, encodeUint8Array(block), height);
+               // debug statements here
+       }
+       // void Listen_block_disconnected LDKListen *NONNULL_PTR this_arg, const uint8_t (*header)[80], uint32_t height
+       export function Listen_block_disconnected(this_arg: number, header: Uint8Array, height: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Listen_block_disconnected(this_arg, encodeUint8Array(header), height);
+               // debug statements here
+       }
+
+
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
+
+               export interface LDKConfirm {
+                       transactions_confirmed (header: Uint8Array, txdata: number[], height: number): void;
+                       transaction_unconfirmed (txid: Uint8Array): void;
+                       best_block_updated (header: Uint8Array, height: number): void;
+                       get_relevant_txids (): Uint8Array[];
+               }
+
+               export function LDKConfirm_new(impl: LDKConfirm): number {
+            throw new Error('unimplemented'); // TODO: bind to WASM
+        }
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
+
+
+       // void Confirm_transactions_confirmed LDKConfirm *NONNULL_PTR this_arg, const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height
+       export function Confirm_transactions_confirmed(this_arg: number, header: Uint8Array, txdata: number[], height: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Confirm_transactions_confirmed(this_arg, encodeUint8Array(header), txdata, height);
+               // debug statements here
+       }
+       // void Confirm_transaction_unconfirmed LDKConfirm *NONNULL_PTR this_arg, const uint8_t (*txid)[32]
+       export function Confirm_transaction_unconfirmed(this_arg: number, txid: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Confirm_transaction_unconfirmed(this_arg, encodeUint8Array(txid));
+               // debug statements here
+       }
+       // void Confirm_best_block_updated LDKConfirm *NONNULL_PTR this_arg, const uint8_t (*header)[80], uint32_t height
+       export function Confirm_best_block_updated(this_arg: number, header: Uint8Array, height: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Confirm_best_block_updated(this_arg, encodeUint8Array(header), height);
+               // debug statements here
+       }
+       // LDKCVec_TxidZ Confirm_get_relevant_txids LDKConfirm *NONNULL_PTR this_arg
+       export function Confirm_get_relevant_txids(this_arg: number): Uint8Array[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Confirm_get_relevant_txids(this_arg);
+               return nativeResponseValue;
+       }
+
+
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
+
+               export interface LDKPersist {
+                       persist_new_channel (channel_id: number, data: number, update_id: number): number;
+                       update_persisted_channel (channel_id: number, update: number, data: number, update_id: number): number;
+               }
+
+               export function LDKPersist_new(impl: LDKPersist): number {
+            throw new Error('unimplemented'); // TODO: bind to WASM
+        }
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
+
+
+       // LDKCResult_NoneChannelMonitorUpdateErrZ Persist_persist_new_channel LDKPersist *NONNULL_PTR this_arg, struct LDKOutPoint channel_id, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id
+       export function Persist_persist_new_channel(this_arg: number, channel_id: number, data: number, update_id: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Persist_persist_new_channel(this_arg, channel_id, data, update_id);
+               return nativeResponseValue;
+       }
+       // LDKCResult_NoneChannelMonitorUpdateErrZ Persist_update_persisted_channel LDKPersist *NONNULL_PTR this_arg, struct LDKOutPoint channel_id, const struct LDKChannelMonitorUpdate *NONNULL_PTR update, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id
+       export function Persist_update_persisted_channel(this_arg: number, channel_id: number, update: number, data: number, update_id: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Persist_update_persisted_channel(this_arg, channel_id, update, data, update_id);
+               return nativeResponseValue;
+       }
+
+
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
+
+               export interface LDKChannelMessageHandler {
+                       handle_open_channel (their_node_id: Uint8Array, their_features: number, msg: number): void;
+                       handle_accept_channel (their_node_id: Uint8Array, their_features: number, msg: number): void;
+                       handle_funding_created (their_node_id: Uint8Array, msg: number): void;
+                       handle_funding_signed (their_node_id: Uint8Array, msg: number): void;
+                       handle_funding_locked (their_node_id: Uint8Array, msg: number): void;
+                       handle_shutdown (their_node_id: Uint8Array, their_features: number, msg: number): void;
+                       handle_closing_signed (their_node_id: Uint8Array, msg: number): void;
+                       handle_update_add_htlc (their_node_id: Uint8Array, msg: number): void;
+                       handle_update_fulfill_htlc (their_node_id: Uint8Array, msg: number): void;
+                       handle_update_fail_htlc (their_node_id: Uint8Array, msg: number): void;
+                       handle_update_fail_malformed_htlc (their_node_id: Uint8Array, msg: number): void;
+                       handle_commitment_signed (their_node_id: Uint8Array, msg: number): void;
+                       handle_revoke_and_ack (their_node_id: Uint8Array, msg: number): void;
+                       handle_update_fee (their_node_id: Uint8Array, msg: number): void;
+                       handle_announcement_signatures (their_node_id: Uint8Array, msg: number): void;
+                       peer_disconnected (their_node_id: Uint8Array, no_connection_possible: boolean): void;
+                       peer_connected (their_node_id: Uint8Array, msg: number): void;
+                       handle_channel_reestablish (their_node_id: Uint8Array, msg: number): void;
+                       handle_channel_update (their_node_id: Uint8Array, msg: number): void;
+                       handle_error (their_node_id: Uint8Array, msg: number): void;
+               }
+
+               export function LDKChannelMessageHandler_new(impl: LDKChannelMessageHandler, MessageSendEventsProvider: LDKMessageSendEventsProvider): number {
+            throw new Error('unimplemented'); // TODO: bind to WASM
+        }
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
+
+
+       // void ChannelMessageHandler_handle_open_channel LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKOpenChannel *NONNULL_PTR msg
+       export function ChannelMessageHandler_handle_open_channel(this_arg: number, their_node_id: Uint8Array, their_features: number, msg: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMessageHandler_handle_open_channel(this_arg, encodeUint8Array(their_node_id), their_features, msg);
+               // debug statements here
+       }
+       // void ChannelMessageHandler_handle_accept_channel LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKAcceptChannel *NONNULL_PTR msg
+       export function ChannelMessageHandler_handle_accept_channel(this_arg: number, their_node_id: Uint8Array, their_features: number, msg: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMessageHandler_handle_accept_channel(this_arg, encodeUint8Array(their_node_id), their_features, msg);
+               // debug statements here
+       }
+       // void ChannelMessageHandler_handle_funding_created LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg
+       export function ChannelMessageHandler_handle_funding_created(this_arg: number, their_node_id: Uint8Array, msg: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMessageHandler_handle_funding_created(this_arg, encodeUint8Array(their_node_id), msg);
+               // debug statements here
+       }
+       // void ChannelMessageHandler_handle_funding_signed LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg
+       export function ChannelMessageHandler_handle_funding_signed(this_arg: number, their_node_id: Uint8Array, msg: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMessageHandler_handle_funding_signed(this_arg, encodeUint8Array(their_node_id), msg);
+               // debug statements here
+       }
+       // void ChannelMessageHandler_handle_funding_locked LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKFundingLocked *NONNULL_PTR msg
+       export function ChannelMessageHandler_handle_funding_locked(this_arg: number, their_node_id: Uint8Array, msg: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMessageHandler_handle_funding_locked(this_arg, encodeUint8Array(their_node_id), msg);
+               // debug statements here
+       }
+       // void ChannelMessageHandler_handle_shutdown LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKInitFeatures *NONNULL_PTR their_features, const struct LDKShutdown *NONNULL_PTR msg
+       export function ChannelMessageHandler_handle_shutdown(this_arg: number, their_node_id: Uint8Array, their_features: number, msg: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMessageHandler_handle_shutdown(this_arg, encodeUint8Array(their_node_id), their_features, msg);
+               // debug statements here
+       }
+       // void ChannelMessageHandler_handle_closing_signed LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg
+       export function ChannelMessageHandler_handle_closing_signed(this_arg: number, their_node_id: Uint8Array, msg: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMessageHandler_handle_closing_signed(this_arg, encodeUint8Array(their_node_id), msg);
+               // debug statements here
+       }
+       // void ChannelMessageHandler_handle_update_add_htlc LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg
+       export function ChannelMessageHandler_handle_update_add_htlc(this_arg: number, their_node_id: Uint8Array, msg: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMessageHandler_handle_update_add_htlc(this_arg, encodeUint8Array(their_node_id), msg);
+               // debug statements here
+       }
+       // void ChannelMessageHandler_handle_update_fulfill_htlc LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg
+       export function ChannelMessageHandler_handle_update_fulfill_htlc(this_arg: number, their_node_id: Uint8Array, msg: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMessageHandler_handle_update_fulfill_htlc(this_arg, encodeUint8Array(their_node_id), msg);
+               // debug statements here
+       }
+       // void ChannelMessageHandler_handle_update_fail_htlc LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg
+       export function ChannelMessageHandler_handle_update_fail_htlc(this_arg: number, their_node_id: Uint8Array, msg: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMessageHandler_handle_update_fail_htlc(this_arg, encodeUint8Array(their_node_id), msg);
+               // debug statements here
+       }
+       // void ChannelMessageHandler_handle_update_fail_malformed_htlc LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg
+       export function ChannelMessageHandler_handle_update_fail_malformed_htlc(this_arg: number, their_node_id: Uint8Array, msg: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMessageHandler_handle_update_fail_malformed_htlc(this_arg, encodeUint8Array(their_node_id), msg);
+               // debug statements here
+       }
+       // void ChannelMessageHandler_handle_commitment_signed LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg
+       export function ChannelMessageHandler_handle_commitment_signed(this_arg: number, their_node_id: Uint8Array, msg: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMessageHandler_handle_commitment_signed(this_arg, encodeUint8Array(their_node_id), msg);
+               // debug statements here
+       }
+       // void ChannelMessageHandler_handle_revoke_and_ack LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg
+       export function ChannelMessageHandler_handle_revoke_and_ack(this_arg: number, their_node_id: Uint8Array, msg: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMessageHandler_handle_revoke_and_ack(this_arg, encodeUint8Array(their_node_id), msg);
+               // debug statements here
+       }
+       // void ChannelMessageHandler_handle_update_fee LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg
+       export function ChannelMessageHandler_handle_update_fee(this_arg: number, their_node_id: Uint8Array, msg: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMessageHandler_handle_update_fee(this_arg, encodeUint8Array(their_node_id), msg);
+               // debug statements here
+       }
+       // void ChannelMessageHandler_handle_announcement_signatures LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg
+       export function ChannelMessageHandler_handle_announcement_signatures(this_arg: number, their_node_id: Uint8Array, msg: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMessageHandler_handle_announcement_signatures(this_arg, encodeUint8Array(their_node_id), msg);
+               // debug statements here
+       }
+       // void ChannelMessageHandler_peer_disconnected LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, bool no_connection_possible
+       export function ChannelMessageHandler_peer_disconnected(this_arg: number, their_node_id: Uint8Array, no_connection_possible: boolean): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMessageHandler_peer_disconnected(this_arg, encodeUint8Array(their_node_id), no_connection_possible);
+               // debug statements here
+       }
+       // void ChannelMessageHandler_peer_connected LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg
+       export function ChannelMessageHandler_peer_connected(this_arg: number, their_node_id: Uint8Array, msg: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMessageHandler_peer_connected(this_arg, encodeUint8Array(their_node_id), msg);
+               // debug statements here
+       }
+       // void ChannelMessageHandler_handle_channel_reestablish LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg
+       export function ChannelMessageHandler_handle_channel_reestablish(this_arg: number, their_node_id: Uint8Array, msg: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMessageHandler_handle_channel_reestablish(this_arg, encodeUint8Array(their_node_id), msg);
+               // debug statements here
+       }
+       // void ChannelMessageHandler_handle_channel_update LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg
+       export function ChannelMessageHandler_handle_channel_update(this_arg: number, their_node_id: Uint8Array, msg: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMessageHandler_handle_channel_update(this_arg, encodeUint8Array(their_node_id), msg);
+               // debug statements here
+       }
+       // void ChannelMessageHandler_handle_error LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg
+       export function ChannelMessageHandler_handle_error(this_arg: number, their_node_id: Uint8Array, msg: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMessageHandler_handle_error(this_arg, encodeUint8Array(their_node_id), msg);
+               // debug statements here
+       }
+
+
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
+
+               export interface LDKRoutingMessageHandler {
+                       handle_node_announcement (msg: number): number;
+                       handle_channel_announcement (msg: number): number;
+                       handle_channel_update (msg: number): number;
+                       get_next_channel_announcements (starting_point: number, batch_amount: number): number[];
+                       get_next_node_announcements (starting_point: Uint8Array, batch_amount: number): number[];
+                       sync_routing_table (their_node_id: Uint8Array, init: number): void;
+                       handle_reply_channel_range (their_node_id: Uint8Array, msg: number): number;
+                       handle_reply_short_channel_ids_end (their_node_id: Uint8Array, msg: number): number;
+                       handle_query_channel_range (their_node_id: Uint8Array, msg: number): number;
+                       handle_query_short_channel_ids (their_node_id: Uint8Array, msg: number): number;
+               }
+
+               export function LDKRoutingMessageHandler_new(impl: LDKRoutingMessageHandler, MessageSendEventsProvider: LDKMessageSendEventsProvider): number {
+            throw new Error('unimplemented'); // TODO: bind to WASM
+        }
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
+
+
+       // LDKCResult_boolLightningErrorZ RoutingMessageHandler_handle_node_announcement LDKRoutingMessageHandler *NONNULL_PTR this_arg, const struct LDKNodeAnnouncement *NONNULL_PTR msg
+       export function RoutingMessageHandler_handle_node_announcement(this_arg: number, msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RoutingMessageHandler_handle_node_announcement(this_arg, msg);
+               return nativeResponseValue;
+       }
+       // LDKCResult_boolLightningErrorZ RoutingMessageHandler_handle_channel_announcement LDKRoutingMessageHandler *NONNULL_PTR this_arg, const struct LDKChannelAnnouncement *NONNULL_PTR msg
+       export function RoutingMessageHandler_handle_channel_announcement(this_arg: number, msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RoutingMessageHandler_handle_channel_announcement(this_arg, msg);
+               return nativeResponseValue;
+       }
+       // LDKCResult_boolLightningErrorZ RoutingMessageHandler_handle_channel_update LDKRoutingMessageHandler *NONNULL_PTR this_arg, const struct LDKChannelUpdate *NONNULL_PTR msg
+       export function RoutingMessageHandler_handle_channel_update(this_arg: number, msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RoutingMessageHandler_handle_channel_update(this_arg, msg);
+               return nativeResponseValue;
+       }
+       // LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ RoutingMessageHandler_get_next_channel_announcements LDKRoutingMessageHandler *NONNULL_PTR this_arg, uint64_t starting_point, uint8_t batch_amount
+       export function RoutingMessageHandler_get_next_channel_announcements(this_arg: number, starting_point: number, batch_amount: number): number[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RoutingMessageHandler_get_next_channel_announcements(this_arg, starting_point, batch_amount);
+               return nativeResponseValue;
+       }
+       // LDKCVec_NodeAnnouncementZ RoutingMessageHandler_get_next_node_announcements LDKRoutingMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey starting_point, uint8_t batch_amount
+       export function RoutingMessageHandler_get_next_node_announcements(this_arg: number, starting_point: Uint8Array, batch_amount: number): number[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RoutingMessageHandler_get_next_node_announcements(this_arg, encodeUint8Array(starting_point), batch_amount);
+               return nativeResponseValue;
+       }
+       // void RoutingMessageHandler_sync_routing_table LDKRoutingMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init
+       export function RoutingMessageHandler_sync_routing_table(this_arg: number, their_node_id: Uint8Array, init: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RoutingMessageHandler_sync_routing_table(this_arg, encodeUint8Array(their_node_id), init);
+               // debug statements here
+       }
+       // LDKCResult_NoneLightningErrorZ RoutingMessageHandler_handle_reply_channel_range LDKRoutingMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg
+       export function RoutingMessageHandler_handle_reply_channel_range(this_arg: number, their_node_id: Uint8Array, msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RoutingMessageHandler_handle_reply_channel_range(this_arg, encodeUint8Array(their_node_id), msg);
+               return nativeResponseValue;
+       }
+       // LDKCResult_NoneLightningErrorZ RoutingMessageHandler_handle_reply_short_channel_ids_end LDKRoutingMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg
+       export function RoutingMessageHandler_handle_reply_short_channel_ids_end(this_arg: number, their_node_id: Uint8Array, msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RoutingMessageHandler_handle_reply_short_channel_ids_end(this_arg, encodeUint8Array(their_node_id), msg);
+               return nativeResponseValue;
+       }
+       // LDKCResult_NoneLightningErrorZ RoutingMessageHandler_handle_query_channel_range LDKRoutingMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg
+       export function RoutingMessageHandler_handle_query_channel_range(this_arg: number, their_node_id: Uint8Array, msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RoutingMessageHandler_handle_query_channel_range(this_arg, encodeUint8Array(their_node_id), msg);
+               return nativeResponseValue;
+       }
+       // LDKCResult_NoneLightningErrorZ RoutingMessageHandler_handle_query_short_channel_ids LDKRoutingMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg
+       export function RoutingMessageHandler_handle_query_short_channel_ids(this_arg: number, their_node_id: Uint8Array, msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RoutingMessageHandler_handle_query_short_channel_ids(this_arg, encodeUint8Array(their_node_id), msg);
+               return nativeResponseValue;
+       }
+
+
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
+
+               export interface LDKCustomMessageReader {
+                       read (message_type: number, buffer: Uint8Array): number;
+               }
+
+               export function LDKCustomMessageReader_new(impl: LDKCustomMessageReader): number {
+            throw new Error('unimplemented'); // TODO: bind to WASM
+        }
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
+
+
+       // LDKCResult_COption_TypeZDecodeErrorZ CustomMessageReader_read LDKCustomMessageReader *NONNULL_PTR this_arg, uint16_t message_type, struct LDKu8slice buffer
+       export function CustomMessageReader_read(this_arg: number, message_type: number, buffer: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CustomMessageReader_read(this_arg, message_type, encodeUint8Array(buffer));
+               return nativeResponseValue;
+       }
+
+
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
+
+               export interface LDKCustomMessageHandler {
+                       handle_custom_message (msg: number, sender_node_id: Uint8Array): number;
+                       get_and_clear_pending_msg (): number[];
+               }
+
+               export function LDKCustomMessageHandler_new(impl: LDKCustomMessageHandler, CustomMessageReader: LDKCustomMessageReader): number {
+            throw new Error('unimplemented'); // TODO: bind to WASM
+        }
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
+
+
+       // LDKCResult_NoneLightningErrorZ CustomMessageHandler_handle_custom_message LDKCustomMessageHandler *NONNULL_PTR this_arg, struct LDKType msg, struct LDKPublicKey sender_node_id
+       export function CustomMessageHandler_handle_custom_message(this_arg: number, msg: number, sender_node_id: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CustomMessageHandler_handle_custom_message(this_arg, msg, encodeUint8Array(sender_node_id));
+               return nativeResponseValue;
+       }
+       // LDKCVec_C2Tuple_PublicKeyTypeZZ CustomMessageHandler_get_and_clear_pending_msg LDKCustomMessageHandler *NONNULL_PTR this_arg
+       export function CustomMessageHandler_get_and_clear_pending_msg(this_arg: number): number[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CustomMessageHandler_get_and_clear_pending_msg(this_arg);
+               return nativeResponseValue;
+       }
+
+
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
+
+               export interface LDKSocketDescriptor {
+                       send_data (data: Uint8Array, resume_read: boolean): number;
+                       disconnect_socket (): void;
+                       eq (other_arg: number): boolean;
+                       hash (): number;
+               }
+
+               export function LDKSocketDescriptor_new(impl: LDKSocketDescriptor): number {
+            throw new Error('unimplemented'); // TODO: bind to WASM
+        }
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
+
+
+       // uintptr_t SocketDescriptor_send_data LDKSocketDescriptor *NONNULL_PTR this_arg, struct LDKu8slice data, bool resume_read
+       export function SocketDescriptor_send_data(this_arg: number, data: Uint8Array, resume_read: boolean): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_SocketDescriptor_send_data(this_arg, encodeUint8Array(data), resume_read);
+               return nativeResponseValue;
+       }
+       // void SocketDescriptor_disconnect_socket LDKSocketDescriptor *NONNULL_PTR this_arg
+       export function SocketDescriptor_disconnect_socket(this_arg: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_SocketDescriptor_disconnect_socket(this_arg);
+               // debug statements here
+       }
+       // uint64_t SocketDescriptor_hash LDKSocketDescriptor *NONNULL_PTR this_arg
+       export function SocketDescriptor_hash(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_SocketDescriptor_hash(this_arg);
+               return nativeResponseValue;
+       }
+
+
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
+
+               export interface LDKScore {
+                       channel_penalty_msat (short_channel_id: number, send_amt_msat: number, channel_capacity_msat: number, source: number, target: number): number;
+                       payment_path_failed (path: number[], short_channel_id: number): void;
+                       payment_path_successful (path: number[]): void;
+                       write (): Uint8Array;
+               }
+
+               export function LDKScore_new(impl: LDKScore): number {
+            throw new Error('unimplemented'); // TODO: bind to WASM
+        }
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
+
+
+       // uint64_t Score_channel_penalty_msat LDKScore *NONNULL_PTR this_arg, uint64_t short_channel_id, uint64_t send_amt_msat, struct LDKCOption_u64Z channel_capacity_msat, const struct LDKNodeId *NONNULL_PTR source, const struct LDKNodeId *NONNULL_PTR target
+       export function Score_channel_penalty_msat(this_arg: number, short_channel_id: number, send_amt_msat: number, channel_capacity_msat: number, source: number, target: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Score_channel_penalty_msat(this_arg, short_channel_id, send_amt_msat, channel_capacity_msat, source, target);
+               return nativeResponseValue;
+       }
+       // void Score_payment_path_failed LDKScore *NONNULL_PTR this_arg, struct LDKCVec_RouteHopZ path, uint64_t short_channel_id
+       export function Score_payment_path_failed(this_arg: number, path: number[], short_channel_id: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Score_payment_path_failed(this_arg, path, short_channel_id);
+               // debug statements here
+       }
+       // void Score_payment_path_successful LDKScore *NONNULL_PTR this_arg, struct LDKCVec_RouteHopZ path
+       export function Score_payment_path_successful(this_arg: number, path: number[]): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Score_payment_path_successful(this_arg, path);
+               // debug statements here
+       }
+       // LDKCVec_u8Z Score_write LDKScore *NONNULL_PTR this_arg
+       export function Score_write(this_arg: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Score_write(this_arg);
+               return decodeUint8Array(nativeResponseValue);
+       }
+
+
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
+
+               export interface LDKLockableScore {
+                       lock (): number;
+               }
+
+               export function LDKLockableScore_new(impl: LDKLockableScore): number {
+            throw new Error('unimplemented'); // TODO: bind to WASM
+        }
+
+// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
+
+
+       // LDKScore LockableScore_lock LDKLockableScore *NONNULL_PTR this_arg
+       export function LockableScore_lock(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LockableScore_lock(this_arg);
+               return nativeResponseValue;
+       }
+       // struct LDKStr _ldk_get_compiled_version(void);
+       export function _ldk_get_compiled_version(): String {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS__ldk_get_compiled_version();
+               return nativeResponseValue;
+       }
+       // struct LDKStr _ldk_c_bindings_get_compiled_version(void);
+       export function _ldk_c_bindings_get_compiled_version(): String {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS__ldk_c_bindings_get_compiled_version();
+               return nativeResponseValue;
+       }
+       // void Transaction_free(struct LDKTransaction _res);
+       export function Transaction_free(_res: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Transaction_free(encodeUint8Array(_res));
+               // debug statements here
+       }
+       // struct LDKTxOut TxOut_new(struct LDKCVec_u8Z script_pubkey, uint64_t value);
+       export function TxOut_new(script_pubkey: Uint8Array, value: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TxOut_new(encodeUint8Array(script_pubkey), value);
+               return nativeResponseValue;
+       }
+       // void TxOut_free(struct LDKTxOut _res);
+       export function TxOut_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TxOut_free(_res);
+               // debug statements here
+       }
+       // uint64_t TxOut_clone_ptr(LDKTxOut *NONNULL_PTR arg);
+       export function TxOut_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TxOut_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKTxOut TxOut_clone(const struct LDKTxOut *NONNULL_PTR orig);
+       export function TxOut_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TxOut_clone(orig);
+               return nativeResponseValue;
+       }
+       // void Str_free(struct LDKStr _res);
+       export function Str_free(_res: String): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Str_free(_res);
+               // debug statements here
+       }
+       // 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.TS_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.TS_CResult_ChannelConfigDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_ChannelConfigDecodeErrorZ_is_ok(const struct LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_ChannelConfigDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelConfigDecodeErrorZ_is_ok(o);
+               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.TS_CResult_ChannelConfigDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_ChannelConfigDecodeErrorZ_clone_ptr(LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_ChannelConfigDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelConfigDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ChannelConfigDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_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.TS_CResult_OutPointDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_OutPointDecodeErrorZ_is_ok(const struct LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_OutPointDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_OutPointDecodeErrorZ_is_ok(o);
+               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.TS_CResult_OutPointDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_OutPointDecodeErrorZ_clone_ptr(LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_OutPointDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_OutPointDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_OutPointDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_SecretKeyErrorZ_ok(encodeUint8Array(o));
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_SecretKeyErrorZ CResult_SecretKeyErrorZ_err(enum LDKSecp256k1Error e);
+       export function CResult_SecretKeyErrorZ_err(e: Secp256k1Error): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_SecretKeyErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_SecretKeyErrorZ_is_ok(const struct LDKCResult_SecretKeyErrorZ *NONNULL_PTR o);
+       export function CResult_SecretKeyErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_SecretKeyErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_SecretKeyErrorZ_free(_res);
+               // debug statements here
+       }
+       // 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.TS_CResult_PublicKeyErrorZ_ok(encodeUint8Array(o));
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_err(enum LDKSecp256k1Error e);
+       export function CResult_PublicKeyErrorZ_err(e: Secp256k1Error): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PublicKeyErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_PublicKeyErrorZ_is_ok(const struct LDKCResult_PublicKeyErrorZ *NONNULL_PTR o);
+       export function CResult_PublicKeyErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PublicKeyErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_PublicKeyErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_PublicKeyErrorZ_clone_ptr(LDKCResult_PublicKeyErrorZ *NONNULL_PTR arg);
+       export function CResult_PublicKeyErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PublicKeyErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_clone(const struct LDKCResult_PublicKeyErrorZ *NONNULL_PTR orig);
+       export function CResult_PublicKeyErrorZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PublicKeyErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_TxCreationKeysDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_TxCreationKeysDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_TxCreationKeysDecodeErrorZ_is_ok(const struct LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_TxCreationKeysDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TxCreationKeysDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_TxCreationKeysDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_TxCreationKeysDecodeErrorZ_clone_ptr(LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_TxCreationKeysDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TxCreationKeysDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_TxCreationKeysDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ChannelPublicKeysDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ChannelPublicKeysDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_ChannelPublicKeysDecodeErrorZ_is_ok(const struct LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_ChannelPublicKeysDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelPublicKeysDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ChannelPublicKeysDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_ChannelPublicKeysDecodeErrorZ_clone_ptr(LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_ChannelPublicKeysDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelPublicKeysDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ChannelPublicKeysDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_TxCreationKeysErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_err(enum LDKSecp256k1Error e);
+       export function CResult_TxCreationKeysErrorZ_err(e: Secp256k1Error): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TxCreationKeysErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_TxCreationKeysErrorZ_is_ok(const struct LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR o);
+       export function CResult_TxCreationKeysErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TxCreationKeysErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_TxCreationKeysErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_TxCreationKeysErrorZ_clone_ptr(LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR arg);
+       export function CResult_TxCreationKeysErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TxCreationKeysErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_clone(const struct LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR orig);
+       export function CResult_TxCreationKeysErrorZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TxCreationKeysErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_u32Z COption_u32Z_some(uint32_t o);
+       export function COption_u32Z_some(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_u32Z_some(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_u32Z COption_u32Z_none(void);
+       export function COption_u32Z_none(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_u32Z_none();
+               return nativeResponseValue;
+       }
+       // void COption_u32Z_free(struct LDKCOption_u32Z _res);
+       export function COption_u32Z_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_u32Z_free(_res);
+               // debug statements here
+       }
+       // uint64_t COption_u32Z_clone_ptr(LDKCOption_u32Z *NONNULL_PTR arg);
+       export function COption_u32Z_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_u32Z_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_u32Z COption_u32Z_clone(const struct LDKCOption_u32Z *NONNULL_PTR orig);
+       export function COption_u32Z_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_u32Z_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_HTLCOutputInCommitmentDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_HTLCOutputInCommitmentDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_HTLCOutputInCommitmentDecodeErrorZ_is_ok(const struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_HTLCOutputInCommitmentDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_HTLCOutputInCommitmentDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_HTLCOutputInCommitmentDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_HTLCOutputInCommitmentDecodeErrorZ_clone_ptr(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_HTLCOutputInCommitmentDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_HTLCOutputInCommitmentDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_HTLCOutputInCommitmentDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // enum LDKCOption_NoneZ COption_NoneZ_some(void);
+       export function COption_NoneZ_some(): COption_NoneZ {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_NoneZ_some();
+               return nativeResponseValue;
+       }
+       // enum LDKCOption_NoneZ COption_NoneZ_none(void);
+       export function COption_NoneZ_none(): COption_NoneZ {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_NoneZ_none();
+               return nativeResponseValue;
+       }
+       // void COption_NoneZ_free(enum LDKCOption_NoneZ _res);
+       export function COption_NoneZ_free(_res: COption_NoneZ): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_NoneZ_free(_res);
+               // debug statements here
+       }
+       // 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.TS_CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_is_ok(const struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone_ptr(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ChannelTransactionParametersDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ChannelTransactionParametersDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_ChannelTransactionParametersDecodeErrorZ_is_ok(const struct LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_ChannelTransactionParametersDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelTransactionParametersDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ChannelTransactionParametersDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_ChannelTransactionParametersDecodeErrorZ_clone_ptr(LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_ChannelTransactionParametersDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelTransactionParametersDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ChannelTransactionParametersDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CVec_SignatureZ_free(_res);
+               // debug statements here
+       }
+       // 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.TS_CResult_HolderCommitmentTransactionDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_HolderCommitmentTransactionDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_HolderCommitmentTransactionDecodeErrorZ_is_ok(const struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_HolderCommitmentTransactionDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_HolderCommitmentTransactionDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_HolderCommitmentTransactionDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_HolderCommitmentTransactionDecodeErrorZ_clone_ptr(LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_HolderCommitmentTransactionDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_HolderCommitmentTransactionDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_HolderCommitmentTransactionDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_BuiltCommitmentTransactionDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_BuiltCommitmentTransactionDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_BuiltCommitmentTransactionDecodeErrorZ_is_ok(const struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_BuiltCommitmentTransactionDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_BuiltCommitmentTransactionDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_BuiltCommitmentTransactionDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_BuiltCommitmentTransactionDecodeErrorZ_clone_ptr(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_BuiltCommitmentTransactionDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_BuiltCommitmentTransactionDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_BuiltCommitmentTransactionDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_TrustedClosingTransactionNoneZ CResult_TrustedClosingTransactionNoneZ_ok(struct LDKTrustedClosingTransaction o);
+       export function CResult_TrustedClosingTransactionNoneZ_ok(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TrustedClosingTransactionNoneZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_TrustedClosingTransactionNoneZ CResult_TrustedClosingTransactionNoneZ_err(void);
+       export function CResult_TrustedClosingTransactionNoneZ_err(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TrustedClosingTransactionNoneZ_err();
+               return nativeResponseValue;
+       }
+       // bool CResult_TrustedClosingTransactionNoneZ_is_ok(const struct LDKCResult_TrustedClosingTransactionNoneZ *NONNULL_PTR o);
+       export function CResult_TrustedClosingTransactionNoneZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TrustedClosingTransactionNoneZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_TrustedClosingTransactionNoneZ_free(struct LDKCResult_TrustedClosingTransactionNoneZ _res);
+       export function CResult_TrustedClosingTransactionNoneZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TrustedClosingTransactionNoneZ_free(_res);
+               // debug statements here
+       }
+       // 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.TS_CResult_CommitmentTransactionDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_CommitmentTransactionDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_CommitmentTransactionDecodeErrorZ_is_ok(const struct LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_CommitmentTransactionDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_CommitmentTransactionDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_CommitmentTransactionDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_CommitmentTransactionDecodeErrorZ_clone_ptr(LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_CommitmentTransactionDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_CommitmentTransactionDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_CommitmentTransactionDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_TrustedCommitmentTransactionNoneZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_TrustedCommitmentTransactionNoneZ_err();
+               return nativeResponseValue;
+       }
+       // bool CResult_TrustedCommitmentTransactionNoneZ_is_ok(const struct LDKCResult_TrustedCommitmentTransactionNoneZ *NONNULL_PTR o);
+       export function CResult_TrustedCommitmentTransactionNoneZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TrustedCommitmentTransactionNoneZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_TrustedCommitmentTransactionNoneZ_free(_res);
+               // debug statements here
+       }
+       // 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.TS_CResult_CVec_SignatureZNoneZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_CVec_SignatureZNoneZ_err();
+               return nativeResponseValue;
+       }
+       // bool CResult_CVec_SignatureZNoneZ_is_ok(const struct LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR o);
+       export function CResult_CVec_SignatureZNoneZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_CVec_SignatureZNoneZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_CVec_SignatureZNoneZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_CVec_SignatureZNoneZ_clone_ptr(LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR arg);
+       export function CResult_CVec_SignatureZNoneZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_CVec_SignatureZNoneZ_clone_ptr(arg);
+               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 {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_CVec_SignatureZNoneZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_ShutdownScriptDecodeErrorZ CResult_ShutdownScriptDecodeErrorZ_ok(struct LDKShutdownScript o);
+       export function CResult_ShutdownScriptDecodeErrorZ_ok(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ShutdownScriptDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_ShutdownScriptDecodeErrorZ CResult_ShutdownScriptDecodeErrorZ_err(struct LDKDecodeError e);
+       export function CResult_ShutdownScriptDecodeErrorZ_err(e: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ShutdownScriptDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_ShutdownScriptDecodeErrorZ_is_ok(const struct LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_ShutdownScriptDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ShutdownScriptDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_ShutdownScriptDecodeErrorZ_free(struct LDKCResult_ShutdownScriptDecodeErrorZ _res);
+       export function CResult_ShutdownScriptDecodeErrorZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ShutdownScriptDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_ShutdownScriptDecodeErrorZ_clone_ptr(LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_ShutdownScriptDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ShutdownScriptDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_ShutdownScriptDecodeErrorZ CResult_ShutdownScriptDecodeErrorZ_clone(const struct LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR orig);
+       export function CResult_ShutdownScriptDecodeErrorZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ShutdownScriptDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ CResult_ShutdownScriptInvalidShutdownScriptZ_ok(struct LDKShutdownScript o);
+       export function CResult_ShutdownScriptInvalidShutdownScriptZ_ok(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ShutdownScriptInvalidShutdownScriptZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ CResult_ShutdownScriptInvalidShutdownScriptZ_err(struct LDKInvalidShutdownScript e);
+       export function CResult_ShutdownScriptInvalidShutdownScriptZ_err(e: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ShutdownScriptInvalidShutdownScriptZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_ShutdownScriptInvalidShutdownScriptZ_is_ok(const struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR o);
+       export function CResult_ShutdownScriptInvalidShutdownScriptZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ShutdownScriptInvalidShutdownScriptZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_ShutdownScriptInvalidShutdownScriptZ_free(struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ _res);
+       export function CResult_ShutdownScriptInvalidShutdownScriptZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ShutdownScriptInvalidShutdownScriptZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_ShutdownScriptInvalidShutdownScriptZ_clone_ptr(LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR arg);
+       export function CResult_ShutdownScriptInvalidShutdownScriptZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ShutdownScriptInvalidShutdownScriptZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ CResult_ShutdownScriptInvalidShutdownScriptZ_clone(const struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR orig);
+       export function CResult_ShutdownScriptInvalidShutdownScriptZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ShutdownScriptInvalidShutdownScriptZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_TypeZ COption_TypeZ_some(struct LDKType o);
+       export function COption_TypeZ_some(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_TypeZ_some(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_TypeZ COption_TypeZ_none(void);
+       export function COption_TypeZ_none(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_TypeZ_none();
+               return nativeResponseValue;
+       }
+       // void COption_TypeZ_free(struct LDKCOption_TypeZ _res);
+       export function COption_TypeZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_TypeZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t COption_TypeZ_clone_ptr(LDKCOption_TypeZ *NONNULL_PTR arg);
+       export function COption_TypeZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_TypeZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_TypeZ COption_TypeZ_clone(const struct LDKCOption_TypeZ *NONNULL_PTR orig);
+       export function COption_TypeZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_TypeZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_COption_TypeZDecodeErrorZ CResult_COption_TypeZDecodeErrorZ_ok(struct LDKCOption_TypeZ o);
+       export function CResult_COption_TypeZDecodeErrorZ_ok(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_TypeZDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_COption_TypeZDecodeErrorZ CResult_COption_TypeZDecodeErrorZ_err(struct LDKDecodeError e);
+       export function CResult_COption_TypeZDecodeErrorZ_err(e: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_TypeZDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_COption_TypeZDecodeErrorZ_is_ok(const struct LDKCResult_COption_TypeZDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_COption_TypeZDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_TypeZDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_COption_TypeZDecodeErrorZ_free(struct LDKCResult_COption_TypeZDecodeErrorZ _res);
+       export function CResult_COption_TypeZDecodeErrorZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_TypeZDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_COption_TypeZDecodeErrorZ_clone_ptr(LDKCResult_COption_TypeZDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_COption_TypeZDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_TypeZDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_COption_TypeZDecodeErrorZ CResult_COption_TypeZDecodeErrorZ_clone(const struct LDKCResult_COption_TypeZDecodeErrorZ *NONNULL_PTR orig);
+       export function CResult_COption_TypeZDecodeErrorZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_TypeZDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_StringErrorZ CResult_StringErrorZ_ok(struct LDKStr o);
+       export function CResult_StringErrorZ_ok(o: String): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_StringErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_StringErrorZ CResult_StringErrorZ_err(enum LDKSecp256k1Error e);
+       export function CResult_StringErrorZ_err(e: Secp256k1Error): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_StringErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_StringErrorZ_is_ok(const struct LDKCResult_StringErrorZ *NONNULL_PTR o);
+       export function CResult_StringErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_StringErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_StringErrorZ_free(struct LDKCResult_StringErrorZ _res);
+       export function CResult_StringErrorZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_StringErrorZ_free(_res);
+               // debug statements here
+       }
+       // 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.TS_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.TS_CResult_ChannelMonitorUpdateDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_ChannelMonitorUpdateDecodeErrorZ_is_ok(const struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_ChannelMonitorUpdateDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelMonitorUpdateDecodeErrorZ_is_ok(o);
+               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.TS_CResult_ChannelMonitorUpdateDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_ChannelMonitorUpdateDecodeErrorZ_clone_ptr(LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_ChannelMonitorUpdateDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelMonitorUpdateDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ChannelMonitorUpdateDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_MonitorEventZ COption_MonitorEventZ_some(struct LDKMonitorEvent o);
+       export function COption_MonitorEventZ_some(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_MonitorEventZ_some(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_MonitorEventZ COption_MonitorEventZ_none(void);
+       export function COption_MonitorEventZ_none(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_MonitorEventZ_none();
+               return nativeResponseValue;
+       }
+       // void COption_MonitorEventZ_free(struct LDKCOption_MonitorEventZ _res);
+       export function COption_MonitorEventZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_MonitorEventZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t COption_MonitorEventZ_clone_ptr(LDKCOption_MonitorEventZ *NONNULL_PTR arg);
+       export function COption_MonitorEventZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_MonitorEventZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_MonitorEventZ COption_MonitorEventZ_clone(const struct LDKCOption_MonitorEventZ *NONNULL_PTR orig);
+       export function COption_MonitorEventZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_MonitorEventZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_COption_MonitorEventZDecodeErrorZ CResult_COption_MonitorEventZDecodeErrorZ_ok(struct LDKCOption_MonitorEventZ o);
+       export function CResult_COption_MonitorEventZDecodeErrorZ_ok(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_MonitorEventZDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_COption_MonitorEventZDecodeErrorZ CResult_COption_MonitorEventZDecodeErrorZ_err(struct LDKDecodeError e);
+       export function CResult_COption_MonitorEventZDecodeErrorZ_err(e: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_MonitorEventZDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_COption_MonitorEventZDecodeErrorZ_is_ok(const struct LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_COption_MonitorEventZDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_MonitorEventZDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_COption_MonitorEventZDecodeErrorZ_free(struct LDKCResult_COption_MonitorEventZDecodeErrorZ _res);
+       export function CResult_COption_MonitorEventZDecodeErrorZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_MonitorEventZDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_COption_MonitorEventZDecodeErrorZ_clone_ptr(LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_COption_MonitorEventZDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_MonitorEventZDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_COption_MonitorEventZDecodeErrorZ CResult_COption_MonitorEventZDecodeErrorZ_clone(const struct LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR orig);
+       export function CResult_COption_MonitorEventZDecodeErrorZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_MonitorEventZDecodeErrorZ_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.TS_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.TS_CResult_HTLCUpdateDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_HTLCUpdateDecodeErrorZ_is_ok(const struct LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_HTLCUpdateDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_HTLCUpdateDecodeErrorZ_is_ok(o);
+               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.TS_CResult_HTLCUpdateDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_HTLCUpdateDecodeErrorZ_clone_ptr(LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_HTLCUpdateDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_HTLCUpdateDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_HTLCUpdateDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_NoneNoneZ CResult_NoneNoneZ_ok(void);
+       export function CResult_NoneNoneZ_ok(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NoneNoneZ_ok();
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_NoneNoneZ CResult_NoneNoneZ_err(void);
+       export function CResult_NoneNoneZ_err(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NoneNoneZ_err();
+               return nativeResponseValue;
+       }
+       // bool CResult_NoneNoneZ_is_ok(const struct LDKCResult_NoneNoneZ *NONNULL_PTR o);
+       export function CResult_NoneNoneZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NoneNoneZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_NoneNoneZ_free(struct LDKCResult_NoneNoneZ _res);
+       export function CResult_NoneNoneZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NoneNoneZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_NoneNoneZ_clone_ptr(LDKCResult_NoneNoneZ *NONNULL_PTR arg);
+       export function CResult_NoneNoneZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NoneNoneZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_NoneNoneZ CResult_NoneNoneZ_clone(const struct LDKCResult_NoneNoneZ *NONNULL_PTR orig);
+       export function CResult_NoneNoneZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NoneNoneZ_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.TS_C2Tuple_OutPointScriptZ_new(a, encodeUint8Array(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.TS_C2Tuple_OutPointScriptZ_free(_res);
+               // debug statements here
+       }
+       // struct LDKC2Tuple_u32ScriptZ C2Tuple_u32ScriptZ_new(uint32_t a, struct LDKCVec_u8Z b);
+       export function C2Tuple_u32ScriptZ_new(a: number, b: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_u32ScriptZ_new(a, encodeUint8Array(b));
+               return nativeResponseValue;
+       }
+       // void C2Tuple_u32ScriptZ_free(struct LDKC2Tuple_u32ScriptZ _res);
+       export function C2Tuple_u32ScriptZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_u32ScriptZ_free(_res);
+               // debug statements here
+       }
+       // void CVec_C2Tuple_u32ScriptZZ_free(struct LDKCVec_C2Tuple_u32ScriptZZ _res);
+       export function CVec_C2Tuple_u32ScriptZZ_free(_res: number[]): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CVec_C2Tuple_u32ScriptZZ_free(_res);
+               // debug statements here
+       }
+       // struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_new(struct LDKThirtyTwoBytes a, struct LDKCVec_C2Tuple_u32ScriptZZ b);
+       export function C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_new(a: Uint8Array, b: number[]): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_new(encodeUint8Array(a), b);
+               return nativeResponseValue;
+       }
+       // void C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ _res);
+       export function C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(_res);
+               // debug statements here
+       }
+       // void CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ _res);
+       export function CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(_res: number[]): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(_res);
+               // debug statements here
+       }
+       // 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.TS_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.TS_CVec_EventZ_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.TS_CVec_TransactionZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t C2Tuple_usizeTransactionZ_clone_ptr(LDKC2Tuple_usizeTransactionZ *NONNULL_PTR arg);
+       export function C2Tuple_usizeTransactionZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_usizeTransactionZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKC2Tuple_usizeTransactionZ C2Tuple_usizeTransactionZ_clone(const struct LDKC2Tuple_usizeTransactionZ *NONNULL_PTR orig);
+       export function C2Tuple_usizeTransactionZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_usizeTransactionZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_C2Tuple_usizeTransactionZ_new(a, encodeUint8Array(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.TS_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.TS_CVec_C2Tuple_usizeTransactionZZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t C2Tuple_u32TxOutZ_clone_ptr(LDKC2Tuple_u32TxOutZ *NONNULL_PTR arg);
+       export function C2Tuple_u32TxOutZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_u32TxOutZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_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.TS_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.TS_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.TS_CVec_C2Tuple_u32TxOutZZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone_ptr(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR arg);
+       export function C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone(const struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR orig);
+       export function C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_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 {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new(encodeUint8Array(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.TS_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.TS_CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_free(_res);
+               // debug statements here
+       }
+       // void CVec_TxidZ_free(struct LDKCVec_TxidZ _res);
+       export function CVec_TxidZ_free(_res: Uint8Array[]): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CVec_TxidZ_free(_res);
+               // debug statements here
+       }
+       // void CVec_BalanceZ_free(struct LDKCVec_BalanceZ _res);
+       export function CVec_BalanceZ_free(_res: number[]): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CVec_BalanceZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t C2Tuple_BlockHashChannelMonitorZ_clone_ptr(LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR arg);
+       export function C2Tuple_BlockHashChannelMonitorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_BlockHashChannelMonitorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKC2Tuple_BlockHashChannelMonitorZ C2Tuple_BlockHashChannelMonitorZ_clone(const struct LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR orig);
+       export function C2Tuple_BlockHashChannelMonitorZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_BlockHashChannelMonitorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_C2Tuple_BlockHashChannelMonitorZ_new(encodeUint8Array(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.TS_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.TS_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.TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_is_ok(const struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_is_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.TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone_ptr(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone(const struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *NONNULL_PTR orig);
+       export function CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_RouteHopDecodeErrorZ CResult_RouteHopDecodeErrorZ_ok(struct LDKRouteHop o);
+       export function CResult_RouteHopDecodeErrorZ_ok(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteHopDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_RouteHopDecodeErrorZ CResult_RouteHopDecodeErrorZ_err(struct LDKDecodeError e);
+       export function CResult_RouteHopDecodeErrorZ_err(e: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteHopDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_RouteHopDecodeErrorZ_is_ok(const struct LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_RouteHopDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteHopDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_RouteHopDecodeErrorZ_free(struct LDKCResult_RouteHopDecodeErrorZ _res);
+       export function CResult_RouteHopDecodeErrorZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteHopDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_RouteHopDecodeErrorZ_clone_ptr(LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_RouteHopDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteHopDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_RouteHopDecodeErrorZ CResult_RouteHopDecodeErrorZ_clone(const struct LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR orig);
+       export function CResult_RouteHopDecodeErrorZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteHopDecodeErrorZ_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.TS_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.TS_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.TS_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.TS_CResult_RouteDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_RouteDecodeErrorZ_is_ok(const struct LDKCResult_RouteDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_RouteDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteDecodeErrorZ_is_ok(o);
+               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.TS_CResult_RouteDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_RouteDecodeErrorZ_clone_ptr(LDKCResult_RouteDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_RouteDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_RouteDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_RouteParametersDecodeErrorZ CResult_RouteParametersDecodeErrorZ_ok(struct LDKRouteParameters o);
+       export function CResult_RouteParametersDecodeErrorZ_ok(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteParametersDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_RouteParametersDecodeErrorZ CResult_RouteParametersDecodeErrorZ_err(struct LDKDecodeError e);
+       export function CResult_RouteParametersDecodeErrorZ_err(e: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteParametersDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_RouteParametersDecodeErrorZ_is_ok(const struct LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_RouteParametersDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteParametersDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_RouteParametersDecodeErrorZ_free(struct LDKCResult_RouteParametersDecodeErrorZ _res);
+       export function CResult_RouteParametersDecodeErrorZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteParametersDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_RouteParametersDecodeErrorZ_clone_ptr(LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_RouteParametersDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteParametersDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_RouteParametersDecodeErrorZ CResult_RouteParametersDecodeErrorZ_clone(const struct LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR orig);
+       export function CResult_RouteParametersDecodeErrorZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteParametersDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CVec_RouteHintZ_free(_res);
+               // debug statements here
+       }
+       // struct LDKCOption_u64Z COption_u64Z_some(uint64_t o);
+       export function COption_u64Z_some(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_u64Z_some(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_u64Z COption_u64Z_none(void);
+       export function COption_u64Z_none(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_u64Z_none();
+               return nativeResponseValue;
+       }
+       // void COption_u64Z_free(struct LDKCOption_u64Z _res);
+       export function COption_u64Z_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_u64Z_free(_res);
+               // debug statements here
+       }
+       // uint64_t COption_u64Z_clone_ptr(LDKCOption_u64Z *NONNULL_PTR arg);
+       export function COption_u64Z_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_u64Z_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_u64Z COption_u64Z_clone(const struct LDKCOption_u64Z *NONNULL_PTR orig);
+       export function COption_u64Z_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_u64Z_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_PayeeDecodeErrorZ CResult_PayeeDecodeErrorZ_ok(struct LDKPayee o);
+       export function CResult_PayeeDecodeErrorZ_ok(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PayeeDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_PayeeDecodeErrorZ CResult_PayeeDecodeErrorZ_err(struct LDKDecodeError e);
+       export function CResult_PayeeDecodeErrorZ_err(e: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PayeeDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_PayeeDecodeErrorZ_is_ok(const struct LDKCResult_PayeeDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_PayeeDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PayeeDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_PayeeDecodeErrorZ_free(struct LDKCResult_PayeeDecodeErrorZ _res);
+       export function CResult_PayeeDecodeErrorZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PayeeDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_PayeeDecodeErrorZ_clone_ptr(LDKCResult_PayeeDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_PayeeDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PayeeDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_PayeeDecodeErrorZ CResult_PayeeDecodeErrorZ_clone(const struct LDKCResult_PayeeDecodeErrorZ *NONNULL_PTR orig);
+       export function CResult_PayeeDecodeErrorZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PayeeDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // void CVec_RouteHintHopZ_free(struct LDKCVec_RouteHintHopZ _res);
+       export function CVec_RouteHintHopZ_free(_res: number[]): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CVec_RouteHintHopZ_free(_res);
+               // debug statements here
+       }
+       // struct LDKCResult_RouteHintDecodeErrorZ CResult_RouteHintDecodeErrorZ_ok(struct LDKRouteHint o);
+       export function CResult_RouteHintDecodeErrorZ_ok(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteHintDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_RouteHintDecodeErrorZ CResult_RouteHintDecodeErrorZ_err(struct LDKDecodeError e);
+       export function CResult_RouteHintDecodeErrorZ_err(e: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteHintDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_RouteHintDecodeErrorZ_is_ok(const struct LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_RouteHintDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteHintDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_RouteHintDecodeErrorZ_free(struct LDKCResult_RouteHintDecodeErrorZ _res);
+       export function CResult_RouteHintDecodeErrorZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteHintDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_RouteHintDecodeErrorZ_clone_ptr(LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_RouteHintDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteHintDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_RouteHintDecodeErrorZ CResult_RouteHintDecodeErrorZ_clone(const struct LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR orig);
+       export function CResult_RouteHintDecodeErrorZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteHintDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_RouteHintHopDecodeErrorZ CResult_RouteHintHopDecodeErrorZ_ok(struct LDKRouteHintHop o);
+       export function CResult_RouteHintHopDecodeErrorZ_ok(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteHintHopDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_RouteHintHopDecodeErrorZ CResult_RouteHintHopDecodeErrorZ_err(struct LDKDecodeError e);
+       export function CResult_RouteHintHopDecodeErrorZ_err(e: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteHintHopDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_RouteHintHopDecodeErrorZ_is_ok(const struct LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_RouteHintHopDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteHintHopDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_RouteHintHopDecodeErrorZ_free(struct LDKCResult_RouteHintHopDecodeErrorZ _res);
+       export function CResult_RouteHintHopDecodeErrorZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteHintHopDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_RouteHintHopDecodeErrorZ_clone_ptr(LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_RouteHintHopDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteHintHopDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_RouteHintHopDecodeErrorZ CResult_RouteHintHopDecodeErrorZ_clone(const struct LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR orig);
+       export function CResult_RouteHintHopDecodeErrorZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteHintHopDecodeErrorZ_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.TS_CVec_ChannelDetailsZ_free(_res);
+               // debug statements here
+       }
+       // 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.TS_CResult_RouteLightningErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_RouteLightningErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_RouteLightningErrorZ_is_ok(const struct LDKCResult_RouteLightningErrorZ *NONNULL_PTR o);
+       export function CResult_RouteLightningErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteLightningErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_RouteLightningErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_RouteLightningErrorZ_clone_ptr(LDKCResult_RouteLightningErrorZ *NONNULL_PTR arg);
+       export function CResult_RouteLightningErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RouteLightningErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_RouteLightningErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_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.TS_CResult_NoneLightningErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_NoneLightningErrorZ_is_ok(const struct LDKCResult_NoneLightningErrorZ *NONNULL_PTR o);
+       export function CResult_NoneLightningErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NoneLightningErrorZ_is_ok(o);
+               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.TS_CResult_NoneLightningErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_NoneLightningErrorZ_clone_ptr(LDKCResult_NoneLightningErrorZ *NONNULL_PTR arg);
+       export function CResult_NoneLightningErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NoneLightningErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_NoneLightningErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // uint64_t C2Tuple_PublicKeyTypeZ_clone_ptr(LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR arg);
+       export function C2Tuple_PublicKeyTypeZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_PublicKeyTypeZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKC2Tuple_PublicKeyTypeZ C2Tuple_PublicKeyTypeZ_clone(const struct LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR orig);
+       export function C2Tuple_PublicKeyTypeZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_PublicKeyTypeZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKC2Tuple_PublicKeyTypeZ C2Tuple_PublicKeyTypeZ_new(struct LDKPublicKey a, struct LDKType b);
+       export function C2Tuple_PublicKeyTypeZ_new(a: Uint8Array, b: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_PublicKeyTypeZ_new(encodeUint8Array(a), b);
+               return nativeResponseValue;
+       }
+       // void C2Tuple_PublicKeyTypeZ_free(struct LDKC2Tuple_PublicKeyTypeZ _res);
+       export function C2Tuple_PublicKeyTypeZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_PublicKeyTypeZ_free(_res);
+               // debug statements here
+       }
+       // void CVec_C2Tuple_PublicKeyTypeZZ_free(struct LDKCVec_C2Tuple_PublicKeyTypeZZ _res);
+       export function CVec_C2Tuple_PublicKeyTypeZZ_free(_res: number[]): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CVec_C2Tuple_PublicKeyTypeZZ_free(_res);
+               // debug statements here
+       }
+       // 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.TS_CVec_MessageSendEventZ_free(_res);
+               // debug statements here
+       }
+       // 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.TS_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.TS_CResult_boolLightningErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_boolLightningErrorZ_is_ok(const struct LDKCResult_boolLightningErrorZ *NONNULL_PTR o);
+       export function CResult_boolLightningErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_boolLightningErrorZ_is_ok(o);
+               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.TS_CResult_boolLightningErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_boolLightningErrorZ_clone_ptr(LDKCResult_boolLightningErrorZ *NONNULL_PTR arg);
+       export function CResult_boolLightningErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_boolLightningErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_boolLightningErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // uint64_t C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone_ptr(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR arg);
+       export function C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone_ptr(arg);
+               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.TS_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.TS_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.TS_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.TS_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.TS_CVec_NodeAnnouncementZ_free(_res);
+               // debug statements here
+       }
+       // 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.TS_CVec_PublicKeyZ_free(_res);
+               // debug statements here
+       }
+       // 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.TS_CVec_u8Z_free(encodeUint8Array(_res));
+               // debug statements here
+       }
+       // 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.TS_CResult_CVec_u8ZPeerHandleErrorZ_ok(encodeUint8Array(o));
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_CVec_u8ZPeerHandleErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_CVec_u8ZPeerHandleErrorZ_is_ok(const struct LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR o);
+       export function CResult_CVec_u8ZPeerHandleErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_CVec_u8ZPeerHandleErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_CVec_u8ZPeerHandleErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_CVec_u8ZPeerHandleErrorZ_clone_ptr(LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR arg);
+       export function CResult_CVec_u8ZPeerHandleErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_CVec_u8ZPeerHandleErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_CVec_u8ZPeerHandleErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_NonePeerHandleErrorZ_ok();
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_NonePeerHandleErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_NonePeerHandleErrorZ_is_ok(const struct LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR o);
+       export function CResult_NonePeerHandleErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NonePeerHandleErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_NonePeerHandleErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_NonePeerHandleErrorZ_clone_ptr(LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR arg);
+       export function CResult_NonePeerHandleErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NonePeerHandleErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_NonePeerHandleErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_boolPeerHandleErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_boolPeerHandleErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_boolPeerHandleErrorZ_is_ok(const struct LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR o);
+       export function CResult_boolPeerHandleErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_boolPeerHandleErrorZ_is_ok(o);
+               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.TS_CResult_boolPeerHandleErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_boolPeerHandleErrorZ_clone_ptr(LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR arg);
+       export function CResult_boolPeerHandleErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_boolPeerHandleErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_boolPeerHandleErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_TxOutAccessErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_err(enum LDKAccessError e);
+       export function CResult_TxOutAccessErrorZ_err(e: AccessError): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TxOutAccessErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_TxOutAccessErrorZ_is_ok(const struct LDKCResult_TxOutAccessErrorZ *NONNULL_PTR o);
+       export function CResult_TxOutAccessErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TxOutAccessErrorZ_is_ok(o);
+               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.TS_CResult_TxOutAccessErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_TxOutAccessErrorZ_clone_ptr(LDKCResult_TxOutAccessErrorZ *NONNULL_PTR arg);
+       export function CResult_TxOutAccessErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TxOutAccessErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_TxOutAccessErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_NoneChannelMonitorUpdateErrZ_ok();
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_err(enum LDKChannelMonitorUpdateErr e);
+       export function CResult_NoneChannelMonitorUpdateErrZ_err(e: ChannelMonitorUpdateErr): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NoneChannelMonitorUpdateErrZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_NoneChannelMonitorUpdateErrZ_is_ok(const struct LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR o);
+       export function CResult_NoneChannelMonitorUpdateErrZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NoneChannelMonitorUpdateErrZ_is_ok(o);
+               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.TS_CResult_NoneChannelMonitorUpdateErrZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_NoneChannelMonitorUpdateErrZ_clone_ptr(LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR arg);
+       export function CResult_NoneChannelMonitorUpdateErrZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NoneChannelMonitorUpdateErrZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_NoneChannelMonitorUpdateErrZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_C2Tuple_usizeTransactionZZ COption_C2Tuple_usizeTransactionZZ_some(struct LDKC2Tuple_usizeTransactionZ o);
+       export function COption_C2Tuple_usizeTransactionZZ_some(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_C2Tuple_usizeTransactionZZ_some(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_C2Tuple_usizeTransactionZZ COption_C2Tuple_usizeTransactionZZ_none(void);
+       export function COption_C2Tuple_usizeTransactionZZ_none(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_C2Tuple_usizeTransactionZZ_none();
+               return nativeResponseValue;
+       }
+       // void COption_C2Tuple_usizeTransactionZZ_free(struct LDKCOption_C2Tuple_usizeTransactionZZ _res);
+       export function COption_C2Tuple_usizeTransactionZZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_C2Tuple_usizeTransactionZZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t COption_C2Tuple_usizeTransactionZZ_clone_ptr(LDKCOption_C2Tuple_usizeTransactionZZ *NONNULL_PTR arg);
+       export function COption_C2Tuple_usizeTransactionZZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_C2Tuple_usizeTransactionZZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_C2Tuple_usizeTransactionZZ COption_C2Tuple_usizeTransactionZZ_clone(const struct LDKCOption_C2Tuple_usizeTransactionZZ *NONNULL_PTR orig);
+       export function COption_C2Tuple_usizeTransactionZZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_C2Tuple_usizeTransactionZZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_ClosureReasonZ COption_ClosureReasonZ_some(struct LDKClosureReason o);
+       export function COption_ClosureReasonZ_some(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_ClosureReasonZ_some(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_ClosureReasonZ COption_ClosureReasonZ_none(void);
+       export function COption_ClosureReasonZ_none(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_ClosureReasonZ_none();
+               return nativeResponseValue;
+       }
+       // void COption_ClosureReasonZ_free(struct LDKCOption_ClosureReasonZ _res);
+       export function COption_ClosureReasonZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_ClosureReasonZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t COption_ClosureReasonZ_clone_ptr(LDKCOption_ClosureReasonZ *NONNULL_PTR arg);
+       export function COption_ClosureReasonZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_ClosureReasonZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_ClosureReasonZ COption_ClosureReasonZ_clone(const struct LDKCOption_ClosureReasonZ *NONNULL_PTR orig);
+       export function COption_ClosureReasonZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_ClosureReasonZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_COption_ClosureReasonZDecodeErrorZ CResult_COption_ClosureReasonZDecodeErrorZ_ok(struct LDKCOption_ClosureReasonZ o);
+       export function CResult_COption_ClosureReasonZDecodeErrorZ_ok(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_ClosureReasonZDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_COption_ClosureReasonZDecodeErrorZ CResult_COption_ClosureReasonZDecodeErrorZ_err(struct LDKDecodeError e);
+       export function CResult_COption_ClosureReasonZDecodeErrorZ_err(e: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_ClosureReasonZDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_COption_ClosureReasonZDecodeErrorZ_is_ok(const struct LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_COption_ClosureReasonZDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_ClosureReasonZDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_COption_ClosureReasonZDecodeErrorZ_free(struct LDKCResult_COption_ClosureReasonZDecodeErrorZ _res);
+       export function CResult_COption_ClosureReasonZDecodeErrorZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_ClosureReasonZDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_COption_ClosureReasonZDecodeErrorZ_clone_ptr(LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_COption_ClosureReasonZDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_ClosureReasonZDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_COption_ClosureReasonZDecodeErrorZ CResult_COption_ClosureReasonZDecodeErrorZ_clone(const struct LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR orig);
+       export function CResult_COption_ClosureReasonZDecodeErrorZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_ClosureReasonZDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_NetworkUpdateZ COption_NetworkUpdateZ_some(struct LDKNetworkUpdate o);
+       export function COption_NetworkUpdateZ_some(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_NetworkUpdateZ_some(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_NetworkUpdateZ COption_NetworkUpdateZ_none(void);
+       export function COption_NetworkUpdateZ_none(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_NetworkUpdateZ_none();
+               return nativeResponseValue;
+       }
+       // void COption_NetworkUpdateZ_free(struct LDKCOption_NetworkUpdateZ _res);
+       export function COption_NetworkUpdateZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_NetworkUpdateZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t COption_NetworkUpdateZ_clone_ptr(LDKCOption_NetworkUpdateZ *NONNULL_PTR arg);
+       export function COption_NetworkUpdateZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_NetworkUpdateZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_NetworkUpdateZ COption_NetworkUpdateZ_clone(const struct LDKCOption_NetworkUpdateZ *NONNULL_PTR orig);
+       export function COption_NetworkUpdateZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_NetworkUpdateZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CVec_SpendableOutputDescriptorZ_free(_res);
+               // debug statements here
+       }
+       // struct LDKCOption_EventZ COption_EventZ_some(struct LDKEvent o);
+       export function COption_EventZ_some(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_EventZ_some(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_EventZ COption_EventZ_none(void);
+       export function COption_EventZ_none(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_EventZ_none();
+               return nativeResponseValue;
+       }
+       // void COption_EventZ_free(struct LDKCOption_EventZ _res);
+       export function COption_EventZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_EventZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t COption_EventZ_clone_ptr(LDKCOption_EventZ *NONNULL_PTR arg);
+       export function COption_EventZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_EventZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_EventZ COption_EventZ_clone(const struct LDKCOption_EventZ *NONNULL_PTR orig);
+       export function COption_EventZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_EventZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_COption_EventZDecodeErrorZ CResult_COption_EventZDecodeErrorZ_ok(struct LDKCOption_EventZ o);
+       export function CResult_COption_EventZDecodeErrorZ_ok(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_EventZDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_COption_EventZDecodeErrorZ CResult_COption_EventZDecodeErrorZ_err(struct LDKDecodeError e);
+       export function CResult_COption_EventZDecodeErrorZ_err(e: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_EventZDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_COption_EventZDecodeErrorZ_is_ok(const struct LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_COption_EventZDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_EventZDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_COption_EventZDecodeErrorZ_free(struct LDKCResult_COption_EventZDecodeErrorZ _res);
+       export function CResult_COption_EventZDecodeErrorZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_EventZDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_COption_EventZDecodeErrorZ_clone_ptr(LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_COption_EventZDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_EventZDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_COption_EventZDecodeErrorZ CResult_COption_EventZDecodeErrorZ_clone(const struct LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR orig);
+       export function CResult_COption_EventZDecodeErrorZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_EventZDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_NodeIdDecodeErrorZ CResult_NodeIdDecodeErrorZ_ok(struct LDKNodeId o);
+       export function CResult_NodeIdDecodeErrorZ_ok(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NodeIdDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_NodeIdDecodeErrorZ CResult_NodeIdDecodeErrorZ_err(struct LDKDecodeError e);
+       export function CResult_NodeIdDecodeErrorZ_err(e: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NodeIdDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_NodeIdDecodeErrorZ_is_ok(const struct LDKCResult_NodeIdDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_NodeIdDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NodeIdDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_NodeIdDecodeErrorZ_free(struct LDKCResult_NodeIdDecodeErrorZ _res);
+       export function CResult_NodeIdDecodeErrorZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NodeIdDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_NodeIdDecodeErrorZ_clone_ptr(LDKCResult_NodeIdDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_NodeIdDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NodeIdDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_NodeIdDecodeErrorZ CResult_NodeIdDecodeErrorZ_clone(const struct LDKCResult_NodeIdDecodeErrorZ *NONNULL_PTR orig);
+       export function CResult_NodeIdDecodeErrorZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NodeIdDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ CResult_COption_NetworkUpdateZDecodeErrorZ_ok(struct LDKCOption_NetworkUpdateZ o);
+       export function CResult_COption_NetworkUpdateZDecodeErrorZ_ok(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_NetworkUpdateZDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ CResult_COption_NetworkUpdateZDecodeErrorZ_err(struct LDKDecodeError e);
+       export function CResult_COption_NetworkUpdateZDecodeErrorZ_err(e: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_NetworkUpdateZDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_COption_NetworkUpdateZDecodeErrorZ_is_ok(const struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_COption_NetworkUpdateZDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_NetworkUpdateZDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_COption_NetworkUpdateZDecodeErrorZ_free(struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ _res);
+       export function CResult_COption_NetworkUpdateZDecodeErrorZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_NetworkUpdateZDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_COption_NetworkUpdateZDecodeErrorZ_clone_ptr(LDKCResult_COption_NetworkUpdateZDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_COption_NetworkUpdateZDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_NetworkUpdateZDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ CResult_COption_NetworkUpdateZDecodeErrorZ_clone(const struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ *NONNULL_PTR orig);
+       export function CResult_COption_NetworkUpdateZDecodeErrorZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_COption_NetworkUpdateZDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_AccessZ COption_AccessZ_some(struct LDKAccess o);
+       export function COption_AccessZ_some(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_AccessZ_some(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_AccessZ COption_AccessZ_none(void);
+       export function COption_AccessZ_none(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_AccessZ_none();
+               return nativeResponseValue;
+       }
+       // void COption_AccessZ_free(struct LDKCOption_AccessZ _res);
+       export function COption_AccessZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_AccessZ_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.TS_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.TS_CResult_DirectionalChannelInfoDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_DirectionalChannelInfoDecodeErrorZ_is_ok(const struct LDKCResult_DirectionalChannelInfoDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_DirectionalChannelInfoDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_DirectionalChannelInfoDecodeErrorZ_is_ok(o);
+               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.TS_CResult_DirectionalChannelInfoDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_DirectionalChannelInfoDecodeErrorZ_clone_ptr(LDKCResult_DirectionalChannelInfoDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_DirectionalChannelInfoDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_DirectionalChannelInfoDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_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.TS_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.TS_CResult_ChannelInfoDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_ChannelInfoDecodeErrorZ_is_ok(const struct LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_ChannelInfoDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelInfoDecodeErrorZ_is_ok(o);
+               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.TS_CResult_ChannelInfoDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_ChannelInfoDecodeErrorZ_clone_ptr(LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_ChannelInfoDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelInfoDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_clone(const struct LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR orig);
+       export function CResult_ChannelInfoDecodeErrorZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelInfoDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_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.TS_CResult_RoutingFeesDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_RoutingFeesDecodeErrorZ_is_ok(const struct LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_RoutingFeesDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RoutingFeesDecodeErrorZ_is_ok(o);
+               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.TS_CResult_RoutingFeesDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_RoutingFeesDecodeErrorZ_clone_ptr(LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_RoutingFeesDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RoutingFeesDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_RoutingFeesDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // void CVec_NetAddressZ_free(struct LDKCVec_NetAddressZ _res);
+       export function CVec_NetAddressZ_free(_res: number[]): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CVec_NetAddressZ_free(_res);
+               // debug statements here
+       }
+       // 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.TS_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.TS_CResult_NodeAnnouncementInfoDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_NodeAnnouncementInfoDecodeErrorZ_is_ok(const struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_NodeAnnouncementInfoDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NodeAnnouncementInfoDecodeErrorZ_is_ok(o);
+               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.TS_CResult_NodeAnnouncementInfoDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_NodeAnnouncementInfoDecodeErrorZ_clone_ptr(LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_NodeAnnouncementInfoDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NodeAnnouncementInfoDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_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.TS_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.TS_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.TS_CResult_NodeInfoDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_NodeInfoDecodeErrorZ_is_ok(const struct LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_NodeInfoDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NodeInfoDecodeErrorZ_is_ok(o);
+               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.TS_CResult_NodeInfoDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_NodeInfoDecodeErrorZ_clone_ptr(LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_NodeInfoDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NodeInfoDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_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.TS_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.TS_CResult_NetworkGraphDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_NetworkGraphDecodeErrorZ_is_ok(const struct LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_NetworkGraphDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NetworkGraphDecodeErrorZ_is_ok(o);
+               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.TS_CResult_NetworkGraphDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_NetworkGraphDecodeErrorZ_clone_ptr(LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_NetworkGraphDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NetworkGraphDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_clone(const struct LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR orig);
+       export function CResult_NetworkGraphDecodeErrorZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NetworkGraphDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_CVec_NetAddressZZ COption_CVec_NetAddressZZ_some(struct LDKCVec_NetAddressZ o);
+       export function COption_CVec_NetAddressZZ_some(o: number[]): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_CVec_NetAddressZZ_some(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_CVec_NetAddressZZ COption_CVec_NetAddressZZ_none(void);
+       export function COption_CVec_NetAddressZZ_none(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_CVec_NetAddressZZ_none();
+               return nativeResponseValue;
+       }
+       // void COption_CVec_NetAddressZZ_free(struct LDKCOption_CVec_NetAddressZZ _res);
+       export function COption_CVec_NetAddressZZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_CVec_NetAddressZZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t COption_CVec_NetAddressZZ_clone_ptr(LDKCOption_CVec_NetAddressZZ *NONNULL_PTR arg);
+       export function COption_CVec_NetAddressZZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_CVec_NetAddressZZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_CVec_NetAddressZZ COption_CVec_NetAddressZZ_clone(const struct LDKCOption_CVec_NetAddressZZ *NONNULL_PTR orig);
+       export function COption_CVec_NetAddressZZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_CVec_NetAddressZZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_ScoringParametersDecodeErrorZ CResult_ScoringParametersDecodeErrorZ_ok(struct LDKScoringParameters o);
+       export function CResult_ScoringParametersDecodeErrorZ_ok(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ScoringParametersDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_ScoringParametersDecodeErrorZ CResult_ScoringParametersDecodeErrorZ_err(struct LDKDecodeError e);
+       export function CResult_ScoringParametersDecodeErrorZ_err(e: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ScoringParametersDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_ScoringParametersDecodeErrorZ_is_ok(const struct LDKCResult_ScoringParametersDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_ScoringParametersDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ScoringParametersDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_ScoringParametersDecodeErrorZ_free(struct LDKCResult_ScoringParametersDecodeErrorZ _res);
+       export function CResult_ScoringParametersDecodeErrorZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ScoringParametersDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // 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.TS_CResult_InitFeaturesDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_InitFeaturesDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_InitFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_InitFeaturesDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_InitFeaturesDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_InitFeaturesDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_InitFeaturesDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // 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.TS_CResult_ChannelFeaturesDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ChannelFeaturesDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_ChannelFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_ChannelFeaturesDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_ChannelFeaturesDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelFeaturesDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ChannelFeaturesDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // 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.TS_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.TS_CResult_NodeFeaturesDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_NodeFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_NodeFeaturesDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_NodeFeaturesDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NodeFeaturesDecodeErrorZ_is_ok(o);
+               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.TS_CResult_NodeFeaturesDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // struct LDKCResult_InvoiceFeaturesDecodeErrorZ CResult_InvoiceFeaturesDecodeErrorZ_ok(struct LDKInvoiceFeatures o);
+       export function CResult_InvoiceFeaturesDecodeErrorZ_ok(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_InvoiceFeaturesDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_InvoiceFeaturesDecodeErrorZ CResult_InvoiceFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
+       export function CResult_InvoiceFeaturesDecodeErrorZ_err(e: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_InvoiceFeaturesDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_InvoiceFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_InvoiceFeaturesDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_InvoiceFeaturesDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_InvoiceFeaturesDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_InvoiceFeaturesDecodeErrorZ_free(struct LDKCResult_InvoiceFeaturesDecodeErrorZ _res);
+       export function CResult_InvoiceFeaturesDecodeErrorZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_InvoiceFeaturesDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ CResult_ChannelTypeFeaturesDecodeErrorZ_ok(struct LDKChannelTypeFeatures o);
+       export function CResult_ChannelTypeFeaturesDecodeErrorZ_ok(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelTypeFeaturesDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ CResult_ChannelTypeFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
+       export function CResult_ChannelTypeFeaturesDecodeErrorZ_err(e: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelTypeFeaturesDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_ChannelTypeFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_ChannelTypeFeaturesDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelTypeFeaturesDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_ChannelTypeFeaturesDecodeErrorZ_free(struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ _res);
+       export function CResult_ChannelTypeFeaturesDecodeErrorZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelTypeFeaturesDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // struct LDKCResult_NetAddressDecodeErrorZ CResult_NetAddressDecodeErrorZ_ok(struct LDKNetAddress o);
+       export function CResult_NetAddressDecodeErrorZ_ok(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NetAddressDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_NetAddressDecodeErrorZ CResult_NetAddressDecodeErrorZ_err(struct LDKDecodeError e);
+       export function CResult_NetAddressDecodeErrorZ_err(e: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NetAddressDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_NetAddressDecodeErrorZ_is_ok(const struct LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_NetAddressDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NetAddressDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_NetAddressDecodeErrorZ_free(struct LDKCResult_NetAddressDecodeErrorZ _res);
+       export function CResult_NetAddressDecodeErrorZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NetAddressDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_NetAddressDecodeErrorZ_clone_ptr(LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_NetAddressDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NetAddressDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_NetAddressDecodeErrorZ CResult_NetAddressDecodeErrorZ_clone(const struct LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR orig);
+       export function CResult_NetAddressDecodeErrorZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NetAddressDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // void CVec_UpdateAddHTLCZ_free(struct LDKCVec_UpdateAddHTLCZ _res);
+       export function CVec_UpdateAddHTLCZ_free(_res: number[]): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CVec_UpdateAddHTLCZ_free(_res);
+               // debug statements here
+       }
+       // void CVec_UpdateFulfillHTLCZ_free(struct LDKCVec_UpdateFulfillHTLCZ _res);
+       export function CVec_UpdateFulfillHTLCZ_free(_res: number[]): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CVec_UpdateFulfillHTLCZ_free(_res);
+               // debug statements here
+       }
+       // void CVec_UpdateFailHTLCZ_free(struct LDKCVec_UpdateFailHTLCZ _res);
+       export function CVec_UpdateFailHTLCZ_free(_res: number[]): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CVec_UpdateFailHTLCZ_free(_res);
+               // debug statements here
+       }
+       // void CVec_UpdateFailMalformedHTLCZ_free(struct LDKCVec_UpdateFailMalformedHTLCZ _res);
+       export function CVec_UpdateFailMalformedHTLCZ_free(_res: number[]): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CVec_UpdateFailMalformedHTLCZ_free(_res);
+               // debug statements here
+       }
+       // 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.TS_CResult_AcceptChannelDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_AcceptChannelDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_AcceptChannelDecodeErrorZ_is_ok(const struct LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_AcceptChannelDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_AcceptChannelDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_AcceptChannelDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_AcceptChannelDecodeErrorZ_clone_ptr(LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_AcceptChannelDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_AcceptChannelDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_AcceptChannelDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_AnnouncementSignaturesDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_AnnouncementSignaturesDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_AnnouncementSignaturesDecodeErrorZ_is_ok(const struct LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_AnnouncementSignaturesDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_AnnouncementSignaturesDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_AnnouncementSignaturesDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_AnnouncementSignaturesDecodeErrorZ_clone_ptr(LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_AnnouncementSignaturesDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_AnnouncementSignaturesDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_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.TS_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.TS_CResult_ChannelReestablishDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_ChannelReestablishDecodeErrorZ_is_ok(const struct LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_ChannelReestablishDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelReestablishDecodeErrorZ_is_ok(o);
+               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.TS_CResult_ChannelReestablishDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_ChannelReestablishDecodeErrorZ_clone_ptr(LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_ChannelReestablishDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelReestablishDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ChannelReestablishDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ClosingSignedDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ClosingSignedDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_ClosingSignedDecodeErrorZ_is_ok(const struct LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_ClosingSignedDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ClosingSignedDecodeErrorZ_is_ok(o);
+               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.TS_CResult_ClosingSignedDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_ClosingSignedDecodeErrorZ_clone_ptr(LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_ClosingSignedDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ClosingSignedDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ClosingSignedDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ CResult_ClosingSignedFeeRangeDecodeErrorZ_ok(struct LDKClosingSignedFeeRange o);
+       export function CResult_ClosingSignedFeeRangeDecodeErrorZ_ok(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ CResult_ClosingSignedFeeRangeDecodeErrorZ_err(struct LDKDecodeError e);
+       export function CResult_ClosingSignedFeeRangeDecodeErrorZ_err(e: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_ClosingSignedFeeRangeDecodeErrorZ_is_ok(const struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_ClosingSignedFeeRangeDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_ClosingSignedFeeRangeDecodeErrorZ_free(struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ _res);
+       export function CResult_ClosingSignedFeeRangeDecodeErrorZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_ClosingSignedFeeRangeDecodeErrorZ_clone_ptr(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_ClosingSignedFeeRangeDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ CResult_ClosingSignedFeeRangeDecodeErrorZ_clone(const struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR orig);
+       export function CResult_ClosingSignedFeeRangeDecodeErrorZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ClosingSignedFeeRangeDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_CommitmentSignedDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_CommitmentSignedDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_CommitmentSignedDecodeErrorZ_is_ok(const struct LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_CommitmentSignedDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_CommitmentSignedDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_CommitmentSignedDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_CommitmentSignedDecodeErrorZ_clone_ptr(LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_CommitmentSignedDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_CommitmentSignedDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_CommitmentSignedDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_FundingCreatedDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_FundingCreatedDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_FundingCreatedDecodeErrorZ_is_ok(const struct LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_FundingCreatedDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_FundingCreatedDecodeErrorZ_is_ok(o);
+               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.TS_CResult_FundingCreatedDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_FundingCreatedDecodeErrorZ_clone_ptr(LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_FundingCreatedDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_FundingCreatedDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_FundingCreatedDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_FundingSignedDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_FundingSignedDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_FundingSignedDecodeErrorZ_is_ok(const struct LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_FundingSignedDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_FundingSignedDecodeErrorZ_is_ok(o);
+               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.TS_CResult_FundingSignedDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_FundingSignedDecodeErrorZ_clone_ptr(LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_FundingSignedDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_FundingSignedDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_FundingSignedDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_FundingLockedDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_FundingLockedDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_FundingLockedDecodeErrorZ_is_ok(const struct LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_FundingLockedDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_FundingLockedDecodeErrorZ_is_ok(o);
+               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.TS_CResult_FundingLockedDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_FundingLockedDecodeErrorZ_clone_ptr(LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_FundingLockedDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_FundingLockedDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_FundingLockedDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_InitDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_InitDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_InitDecodeErrorZ_is_ok(const struct LDKCResult_InitDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_InitDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_InitDecodeErrorZ_is_ok(o);
+               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.TS_CResult_InitDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_InitDecodeErrorZ_clone_ptr(LDKCResult_InitDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_InitDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_InitDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_InitDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_OpenChannelDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_OpenChannelDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_OpenChannelDecodeErrorZ_is_ok(const struct LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_OpenChannelDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_OpenChannelDecodeErrorZ_is_ok(o);
+               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.TS_CResult_OpenChannelDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_OpenChannelDecodeErrorZ_clone_ptr(LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_OpenChannelDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_OpenChannelDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_OpenChannelDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_RevokeAndACKDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_RevokeAndACKDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_RevokeAndACKDecodeErrorZ_is_ok(const struct LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_RevokeAndACKDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RevokeAndACKDecodeErrorZ_is_ok(o);
+               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.TS_CResult_RevokeAndACKDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_RevokeAndACKDecodeErrorZ_clone_ptr(LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_RevokeAndACKDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RevokeAndACKDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_RevokeAndACKDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ShutdownDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ShutdownDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_ShutdownDecodeErrorZ_is_ok(const struct LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_ShutdownDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ShutdownDecodeErrorZ_is_ok(o);
+               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.TS_CResult_ShutdownDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_ShutdownDecodeErrorZ_clone_ptr(LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_ShutdownDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ShutdownDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ShutdownDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_UpdateFailHTLCDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_UpdateFailHTLCDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_UpdateFailHTLCDecodeErrorZ_is_ok(const struct LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_UpdateFailHTLCDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UpdateFailHTLCDecodeErrorZ_is_ok(o);
+               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.TS_CResult_UpdateFailHTLCDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_UpdateFailHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_UpdateFailHTLCDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UpdateFailHTLCDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_UpdateFailHTLCDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_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.TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_UpdateFailMalformedHTLCDecodeErrorZ_is_ok(const struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_UpdateFailMalformedHTLCDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_is_ok(o);
+               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.TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_UpdateFeeDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_UpdateFeeDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_UpdateFeeDecodeErrorZ_is_ok(const struct LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_UpdateFeeDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UpdateFeeDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_UpdateFeeDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_UpdateFeeDecodeErrorZ_clone_ptr(LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_UpdateFeeDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UpdateFeeDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_UpdateFeeDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_UpdateFulfillHTLCDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_UpdateFulfillHTLCDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_UpdateFulfillHTLCDecodeErrorZ_is_ok(const struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_UpdateFulfillHTLCDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UpdateFulfillHTLCDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_UpdateFulfillHTLCDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_UpdateFulfillHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_UpdateFulfillHTLCDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UpdateFulfillHTLCDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_UpdateFulfillHTLCDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_UpdateAddHTLCDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_UpdateAddHTLCDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_UpdateAddHTLCDecodeErrorZ_is_ok(const struct LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_UpdateAddHTLCDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UpdateAddHTLCDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_UpdateAddHTLCDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_UpdateAddHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_UpdateAddHTLCDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UpdateAddHTLCDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_UpdateAddHTLCDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_PingDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_PingDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_PingDecodeErrorZ_is_ok(const struct LDKCResult_PingDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_PingDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PingDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_PingDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_PingDecodeErrorZ_clone_ptr(LDKCResult_PingDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_PingDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PingDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_PingDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_PongDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_PongDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_PongDecodeErrorZ_is_ok(const struct LDKCResult_PongDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_PongDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PongDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_PongDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_PongDecodeErrorZ_clone_ptr(LDKCResult_PongDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_PongDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PongDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_PongDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_UnsignedChannelAnnouncementDecodeErrorZ_is_ok(const struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_UnsignedChannelAnnouncementDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ChannelAnnouncementDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ChannelAnnouncementDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_ChannelAnnouncementDecodeErrorZ_is_ok(const struct LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_ChannelAnnouncementDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelAnnouncementDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ChannelAnnouncementDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_ChannelAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_ChannelAnnouncementDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelAnnouncementDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_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.TS_CResult_UnsignedChannelUpdateDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_UnsignedChannelUpdateDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_UnsignedChannelUpdateDecodeErrorZ_is_ok(const struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_UnsignedChannelUpdateDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UnsignedChannelUpdateDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_UnsignedChannelUpdateDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_UnsignedChannelUpdateDecodeErrorZ_clone_ptr(LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_UnsignedChannelUpdateDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UnsignedChannelUpdateDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_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.TS_CResult_ChannelUpdateDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ChannelUpdateDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_ChannelUpdateDecodeErrorZ_is_ok(const struct LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_ChannelUpdateDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelUpdateDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ChannelUpdateDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_ChannelUpdateDecodeErrorZ_clone_ptr(LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_ChannelUpdateDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ChannelUpdateDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ChannelUpdateDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ErrorMessageDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ErrorMessageDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_ErrorMessageDecodeErrorZ_is_ok(const struct LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_ErrorMessageDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ErrorMessageDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ErrorMessageDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_ErrorMessageDecodeErrorZ_clone_ptr(LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_ErrorMessageDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ErrorMessageDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ErrorMessageDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_UnsignedNodeAnnouncementDecodeErrorZ_is_ok(const struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_UnsignedNodeAnnouncementDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_NodeAnnouncementDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_NodeAnnouncementDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_NodeAnnouncementDecodeErrorZ_is_ok(const struct LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_NodeAnnouncementDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NodeAnnouncementDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_NodeAnnouncementDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_NodeAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_NodeAnnouncementDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NodeAnnouncementDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_NodeAnnouncementDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_QueryShortChannelIdsDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_QueryShortChannelIdsDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_QueryShortChannelIdsDecodeErrorZ_is_ok(const struct LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_QueryShortChannelIdsDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_QueryShortChannelIdsDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_QueryShortChannelIdsDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_QueryShortChannelIdsDecodeErrorZ_clone_ptr(LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_QueryShortChannelIdsDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_QueryShortChannelIdsDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_QueryShortChannelIdsDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_ReplyShortChannelIdsEndDecodeErrorZ_is_ok(const struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_ReplyShortChannelIdsEndDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_is_ok(o);
+               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.TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone_ptr(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_QueryChannelRangeDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_QueryChannelRangeDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_QueryChannelRangeDecodeErrorZ_is_ok(const struct LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_QueryChannelRangeDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_QueryChannelRangeDecodeErrorZ_is_ok(o);
+               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.TS_CResult_QueryChannelRangeDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_QueryChannelRangeDecodeErrorZ_clone_ptr(LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_QueryChannelRangeDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_QueryChannelRangeDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_QueryChannelRangeDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ReplyChannelRangeDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ReplyChannelRangeDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_ReplyChannelRangeDecodeErrorZ_is_ok(const struct LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_ReplyChannelRangeDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ReplyChannelRangeDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ReplyChannelRangeDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_ReplyChannelRangeDecodeErrorZ_clone_ptr(LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_ReplyChannelRangeDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_ReplyChannelRangeDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_ReplyChannelRangeDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_GossipTimestampFilterDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_GossipTimestampFilterDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_GossipTimestampFilterDecodeErrorZ_is_ok(const struct LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_GossipTimestampFilterDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_GossipTimestampFilterDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_GossipTimestampFilterDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_GossipTimestampFilterDecodeErrorZ_clone_ptr(LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_GossipTimestampFilterDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_GossipTimestampFilterDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_GossipTimestampFilterDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_ok(struct LDKDelayedPaymentOutputDescriptor o);
+       export function CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_ok(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_err(struct LDKDecodeError e);
+       export function CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_err(e: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_is_ok(const struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ _res);
+       export function CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone_ptr(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR orig);
+       export function CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ CResult_StaticPaymentOutputDescriptorDecodeErrorZ_ok(struct LDKStaticPaymentOutputDescriptor o);
+       export function CResult_StaticPaymentOutputDescriptorDecodeErrorZ_ok(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ CResult_StaticPaymentOutputDescriptorDecodeErrorZ_err(struct LDKDecodeError e);
+       export function CResult_StaticPaymentOutputDescriptorDecodeErrorZ_err(e: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_StaticPaymentOutputDescriptorDecodeErrorZ_is_ok(const struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_StaticPaymentOutputDescriptorDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ _res);
+       export function CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone_ptr(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR orig);
+       export function CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_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.TS_CResult_SpendableOutputDescriptorDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_SpendableOutputDescriptorDecodeErrorZ_is_ok(const struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_SpendableOutputDescriptorDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_SpendableOutputDescriptorDecodeErrorZ_is_ok(o);
+               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.TS_CResult_SpendableOutputDescriptorDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_SpendableOutputDescriptorDecodeErrorZ_clone_ptr(LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_SpendableOutputDescriptorDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_SpendableOutputDescriptorDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_SpendableOutputDescriptorDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // uint64_t C2Tuple_SignatureCVec_SignatureZZ_clone_ptr(LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR arg);
+       export function C2Tuple_SignatureCVec_SignatureZZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_SignatureCVec_SignatureZZ_clone_ptr(arg);
+               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.TS_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.TS_C2Tuple_SignatureCVec_SignatureZZ_new(encodeUint8Array(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.TS_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.TS_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.TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err();
+               return nativeResponseValue;
+       }
+       // bool CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_is_ok(const struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR o);
+       export function CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_is_ok(o);
+               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.TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone_ptr(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR arg);
+       export function CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_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.TS_CResult_SignatureNoneZ_ok(encodeUint8Array(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.TS_CResult_SignatureNoneZ_err();
+               return nativeResponseValue;
+       }
+       // bool CResult_SignatureNoneZ_is_ok(const struct LDKCResult_SignatureNoneZ *NONNULL_PTR o);
+       export function CResult_SignatureNoneZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_SignatureNoneZ_is_ok(o);
+               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.TS_CResult_SignatureNoneZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_SignatureNoneZ_clone_ptr(LDKCResult_SignatureNoneZ *NONNULL_PTR arg);
+       export function CResult_SignatureNoneZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_SignatureNoneZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_SignatureNoneZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_ok(struct LDKSign o);
+       export function CResult_SignDecodeErrorZ_ok(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_SignDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_err(struct LDKDecodeError e);
+       export function CResult_SignDecodeErrorZ_err(e: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_SignDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_SignDecodeErrorZ_is_ok(const struct LDKCResult_SignDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_SignDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_SignDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_SignDecodeErrorZ_free(struct LDKCResult_SignDecodeErrorZ _res);
+       export function CResult_SignDecodeErrorZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_SignDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_SignDecodeErrorZ_clone_ptr(LDKCResult_SignDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_SignDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_SignDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_clone(const struct LDKCResult_SignDecodeErrorZ *NONNULL_PTR orig);
+       export function CResult_SignDecodeErrorZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_SignDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_RecoverableSignatureNoneZ CResult_RecoverableSignatureNoneZ_ok(struct LDKRecoverableSignature o);
+       export function CResult_RecoverableSignatureNoneZ_ok(arg: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RecoverableSignatureNoneZ_ok(encodeUint8Array(arg));
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_RecoverableSignatureNoneZ CResult_RecoverableSignatureNoneZ_err(void);
+       export function CResult_RecoverableSignatureNoneZ_err(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RecoverableSignatureNoneZ_err();
+               return nativeResponseValue;
+       }
+       // bool CResult_RecoverableSignatureNoneZ_is_ok(const struct LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR o);
+       export function CResult_RecoverableSignatureNoneZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RecoverableSignatureNoneZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_RecoverableSignatureNoneZ_free(struct LDKCResult_RecoverableSignatureNoneZ _res);
+       export function CResult_RecoverableSignatureNoneZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RecoverableSignatureNoneZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_RecoverableSignatureNoneZ_clone_ptr(LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR arg);
+       export function CResult_RecoverableSignatureNoneZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RecoverableSignatureNoneZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_RecoverableSignatureNoneZ CResult_RecoverableSignatureNoneZ_clone(const struct LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR orig);
+       export function CResult_RecoverableSignatureNoneZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_RecoverableSignatureNoneZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // void CVec_CVec_u8ZZ_free(struct LDKCVec_CVec_u8ZZ _res);
+       export function CVec_CVec_u8ZZ_free(_res: Uint8Array[]): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CVec_CVec_u8ZZ_free(_res);
+               // debug statements here
+       }
+       // struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_ok(struct LDKCVec_CVec_u8ZZ o);
+       export function CResult_CVec_CVec_u8ZZNoneZ_ok(o: Uint8Array[]): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_CVec_CVec_u8ZZNoneZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_err(void);
+       export function CResult_CVec_CVec_u8ZZNoneZ_err(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_CVec_CVec_u8ZZNoneZ_err();
+               return nativeResponseValue;
+       }
+       // bool CResult_CVec_CVec_u8ZZNoneZ_is_ok(const struct LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR o);
+       export function CResult_CVec_CVec_u8ZZNoneZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_CVec_CVec_u8ZZNoneZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_CVec_CVec_u8ZZNoneZ_free(struct LDKCResult_CVec_CVec_u8ZZNoneZ _res);
+       export function CResult_CVec_CVec_u8ZZNoneZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_CVec_CVec_u8ZZNoneZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_CVec_CVec_u8ZZNoneZ_clone_ptr(LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR arg);
+       export function CResult_CVec_CVec_u8ZZNoneZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_CVec_CVec_u8ZZNoneZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_clone(const struct LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR orig);
+       export function CResult_CVec_CVec_u8ZZNoneZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_CVec_CVec_u8ZZNoneZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_ok(struct LDKInMemorySigner o);
+       export function CResult_InMemorySignerDecodeErrorZ_ok(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_InMemorySignerDecodeErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_err(struct LDKDecodeError e);
+       export function CResult_InMemorySignerDecodeErrorZ_err(e: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_InMemorySignerDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_InMemorySignerDecodeErrorZ_is_ok(const struct LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_InMemorySignerDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_InMemorySignerDecodeErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_InMemorySignerDecodeErrorZ_free(struct LDKCResult_InMemorySignerDecodeErrorZ _res);
+       export function CResult_InMemorySignerDecodeErrorZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_InMemorySignerDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_InMemorySignerDecodeErrorZ_clone_ptr(LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR arg);
+       export function CResult_InMemorySignerDecodeErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_InMemorySignerDecodeErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_clone(const struct LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR orig);
+       export function CResult_InMemorySignerDecodeErrorZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_InMemorySignerDecodeErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // void CVec_TxOutZ_free(struct LDKCVec_TxOutZ _res);
+       export function CVec_TxOutZ_free(_res: number[]): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CVec_TxOutZ_free(_res);
+               // debug statements here
+       }
+       // struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_ok(struct LDKTransaction o);
+       export function CResult_TransactionNoneZ_ok(o: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TransactionNoneZ_ok(encodeUint8Array(o));
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_err(void);
+       export function CResult_TransactionNoneZ_err(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TransactionNoneZ_err();
+               return nativeResponseValue;
+       }
+       // bool CResult_TransactionNoneZ_is_ok(const struct LDKCResult_TransactionNoneZ *NONNULL_PTR o);
+       export function CResult_TransactionNoneZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TransactionNoneZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_TransactionNoneZ_free(struct LDKCResult_TransactionNoneZ _res);
+       export function CResult_TransactionNoneZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TransactionNoneZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_TransactionNoneZ_clone_ptr(LDKCResult_TransactionNoneZ *NONNULL_PTR arg);
+       export function CResult_TransactionNoneZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TransactionNoneZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_clone(const struct LDKCResult_TransactionNoneZ *NONNULL_PTR orig);
+       export function CResult_TransactionNoneZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_TransactionNoneZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_FilterZ COption_FilterZ_some(struct LDKFilter o);
+       export function COption_FilterZ_some(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_FilterZ_some(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_FilterZ COption_FilterZ_none(void);
+       export function COption_FilterZ_none(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_FilterZ_none();
+               return nativeResponseValue;
+       }
+       // void COption_FilterZ_free(struct LDKCOption_FilterZ _res);
+       export function COption_FilterZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_FilterZ_free(_res);
+               // debug statements here
+       }
+       // struct LDKCResult_LockedChannelMonitorNoneZ CResult_LockedChannelMonitorNoneZ_ok(struct LDKLockedChannelMonitor o);
+       export function CResult_LockedChannelMonitorNoneZ_ok(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_LockedChannelMonitorNoneZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_LockedChannelMonitorNoneZ CResult_LockedChannelMonitorNoneZ_err(void);
+       export function CResult_LockedChannelMonitorNoneZ_err(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_LockedChannelMonitorNoneZ_err();
+               return nativeResponseValue;
+       }
+       // bool CResult_LockedChannelMonitorNoneZ_is_ok(const struct LDKCResult_LockedChannelMonitorNoneZ *NONNULL_PTR o);
+       export function CResult_LockedChannelMonitorNoneZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_LockedChannelMonitorNoneZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_LockedChannelMonitorNoneZ_free(struct LDKCResult_LockedChannelMonitorNoneZ _res);
+       export function CResult_LockedChannelMonitorNoneZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_LockedChannelMonitorNoneZ_free(_res);
+               // debug statements here
+       }
+       // void CVec_OutPointZ_free(struct LDKCVec_OutPointZ _res);
+       export function CVec_OutPointZ_free(_res: number[]): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CVec_OutPointZ_free(_res);
+               // debug statements here
+       }
+       // 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.TS_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.TS_CResult_NoneAPIErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_NoneAPIErrorZ_is_ok(const struct LDKCResult_NoneAPIErrorZ *NONNULL_PTR o);
+       export function CResult_NoneAPIErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NoneAPIErrorZ_is_ok(o);
+               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.TS_CResult_NoneAPIErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_NoneAPIErrorZ_clone_ptr(LDKCResult_NoneAPIErrorZ *NONNULL_PTR arg);
+       export function CResult_NoneAPIErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NoneAPIErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_NoneAPIErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_u16Z COption_u16Z_some(uint16_t o);
+       export function COption_u16Z_some(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_u16Z_some(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_u16Z COption_u16Z_none(void);
+       export function COption_u16Z_none(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_u16Z_none();
+               return nativeResponseValue;
+       }
+       // void COption_u16Z_free(struct LDKCOption_u16Z _res);
+       export function COption_u16Z_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_u16Z_free(_res);
+               // debug statements here
+       }
+       // uint64_t COption_u16Z_clone_ptr(LDKCOption_u16Z *NONNULL_PTR arg);
+       export function COption_u16Z_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_u16Z_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCOption_u16Z COption_u16Z_clone(const struct LDKCOption_u16Z *NONNULL_PTR orig);
+       export function COption_u16Z_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_COption_u16Z_clone(orig);
+               return nativeResponseValue;
+       }
+       // void CVec_CResult_NoneAPIErrorZZ_free(struct LDKCVec_CResult_NoneAPIErrorZZ _res);
+       export function CVec_CResult_NoneAPIErrorZZ_free(_res: number[]): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CVec_CResult_NoneAPIErrorZZ_free(_res);
+               // debug statements here
+       }
+       // void CVec_APIErrorZ_free(struct LDKCVec_APIErrorZ _res);
+       export function CVec_APIErrorZ_free(_res: number[]): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CVec_APIErrorZ_free(_res);
+               // debug statements here
+       }
+       // struct LDKCResult__u832APIErrorZ CResult__u832APIErrorZ_ok(struct LDKThirtyTwoBytes o);
+       export function CResult__u832APIErrorZ_ok(o: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult__u832APIErrorZ_ok(encodeUint8Array(o));
+               return nativeResponseValue;
+       }
+       // struct LDKCResult__u832APIErrorZ CResult__u832APIErrorZ_err(struct LDKAPIError e);
+       export function CResult__u832APIErrorZ_err(e: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult__u832APIErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult__u832APIErrorZ_is_ok(const struct LDKCResult__u832APIErrorZ *NONNULL_PTR o);
+       export function CResult__u832APIErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult__u832APIErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult__u832APIErrorZ_free(struct LDKCResult__u832APIErrorZ _res);
+       export function CResult__u832APIErrorZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult__u832APIErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult__u832APIErrorZ_clone_ptr(LDKCResult__u832APIErrorZ *NONNULL_PTR arg);
+       export function CResult__u832APIErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult__u832APIErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult__u832APIErrorZ CResult__u832APIErrorZ_clone(const struct LDKCResult__u832APIErrorZ *NONNULL_PTR orig);
+       export function CResult__u832APIErrorZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult__u832APIErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_PaymentIdPaymentSendFailureZ CResult_PaymentIdPaymentSendFailureZ_ok(struct LDKThirtyTwoBytes o);
+       export function CResult_PaymentIdPaymentSendFailureZ_ok(o: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentIdPaymentSendFailureZ_ok(encodeUint8Array(o));
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_PaymentIdPaymentSendFailureZ CResult_PaymentIdPaymentSendFailureZ_err(struct LDKPaymentSendFailure e);
+       export function CResult_PaymentIdPaymentSendFailureZ_err(e: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentIdPaymentSendFailureZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_PaymentIdPaymentSendFailureZ_is_ok(const struct LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR o);
+       export function CResult_PaymentIdPaymentSendFailureZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentIdPaymentSendFailureZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_PaymentIdPaymentSendFailureZ_free(struct LDKCResult_PaymentIdPaymentSendFailureZ _res);
+       export function CResult_PaymentIdPaymentSendFailureZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentIdPaymentSendFailureZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_PaymentIdPaymentSendFailureZ_clone_ptr(LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR arg);
+       export function CResult_PaymentIdPaymentSendFailureZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentIdPaymentSendFailureZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_PaymentIdPaymentSendFailureZ CResult_PaymentIdPaymentSendFailureZ_clone(const struct LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR orig);
+       export function CResult_PaymentIdPaymentSendFailureZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentIdPaymentSendFailureZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // 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.TS_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.TS_CResult_NonePaymentSendFailureZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_NonePaymentSendFailureZ_is_ok(const struct LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR o);
+       export function CResult_NonePaymentSendFailureZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NonePaymentSendFailureZ_is_ok(o);
+               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.TS_CResult_NonePaymentSendFailureZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_NonePaymentSendFailureZ_clone_ptr(LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR arg);
+       export function CResult_NonePaymentSendFailureZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_NonePaymentSendFailureZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CResult_NonePaymentSendFailureZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // uint64_t C2Tuple_PaymentHashPaymentIdZ_clone_ptr(LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR arg);
+       export function C2Tuple_PaymentHashPaymentIdZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_PaymentHashPaymentIdZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKC2Tuple_PaymentHashPaymentIdZ C2Tuple_PaymentHashPaymentIdZ_clone(const struct LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR orig);
+       export function C2Tuple_PaymentHashPaymentIdZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_PaymentHashPaymentIdZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKC2Tuple_PaymentHashPaymentIdZ C2Tuple_PaymentHashPaymentIdZ_new(struct LDKThirtyTwoBytes a, struct LDKThirtyTwoBytes b);
+       export function C2Tuple_PaymentHashPaymentIdZ_new(a: Uint8Array, b: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_PaymentHashPaymentIdZ_new(encodeUint8Array(a), encodeUint8Array(b));
+               return nativeResponseValue;
+       }
+       // void C2Tuple_PaymentHashPaymentIdZ_free(struct LDKC2Tuple_PaymentHashPaymentIdZ _res);
+       export function C2Tuple_PaymentHashPaymentIdZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_PaymentHashPaymentIdZ_free(_res);
+               // debug statements here
+       }
+       // struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_ok(struct LDKC2Tuple_PaymentHashPaymentIdZ o);
+       export function CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_ok(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_err(struct LDKPaymentSendFailure e);
+       export function CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_err(e: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_is_ok(const struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR o);
+       export function CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ _res);
+       export function CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone_ptr(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR arg);
+       export function CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone(const struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR orig);
+       export function CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // uint64_t C2Tuple_PaymentHashPaymentSecretZ_clone_ptr(LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR arg);
+       export function C2Tuple_PaymentHashPaymentSecretZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_PaymentHashPaymentSecretZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKC2Tuple_PaymentHashPaymentSecretZ C2Tuple_PaymentHashPaymentSecretZ_clone(const struct LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR orig);
+       export function C2Tuple_PaymentHashPaymentSecretZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_PaymentHashPaymentSecretZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKC2Tuple_PaymentHashPaymentSecretZ C2Tuple_PaymentHashPaymentSecretZ_new(struct LDKThirtyTwoBytes a, struct LDKThirtyTwoBytes b);
+       export function C2Tuple_PaymentHashPaymentSecretZ_new(a: Uint8Array, b: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_PaymentHashPaymentSecretZ_new(encodeUint8Array(a), encodeUint8Array(b));
+               return nativeResponseValue;
+       }
+       // void C2Tuple_PaymentHashPaymentSecretZ_free(struct LDKC2Tuple_PaymentHashPaymentSecretZ _res);
+       export function C2Tuple_PaymentHashPaymentSecretZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_PaymentHashPaymentSecretZ_free(_res);
+               // debug statements here
+       }
+       // struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_ok(struct LDKC2Tuple_PaymentHashPaymentSecretZ o);
+       export function CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_ok(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_err(void);
+       export function CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_err(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_err();
+               return nativeResponseValue;
+       }
+       // bool CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_is_ok(const struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *NONNULL_PTR o);
+       export function CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ _res);
+       export function CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone_ptr(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *NONNULL_PTR arg);
+       export function CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone(const struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *NONNULL_PTR orig);
+       export function CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_ok(struct LDKC2Tuple_PaymentHashPaymentSecretZ o);
+       export function CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_ok(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_ok(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_err(struct LDKAPIError e);
+       export function CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_err(e: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_is_ok(const struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *NONNULL_PTR o);
+       export function CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ _res);
+       export function CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone_ptr(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *NONNULL_PTR arg);
+       export function CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone(const struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *NONNULL_PTR orig);
+       export function CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_PaymentSecretNoneZ CResult_PaymentSecretNoneZ_ok(struct LDKThirtyTwoBytes o);
+       export function CResult_PaymentSecretNoneZ_ok(o: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentSecretNoneZ_ok(encodeUint8Array(o));
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_PaymentSecretNoneZ CResult_PaymentSecretNoneZ_err(void);
+       export function CResult_PaymentSecretNoneZ_err(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentSecretNoneZ_err();
+               return nativeResponseValue;
+       }
+       // bool CResult_PaymentSecretNoneZ_is_ok(const struct LDKCResult_PaymentSecretNoneZ *NONNULL_PTR o);
+       export function CResult_PaymentSecretNoneZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentSecretNoneZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_PaymentSecretNoneZ_free(struct LDKCResult_PaymentSecretNoneZ _res);
+       export function CResult_PaymentSecretNoneZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentSecretNoneZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_PaymentSecretNoneZ_clone_ptr(LDKCResult_PaymentSecretNoneZ *NONNULL_PTR arg);
+       export function CResult_PaymentSecretNoneZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentSecretNoneZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_PaymentSecretNoneZ CResult_PaymentSecretNoneZ_clone(const struct LDKCResult_PaymentSecretNoneZ *NONNULL_PTR orig);
+       export function CResult_PaymentSecretNoneZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentSecretNoneZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_PaymentSecretAPIErrorZ CResult_PaymentSecretAPIErrorZ_ok(struct LDKThirtyTwoBytes o);
+       export function CResult_PaymentSecretAPIErrorZ_ok(o: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentSecretAPIErrorZ_ok(encodeUint8Array(o));
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_PaymentSecretAPIErrorZ CResult_PaymentSecretAPIErrorZ_err(struct LDKAPIError e);
+       export function CResult_PaymentSecretAPIErrorZ_err(e: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentSecretAPIErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_PaymentSecretAPIErrorZ_is_ok(const struct LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR o);
+       export function CResult_PaymentSecretAPIErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentSecretAPIErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_PaymentSecretAPIErrorZ_free(struct LDKCResult_PaymentSecretAPIErrorZ _res);
+       export function CResult_PaymentSecretAPIErrorZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentSecretAPIErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_PaymentSecretAPIErrorZ_clone_ptr(LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR arg);
+       export function CResult_PaymentSecretAPIErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentSecretAPIErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_PaymentSecretAPIErrorZ CResult_PaymentSecretAPIErrorZ_clone(const struct LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR orig);
+       export function CResult_PaymentSecretAPIErrorZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentSecretAPIErrorZ_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_PaymentPreimageAPIErrorZ CResult_PaymentPreimageAPIErrorZ_ok(struct LDKThirtyTwoBytes o);
+       export function CResult_PaymentPreimageAPIErrorZ_ok(o: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentPreimageAPIErrorZ_ok(encodeUint8Array(o));
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_PaymentPreimageAPIErrorZ CResult_PaymentPreimageAPIErrorZ_err(struct LDKAPIError e);
+       export function CResult_PaymentPreimageAPIErrorZ_err(e: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentPreimageAPIErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_PaymentPreimageAPIErrorZ_is_ok(const struct LDKCResult_PaymentPreimageAPIErrorZ *NONNULL_PTR o);
+       export function CResult_PaymentPreimageAPIErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentPreimageAPIErrorZ_is_ok(o);
+               return nativeResponseValue;
+       }
+       // void CResult_PaymentPreimageAPIErrorZ_free(struct LDKCResult_PaymentPreimageAPIErrorZ _res);
+       export function CResult_PaymentPreimageAPIErrorZ_free(_res: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentPreimageAPIErrorZ_free(_res);
+               // debug statements here
+       }
+       // uint64_t CResult_PaymentPreimageAPIErrorZ_clone_ptr(LDKCResult_PaymentPreimageAPIErrorZ *NONNULL_PTR arg);
+       export function CResult_PaymentPreimageAPIErrorZ_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentPreimageAPIErrorZ_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_PaymentPreimageAPIErrorZ CResult_PaymentPreimageAPIErrorZ_clone(const struct LDKCResult_PaymentPreimageAPIErrorZ *NONNULL_PTR orig);
+       export function CResult_PaymentPreimageAPIErrorZ_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_PaymentPreimageAPIErrorZ_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.TS_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.TS_C2Tuple_BlockHashChannelManagerZ_new(encodeUint8Array(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.TS_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.TS_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.TS_CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(e);
+               return nativeResponseValue;
+       }
+       // bool CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_is_ok(const struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ *NONNULL_PTR o);
+       export function CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_is_ok(o: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_is_ok(o);
+               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.TS_CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(_res);
+               // debug statements here
+       }
+       // void PaymentPurpose_free(struct LDKPaymentPurpose this_ptr);
+       export function PaymentPurpose_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_PaymentPurpose_free(this_ptr);
+               // debug statements here
+       }
+       // uint64_t PaymentPurpose_clone_ptr(LDKPaymentPurpose *NONNULL_PTR arg);
+       export function PaymentPurpose_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_PaymentPurpose_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKPaymentPurpose PaymentPurpose_clone(const struct LDKPaymentPurpose *NONNULL_PTR orig);
+       export function PaymentPurpose_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_PaymentPurpose_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKPaymentPurpose PaymentPurpose_invoice_payment(struct LDKThirtyTwoBytes payment_preimage, struct LDKThirtyTwoBytes payment_secret);
+       export function PaymentPurpose_invoice_payment(payment_preimage: Uint8Array, payment_secret: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_PaymentPurpose_invoice_payment(encodeUint8Array(payment_preimage), encodeUint8Array(payment_secret));
+               return nativeResponseValue;
+       }
+       // struct LDKPaymentPurpose PaymentPurpose_spontaneous_payment(struct LDKThirtyTwoBytes a);
+       export function PaymentPurpose_spontaneous_payment(a: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_PaymentPurpose_spontaneous_payment(encodeUint8Array(a));
+               return nativeResponseValue;
+       }
+       // void ClosureReason_free(struct LDKClosureReason this_ptr);
+       export function ClosureReason_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosureReason_free(this_ptr);
+               // debug statements here
+       }
+       // uint64_t ClosureReason_clone_ptr(LDKClosureReason *NONNULL_PTR arg);
+       export function ClosureReason_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosureReason_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKClosureReason ClosureReason_clone(const struct LDKClosureReason *NONNULL_PTR orig);
+       export function ClosureReason_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosureReason_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKClosureReason ClosureReason_counterparty_force_closed(struct LDKStr peer_msg);
+       export function ClosureReason_counterparty_force_closed(peer_msg: String): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosureReason_counterparty_force_closed(peer_msg);
+               return nativeResponseValue;
+       }
+       // struct LDKClosureReason ClosureReason_holder_force_closed(void);
+       export function ClosureReason_holder_force_closed(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosureReason_holder_force_closed();
+               return nativeResponseValue;
+       }
+       // struct LDKClosureReason ClosureReason_cooperative_closure(void);
+       export function ClosureReason_cooperative_closure(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosureReason_cooperative_closure();
+               return nativeResponseValue;
+       }
+       // struct LDKClosureReason ClosureReason_commitment_tx_confirmed(void);
+       export function ClosureReason_commitment_tx_confirmed(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosureReason_commitment_tx_confirmed();
+               return nativeResponseValue;
+       }
+       // struct LDKClosureReason ClosureReason_funding_timed_out(void);
+       export function ClosureReason_funding_timed_out(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosureReason_funding_timed_out();
+               return nativeResponseValue;
+       }
+       // struct LDKClosureReason ClosureReason_processing_error(struct LDKStr err);
+       export function ClosureReason_processing_error(err: String): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosureReason_processing_error(err);
+               return nativeResponseValue;
+       }
+       // struct LDKClosureReason ClosureReason_disconnected_peer(void);
+       export function ClosureReason_disconnected_peer(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosureReason_disconnected_peer();
+               return nativeResponseValue;
+       }
+       // struct LDKClosureReason ClosureReason_outdated_channel_manager(void);
+       export function ClosureReason_outdated_channel_manager(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosureReason_outdated_channel_manager();
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z ClosureReason_write(const struct LDKClosureReason *NONNULL_PTR obj);
+       export function ClosureReason_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosureReason_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_COption_ClosureReasonZDecodeErrorZ ClosureReason_read(struct LDKu8slice ser);
+       export function ClosureReason_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosureReason_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // void Event_free(struct LDKEvent this_ptr);
+       export function Event_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Event_free(this_ptr);
+               // debug statements here
+       }
+       // uint64_t Event_clone_ptr(LDKEvent *NONNULL_PTR arg);
+       export function Event_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Event_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKEvent Event_clone(const struct LDKEvent *NONNULL_PTR orig);
+       export function Event_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Event_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKEvent Event_funding_generation_ready(struct LDKThirtyTwoBytes temporary_channel_id, uint64_t channel_value_satoshis, struct LDKCVec_u8Z output_script, uint64_t user_channel_id);
+       export function Event_funding_generation_ready(temporary_channel_id: Uint8Array, channel_value_satoshis: number, output_script: Uint8Array, user_channel_id: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Event_funding_generation_ready(encodeUint8Array(temporary_channel_id), channel_value_satoshis, encodeUint8Array(output_script), user_channel_id);
+               return nativeResponseValue;
+       }
+       // struct LDKEvent Event_payment_received(struct LDKThirtyTwoBytes payment_hash, uint64_t amt, struct LDKPaymentPurpose purpose);
+       export function Event_payment_received(payment_hash: Uint8Array, amt: number, purpose: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Event_payment_received(encodeUint8Array(payment_hash), amt, purpose);
+               return nativeResponseValue;
+       }
+       // struct LDKEvent Event_payment_sent(struct LDKThirtyTwoBytes payment_id, struct LDKThirtyTwoBytes payment_preimage, struct LDKThirtyTwoBytes payment_hash, struct LDKCOption_u64Z fee_paid_msat);
+       export function Event_payment_sent(payment_id: Uint8Array, payment_preimage: Uint8Array, payment_hash: Uint8Array, fee_paid_msat: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Event_payment_sent(encodeUint8Array(payment_id), encodeUint8Array(payment_preimage), encodeUint8Array(payment_hash), fee_paid_msat);
+               return nativeResponseValue;
+       }
+       // struct LDKEvent Event_payment_path_failed(struct LDKThirtyTwoBytes payment_id, struct LDKThirtyTwoBytes payment_hash, bool rejected_by_dest, struct LDKCOption_NetworkUpdateZ network_update, bool all_paths_failed, struct LDKCVec_RouteHopZ path, struct LDKCOption_u64Z short_channel_id, struct LDKRouteParameters retry);
+       export function Event_payment_path_failed(payment_id: Uint8Array, payment_hash: Uint8Array, rejected_by_dest: boolean, network_update: number, all_paths_failed: boolean, path: number[], short_channel_id: number, retry: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Event_payment_path_failed(encodeUint8Array(payment_id), encodeUint8Array(payment_hash), rejected_by_dest, network_update, all_paths_failed, path, short_channel_id, retry);
+               return nativeResponseValue;
+       }
+       // struct LDKEvent Event_payment_failed(struct LDKThirtyTwoBytes payment_id, struct LDKThirtyTwoBytes payment_hash);
+       export function Event_payment_failed(payment_id: Uint8Array, payment_hash: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Event_payment_failed(encodeUint8Array(payment_id), encodeUint8Array(payment_hash));
+               return nativeResponseValue;
+       }
+       // struct LDKEvent Event_pending_htlcs_forwardable(uint64_t time_forwardable);
+       export function Event_pending_htlcs_forwardable(time_forwardable: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Event_pending_htlcs_forwardable(time_forwardable);
+               return nativeResponseValue;
+       }
+       // struct LDKEvent Event_spendable_outputs(struct LDKCVec_SpendableOutputDescriptorZ outputs);
+       export function Event_spendable_outputs(outputs: number[]): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Event_spendable_outputs(outputs);
+               return nativeResponseValue;
+       }
+       // struct LDKEvent Event_payment_forwarded(struct LDKCOption_u64Z fee_earned_msat, bool claim_from_onchain_tx);
+       export function Event_payment_forwarded(fee_earned_msat: number, claim_from_onchain_tx: boolean): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Event_payment_forwarded(fee_earned_msat, claim_from_onchain_tx);
+               return nativeResponseValue;
+       }
+       // struct LDKEvent Event_channel_closed(struct LDKThirtyTwoBytes channel_id, uint64_t user_channel_id, struct LDKClosureReason reason);
+       export function Event_channel_closed(channel_id: Uint8Array, user_channel_id: number, reason: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Event_channel_closed(encodeUint8Array(channel_id), user_channel_id, reason);
+               return nativeResponseValue;
+       }
+       // struct LDKEvent Event_discard_funding(struct LDKThirtyTwoBytes channel_id, struct LDKTransaction transaction);
+       export function Event_discard_funding(channel_id: Uint8Array, transaction: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Event_discard_funding(encodeUint8Array(channel_id), encodeUint8Array(transaction));
+               return nativeResponseValue;
+       }
+       // struct LDKEvent Event_payment_path_successful(struct LDKThirtyTwoBytes payment_id, struct LDKThirtyTwoBytes payment_hash, struct LDKCVec_RouteHopZ path);
+       export function Event_payment_path_successful(payment_id: Uint8Array, payment_hash: Uint8Array, path: number[]): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Event_payment_path_successful(encodeUint8Array(payment_id), encodeUint8Array(payment_hash), path);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z Event_write(const struct LDKEvent *NONNULL_PTR obj);
+       export function Event_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Event_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_COption_EventZDecodeErrorZ Event_read(struct LDKu8slice ser);
+       export function Event_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Event_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // void MessageSendEvent_free(struct LDKMessageSendEvent this_ptr);
+       export function MessageSendEvent_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageSendEvent_free(this_ptr);
+               // debug statements here
+       }
+       // uint64_t MessageSendEvent_clone_ptr(LDKMessageSendEvent *NONNULL_PTR arg);
+       export function MessageSendEvent_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageSendEvent_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKMessageSendEvent MessageSendEvent_clone(const struct LDKMessageSendEvent *NONNULL_PTR orig);
+       export function MessageSendEvent_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageSendEvent_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKMessageSendEvent MessageSendEvent_send_accept_channel(struct LDKPublicKey node_id, struct LDKAcceptChannel msg);
+       export function MessageSendEvent_send_accept_channel(node_id: Uint8Array, msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageSendEvent_send_accept_channel(encodeUint8Array(node_id), msg);
+               return nativeResponseValue;
+       }
+       // struct LDKMessageSendEvent MessageSendEvent_send_open_channel(struct LDKPublicKey node_id, struct LDKOpenChannel msg);
+       export function MessageSendEvent_send_open_channel(node_id: Uint8Array, msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageSendEvent_send_open_channel(encodeUint8Array(node_id), msg);
+               return nativeResponseValue;
+       }
+       // struct LDKMessageSendEvent MessageSendEvent_send_funding_created(struct LDKPublicKey node_id, struct LDKFundingCreated msg);
+       export function MessageSendEvent_send_funding_created(node_id: Uint8Array, msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageSendEvent_send_funding_created(encodeUint8Array(node_id), msg);
+               return nativeResponseValue;
+       }
+       // struct LDKMessageSendEvent MessageSendEvent_send_funding_signed(struct LDKPublicKey node_id, struct LDKFundingSigned msg);
+       export function MessageSendEvent_send_funding_signed(node_id: Uint8Array, msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageSendEvent_send_funding_signed(encodeUint8Array(node_id), msg);
+               return nativeResponseValue;
+       }
+       // struct LDKMessageSendEvent MessageSendEvent_send_funding_locked(struct LDKPublicKey node_id, struct LDKFundingLocked msg);
+       export function MessageSendEvent_send_funding_locked(node_id: Uint8Array, msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageSendEvent_send_funding_locked(encodeUint8Array(node_id), msg);
+               return nativeResponseValue;
+       }
+       // struct LDKMessageSendEvent MessageSendEvent_send_announcement_signatures(struct LDKPublicKey node_id, struct LDKAnnouncementSignatures msg);
+       export function MessageSendEvent_send_announcement_signatures(node_id: Uint8Array, msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageSendEvent_send_announcement_signatures(encodeUint8Array(node_id), msg);
+               return nativeResponseValue;
+       }
+       // struct LDKMessageSendEvent MessageSendEvent_update_htlcs(struct LDKPublicKey node_id, struct LDKCommitmentUpdate updates);
+       export function MessageSendEvent_update_htlcs(node_id: Uint8Array, updates: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageSendEvent_update_htlcs(encodeUint8Array(node_id), updates);
+               return nativeResponseValue;
+       }
+       // struct LDKMessageSendEvent MessageSendEvent_send_revoke_and_ack(struct LDKPublicKey node_id, struct LDKRevokeAndACK msg);
+       export function MessageSendEvent_send_revoke_and_ack(node_id: Uint8Array, msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageSendEvent_send_revoke_and_ack(encodeUint8Array(node_id), msg);
+               return nativeResponseValue;
+       }
+       // struct LDKMessageSendEvent MessageSendEvent_send_closing_signed(struct LDKPublicKey node_id, struct LDKClosingSigned msg);
+       export function MessageSendEvent_send_closing_signed(node_id: Uint8Array, msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageSendEvent_send_closing_signed(encodeUint8Array(node_id), msg);
+               return nativeResponseValue;
+       }
+       // struct LDKMessageSendEvent MessageSendEvent_send_shutdown(struct LDKPublicKey node_id, struct LDKShutdown msg);
+       export function MessageSendEvent_send_shutdown(node_id: Uint8Array, msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageSendEvent_send_shutdown(encodeUint8Array(node_id), msg);
+               return nativeResponseValue;
+       }
+       // struct LDKMessageSendEvent MessageSendEvent_send_channel_reestablish(struct LDKPublicKey node_id, struct LDKChannelReestablish msg);
+       export function MessageSendEvent_send_channel_reestablish(node_id: Uint8Array, msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageSendEvent_send_channel_reestablish(encodeUint8Array(node_id), msg);
+               return nativeResponseValue;
+       }
+       // struct LDKMessageSendEvent MessageSendEvent_broadcast_channel_announcement(struct LDKChannelAnnouncement msg, struct LDKChannelUpdate update_msg);
+       export function MessageSendEvent_broadcast_channel_announcement(msg: number, update_msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageSendEvent_broadcast_channel_announcement(msg, update_msg);
+               return nativeResponseValue;
+       }
+       // struct LDKMessageSendEvent MessageSendEvent_broadcast_node_announcement(struct LDKNodeAnnouncement msg);
+       export function MessageSendEvent_broadcast_node_announcement(msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageSendEvent_broadcast_node_announcement(msg);
+               return nativeResponseValue;
+       }
+       // struct LDKMessageSendEvent MessageSendEvent_broadcast_channel_update(struct LDKChannelUpdate msg);
+       export function MessageSendEvent_broadcast_channel_update(msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageSendEvent_broadcast_channel_update(msg);
+               return nativeResponseValue;
+       }
+       // struct LDKMessageSendEvent MessageSendEvent_send_channel_update(struct LDKPublicKey node_id, struct LDKChannelUpdate msg);
+       export function MessageSendEvent_send_channel_update(node_id: Uint8Array, msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageSendEvent_send_channel_update(encodeUint8Array(node_id), msg);
+               return nativeResponseValue;
+       }
+       // struct LDKMessageSendEvent MessageSendEvent_handle_error(struct LDKPublicKey node_id, struct LDKErrorAction action);
+       export function MessageSendEvent_handle_error(node_id: Uint8Array, action: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageSendEvent_handle_error(encodeUint8Array(node_id), action);
+               return nativeResponseValue;
+       }
+       // struct LDKMessageSendEvent MessageSendEvent_send_channel_range_query(struct LDKPublicKey node_id, struct LDKQueryChannelRange msg);
+       export function MessageSendEvent_send_channel_range_query(node_id: Uint8Array, msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageSendEvent_send_channel_range_query(encodeUint8Array(node_id), msg);
+               return nativeResponseValue;
+       }
+       // struct LDKMessageSendEvent MessageSendEvent_send_short_ids_query(struct LDKPublicKey node_id, struct LDKQueryShortChannelIds msg);
+       export function MessageSendEvent_send_short_ids_query(node_id: Uint8Array, msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageSendEvent_send_short_ids_query(encodeUint8Array(node_id), msg);
+               return nativeResponseValue;
+       }
+       // struct LDKMessageSendEvent MessageSendEvent_send_reply_channel_range(struct LDKPublicKey node_id, struct LDKReplyChannelRange msg);
+       export function MessageSendEvent_send_reply_channel_range(node_id: Uint8Array, msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageSendEvent_send_reply_channel_range(encodeUint8Array(node_id), msg);
+               return nativeResponseValue;
+       }
+       // void MessageSendEventsProvider_free(struct LDKMessageSendEventsProvider this_ptr);
+       export function MessageSendEventsProvider_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageSendEventsProvider_free(this_ptr);
+               // debug statements here
+       }
+       // void EventsProvider_free(struct LDKEventsProvider this_ptr);
+       export function EventsProvider_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_EventsProvider_free(this_ptr);
+               // debug statements here
+       }
+       // void EventHandler_free(struct LDKEventHandler this_ptr);
+       export function EventHandler_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_EventHandler_free(this_ptr);
+               // debug statements here
+       }
+       // void APIError_free(struct LDKAPIError this_ptr);
+       export function APIError_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_APIError_free(this_ptr);
+               // debug statements here
+       }
+       // uint64_t APIError_clone_ptr(LDKAPIError *NONNULL_PTR arg);
+       export function APIError_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_APIError_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKAPIError APIError_clone(const struct LDKAPIError *NONNULL_PTR orig);
+       export function APIError_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_APIError_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKAPIError APIError_apimisuse_error(struct LDKStr err);
+       export function APIError_apimisuse_error(err: String): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_APIError_apimisuse_error(err);
+               return nativeResponseValue;
+       }
+       // struct LDKAPIError APIError_fee_rate_too_high(struct LDKStr err, uint32_t feerate);
+       export function APIError_fee_rate_too_high(err: String, feerate: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_APIError_fee_rate_too_high(err, feerate);
+               return nativeResponseValue;
+       }
+       // struct LDKAPIError APIError_route_error(struct LDKStr err);
+       export function APIError_route_error(err: String): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_APIError_route_error(err);
+               return nativeResponseValue;
+       }
+       // struct LDKAPIError APIError_channel_unavailable(struct LDKStr err);
+       export function APIError_channel_unavailable(err: String): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_APIError_channel_unavailable(err);
+               return nativeResponseValue;
+       }
+       // struct LDKAPIError APIError_monitor_update_failed(void);
+       export function APIError_monitor_update_failed(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_APIError_monitor_update_failed();
+               return nativeResponseValue;
+       }
+       // struct LDKAPIError APIError_incompatible_shutdown_script(struct LDKShutdownScript script);
+       export function APIError_incompatible_shutdown_script(script: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_APIError_incompatible_shutdown_script(script);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_StringErrorZ sign(struct LDKu8slice msg, const uint8_t (*sk)[32]);
+       export function sign(msg: Uint8Array, sk: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_sign(encodeUint8Array(msg), encodeUint8Array(sk));
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_PublicKeyErrorZ recover_pk(struct LDKu8slice msg, struct LDKStr sig);
+       export function recover_pk(msg: Uint8Array, sig: String): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_recover_pk(encodeUint8Array(msg), sig);
+               return nativeResponseValue;
+       }
+       // bool verify(struct LDKu8slice msg, struct LDKStr sig, struct LDKPublicKey pk);
+       export function verify(msg: Uint8Array, sig: String, pk: Uint8Array): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_verify(encodeUint8Array(msg), sig, encodeUint8Array(pk));
+               return nativeResponseValue;
+       }
+       // enum LDKLevel Level_clone(const enum LDKLevel *NONNULL_PTR orig);
+       export function Level_clone(orig: number): Level {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Level_clone(orig);
+               return nativeResponseValue;
+       }
+       // enum LDKLevel Level_gossip(void);
+       export function Level_gossip(): Level {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Level_gossip();
+               return nativeResponseValue;
+       }
+       // enum LDKLevel Level_trace(void);
+       export function Level_trace(): Level {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Level_trace();
+               return nativeResponseValue;
+       }
+       // enum LDKLevel Level_debug(void);
+       export function Level_debug(): Level {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Level_debug();
+               return nativeResponseValue;
+       }
+       // enum LDKLevel Level_info(void);
+       export function Level_info(): Level {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Level_info();
+               return nativeResponseValue;
+       }
+       // enum LDKLevel Level_warn(void);
+       export function Level_warn(): Level {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Level_warn();
+               return nativeResponseValue;
+       }
+       // enum LDKLevel Level_error(void);
+       export function Level_error(): Level {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Level_error();
+               return nativeResponseValue;
+       }
+       // bool Level_eq(const enum LDKLevel *NONNULL_PTR a, const enum LDKLevel *NONNULL_PTR b);
+       export function Level_eq(a: number, b: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Level_eq(a, b);
+               return nativeResponseValue;
+       }
+       // uint64_t Level_hash(const enum LDKLevel *NONNULL_PTR o);
+       export function Level_hash(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Level_hash(o);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES enum LDKLevel Level_max(void);
+       export function Level_max(): Level {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Level_max();
+               return nativeResponseValue;
+       }
+       // void Record_free(struct LDKRecord this_obj);
+       export function Record_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Record_free(this_obj);
+               // debug statements here
+       }
+       // enum LDKLevel Record_get_level(const struct LDKRecord *NONNULL_PTR this_ptr);
+       export function Record_get_level(this_ptr: number): Level {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Record_get_level(this_ptr);
+               return nativeResponseValue;
+       }
+       // void Record_set_level(struct LDKRecord *NONNULL_PTR this_ptr, enum LDKLevel val);
+       export function Record_set_level(this_ptr: number, val: Level): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Record_set_level(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKStr Record_get_args(const struct LDKRecord *NONNULL_PTR this_ptr);
+       export function Record_get_args(this_ptr: number): String {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Record_get_args(this_ptr);
+               return nativeResponseValue;
+       }
+       // void Record_set_args(struct LDKRecord *NONNULL_PTR this_ptr, struct LDKStr val);
+       export function Record_set_args(this_ptr: number, val: String): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Record_set_args(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKStr Record_get_module_path(const struct LDKRecord *NONNULL_PTR this_ptr);
+       export function Record_get_module_path(this_ptr: number): String {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Record_get_module_path(this_ptr);
+               return nativeResponseValue;
+       }
+       // void Record_set_module_path(struct LDKRecord *NONNULL_PTR this_ptr, struct LDKStr val);
+       export function Record_set_module_path(this_ptr: number, val: String): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Record_set_module_path(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKStr Record_get_file(const struct LDKRecord *NONNULL_PTR this_ptr);
+       export function Record_get_file(this_ptr: number): String {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Record_get_file(this_ptr);
+               return nativeResponseValue;
+       }
+       // void Record_set_file(struct LDKRecord *NONNULL_PTR this_ptr, struct LDKStr val);
+       export function Record_set_file(this_ptr: number, val: String): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Record_set_file(this_ptr, val);
+               // debug statements here
+       }
+       // uint32_t Record_get_line(const struct LDKRecord *NONNULL_PTR this_ptr);
+       export function Record_get_line(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Record_get_line(this_ptr);
+               return nativeResponseValue;
+       }
+       // void Record_set_line(struct LDKRecord *NONNULL_PTR this_ptr, uint32_t val);
+       export function Record_set_line(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Record_set_line(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t Record_clone_ptr(LDKRecord *NONNULL_PTR arg);
+       export function Record_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Record_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKRecord Record_clone(const struct LDKRecord *NONNULL_PTR orig);
+       export function Record_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Record_clone(orig);
+               return nativeResponseValue;
+       }
+       // void Logger_free(struct LDKLogger this_ptr);
+       export function Logger_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Logger_free(this_ptr);
+               // debug statements here
+       }
+       // void ChannelHandshakeConfig_free(struct LDKChannelHandshakeConfig this_obj);
+       export function ChannelHandshakeConfig_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelHandshakeConfig_free(this_obj);
+               // debug statements here
+       }
+       // 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) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelHandshakeConfig_get_minimum_depth(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelHandshakeConfig_set_minimum_depth(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint32_t val);
+       export function ChannelHandshakeConfig_set_minimum_depth(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelHandshakeConfig_set_minimum_depth(this_ptr, val);
+               // debug statements here
+       }
+       // uint16_t ChannelHandshakeConfig_get_our_to_self_delay(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
+       export function ChannelHandshakeConfig_get_our_to_self_delay(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelHandshakeConfig_get_our_to_self_delay(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelHandshakeConfig_set_our_to_self_delay(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint16_t val);
+       export function ChannelHandshakeConfig_set_our_to_self_delay(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelHandshakeConfig_set_our_to_self_delay(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t ChannelHandshakeConfig_get_our_htlc_minimum_msat(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
+       export function ChannelHandshakeConfig_get_our_htlc_minimum_msat(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelHandshakeConfig_get_our_htlc_minimum_msat(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelHandshakeConfig_set_our_htlc_minimum_msat(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint64_t val);
+       export function ChannelHandshakeConfig_set_our_htlc_minimum_msat(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelHandshakeConfig_set_our_htlc_minimum_msat(this_ptr, val);
+               // debug statements here
+       }
+       // 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);
+       export function ChannelHandshakeConfig_new(minimum_depth_arg: number, our_to_self_delay_arg: number, our_htlc_minimum_msat_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelHandshakeConfig_new(minimum_depth_arg, our_to_self_delay_arg, our_htlc_minimum_msat_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t ChannelHandshakeConfig_clone_ptr(LDKChannelHandshakeConfig *NONNULL_PTR arg);
+       export function ChannelHandshakeConfig_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelHandshakeConfig_clone_ptr(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.TS_ChannelHandshakeConfig_clone(orig);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKChannelHandshakeConfig ChannelHandshakeConfig_default(void);
+       export function ChannelHandshakeConfig_default(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelHandshakeConfig_default();
+               return nativeResponseValue;
+       }
+       // void ChannelHandshakeLimits_free(struct LDKChannelHandshakeLimits this_obj);
+       export function ChannelHandshakeLimits_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelHandshakeLimits_free(this_obj);
+               // debug statements here
+       }
+       // 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) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelHandshakeLimits_get_min_funding_satoshis(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelHandshakeLimits_set_min_funding_satoshis(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
+       export function ChannelHandshakeLimits_set_min_funding_satoshis(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelHandshakeLimits_set_min_funding_satoshis(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t ChannelHandshakeLimits_get_max_htlc_minimum_msat(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
+       export function ChannelHandshakeLimits_get_max_htlc_minimum_msat(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelHandshakeLimits_get_max_htlc_minimum_msat(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelHandshakeLimits_set_max_htlc_minimum_msat(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
+       export function ChannelHandshakeLimits_set_max_htlc_minimum_msat(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelHandshakeLimits_set_max_htlc_minimum_msat(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t ChannelHandshakeLimits_get_min_max_htlc_value_in_flight_msat(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
+       export function ChannelHandshakeLimits_get_min_max_htlc_value_in_flight_msat(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelHandshakeLimits_get_min_max_htlc_value_in_flight_msat(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelHandshakeLimits_set_min_max_htlc_value_in_flight_msat(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
+       export function ChannelHandshakeLimits_set_min_max_htlc_value_in_flight_msat(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelHandshakeLimits_set_min_max_htlc_value_in_flight_msat(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t ChannelHandshakeLimits_get_max_channel_reserve_satoshis(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
+       export function ChannelHandshakeLimits_get_max_channel_reserve_satoshis(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelHandshakeLimits_get_max_channel_reserve_satoshis(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelHandshakeLimits_set_max_channel_reserve_satoshis(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
+       export function ChannelHandshakeLimits_set_max_channel_reserve_satoshis(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelHandshakeLimits_set_max_channel_reserve_satoshis(this_ptr, val);
+               // debug statements here
+       }
+       // uint16_t ChannelHandshakeLimits_get_min_max_accepted_htlcs(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
+       export function ChannelHandshakeLimits_get_min_max_accepted_htlcs(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelHandshakeLimits_get_min_max_accepted_htlcs(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelHandshakeLimits_set_min_max_accepted_htlcs(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint16_t val);
+       export function ChannelHandshakeLimits_set_min_max_accepted_htlcs(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelHandshakeLimits_set_min_max_accepted_htlcs(this_ptr, val);
+               // debug statements here
+       }
+       // uint32_t ChannelHandshakeLimits_get_max_minimum_depth(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
+       export function ChannelHandshakeLimits_get_max_minimum_depth(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelHandshakeLimits_get_max_minimum_depth(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelHandshakeLimits_set_max_minimum_depth(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint32_t val);
+       export function ChannelHandshakeLimits_set_max_minimum_depth(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelHandshakeLimits_set_max_minimum_depth(this_ptr, val);
+               // debug statements here
+       }
+       // bool ChannelHandshakeLimits_get_force_announced_channel_preference(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
+       export function ChannelHandshakeLimits_get_force_announced_channel_preference(this_ptr: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelHandshakeLimits_get_force_announced_channel_preference(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelHandshakeLimits_set_force_announced_channel_preference(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, bool val);
+       export function ChannelHandshakeLimits_set_force_announced_channel_preference(this_ptr: number, val: boolean): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelHandshakeLimits_set_force_announced_channel_preference(this_ptr, val);
+               // debug statements here
+       }
+       // uint16_t ChannelHandshakeLimits_get_their_to_self_delay(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
+       export function ChannelHandshakeLimits_get_their_to_self_delay(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelHandshakeLimits_get_their_to_self_delay(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelHandshakeLimits_set_their_to_self_delay(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint16_t val);
+       export function ChannelHandshakeLimits_set_their_to_self_delay(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelHandshakeLimits_set_their_to_self_delay(this_ptr, val);
+               // debug statements here
+       }
+       // 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, uint32_t max_minimum_depth_arg, bool force_announced_channel_preference_arg, uint16_t their_to_self_delay_arg);
+       export function ChannelHandshakeLimits_new(min_funding_satoshis_arg: number, max_htlc_minimum_msat_arg: number, min_max_htlc_value_in_flight_msat_arg: number, max_channel_reserve_satoshis_arg: number, min_max_accepted_htlcs_arg: number, max_minimum_depth_arg: number, force_announced_channel_preference_arg: boolean, their_to_self_delay_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_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, max_minimum_depth_arg, force_announced_channel_preference_arg, their_to_self_delay_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t ChannelHandshakeLimits_clone_ptr(LDKChannelHandshakeLimits *NONNULL_PTR arg);
+       export function ChannelHandshakeLimits_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelHandshakeLimits_clone_ptr(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.TS_ChannelHandshakeLimits_clone(orig);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKChannelHandshakeLimits ChannelHandshakeLimits_default(void);
+       export function ChannelHandshakeLimits_default(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelHandshakeLimits_default();
+               return nativeResponseValue;
+       }
+       // void ChannelConfig_free(struct LDKChannelConfig this_obj);
+       export function ChannelConfig_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelConfig_free(this_obj);
+               // debug statements here
+       }
+       // uint32_t ChannelConfig_get_forwarding_fee_proportional_millionths(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
+       export function ChannelConfig_get_forwarding_fee_proportional_millionths(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelConfig_get_forwarding_fee_proportional_millionths(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelConfig_set_forwarding_fee_proportional_millionths(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint32_t val);
+       export function ChannelConfig_set_forwarding_fee_proportional_millionths(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelConfig_set_forwarding_fee_proportional_millionths(this_ptr, val);
+               // debug statements here
+       }
+       // uint32_t ChannelConfig_get_forwarding_fee_base_msat(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
+       export function ChannelConfig_get_forwarding_fee_base_msat(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelConfig_get_forwarding_fee_base_msat(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelConfig_set_forwarding_fee_base_msat(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint32_t val);
+       export function ChannelConfig_set_forwarding_fee_base_msat(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelConfig_set_forwarding_fee_base_msat(this_ptr, val);
+               // debug statements here
+       }
+       // uint16_t ChannelConfig_get_cltv_expiry_delta(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
+       export function ChannelConfig_get_cltv_expiry_delta(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelConfig_get_cltv_expiry_delta(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelConfig_set_cltv_expiry_delta(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint16_t val);
+       export function ChannelConfig_set_cltv_expiry_delta(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelConfig_set_cltv_expiry_delta(this_ptr, val);
+               // debug statements here
+       }
+       // bool ChannelConfig_get_announced_channel(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
+       export function ChannelConfig_get_announced_channel(this_ptr: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelConfig_get_announced_channel(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelConfig_set_announced_channel(struct LDKChannelConfig *NONNULL_PTR this_ptr, bool val);
+       export function ChannelConfig_set_announced_channel(this_ptr: number, val: boolean): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelConfig_set_announced_channel(this_ptr, val);
+               // debug statements here
+       }
+       // bool ChannelConfig_get_commit_upfront_shutdown_pubkey(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
+       export function ChannelConfig_get_commit_upfront_shutdown_pubkey(this_ptr: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelConfig_get_commit_upfront_shutdown_pubkey(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelConfig_set_commit_upfront_shutdown_pubkey(struct LDKChannelConfig *NONNULL_PTR this_ptr, bool val);
+       export function ChannelConfig_set_commit_upfront_shutdown_pubkey(this_ptr: number, val: boolean): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelConfig_set_commit_upfront_shutdown_pubkey(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t ChannelConfig_get_max_dust_htlc_exposure_msat(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
+       export function ChannelConfig_get_max_dust_htlc_exposure_msat(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelConfig_get_max_dust_htlc_exposure_msat(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelConfig_set_max_dust_htlc_exposure_msat(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint64_t val);
+       export function ChannelConfig_set_max_dust_htlc_exposure_msat(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelConfig_set_max_dust_htlc_exposure_msat(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t ChannelConfig_get_force_close_avoidance_max_fee_satoshis(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
+       export function ChannelConfig_get_force_close_avoidance_max_fee_satoshis(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelConfig_get_force_close_avoidance_max_fee_satoshis(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelConfig_set_force_close_avoidance_max_fee_satoshis(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint64_t val);
+       export function ChannelConfig_set_force_close_avoidance_max_fee_satoshis(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelConfig_set_force_close_avoidance_max_fee_satoshis(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKChannelConfig ChannelConfig_new(uint32_t forwarding_fee_proportional_millionths_arg, uint32_t forwarding_fee_base_msat_arg, uint16_t cltv_expiry_delta_arg, bool announced_channel_arg, bool commit_upfront_shutdown_pubkey_arg, uint64_t max_dust_htlc_exposure_msat_arg, uint64_t force_close_avoidance_max_fee_satoshis_arg);
+       export function ChannelConfig_new(forwarding_fee_proportional_millionths_arg: number, forwarding_fee_base_msat_arg: number, cltv_expiry_delta_arg: number, announced_channel_arg: boolean, commit_upfront_shutdown_pubkey_arg: boolean, max_dust_htlc_exposure_msat_arg: number, force_close_avoidance_max_fee_satoshis_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelConfig_new(forwarding_fee_proportional_millionths_arg, forwarding_fee_base_msat_arg, cltv_expiry_delta_arg, announced_channel_arg, commit_upfront_shutdown_pubkey_arg, max_dust_htlc_exposure_msat_arg, force_close_avoidance_max_fee_satoshis_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t ChannelConfig_clone_ptr(LDKChannelConfig *NONNULL_PTR arg);
+       export function ChannelConfig_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelConfig_clone_ptr(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.TS_ChannelConfig_clone(orig);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKChannelConfig ChannelConfig_default(void);
+       export function ChannelConfig_default(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelConfig_default();
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z ChannelConfig_write(const struct LDKChannelConfig *NONNULL_PTR obj);
+       export function ChannelConfig_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelConfig_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelConfig_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // void UserConfig_free(struct LDKUserConfig this_obj);
+       export function UserConfig_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UserConfig_free(this_obj);
+               // debug statements here
+       }
+       // 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) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UserConfig_get_own_channel_config(this_ptr);
+               return nativeResponseValue;
+       }
+       // void UserConfig_set_own_channel_config(struct LDKUserConfig *NONNULL_PTR this_ptr, struct LDKChannelHandshakeConfig val);
+       export function UserConfig_set_own_channel_config(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UserConfig_set_own_channel_config(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKChannelHandshakeLimits UserConfig_get_peer_channel_config_limits(const struct LDKUserConfig *NONNULL_PTR this_ptr);
+       export function UserConfig_get_peer_channel_config_limits(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UserConfig_get_peer_channel_config_limits(this_ptr);
+               return nativeResponseValue;
+       }
+       // void UserConfig_set_peer_channel_config_limits(struct LDKUserConfig *NONNULL_PTR this_ptr, struct LDKChannelHandshakeLimits val);
+       export function UserConfig_set_peer_channel_config_limits(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UserConfig_set_peer_channel_config_limits(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKChannelConfig UserConfig_get_channel_options(const struct LDKUserConfig *NONNULL_PTR this_ptr);
+       export function UserConfig_get_channel_options(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UserConfig_get_channel_options(this_ptr);
+               return nativeResponseValue;
+       }
+       // void UserConfig_set_channel_options(struct LDKUserConfig *NONNULL_PTR this_ptr, struct LDKChannelConfig val);
+       export function UserConfig_set_channel_options(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UserConfig_set_channel_options(this_ptr, val);
+               // debug statements here
+       }
+       // bool UserConfig_get_accept_forwards_to_priv_channels(const struct LDKUserConfig *NONNULL_PTR this_ptr);
+       export function UserConfig_get_accept_forwards_to_priv_channels(this_ptr: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UserConfig_get_accept_forwards_to_priv_channels(this_ptr);
+               return nativeResponseValue;
+       }
+       // void UserConfig_set_accept_forwards_to_priv_channels(struct LDKUserConfig *NONNULL_PTR this_ptr, bool val);
+       export function UserConfig_set_accept_forwards_to_priv_channels(this_ptr: number, val: boolean): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UserConfig_set_accept_forwards_to_priv_channels(this_ptr, val);
+               // debug statements here
+       }
+       // bool UserConfig_get_accept_inbound_channels(const struct LDKUserConfig *NONNULL_PTR this_ptr);
+       export function UserConfig_get_accept_inbound_channels(this_ptr: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UserConfig_get_accept_inbound_channels(this_ptr);
+               return nativeResponseValue;
+       }
+       // void UserConfig_set_accept_inbound_channels(struct LDKUserConfig *NONNULL_PTR this_ptr, bool val);
+       export function UserConfig_set_accept_inbound_channels(this_ptr: number, val: boolean): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UserConfig_set_accept_inbound_channels(this_ptr, val);
+               // debug statements here
+       }
+       // 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, bool accept_forwards_to_priv_channels_arg, bool accept_inbound_channels_arg);
+       export function UserConfig_new(own_channel_config_arg: number, peer_channel_config_limits_arg: number, channel_options_arg: number, accept_forwards_to_priv_channels_arg: boolean, accept_inbound_channels_arg: boolean): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UserConfig_new(own_channel_config_arg, peer_channel_config_limits_arg, channel_options_arg, accept_forwards_to_priv_channels_arg, accept_inbound_channels_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t UserConfig_clone_ptr(LDKUserConfig *NONNULL_PTR arg);
+       export function UserConfig_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UserConfig_clone_ptr(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.TS_UserConfig_clone(orig);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKUserConfig UserConfig_default(void);
+       export function UserConfig_default(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UserConfig_default();
+               return nativeResponseValue;
+       }
+       // void BestBlock_free(struct LDKBestBlock this_obj);
+       export function BestBlock_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BestBlock_free(this_obj);
+               // debug statements here
+       }
+       // uint64_t BestBlock_clone_ptr(LDKBestBlock *NONNULL_PTR arg);
+       export function BestBlock_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BestBlock_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKBestBlock BestBlock_clone(const struct LDKBestBlock *NONNULL_PTR orig);
+       export function BestBlock_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BestBlock_clone(orig);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKBestBlock BestBlock_from_genesis(enum LDKNetwork network);
+       export function BestBlock_from_genesis(network: Network): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BestBlock_from_genesis(network);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKBestBlock BestBlock_new(struct LDKThirtyTwoBytes block_hash, uint32_t height);
+       export function BestBlock_new(block_hash: Uint8Array, height: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BestBlock_new(encodeUint8Array(block_hash), height);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKThirtyTwoBytes BestBlock_block_hash(const struct LDKBestBlock *NONNULL_PTR this_arg);
+       export function BestBlock_block_hash(this_arg: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BestBlock_block_hash(this_arg);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // MUST_USE_RES uint32_t BestBlock_height(const struct LDKBestBlock *NONNULL_PTR this_arg);
+       export function BestBlock_height(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BestBlock_height(this_arg);
+               return nativeResponseValue;
+       }
+       // enum LDKAccessError AccessError_clone(const enum LDKAccessError *NONNULL_PTR orig);
+       export function AccessError_clone(orig: number): AccessError {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AccessError_clone(orig);
+               return nativeResponseValue;
+       }
+       // enum LDKAccessError AccessError_unknown_chain(void);
+       export function AccessError_unknown_chain(): AccessError {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AccessError_unknown_chain();
+               return nativeResponseValue;
+       }
+       // enum LDKAccessError AccessError_unknown_tx(void);
+       export function AccessError_unknown_tx(): AccessError {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AccessError_unknown_tx();
+               return nativeResponseValue;
+       }
+       // void Access_free(struct LDKAccess this_ptr);
+       export function Access_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Access_free(this_ptr);
+               // debug statements here
+       }
+       // void Listen_free(struct LDKListen this_ptr);
+       export function Listen_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Listen_free(this_ptr);
+               // debug statements here
+       }
+       // void Confirm_free(struct LDKConfirm this_ptr);
+       export function Confirm_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Confirm_free(this_ptr);
+               // debug statements here
+       }
+       // enum LDKChannelMonitorUpdateErr ChannelMonitorUpdateErr_clone(const enum LDKChannelMonitorUpdateErr *NONNULL_PTR orig);
+       export function ChannelMonitorUpdateErr_clone(orig: number): ChannelMonitorUpdateErr {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMonitorUpdateErr_clone(orig);
+               return nativeResponseValue;
+       }
+       // enum LDKChannelMonitorUpdateErr ChannelMonitorUpdateErr_temporary_failure(void);
+       export function ChannelMonitorUpdateErr_temporary_failure(): ChannelMonitorUpdateErr {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMonitorUpdateErr_temporary_failure();
+               return nativeResponseValue;
+       }
+       // enum LDKChannelMonitorUpdateErr ChannelMonitorUpdateErr_permanent_failure(void);
+       export function ChannelMonitorUpdateErr_permanent_failure(): ChannelMonitorUpdateErr {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMonitorUpdateErr_permanent_failure();
+               return nativeResponseValue;
+       }
+       // void Watch_free(struct LDKWatch this_ptr);
+       export function Watch_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Watch_free(this_ptr);
+               // debug statements here
+       }
+       // void Filter_free(struct LDKFilter this_ptr);
+       export function Filter_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Filter_free(this_ptr);
+               // debug statements here
+       }
+       // void WatchedOutput_free(struct LDKWatchedOutput this_obj);
+       export function WatchedOutput_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_WatchedOutput_free(this_obj);
+               // debug statements here
+       }
+       // struct LDKThirtyTwoBytes WatchedOutput_get_block_hash(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
+       export function WatchedOutput_get_block_hash(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_WatchedOutput_get_block_hash(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void WatchedOutput_set_block_hash(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function WatchedOutput_set_block_hash(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_WatchedOutput_set_block_hash(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKOutPoint WatchedOutput_get_outpoint(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
+       export function WatchedOutput_get_outpoint(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_WatchedOutput_get_outpoint(this_ptr);
+               return nativeResponseValue;
+       }
+       // void WatchedOutput_set_outpoint(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKOutPoint val);
+       export function WatchedOutput_set_outpoint(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_WatchedOutput_set_outpoint(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKu8slice WatchedOutput_get_script_pubkey(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
+       export function WatchedOutput_get_script_pubkey(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_WatchedOutput_get_script_pubkey(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void WatchedOutput_set_script_pubkey(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
+       export function WatchedOutput_set_script_pubkey(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_WatchedOutput_set_script_pubkey(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKWatchedOutput WatchedOutput_new(struct LDKThirtyTwoBytes block_hash_arg, struct LDKOutPoint outpoint_arg, struct LDKCVec_u8Z script_pubkey_arg);
+       export function WatchedOutput_new(block_hash_arg: Uint8Array, outpoint_arg: number, script_pubkey_arg: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_WatchedOutput_new(encodeUint8Array(block_hash_arg), outpoint_arg, encodeUint8Array(script_pubkey_arg));
+               return nativeResponseValue;
+       }
+       // uint64_t WatchedOutput_clone_ptr(LDKWatchedOutput *NONNULL_PTR arg);
+       export function WatchedOutput_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_WatchedOutput_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKWatchedOutput WatchedOutput_clone(const struct LDKWatchedOutput *NONNULL_PTR orig);
+       export function WatchedOutput_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_WatchedOutput_clone(orig);
+               return nativeResponseValue;
+       }
+       // uint64_t WatchedOutput_hash(const struct LDKWatchedOutput *NONNULL_PTR o);
+       export function WatchedOutput_hash(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_WatchedOutput_hash(o);
+               return nativeResponseValue;
+       }
+       // void BroadcasterInterface_free(struct LDKBroadcasterInterface this_ptr);
+       export function BroadcasterInterface_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BroadcasterInterface_free(this_ptr);
+               // debug statements here
+       }
+       // enum LDKConfirmationTarget ConfirmationTarget_clone(const enum LDKConfirmationTarget *NONNULL_PTR orig);
+       export function ConfirmationTarget_clone(orig: number): ConfirmationTarget {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ConfirmationTarget_clone(orig);
+               return nativeResponseValue;
+       }
+       // enum LDKConfirmationTarget ConfirmationTarget_background(void);
+       export function ConfirmationTarget_background(): ConfirmationTarget {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ConfirmationTarget_background();
+               return nativeResponseValue;
+       }
+       // enum LDKConfirmationTarget ConfirmationTarget_normal(void);
+       export function ConfirmationTarget_normal(): ConfirmationTarget {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ConfirmationTarget_normal();
+               return nativeResponseValue;
+       }
+       // enum LDKConfirmationTarget ConfirmationTarget_high_priority(void);
+       export function ConfirmationTarget_high_priority(): ConfirmationTarget {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ConfirmationTarget_high_priority();
+               return nativeResponseValue;
+       }
+       // bool ConfirmationTarget_eq(const enum LDKConfirmationTarget *NONNULL_PTR a, const enum LDKConfirmationTarget *NONNULL_PTR b);
+       export function ConfirmationTarget_eq(a: number, b: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ConfirmationTarget_eq(a, b);
+               return nativeResponseValue;
+       }
+       // void FeeEstimator_free(struct LDKFeeEstimator this_ptr);
+       export function FeeEstimator_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FeeEstimator_free(this_ptr);
+               // debug statements here
+       }
+       // void MonitorUpdateId_free(struct LDKMonitorUpdateId this_obj);
+       export function MonitorUpdateId_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MonitorUpdateId_free(this_obj);
+               // debug statements here
+       }
+       // uint64_t MonitorUpdateId_clone_ptr(LDKMonitorUpdateId *NONNULL_PTR arg);
+       export function MonitorUpdateId_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MonitorUpdateId_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKMonitorUpdateId MonitorUpdateId_clone(const struct LDKMonitorUpdateId *NONNULL_PTR orig);
+       export function MonitorUpdateId_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MonitorUpdateId_clone(orig);
+               return nativeResponseValue;
+       }
+       // uint64_t MonitorUpdateId_hash(const struct LDKMonitorUpdateId *NONNULL_PTR o);
+       export function MonitorUpdateId_hash(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MonitorUpdateId_hash(o);
+               return nativeResponseValue;
+       }
+       // bool MonitorUpdateId_eq(const struct LDKMonitorUpdateId *NONNULL_PTR a, const struct LDKMonitorUpdateId *NONNULL_PTR b);
+       export function MonitorUpdateId_eq(a: number, b: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MonitorUpdateId_eq(a, b);
+               return nativeResponseValue;
+       }
+       // void Persist_free(struct LDKPersist this_ptr);
+       export function Persist_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Persist_free(this_ptr);
+               // debug statements here
+       }
+       // void LockedChannelMonitor_free(struct LDKLockedChannelMonitor this_obj);
+       export function LockedChannelMonitor_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LockedChannelMonitor_free(this_obj);
+               // debug statements here
+       }
+       // void ChainMonitor_free(struct LDKChainMonitor this_obj);
+       export function ChainMonitor_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChainMonitor_free(this_obj);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKChainMonitor ChainMonitor_new(struct LDKCOption_FilterZ chain_source, struct LDKBroadcasterInterface broadcaster, struct LDKLogger logger, struct LDKFeeEstimator feeest, struct LDKPersist persister);
+       export function ChainMonitor_new(chain_source: number, broadcaster: number, logger: number, feeest: number, persister: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChainMonitor_new(chain_source, broadcaster, logger, feeest, persister);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCVec_BalanceZ ChainMonitor_get_claimable_balances(const struct LDKChainMonitor *NONNULL_PTR this_arg, struct LDKCVec_ChannelDetailsZ ignored_channels);
+       export function ChainMonitor_get_claimable_balances(this_arg: number, ignored_channels: number[]): number[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChainMonitor_get_claimable_balances(this_arg, ignored_channels);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCResult_LockedChannelMonitorNoneZ ChainMonitor_get_monitor(const struct LDKChainMonitor *NONNULL_PTR this_arg, struct LDKOutPoint funding_txo);
+       export function ChainMonitor_get_monitor(this_arg: number, funding_txo: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChainMonitor_get_monitor(this_arg, funding_txo);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCVec_OutPointZ ChainMonitor_list_monitors(const struct LDKChainMonitor *NONNULL_PTR this_arg);
+       export function ChainMonitor_list_monitors(this_arg: number): number[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChainMonitor_list_monitors(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChainMonitor_channel_monitor_updated(const struct LDKChainMonitor *NONNULL_PTR this_arg, struct LDKOutPoint funding_txo, struct LDKMonitorUpdateId completed_update_id);
+       export function ChainMonitor_channel_monitor_updated(this_arg: number, funding_txo: number, completed_update_id: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChainMonitor_channel_monitor_updated(this_arg, funding_txo, completed_update_id);
+               return nativeResponseValue;
+       }
+       // struct LDKListen ChainMonitor_as_Listen(const struct LDKChainMonitor *NONNULL_PTR this_arg);
+       export function ChainMonitor_as_Listen(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChainMonitor_as_Listen(this_arg);
+               return nativeResponseValue;
+       }
+       // struct LDKConfirm ChainMonitor_as_Confirm(const struct LDKChainMonitor *NONNULL_PTR this_arg);
+       export function ChainMonitor_as_Confirm(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChainMonitor_as_Confirm(this_arg);
+               return nativeResponseValue;
+       }
+       // struct LDKWatch ChainMonitor_as_Watch(const struct LDKChainMonitor *NONNULL_PTR this_arg);
+       export function ChainMonitor_as_Watch(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChainMonitor_as_Watch(this_arg);
+               return nativeResponseValue;
+       }
+       // struct LDKEventsProvider ChainMonitor_as_EventsProvider(const struct LDKChainMonitor *NONNULL_PTR this_arg);
+       export function ChainMonitor_as_EventsProvider(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChainMonitor_as_EventsProvider(this_arg);
+               return nativeResponseValue;
+       }
+       // void ChannelMonitorUpdate_free(struct LDKChannelMonitorUpdate this_obj);
+       export function ChannelMonitorUpdate_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMonitorUpdate_free(this_obj);
+               // debug statements here
+       }
+       // 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) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMonitorUpdate_get_update_id(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelMonitorUpdate_set_update_id(struct LDKChannelMonitorUpdate *NONNULL_PTR this_ptr, uint64_t val);
+       export function ChannelMonitorUpdate_set_update_id(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMonitorUpdate_set_update_id(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t ChannelMonitorUpdate_clone_ptr(LDKChannelMonitorUpdate *NONNULL_PTR arg);
+       export function ChannelMonitorUpdate_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMonitorUpdate_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_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) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMonitorUpdate_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ ChannelMonitorUpdate_read(struct LDKu8slice ser);
+       export function ChannelMonitorUpdate_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMonitorUpdate_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // void MonitorEvent_free(struct LDKMonitorEvent this_ptr);
+       export function MonitorEvent_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MonitorEvent_free(this_ptr);
+               // debug statements here
+       }
+       // uint64_t MonitorEvent_clone_ptr(LDKMonitorEvent *NONNULL_PTR arg);
+       export function MonitorEvent_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MonitorEvent_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKMonitorEvent MonitorEvent_clone(const struct LDKMonitorEvent *NONNULL_PTR orig);
+       export function MonitorEvent_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MonitorEvent_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKMonitorEvent MonitorEvent_htlcevent(struct LDKHTLCUpdate a);
+       export function MonitorEvent_htlcevent(a: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MonitorEvent_htlcevent(a);
+               return nativeResponseValue;
+       }
+       // struct LDKMonitorEvent MonitorEvent_commitment_tx_confirmed(struct LDKOutPoint a);
+       export function MonitorEvent_commitment_tx_confirmed(a: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MonitorEvent_commitment_tx_confirmed(a);
+               return nativeResponseValue;
+       }
+       // struct LDKMonitorEvent MonitorEvent_update_completed(struct LDKOutPoint funding_txo, uint64_t monitor_update_id);
+       export function MonitorEvent_update_completed(funding_txo: number, monitor_update_id: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MonitorEvent_update_completed(funding_txo, monitor_update_id);
+               return nativeResponseValue;
+       }
+       // struct LDKMonitorEvent MonitorEvent_update_failed(struct LDKOutPoint a);
+       export function MonitorEvent_update_failed(a: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MonitorEvent_update_failed(a);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z MonitorEvent_write(const struct LDKMonitorEvent *NONNULL_PTR obj);
+       export function MonitorEvent_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MonitorEvent_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_COption_MonitorEventZDecodeErrorZ MonitorEvent_read(struct LDKu8slice ser);
+       export function MonitorEvent_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MonitorEvent_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // void HTLCUpdate_free(struct LDKHTLCUpdate this_obj);
+       export function HTLCUpdate_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_HTLCUpdate_free(this_obj);
+               // debug statements here
+       }
+       // uint64_t HTLCUpdate_clone_ptr(LDKHTLCUpdate *NONNULL_PTR arg);
+       export function HTLCUpdate_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_HTLCUpdate_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKHTLCUpdate HTLCUpdate_clone(const struct LDKHTLCUpdate *NONNULL_PTR orig);
+       export function HTLCUpdate_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_HTLCUpdate_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z HTLCUpdate_write(const struct LDKHTLCUpdate *NONNULL_PTR obj);
+       export function HTLCUpdate_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_HTLCUpdate_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_HTLCUpdate_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // void Balance_free(struct LDKBalance this_ptr);
+       export function Balance_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Balance_free(this_ptr);
+               // debug statements here
+       }
+       // uint64_t Balance_clone_ptr(LDKBalance *NONNULL_PTR arg);
+       export function Balance_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Balance_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKBalance Balance_clone(const struct LDKBalance *NONNULL_PTR orig);
+       export function Balance_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Balance_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKBalance Balance_claimable_on_channel_close(uint64_t claimable_amount_satoshis);
+       export function Balance_claimable_on_channel_close(claimable_amount_satoshis: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Balance_claimable_on_channel_close(claimable_amount_satoshis);
+               return nativeResponseValue;
+       }
+       // struct LDKBalance Balance_claimable_awaiting_confirmations(uint64_t claimable_amount_satoshis, uint32_t confirmation_height);
+       export function Balance_claimable_awaiting_confirmations(claimable_amount_satoshis: number, confirmation_height: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Balance_claimable_awaiting_confirmations(claimable_amount_satoshis, confirmation_height);
+               return nativeResponseValue;
+       }
+       // struct LDKBalance Balance_contentious_claimable(uint64_t claimable_amount_satoshis, uint32_t timeout_height);
+       export function Balance_contentious_claimable(claimable_amount_satoshis: number, timeout_height: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Balance_contentious_claimable(claimable_amount_satoshis, timeout_height);
+               return nativeResponseValue;
+       }
+       // struct LDKBalance Balance_maybe_claimable_htlcawaiting_timeout(uint64_t claimable_amount_satoshis, uint32_t claimable_height);
+       export function Balance_maybe_claimable_htlcawaiting_timeout(claimable_amount_satoshis: number, claimable_height: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Balance_maybe_claimable_htlcawaiting_timeout(claimable_amount_satoshis, claimable_height);
+               return nativeResponseValue;
+       }
+       // bool Balance_eq(const struct LDKBalance *NONNULL_PTR a, const struct LDKBalance *NONNULL_PTR b);
+       export function Balance_eq(a: number, b: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Balance_eq(a, b);
+               return nativeResponseValue;
+       }
+       // void ChannelMonitor_free(struct LDKChannelMonitor this_obj);
+       export function ChannelMonitor_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMonitor_free(this_obj);
+               // debug statements here
+       }
+       // uint64_t ChannelMonitor_clone_ptr(LDKChannelMonitor *NONNULL_PTR arg);
+       export function ChannelMonitor_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMonitor_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKChannelMonitor ChannelMonitor_clone(const struct LDKChannelMonitor *NONNULL_PTR orig);
+       export function ChannelMonitor_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMonitor_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z ChannelMonitor_write(const struct LDKChannelMonitor *NONNULL_PTR obj);
+       export function ChannelMonitor_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMonitor_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // MUST_USE_RES struct LDKCResult_NoneNoneZ ChannelMonitor_update_monitor(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const struct LDKChannelMonitorUpdate *NONNULL_PTR updates, const struct LDKBroadcasterInterface *NONNULL_PTR broadcaster, const struct LDKFeeEstimator *NONNULL_PTR fee_estimator, const struct LDKLogger *NONNULL_PTR logger);
+       export function ChannelMonitor_update_monitor(this_arg: number, updates: number, broadcaster: number, fee_estimator: number, logger: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMonitor_update_monitor(this_arg, updates, broadcaster, fee_estimator, logger);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES uint64_t ChannelMonitor_get_latest_update_id(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
+       export function ChannelMonitor_get_latest_update_id(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMonitor_get_latest_update_id(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKC2Tuple_OutPointScriptZ ChannelMonitor_get_funding_txo(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
+       export function ChannelMonitor_get_funding_txo(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMonitor_get_funding_txo(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ ChannelMonitor_get_outputs_to_watch(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
+       export function ChannelMonitor_get_outputs_to_watch(this_arg: number): number[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMonitor_get_outputs_to_watch(this_arg);
+               return nativeResponseValue;
+       }
+       // void ChannelMonitor_load_outputs_to_watch(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const struct LDKFilter *NONNULL_PTR filter);
+       export function ChannelMonitor_load_outputs_to_watch(this_arg: number, filter: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMonitor_load_outputs_to_watch(this_arg, filter);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKCVec_MonitorEventZ ChannelMonitor_get_and_clear_pending_monitor_events(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
+       export function ChannelMonitor_get_and_clear_pending_monitor_events(this_arg: number): number[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMonitor_get_and_clear_pending_monitor_events(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCVec_EventZ ChannelMonitor_get_and_clear_pending_events(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
+       export function ChannelMonitor_get_and_clear_pending_events(this_arg: number): number[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMonitor_get_and_clear_pending_events(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCVec_TransactionZ ChannelMonitor_get_latest_holder_commitment_txn(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const struct LDKLogger *NONNULL_PTR logger);
+       export function ChannelMonitor_get_latest_holder_commitment_txn(this_arg: number, logger: number): Uint8Array[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMonitor_get_latest_holder_commitment_txn(this_arg, logger);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ChannelMonitor_block_connected(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height, struct LDKBroadcasterInterface broadcaster, struct LDKFeeEstimator fee_estimator, struct LDKLogger logger);
+       export function ChannelMonitor_block_connected(this_arg: number, header: Uint8Array, txdata: number[], height: number, broadcaster: number, fee_estimator: number, logger: number): number[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMonitor_block_connected(this_arg, encodeUint8Array(header), txdata, height, broadcaster, fee_estimator, logger);
+               return nativeResponseValue;
+       }
+       // void ChannelMonitor_block_disconnected(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const uint8_t (*header)[80], uint32_t height, struct LDKBroadcasterInterface broadcaster, struct LDKFeeEstimator fee_estimator, struct LDKLogger logger);
+       export function ChannelMonitor_block_disconnected(this_arg: number, header: Uint8Array, height: number, broadcaster: number, fee_estimator: number, logger: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMonitor_block_disconnected(this_arg, encodeUint8Array(header), height, broadcaster, fee_estimator, logger);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ChannelMonitor_transactions_confirmed(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height, struct LDKBroadcasterInterface broadcaster, struct LDKFeeEstimator fee_estimator, struct LDKLogger logger);
+       export function ChannelMonitor_transactions_confirmed(this_arg: number, header: Uint8Array, txdata: number[], height: number, broadcaster: number, fee_estimator: number, logger: number): number[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMonitor_transactions_confirmed(this_arg, encodeUint8Array(header), txdata, height, broadcaster, fee_estimator, logger);
+               return nativeResponseValue;
+       }
+       // void ChannelMonitor_transaction_unconfirmed(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const uint8_t (*txid)[32], struct LDKBroadcasterInterface broadcaster, struct LDKFeeEstimator fee_estimator, struct LDKLogger logger);
+       export function ChannelMonitor_transaction_unconfirmed(this_arg: number, txid: Uint8Array, broadcaster: number, fee_estimator: number, logger: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMonitor_transaction_unconfirmed(this_arg, encodeUint8Array(txid), broadcaster, fee_estimator, logger);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ChannelMonitor_best_block_updated(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const uint8_t (*header)[80], uint32_t height, struct LDKBroadcasterInterface broadcaster, struct LDKFeeEstimator fee_estimator, struct LDKLogger logger);
+       export function ChannelMonitor_best_block_updated(this_arg: number, header: Uint8Array, height: number, broadcaster: number, fee_estimator: number, logger: number): number[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMonitor_best_block_updated(this_arg, encodeUint8Array(header), height, broadcaster, fee_estimator, logger);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCVec_TxidZ ChannelMonitor_get_relevant_txids(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
+       export function ChannelMonitor_get_relevant_txids(this_arg: number): Uint8Array[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMonitor_get_relevant_txids(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKBestBlock ChannelMonitor_current_best_block(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
+       export function ChannelMonitor_current_best_block(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMonitor_current_best_block(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCVec_BalanceZ ChannelMonitor_get_claimable_balances(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
+       export function ChannelMonitor_get_claimable_balances(this_arg: number): number[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMonitor_get_claimable_balances(this_arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ C2Tuple_BlockHashChannelMonitorZ_read(struct LDKu8slice ser, const struct LDKKeysInterface *NONNULL_PTR arg);
+       export function C2Tuple_BlockHashChannelMonitorZ_read(ser: Uint8Array, arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_BlockHashChannelMonitorZ_read(encodeUint8Array(ser), arg);
+               return nativeResponseValue;
+       }
+       // void OutPoint_free(struct LDKOutPoint this_obj);
+       export function OutPoint_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OutPoint_free(this_obj);
+               // debug statements here
+       }
+       // 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) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OutPoint_get_txid(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void OutPoint_set_txid(struct LDKOutPoint *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function OutPoint_set_txid(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OutPoint_set_txid(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // uint16_t OutPoint_get_index(const struct LDKOutPoint *NONNULL_PTR this_ptr);
+       export function OutPoint_get_index(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OutPoint_get_index(this_ptr);
+               return nativeResponseValue;
+       }
+       // void OutPoint_set_index(struct LDKOutPoint *NONNULL_PTR this_ptr, uint16_t val);
+       export function OutPoint_set_index(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OutPoint_set_index(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKOutPoint OutPoint_new(struct LDKThirtyTwoBytes txid_arg, uint16_t index_arg);
+       export function OutPoint_new(txid_arg: Uint8Array, index_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OutPoint_new(encodeUint8Array(txid_arg), index_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t OutPoint_clone_ptr(LDKOutPoint *NONNULL_PTR arg);
+       export function OutPoint_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OutPoint_clone_ptr(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.TS_OutPoint_clone(orig);
+               return nativeResponseValue;
+       }
+       // bool OutPoint_eq(const struct LDKOutPoint *NONNULL_PTR a, const struct LDKOutPoint *NONNULL_PTR b);
+       export function OutPoint_eq(a: number, b: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OutPoint_eq(a, b);
+               return nativeResponseValue;
+       }
+       // uint64_t OutPoint_hash(const struct LDKOutPoint *NONNULL_PTR o);
+       export function OutPoint_hash(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OutPoint_hash(o);
+               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) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OutPoint_to_channel_id(this_arg);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCVec_u8Z OutPoint_write(const struct LDKOutPoint *NONNULL_PTR obj);
+       export function OutPoint_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OutPoint_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_OutPoint_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // void DelayedPaymentOutputDescriptor_free(struct LDKDelayedPaymentOutputDescriptor this_obj);
+       export function DelayedPaymentOutputDescriptor_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DelayedPaymentOutputDescriptor_free(this_obj);
+               // debug statements here
+       }
+       // struct LDKOutPoint DelayedPaymentOutputDescriptor_get_outpoint(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
+       export function DelayedPaymentOutputDescriptor_get_outpoint(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DelayedPaymentOutputDescriptor_get_outpoint(this_ptr);
+               return nativeResponseValue;
+       }
+       // void DelayedPaymentOutputDescriptor_set_outpoint(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKOutPoint val);
+       export function DelayedPaymentOutputDescriptor_set_outpoint(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DelayedPaymentOutputDescriptor_set_outpoint(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKPublicKey DelayedPaymentOutputDescriptor_get_per_commitment_point(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
+       export function DelayedPaymentOutputDescriptor_get_per_commitment_point(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DelayedPaymentOutputDescriptor_get_per_commitment_point(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void DelayedPaymentOutputDescriptor_set_per_commitment_point(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function DelayedPaymentOutputDescriptor_set_per_commitment_point(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DelayedPaymentOutputDescriptor_set_per_commitment_point(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // uint16_t DelayedPaymentOutputDescriptor_get_to_self_delay(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
+       export function DelayedPaymentOutputDescriptor_get_to_self_delay(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DelayedPaymentOutputDescriptor_get_to_self_delay(this_ptr);
+               return nativeResponseValue;
+       }
+       // void DelayedPaymentOutputDescriptor_set_to_self_delay(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, uint16_t val);
+       export function DelayedPaymentOutputDescriptor_set_to_self_delay(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DelayedPaymentOutputDescriptor_set_to_self_delay(this_ptr, val);
+               // debug statements here
+       }
+       // void DelayedPaymentOutputDescriptor_set_output(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKTxOut val);
+       export function DelayedPaymentOutputDescriptor_set_output(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DelayedPaymentOutputDescriptor_set_output(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKPublicKey DelayedPaymentOutputDescriptor_get_revocation_pubkey(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
+       export function DelayedPaymentOutputDescriptor_get_revocation_pubkey(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DelayedPaymentOutputDescriptor_get_revocation_pubkey(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void DelayedPaymentOutputDescriptor_set_revocation_pubkey(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function DelayedPaymentOutputDescriptor_set_revocation_pubkey(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DelayedPaymentOutputDescriptor_set_revocation_pubkey(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // const uint8_t (*DelayedPaymentOutputDescriptor_get_channel_keys_id(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr))[32];
+       export function DelayedPaymentOutputDescriptor_get_channel_keys_id(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DelayedPaymentOutputDescriptor_get_channel_keys_id(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void DelayedPaymentOutputDescriptor_set_channel_keys_id(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function DelayedPaymentOutputDescriptor_set_channel_keys_id(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DelayedPaymentOutputDescriptor_set_channel_keys_id(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // uint64_t DelayedPaymentOutputDescriptor_get_channel_value_satoshis(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
+       export function DelayedPaymentOutputDescriptor_get_channel_value_satoshis(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DelayedPaymentOutputDescriptor_get_channel_value_satoshis(this_ptr);
+               return nativeResponseValue;
+       }
+       // void DelayedPaymentOutputDescriptor_set_channel_value_satoshis(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, uint64_t val);
+       export function DelayedPaymentOutputDescriptor_set_channel_value_satoshis(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DelayedPaymentOutputDescriptor_set_channel_value_satoshis(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKDelayedPaymentOutputDescriptor DelayedPaymentOutputDescriptor_new(struct LDKOutPoint outpoint_arg, struct LDKPublicKey per_commitment_point_arg, uint16_t to_self_delay_arg, struct LDKTxOut output_arg, struct LDKPublicKey revocation_pubkey_arg, struct LDKThirtyTwoBytes channel_keys_id_arg, uint64_t channel_value_satoshis_arg);
+       export function DelayedPaymentOutputDescriptor_new(outpoint_arg: number, per_commitment_point_arg: Uint8Array, to_self_delay_arg: number, output_arg: number, revocation_pubkey_arg: Uint8Array, channel_keys_id_arg: Uint8Array, channel_value_satoshis_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DelayedPaymentOutputDescriptor_new(outpoint_arg, encodeUint8Array(per_commitment_point_arg), to_self_delay_arg, output_arg, encodeUint8Array(revocation_pubkey_arg), encodeUint8Array(channel_keys_id_arg), channel_value_satoshis_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t DelayedPaymentOutputDescriptor_clone_ptr(LDKDelayedPaymentOutputDescriptor *NONNULL_PTR arg);
+       export function DelayedPaymentOutputDescriptor_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DelayedPaymentOutputDescriptor_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKDelayedPaymentOutputDescriptor DelayedPaymentOutputDescriptor_clone(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR orig);
+       export function DelayedPaymentOutputDescriptor_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DelayedPaymentOutputDescriptor_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z DelayedPaymentOutputDescriptor_write(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR obj);
+       export function DelayedPaymentOutputDescriptor_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DelayedPaymentOutputDescriptor_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ DelayedPaymentOutputDescriptor_read(struct LDKu8slice ser);
+       export function DelayedPaymentOutputDescriptor_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DelayedPaymentOutputDescriptor_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // void StaticPaymentOutputDescriptor_free(struct LDKStaticPaymentOutputDescriptor this_obj);
+       export function StaticPaymentOutputDescriptor_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_StaticPaymentOutputDescriptor_free(this_obj);
+               // debug statements here
+       }
+       // struct LDKOutPoint StaticPaymentOutputDescriptor_get_outpoint(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr);
+       export function StaticPaymentOutputDescriptor_get_outpoint(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_StaticPaymentOutputDescriptor_get_outpoint(this_ptr);
+               return nativeResponseValue;
+       }
+       // void StaticPaymentOutputDescriptor_set_outpoint(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKOutPoint val);
+       export function StaticPaymentOutputDescriptor_set_outpoint(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_StaticPaymentOutputDescriptor_set_outpoint(this_ptr, val);
+               // debug statements here
+       }
+       // void StaticPaymentOutputDescriptor_set_output(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKTxOut val);
+       export function StaticPaymentOutputDescriptor_set_output(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_StaticPaymentOutputDescriptor_set_output(this_ptr, val);
+               // debug statements here
+       }
+       // const uint8_t (*StaticPaymentOutputDescriptor_get_channel_keys_id(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr))[32];
+       export function StaticPaymentOutputDescriptor_get_channel_keys_id(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_StaticPaymentOutputDescriptor_get_channel_keys_id(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void StaticPaymentOutputDescriptor_set_channel_keys_id(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function StaticPaymentOutputDescriptor_set_channel_keys_id(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_StaticPaymentOutputDescriptor_set_channel_keys_id(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // uint64_t StaticPaymentOutputDescriptor_get_channel_value_satoshis(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr);
+       export function StaticPaymentOutputDescriptor_get_channel_value_satoshis(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_StaticPaymentOutputDescriptor_get_channel_value_satoshis(this_ptr);
+               return nativeResponseValue;
+       }
+       // void StaticPaymentOutputDescriptor_set_channel_value_satoshis(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, uint64_t val);
+       export function StaticPaymentOutputDescriptor_set_channel_value_satoshis(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_StaticPaymentOutputDescriptor_set_channel_value_satoshis(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKStaticPaymentOutputDescriptor StaticPaymentOutputDescriptor_new(struct LDKOutPoint outpoint_arg, struct LDKTxOut output_arg, struct LDKThirtyTwoBytes channel_keys_id_arg, uint64_t channel_value_satoshis_arg);
+       export function StaticPaymentOutputDescriptor_new(outpoint_arg: number, output_arg: number, channel_keys_id_arg: Uint8Array, channel_value_satoshis_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_StaticPaymentOutputDescriptor_new(outpoint_arg, output_arg, encodeUint8Array(channel_keys_id_arg), channel_value_satoshis_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t StaticPaymentOutputDescriptor_clone_ptr(LDKStaticPaymentOutputDescriptor *NONNULL_PTR arg);
+       export function StaticPaymentOutputDescriptor_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_StaticPaymentOutputDescriptor_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKStaticPaymentOutputDescriptor StaticPaymentOutputDescriptor_clone(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR orig);
+       export function StaticPaymentOutputDescriptor_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_StaticPaymentOutputDescriptor_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z StaticPaymentOutputDescriptor_write(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR obj);
+       export function StaticPaymentOutputDescriptor_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_StaticPaymentOutputDescriptor_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ StaticPaymentOutputDescriptor_read(struct LDKu8slice ser);
+       export function StaticPaymentOutputDescriptor_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_StaticPaymentOutputDescriptor_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // void SpendableOutputDescriptor_free(struct LDKSpendableOutputDescriptor this_ptr);
+       export function SpendableOutputDescriptor_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_SpendableOutputDescriptor_free(this_ptr);
+               // debug statements here
+       }
+       // uint64_t SpendableOutputDescriptor_clone_ptr(LDKSpendableOutputDescriptor *NONNULL_PTR arg);
+       export function SpendableOutputDescriptor_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_SpendableOutputDescriptor_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_clone(const struct LDKSpendableOutputDescriptor *NONNULL_PTR orig);
+       export function SpendableOutputDescriptor_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_SpendableOutputDescriptor_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_static_output(struct LDKOutPoint outpoint, struct LDKTxOut output);
+       export function SpendableOutputDescriptor_static_output(outpoint: number, output: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_SpendableOutputDescriptor_static_output(outpoint, output);
+               return nativeResponseValue;
+       }
+       // struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_delayed_payment_output(struct LDKDelayedPaymentOutputDescriptor a);
+       export function SpendableOutputDescriptor_delayed_payment_output(a: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_SpendableOutputDescriptor_delayed_payment_output(a);
+               return nativeResponseValue;
+       }
+       // struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_static_payment_output(struct LDKStaticPaymentOutputDescriptor a);
+       export function SpendableOutputDescriptor_static_payment_output(a: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_SpendableOutputDescriptor_static_payment_output(a);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z SpendableOutputDescriptor_write(const struct LDKSpendableOutputDescriptor *NONNULL_PTR obj);
+       export function SpendableOutputDescriptor_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_SpendableOutputDescriptor_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ SpendableOutputDescriptor_read(struct LDKu8slice ser);
+       export function SpendableOutputDescriptor_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_SpendableOutputDescriptor_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // void BaseSign_free(struct LDKBaseSign this_ptr);
+       export function BaseSign_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BaseSign_free(this_ptr);
+               // debug statements here
+       }
+       // uint64_t Sign_clone_ptr(LDKSign *NONNULL_PTR arg);
+       export function Sign_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Sign_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKSign Sign_clone(const struct LDKSign *NONNULL_PTR orig);
+       export function Sign_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Sign_clone(orig);
+               return nativeResponseValue;
+       }
+       // void Sign_free(struct LDKSign this_ptr);
+       export function Sign_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Sign_free(this_ptr);
+               // debug statements here
+       }
+       // void KeysInterface_free(struct LDKKeysInterface this_ptr);
+       export function KeysInterface_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_KeysInterface_free(this_ptr);
+               // debug statements here
+       }
+       // void InMemorySigner_free(struct LDKInMemorySigner this_obj);
+       export function InMemorySigner_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InMemorySigner_free(this_obj);
+               // debug statements here
+       }
+       // const uint8_t (*InMemorySigner_get_funding_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
+       export function InMemorySigner_get_funding_key(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InMemorySigner_get_funding_key(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void InMemorySigner_set_funding_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
+       export function InMemorySigner_set_funding_key(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InMemorySigner_set_funding_key(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // const uint8_t (*InMemorySigner_get_revocation_base_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
+       export function InMemorySigner_get_revocation_base_key(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InMemorySigner_get_revocation_base_key(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void InMemorySigner_set_revocation_base_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
+       export function InMemorySigner_set_revocation_base_key(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InMemorySigner_set_revocation_base_key(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // const uint8_t (*InMemorySigner_get_payment_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
+       export function InMemorySigner_get_payment_key(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InMemorySigner_get_payment_key(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void InMemorySigner_set_payment_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
+       export function InMemorySigner_set_payment_key(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InMemorySigner_set_payment_key(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // const uint8_t (*InMemorySigner_get_delayed_payment_base_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
+       export function InMemorySigner_get_delayed_payment_base_key(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InMemorySigner_get_delayed_payment_base_key(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void InMemorySigner_set_delayed_payment_base_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
+       export function InMemorySigner_set_delayed_payment_base_key(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InMemorySigner_set_delayed_payment_base_key(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // const uint8_t (*InMemorySigner_get_htlc_base_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
+       export function InMemorySigner_get_htlc_base_key(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InMemorySigner_get_htlc_base_key(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void InMemorySigner_set_htlc_base_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
+       export function InMemorySigner_set_htlc_base_key(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InMemorySigner_set_htlc_base_key(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // const uint8_t (*InMemorySigner_get_commitment_seed(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
+       export function InMemorySigner_get_commitment_seed(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InMemorySigner_get_commitment_seed(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void InMemorySigner_set_commitment_seed(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function InMemorySigner_set_commitment_seed(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InMemorySigner_set_commitment_seed(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // uint64_t InMemorySigner_clone_ptr(LDKInMemorySigner *NONNULL_PTR arg);
+       export function InMemorySigner_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InMemorySigner_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKInMemorySigner InMemorySigner_clone(const struct LDKInMemorySigner *NONNULL_PTR orig);
+       export function InMemorySigner_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InMemorySigner_clone(orig);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKInMemorySigner InMemorySigner_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 LDKThirtyTwoBytes channel_keys_id);
+       export function InMemorySigner_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, channel_keys_id: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InMemorySigner_new(encodeUint8Array(funding_key), encodeUint8Array(revocation_base_key), encodeUint8Array(payment_key), encodeUint8Array(delayed_payment_base_key), encodeUint8Array(htlc_base_key), encodeUint8Array(commitment_seed), channel_value_satoshis, encodeUint8Array(channel_keys_id));
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKChannelPublicKeys InMemorySigner_counterparty_pubkeys(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
+       export function InMemorySigner_counterparty_pubkeys(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InMemorySigner_counterparty_pubkeys(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES uint16_t InMemorySigner_counterparty_selected_contest_delay(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
+       export function InMemorySigner_counterparty_selected_contest_delay(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InMemorySigner_counterparty_selected_contest_delay(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES uint16_t InMemorySigner_holder_selected_contest_delay(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
+       export function InMemorySigner_holder_selected_contest_delay(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InMemorySigner_holder_selected_contest_delay(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES bool InMemorySigner_is_outbound(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
+       export function InMemorySigner_is_outbound(this_arg: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InMemorySigner_is_outbound(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKOutPoint InMemorySigner_funding_outpoint(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
+       export function InMemorySigner_funding_outpoint(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InMemorySigner_funding_outpoint(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKChannelTransactionParameters InMemorySigner_get_channel_parameters(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
+       export function InMemorySigner_get_channel_parameters(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InMemorySigner_get_channel_parameters(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES bool InMemorySigner_opt_anchors(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
+       export function InMemorySigner_opt_anchors(this_arg: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InMemorySigner_opt_anchors(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCResult_CVec_CVec_u8ZZNoneZ InMemorySigner_sign_counterparty_payment_input(const struct LDKInMemorySigner *NONNULL_PTR this_arg, struct LDKTransaction spend_tx, uintptr_t input_idx, const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR descriptor);
+       export function InMemorySigner_sign_counterparty_payment_input(this_arg: number, spend_tx: Uint8Array, input_idx: number, descriptor: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InMemorySigner_sign_counterparty_payment_input(this_arg, encodeUint8Array(spend_tx), input_idx, descriptor);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCResult_CVec_CVec_u8ZZNoneZ InMemorySigner_sign_dynamic_p2wsh_input(const struct LDKInMemorySigner *NONNULL_PTR this_arg, struct LDKTransaction spend_tx, uintptr_t input_idx, const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR descriptor);
+       export function InMemorySigner_sign_dynamic_p2wsh_input(this_arg: number, spend_tx: Uint8Array, input_idx: number, descriptor: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InMemorySigner_sign_dynamic_p2wsh_input(this_arg, encodeUint8Array(spend_tx), input_idx, descriptor);
+               return nativeResponseValue;
+       }
+       // struct LDKBaseSign InMemorySigner_as_BaseSign(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
+       export function InMemorySigner_as_BaseSign(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InMemorySigner_as_BaseSign(this_arg);
+               return nativeResponseValue;
+       }
+       // struct LDKSign InMemorySigner_as_Sign(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
+       export function InMemorySigner_as_Sign(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InMemorySigner_as_Sign(this_arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z InMemorySigner_write(const struct LDKInMemorySigner *NONNULL_PTR obj);
+       export function InMemorySigner_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InMemorySigner_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_InMemorySignerDecodeErrorZ InMemorySigner_read(struct LDKu8slice ser);
+       export function InMemorySigner_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InMemorySigner_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // void KeysManager_free(struct LDKKeysManager this_obj);
+       export function KeysManager_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_KeysManager_free(this_obj);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKKeysManager KeysManager_new(const uint8_t (*seed)[32], uint64_t starting_time_secs, uint32_t starting_time_nanos);
+       export function KeysManager_new(seed: Uint8Array, starting_time_secs: number, starting_time_nanos: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_KeysManager_new(encodeUint8Array(seed), starting_time_secs, starting_time_nanos);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKInMemorySigner KeysManager_derive_channel_keys(const struct LDKKeysManager *NONNULL_PTR this_arg, uint64_t channel_value_satoshis, const uint8_t (*params)[32]);
+       export function KeysManager_derive_channel_keys(this_arg: number, channel_value_satoshis: number, params: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_KeysManager_derive_channel_keys(this_arg, channel_value_satoshis, encodeUint8Array(params));
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCResult_TransactionNoneZ KeysManager_spend_spendable_outputs(const struct LDKKeysManager *NONNULL_PTR this_arg, struct LDKCVec_SpendableOutputDescriptorZ descriptors, struct LDKCVec_TxOutZ outputs, struct LDKCVec_u8Z change_destination_script, uint32_t feerate_sat_per_1000_weight);
+       export function KeysManager_spend_spendable_outputs(this_arg: number, descriptors: number[], outputs: number[], change_destination_script: Uint8Array, feerate_sat_per_1000_weight: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_KeysManager_spend_spendable_outputs(this_arg, descriptors, outputs, encodeUint8Array(change_destination_script), feerate_sat_per_1000_weight);
+               return nativeResponseValue;
+       }
+       // struct LDKKeysInterface KeysManager_as_KeysInterface(const struct LDKKeysManager *NONNULL_PTR this_arg);
+       export function KeysManager_as_KeysInterface(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_KeysManager_as_KeysInterface(this_arg);
+               return nativeResponseValue;
+       }
+       // void ChannelManager_free(struct LDKChannelManager this_obj);
+       export function ChannelManager_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_free(this_obj);
+               // debug statements here
+       }
+       // void ChainParameters_free(struct LDKChainParameters this_obj);
+       export function ChainParameters_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChainParameters_free(this_obj);
+               // debug statements here
+       }
+       // enum LDKNetwork ChainParameters_get_network(const struct LDKChainParameters *NONNULL_PTR this_ptr);
+       export function ChainParameters_get_network(this_ptr: number): Network {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChainParameters_get_network(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChainParameters_set_network(struct LDKChainParameters *NONNULL_PTR this_ptr, enum LDKNetwork val);
+       export function ChainParameters_set_network(this_ptr: number, val: Network): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChainParameters_set_network(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKBestBlock ChainParameters_get_best_block(const struct LDKChainParameters *NONNULL_PTR this_ptr);
+       export function ChainParameters_get_best_block(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChainParameters_get_best_block(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChainParameters_set_best_block(struct LDKChainParameters *NONNULL_PTR this_ptr, struct LDKBestBlock val);
+       export function ChainParameters_set_best_block(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChainParameters_set_best_block(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKChainParameters ChainParameters_new(enum LDKNetwork network_arg, struct LDKBestBlock best_block_arg);
+       export function ChainParameters_new(network_arg: Network, best_block_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChainParameters_new(network_arg, best_block_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t ChainParameters_clone_ptr(LDKChainParameters *NONNULL_PTR arg);
+       export function ChainParameters_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChainParameters_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKChainParameters ChainParameters_clone(const struct LDKChainParameters *NONNULL_PTR orig);
+       export function ChainParameters_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChainParameters_clone(orig);
+               return nativeResponseValue;
+       }
+       // void CounterpartyForwardingInfo_free(struct LDKCounterpartyForwardingInfo this_obj);
+       export function CounterpartyForwardingInfo_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CounterpartyForwardingInfo_free(this_obj);
+               // debug statements here
+       }
+       // uint32_t CounterpartyForwardingInfo_get_fee_base_msat(const struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr);
+       export function CounterpartyForwardingInfo_get_fee_base_msat(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CounterpartyForwardingInfo_get_fee_base_msat(this_ptr);
+               return nativeResponseValue;
+       }
+       // void CounterpartyForwardingInfo_set_fee_base_msat(struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr, uint32_t val);
+       export function CounterpartyForwardingInfo_set_fee_base_msat(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CounterpartyForwardingInfo_set_fee_base_msat(this_ptr, val);
+               // debug statements here
+       }
+       // uint32_t CounterpartyForwardingInfo_get_fee_proportional_millionths(const struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr);
+       export function CounterpartyForwardingInfo_get_fee_proportional_millionths(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CounterpartyForwardingInfo_get_fee_proportional_millionths(this_ptr);
+               return nativeResponseValue;
+       }
+       // void CounterpartyForwardingInfo_set_fee_proportional_millionths(struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr, uint32_t val);
+       export function CounterpartyForwardingInfo_set_fee_proportional_millionths(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CounterpartyForwardingInfo_set_fee_proportional_millionths(this_ptr, val);
+               // debug statements here
+       }
+       // uint16_t CounterpartyForwardingInfo_get_cltv_expiry_delta(const struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr);
+       export function CounterpartyForwardingInfo_get_cltv_expiry_delta(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CounterpartyForwardingInfo_get_cltv_expiry_delta(this_ptr);
+               return nativeResponseValue;
+       }
+       // void CounterpartyForwardingInfo_set_cltv_expiry_delta(struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr, uint16_t val);
+       export function CounterpartyForwardingInfo_set_cltv_expiry_delta(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CounterpartyForwardingInfo_set_cltv_expiry_delta(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKCounterpartyForwardingInfo CounterpartyForwardingInfo_new(uint32_t fee_base_msat_arg, uint32_t fee_proportional_millionths_arg, uint16_t cltv_expiry_delta_arg);
+       export function CounterpartyForwardingInfo_new(fee_base_msat_arg: number, fee_proportional_millionths_arg: number, cltv_expiry_delta_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CounterpartyForwardingInfo_new(fee_base_msat_arg, fee_proportional_millionths_arg, cltv_expiry_delta_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t CounterpartyForwardingInfo_clone_ptr(LDKCounterpartyForwardingInfo *NONNULL_PTR arg);
+       export function CounterpartyForwardingInfo_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CounterpartyForwardingInfo_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCounterpartyForwardingInfo CounterpartyForwardingInfo_clone(const struct LDKCounterpartyForwardingInfo *NONNULL_PTR orig);
+       export function CounterpartyForwardingInfo_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CounterpartyForwardingInfo_clone(orig);
+               return nativeResponseValue;
+       }
+       // void ChannelCounterparty_free(struct LDKChannelCounterparty this_obj);
+       export function ChannelCounterparty_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelCounterparty_free(this_obj);
+               // debug statements here
+       }
+       // struct LDKPublicKey ChannelCounterparty_get_node_id(const struct LDKChannelCounterparty *NONNULL_PTR this_ptr);
+       export function ChannelCounterparty_get_node_id(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelCounterparty_get_node_id(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void ChannelCounterparty_set_node_id(struct LDKChannelCounterparty *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function ChannelCounterparty_set_node_id(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelCounterparty_set_node_id(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKInitFeatures ChannelCounterparty_get_features(const struct LDKChannelCounterparty *NONNULL_PTR this_ptr);
+       export function ChannelCounterparty_get_features(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelCounterparty_get_features(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelCounterparty_set_features(struct LDKChannelCounterparty *NONNULL_PTR this_ptr, struct LDKInitFeatures val);
+       export function ChannelCounterparty_set_features(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelCounterparty_set_features(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t ChannelCounterparty_get_unspendable_punishment_reserve(const struct LDKChannelCounterparty *NONNULL_PTR this_ptr);
+       export function ChannelCounterparty_get_unspendable_punishment_reserve(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelCounterparty_get_unspendable_punishment_reserve(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelCounterparty_set_unspendable_punishment_reserve(struct LDKChannelCounterparty *NONNULL_PTR this_ptr, uint64_t val);
+       export function ChannelCounterparty_set_unspendable_punishment_reserve(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelCounterparty_set_unspendable_punishment_reserve(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKCounterpartyForwardingInfo ChannelCounterparty_get_forwarding_info(const struct LDKChannelCounterparty *NONNULL_PTR this_ptr);
+       export function ChannelCounterparty_get_forwarding_info(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelCounterparty_get_forwarding_info(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelCounterparty_set_forwarding_info(struct LDKChannelCounterparty *NONNULL_PTR this_ptr, struct LDKCounterpartyForwardingInfo val);
+       export function ChannelCounterparty_set_forwarding_info(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelCounterparty_set_forwarding_info(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKChannelCounterparty ChannelCounterparty_new(struct LDKPublicKey node_id_arg, struct LDKInitFeatures features_arg, uint64_t unspendable_punishment_reserve_arg, struct LDKCounterpartyForwardingInfo forwarding_info_arg);
+       export function ChannelCounterparty_new(node_id_arg: Uint8Array, features_arg: number, unspendable_punishment_reserve_arg: number, forwarding_info_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelCounterparty_new(encodeUint8Array(node_id_arg), features_arg, unspendable_punishment_reserve_arg, forwarding_info_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t ChannelCounterparty_clone_ptr(LDKChannelCounterparty *NONNULL_PTR arg);
+       export function ChannelCounterparty_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelCounterparty_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKChannelCounterparty ChannelCounterparty_clone(const struct LDKChannelCounterparty *NONNULL_PTR orig);
+       export function ChannelCounterparty_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelCounterparty_clone(orig);
+               return nativeResponseValue;
+       }
+       // void ChannelDetails_free(struct LDKChannelDetails this_obj);
+       export function ChannelDetails_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_free(this_obj);
+               // debug statements here
+       }
+       // 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) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_get_channel_id(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void ChannelDetails_set_channel_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function ChannelDetails_set_channel_id(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_set_channel_id(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKChannelCounterparty ChannelDetails_get_counterparty(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
+       export function ChannelDetails_get_counterparty(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_get_counterparty(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelDetails_set_counterparty(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKChannelCounterparty val);
+       export function ChannelDetails_set_counterparty(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_set_counterparty(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKOutPoint ChannelDetails_get_funding_txo(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
+       export function ChannelDetails_get_funding_txo(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_get_funding_txo(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelDetails_set_funding_txo(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKOutPoint val);
+       export function ChannelDetails_set_funding_txo(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_set_funding_txo(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKCOption_u64Z ChannelDetails_get_short_channel_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
+       export function ChannelDetails_get_short_channel_id(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_get_short_channel_id(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelDetails_set_short_channel_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
+       export function ChannelDetails_set_short_channel_id(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_set_short_channel_id(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t ChannelDetails_get_channel_value_satoshis(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
+       export function ChannelDetails_get_channel_value_satoshis(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_get_channel_value_satoshis(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelDetails_set_channel_value_satoshis(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
+       export function ChannelDetails_set_channel_value_satoshis(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_set_channel_value_satoshis(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKCOption_u64Z ChannelDetails_get_unspendable_punishment_reserve(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
+       export function ChannelDetails_get_unspendable_punishment_reserve(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_get_unspendable_punishment_reserve(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelDetails_set_unspendable_punishment_reserve(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
+       export function ChannelDetails_set_unspendable_punishment_reserve(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_set_unspendable_punishment_reserve(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t ChannelDetails_get_user_channel_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
+       export function ChannelDetails_get_user_channel_id(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_get_user_channel_id(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelDetails_set_user_channel_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
+       export function ChannelDetails_set_user_channel_id(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_set_user_channel_id(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t ChannelDetails_get_balance_msat(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
+       export function ChannelDetails_get_balance_msat(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_get_balance_msat(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelDetails_set_balance_msat(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
+       export function ChannelDetails_set_balance_msat(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_set_balance_msat(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t ChannelDetails_get_outbound_capacity_msat(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
+       export function ChannelDetails_get_outbound_capacity_msat(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_get_outbound_capacity_msat(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelDetails_set_outbound_capacity_msat(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
+       export function ChannelDetails_set_outbound_capacity_msat(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_set_outbound_capacity_msat(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t ChannelDetails_get_inbound_capacity_msat(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
+       export function ChannelDetails_get_inbound_capacity_msat(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_get_inbound_capacity_msat(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelDetails_set_inbound_capacity_msat(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
+       export function ChannelDetails_set_inbound_capacity_msat(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_set_inbound_capacity_msat(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKCOption_u32Z ChannelDetails_get_confirmations_required(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
+       export function ChannelDetails_get_confirmations_required(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_get_confirmations_required(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelDetails_set_confirmations_required(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u32Z val);
+       export function ChannelDetails_set_confirmations_required(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_set_confirmations_required(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKCOption_u16Z ChannelDetails_get_force_close_spend_delay(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
+       export function ChannelDetails_get_force_close_spend_delay(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_get_force_close_spend_delay(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelDetails_set_force_close_spend_delay(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u16Z val);
+       export function ChannelDetails_set_force_close_spend_delay(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_set_force_close_spend_delay(this_ptr, val);
+               // debug statements here
+       }
+       // bool ChannelDetails_get_is_outbound(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
+       export function ChannelDetails_get_is_outbound(this_ptr: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_get_is_outbound(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelDetails_set_is_outbound(struct LDKChannelDetails *NONNULL_PTR this_ptr, bool val);
+       export function ChannelDetails_set_is_outbound(this_ptr: number, val: boolean): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_set_is_outbound(this_ptr, val);
+               // debug statements here
+       }
+       // bool ChannelDetails_get_is_funding_locked(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
+       export function ChannelDetails_get_is_funding_locked(this_ptr: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_get_is_funding_locked(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelDetails_set_is_funding_locked(struct LDKChannelDetails *NONNULL_PTR this_ptr, bool val);
+       export function ChannelDetails_set_is_funding_locked(this_ptr: number, val: boolean): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_set_is_funding_locked(this_ptr, val);
+               // debug statements here
+       }
+       // bool ChannelDetails_get_is_usable(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
+       export function ChannelDetails_get_is_usable(this_ptr: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_get_is_usable(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelDetails_set_is_usable(struct LDKChannelDetails *NONNULL_PTR this_ptr, bool val);
+       export function ChannelDetails_set_is_usable(this_ptr: number, val: boolean): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_set_is_usable(this_ptr, val);
+               // debug statements here
+       }
+       // bool ChannelDetails_get_is_public(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
+       export function ChannelDetails_get_is_public(this_ptr: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_get_is_public(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelDetails_set_is_public(struct LDKChannelDetails *NONNULL_PTR this_ptr, bool val);
+       export function ChannelDetails_set_is_public(this_ptr: number, val: boolean): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_set_is_public(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKChannelDetails ChannelDetails_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKChannelCounterparty counterparty_arg, struct LDKOutPoint funding_txo_arg, struct LDKCOption_u64Z short_channel_id_arg, uint64_t channel_value_satoshis_arg, struct LDKCOption_u64Z unspendable_punishment_reserve_arg, uint64_t user_channel_id_arg, uint64_t balance_msat_arg, uint64_t outbound_capacity_msat_arg, uint64_t inbound_capacity_msat_arg, struct LDKCOption_u32Z confirmations_required_arg, struct LDKCOption_u16Z force_close_spend_delay_arg, bool is_outbound_arg, bool is_funding_locked_arg, bool is_usable_arg, bool is_public_arg);
+       export function ChannelDetails_new(channel_id_arg: Uint8Array, counterparty_arg: number, funding_txo_arg: number, short_channel_id_arg: number, channel_value_satoshis_arg: number, unspendable_punishment_reserve_arg: number, user_channel_id_arg: number, balance_msat_arg: number, outbound_capacity_msat_arg: number, inbound_capacity_msat_arg: number, confirmations_required_arg: number, force_close_spend_delay_arg: number, is_outbound_arg: boolean, is_funding_locked_arg: boolean, is_usable_arg: boolean, is_public_arg: boolean): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_new(encodeUint8Array(channel_id_arg), counterparty_arg, funding_txo_arg, short_channel_id_arg, channel_value_satoshis_arg, unspendable_punishment_reserve_arg, user_channel_id_arg, balance_msat_arg, outbound_capacity_msat_arg, inbound_capacity_msat_arg, confirmations_required_arg, force_close_spend_delay_arg, is_outbound_arg, is_funding_locked_arg, is_usable_arg, is_public_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t ChannelDetails_clone_ptr(LDKChannelDetails *NONNULL_PTR arg);
+       export function ChannelDetails_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelDetails_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_ChannelDetails_clone(orig);
+               return nativeResponseValue;
+       }
+       // void PaymentSendFailure_free(struct LDKPaymentSendFailure this_ptr);
+       export function PaymentSendFailure_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_PaymentSendFailure_free(this_ptr);
+               // debug statements here
+       }
+       // uint64_t PaymentSendFailure_clone_ptr(LDKPaymentSendFailure *NONNULL_PTR arg);
+       export function PaymentSendFailure_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_PaymentSendFailure_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKPaymentSendFailure PaymentSendFailure_clone(const struct LDKPaymentSendFailure *NONNULL_PTR orig);
+       export function PaymentSendFailure_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_PaymentSendFailure_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKPaymentSendFailure PaymentSendFailure_parameter_error(struct LDKAPIError a);
+       export function PaymentSendFailure_parameter_error(a: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_PaymentSendFailure_parameter_error(a);
+               return nativeResponseValue;
+       }
+       // struct LDKPaymentSendFailure PaymentSendFailure_path_parameter_error(struct LDKCVec_CResult_NoneAPIErrorZZ a);
+       export function PaymentSendFailure_path_parameter_error(a: number[]): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_PaymentSendFailure_path_parameter_error(a);
+               return nativeResponseValue;
+       }
+       // struct LDKPaymentSendFailure PaymentSendFailure_all_failed_retry_safe(struct LDKCVec_APIErrorZ a);
+       export function PaymentSendFailure_all_failed_retry_safe(a: number[]): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_PaymentSendFailure_all_failed_retry_safe(a);
+               return nativeResponseValue;
+       }
+       // struct LDKPaymentSendFailure PaymentSendFailure_partial_failure(struct LDKCVec_CResult_NoneAPIErrorZZ results, struct LDKRouteParameters failed_paths_retry, struct LDKThirtyTwoBytes payment_id);
+       export function PaymentSendFailure_partial_failure(results: number[], failed_paths_retry: number, payment_id: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_PaymentSendFailure_partial_failure(results, failed_paths_retry, encodeUint8Array(payment_id));
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKChannelManager ChannelManager_new(struct LDKFeeEstimator fee_est, struct LDKWatch chain_monitor, struct LDKBroadcasterInterface tx_broadcaster, struct LDKLogger logger, struct LDKKeysInterface keys_manager, struct LDKUserConfig config, struct LDKChainParameters params);
+       export function ChannelManager_new(fee_est: number, chain_monitor: number, tx_broadcaster: number, logger: number, keys_manager: number, config: number, params: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_new(fee_est, chain_monitor, tx_broadcaster, logger, keys_manager, config, params);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKUserConfig ChannelManager_get_current_default_configuration(const struct LDKChannelManager *NONNULL_PTR this_arg);
+       export function ChannelManager_get_current_default_configuration(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_get_current_default_configuration(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCResult__u832APIErrorZ ChannelManager_create_channel(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKPublicKey their_network_key, uint64_t channel_value_satoshis, uint64_t push_msat, uint64_t user_channel_id, struct LDKUserConfig override_config);
+       export function ChannelManager_create_channel(this_arg: number, their_network_key: Uint8Array, channel_value_satoshis: number, push_msat: number, user_channel_id: number, override_config: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_create_channel(this_arg, encodeUint8Array(their_network_key), channel_value_satoshis, push_msat, user_channel_id, override_config);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCVec_ChannelDetailsZ ChannelManager_list_channels(const struct LDKChannelManager *NONNULL_PTR this_arg);
+       export function ChannelManager_list_channels(this_arg: number): number[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_list_channels(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCVec_ChannelDetailsZ ChannelManager_list_usable_channels(const struct LDKChannelManager *NONNULL_PTR this_arg);
+       export function ChannelManager_list_usable_channels(this_arg: number): number[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_list_usable_channels(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_close_channel(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*channel_id)[32]);
+       export function ChannelManager_close_channel(this_arg: number, channel_id: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_close_channel(this_arg, encodeUint8Array(channel_id));
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_close_channel_with_target_feerate(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*channel_id)[32], uint32_t target_feerate_sats_per_1000_weight);
+       export function ChannelManager_close_channel_with_target_feerate(this_arg: number, channel_id: Uint8Array, target_feerate_sats_per_1000_weight: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_close_channel_with_target_feerate(this_arg, encodeUint8Array(channel_id), target_feerate_sats_per_1000_weight);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_force_close_channel(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*channel_id)[32]);
+       export function ChannelManager_force_close_channel(this_arg: number, channel_id: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_force_close_channel(this_arg, encodeUint8Array(channel_id));
+               return nativeResponseValue;
+       }
+       // void ChannelManager_force_close_all_channels(const struct LDKChannelManager *NONNULL_PTR this_arg);
+       export function ChannelManager_force_close_all_channels(this_arg: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_force_close_all_channels(this_arg);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKCResult_PaymentIdPaymentSendFailureZ ChannelManager_send_payment(const struct LDKChannelManager *NONNULL_PTR this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret);
+       export function ChannelManager_send_payment(this_arg: number, route: number, payment_hash: Uint8Array, payment_secret: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_send_payment(this_arg, route, encodeUint8Array(payment_hash), encodeUint8Array(payment_secret));
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCResult_NonePaymentSendFailureZ ChannelManager_retry_payment(const struct LDKChannelManager *NONNULL_PTR this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_id);
+       export function ChannelManager_retry_payment(this_arg: number, route: number, payment_id: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_retry_payment(this_arg, route, encodeUint8Array(payment_id));
+               return nativeResponseValue;
+       }
+       // void ChannelManager_abandon_payment(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThirtyTwoBytes payment_id);
+       export function ChannelManager_abandon_payment(this_arg: number, payment_id: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_abandon_payment(this_arg, encodeUint8Array(payment_id));
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ ChannelManager_send_spontaneous_payment(const struct LDKChannelManager *NONNULL_PTR this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_preimage);
+       export function ChannelManager_send_spontaneous_payment(this_arg: number, route: number, payment_preimage: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_send_spontaneous_payment(this_arg, route, encodeUint8Array(payment_preimage));
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_funding_transaction_generated(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*temporary_channel_id)[32], struct LDKTransaction funding_transaction);
+       export function ChannelManager_funding_transaction_generated(this_arg: number, temporary_channel_id: Uint8Array, funding_transaction: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_funding_transaction_generated(this_arg, encodeUint8Array(temporary_channel_id), encodeUint8Array(funding_transaction));
+               return nativeResponseValue;
+       }
+       // void ChannelManager_broadcast_node_announcement(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThreeBytes rgb, struct LDKThirtyTwoBytes alias, struct LDKCVec_NetAddressZ addresses);
+       export function ChannelManager_broadcast_node_announcement(this_arg: number, rgb: Uint8Array, alias: Uint8Array, addresses: number[]): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_broadcast_node_announcement(this_arg, encodeUint8Array(rgb), encodeUint8Array(alias), addresses);
+               // debug statements here
+       }
+       // void ChannelManager_process_pending_htlc_forwards(const struct LDKChannelManager *NONNULL_PTR this_arg);
+       export function ChannelManager_process_pending_htlc_forwards(this_arg: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_process_pending_htlc_forwards(this_arg);
+               // debug statements here
+       }
+       // void ChannelManager_timer_tick_occurred(const struct LDKChannelManager *NONNULL_PTR this_arg);
+       export function ChannelManager_timer_tick_occurred(this_arg: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_timer_tick_occurred(this_arg);
+               // debug statements here
+       }
+       // MUST_USE_RES bool ChannelManager_fail_htlc_backwards(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*payment_hash)[32]);
+       export function ChannelManager_fail_htlc_backwards(this_arg: number, payment_hash: Uint8Array): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_fail_htlc_backwards(this_arg, encodeUint8Array(payment_hash));
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES bool ChannelManager_claim_funds(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThirtyTwoBytes payment_preimage);
+       export function ChannelManager_claim_funds(this_arg: number, payment_preimage: Uint8Array): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_claim_funds(this_arg, encodeUint8Array(payment_preimage));
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKPublicKey ChannelManager_get_our_node_id(const struct LDKChannelManager *NONNULL_PTR this_arg);
+       export function ChannelManager_get_our_node_id(this_arg: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_get_our_node_id(this_arg);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // MUST_USE_RES struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ ChannelManager_create_inbound_payment(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKCOption_u64Z min_value_msat, uint32_t invoice_expiry_delta_secs);
+       export function ChannelManager_create_inbound_payment(this_arg: number, min_value_msat: number, invoice_expiry_delta_secs: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_create_inbound_payment(this_arg, min_value_msat, invoice_expiry_delta_secs);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ ChannelManager_create_inbound_payment_legacy(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKCOption_u64Z min_value_msat, uint32_t invoice_expiry_delta_secs);
+       export function ChannelManager_create_inbound_payment_legacy(this_arg: number, min_value_msat: number, invoice_expiry_delta_secs: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_create_inbound_payment_legacy(this_arg, min_value_msat, invoice_expiry_delta_secs);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCResult_PaymentSecretNoneZ ChannelManager_create_inbound_payment_for_hash(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThirtyTwoBytes payment_hash, struct LDKCOption_u64Z min_value_msat, uint32_t invoice_expiry_delta_secs);
+       export function ChannelManager_create_inbound_payment_for_hash(this_arg: number, payment_hash: Uint8Array, min_value_msat: number, invoice_expiry_delta_secs: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_create_inbound_payment_for_hash(this_arg, encodeUint8Array(payment_hash), min_value_msat, invoice_expiry_delta_secs);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCResult_PaymentSecretAPIErrorZ ChannelManager_create_inbound_payment_for_hash_legacy(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThirtyTwoBytes payment_hash, struct LDKCOption_u64Z min_value_msat, uint32_t invoice_expiry_delta_secs);
+       export function ChannelManager_create_inbound_payment_for_hash_legacy(this_arg: number, payment_hash: Uint8Array, min_value_msat: number, invoice_expiry_delta_secs: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_create_inbound_payment_for_hash_legacy(this_arg, encodeUint8Array(payment_hash), min_value_msat, invoice_expiry_delta_secs);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCResult_PaymentPreimageAPIErrorZ ChannelManager_get_payment_preimage(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret);
+       export function ChannelManager_get_payment_preimage(this_arg: number, payment_hash: Uint8Array, payment_secret: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_get_payment_preimage(this_arg, encodeUint8Array(payment_hash), encodeUint8Array(payment_secret));
+               return nativeResponseValue;
+       }
+       // struct LDKMessageSendEventsProvider ChannelManager_as_MessageSendEventsProvider(const struct LDKChannelManager *NONNULL_PTR this_arg);
+       export function ChannelManager_as_MessageSendEventsProvider(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_as_MessageSendEventsProvider(this_arg);
+               return nativeResponseValue;
+       }
+       // struct LDKEventsProvider ChannelManager_as_EventsProvider(const struct LDKChannelManager *NONNULL_PTR this_arg);
+       export function ChannelManager_as_EventsProvider(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_as_EventsProvider(this_arg);
+               return nativeResponseValue;
+       }
+       // struct LDKListen ChannelManager_as_Listen(const struct LDKChannelManager *NONNULL_PTR this_arg);
+       export function ChannelManager_as_Listen(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_as_Listen(this_arg);
+               return nativeResponseValue;
+       }
+       // struct LDKConfirm ChannelManager_as_Confirm(const struct LDKChannelManager *NONNULL_PTR this_arg);
+       export function ChannelManager_as_Confirm(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_as_Confirm(this_arg);
+               return nativeResponseValue;
+       }
+       // void ChannelManager_await_persistable_update(const struct LDKChannelManager *NONNULL_PTR this_arg);
+       export function ChannelManager_await_persistable_update(this_arg: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_await_persistable_update(this_arg);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKBestBlock ChannelManager_current_best_block(const struct LDKChannelManager *NONNULL_PTR this_arg);
+       export function ChannelManager_current_best_block(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_current_best_block(this_arg);
+               return nativeResponseValue;
+       }
+       // struct LDKChannelMessageHandler ChannelManager_as_ChannelMessageHandler(const struct LDKChannelManager *NONNULL_PTR this_arg);
+       export function ChannelManager_as_ChannelMessageHandler(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_as_ChannelMessageHandler(this_arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z ChannelManager_write(const struct LDKChannelManager *NONNULL_PTR obj);
+       export function ChannelManager_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManager_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void ChannelManagerReadArgs_free(struct LDKChannelManagerReadArgs this_obj);
+       export function ChannelManagerReadArgs_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManagerReadArgs_free(this_obj);
+               // debug statements here
+       }
+       // const struct LDKKeysInterface *ChannelManagerReadArgs_get_keys_manager(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
+       export function ChannelManagerReadArgs_get_keys_manager(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManagerReadArgs_get_keys_manager(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelManagerReadArgs_set_keys_manager(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKKeysInterface val);
+       export function ChannelManagerReadArgs_set_keys_manager(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManagerReadArgs_set_keys_manager(this_ptr, val);
+               // debug statements here
+       }
+       // const struct LDKFeeEstimator *ChannelManagerReadArgs_get_fee_estimator(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
+       export function ChannelManagerReadArgs_get_fee_estimator(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManagerReadArgs_get_fee_estimator(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelManagerReadArgs_set_fee_estimator(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKFeeEstimator val);
+       export function ChannelManagerReadArgs_set_fee_estimator(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManagerReadArgs_set_fee_estimator(this_ptr, val);
+               // debug statements here
+       }
+       // const struct LDKWatch *ChannelManagerReadArgs_get_chain_monitor(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
+       export function ChannelManagerReadArgs_get_chain_monitor(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManagerReadArgs_get_chain_monitor(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelManagerReadArgs_set_chain_monitor(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKWatch val);
+       export function ChannelManagerReadArgs_set_chain_monitor(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManagerReadArgs_set_chain_monitor(this_ptr, val);
+               // debug statements here
+       }
+       // const struct LDKBroadcasterInterface *ChannelManagerReadArgs_get_tx_broadcaster(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
+       export function ChannelManagerReadArgs_get_tx_broadcaster(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManagerReadArgs_get_tx_broadcaster(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelManagerReadArgs_set_tx_broadcaster(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKBroadcasterInterface val);
+       export function ChannelManagerReadArgs_set_tx_broadcaster(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManagerReadArgs_set_tx_broadcaster(this_ptr, val);
+               // debug statements here
+       }
+       // const struct LDKLogger *ChannelManagerReadArgs_get_logger(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
+       export function ChannelManagerReadArgs_get_logger(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManagerReadArgs_get_logger(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelManagerReadArgs_set_logger(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKLogger val);
+       export function ChannelManagerReadArgs_set_logger(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManagerReadArgs_set_logger(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKUserConfig ChannelManagerReadArgs_get_default_config(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
+       export function ChannelManagerReadArgs_get_default_config(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManagerReadArgs_get_default_config(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelManagerReadArgs_set_default_config(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKUserConfig val);
+       export function ChannelManagerReadArgs_set_default_config(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManagerReadArgs_set_default_config(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKChannelManagerReadArgs ChannelManagerReadArgs_new(struct LDKKeysInterface keys_manager, struct LDKFeeEstimator fee_estimator, struct LDKWatch chain_monitor, struct LDKBroadcasterInterface tx_broadcaster, struct LDKLogger logger, struct LDKUserConfig default_config, struct LDKCVec_ChannelMonitorZ channel_monitors);
+       export function ChannelManagerReadArgs_new(keys_manager: number, fee_estimator: number, chain_monitor: number, tx_broadcaster: number, logger: number, default_config: number, channel_monitors: number[]): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelManagerReadArgs_new(keys_manager, fee_estimator, chain_monitor, tx_broadcaster, logger, default_config, channel_monitors);
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ C2Tuple_BlockHashChannelManagerZ_read(struct LDKu8slice ser, struct LDKChannelManagerReadArgs arg);
+       export function C2Tuple_BlockHashChannelManagerZ_read(ser: Uint8Array, arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_C2Tuple_BlockHashChannelManagerZ_read(encodeUint8Array(ser), arg);
+               return nativeResponseValue;
+       }
+       // void DecodeError_free(struct LDKDecodeError this_obj);
+       export function DecodeError_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DecodeError_free(this_obj);
+               // debug statements here
+       }
+       // uint64_t DecodeError_clone_ptr(LDKDecodeError *NONNULL_PTR arg);
+       export function DecodeError_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DecodeError_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKDecodeError DecodeError_clone(const struct LDKDecodeError *NONNULL_PTR orig);
+       export function DecodeError_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DecodeError_clone(orig);
+               return nativeResponseValue;
+       }
+       // void Init_free(struct LDKInit this_obj);
+       export function Init_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Init_free(this_obj);
+               // debug statements here
+       }
+       // struct LDKInitFeatures Init_get_features(const struct LDKInit *NONNULL_PTR this_ptr);
+       export function Init_get_features(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Init_get_features(this_ptr);
+               return nativeResponseValue;
+       }
+       // void Init_set_features(struct LDKInit *NONNULL_PTR this_ptr, struct LDKInitFeatures val);
+       export function Init_set_features(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Init_set_features(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKInit Init_new(struct LDKInitFeatures features_arg);
+       export function Init_new(features_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Init_new(features_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t Init_clone_ptr(LDKInit *NONNULL_PTR arg);
+       export function Init_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Init_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKInit Init_clone(const struct LDKInit *NONNULL_PTR orig);
+       export function Init_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Init_clone(orig);
+               return nativeResponseValue;
+       }
+       // void ErrorMessage_free(struct LDKErrorMessage this_obj);
+       export function ErrorMessage_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ErrorMessage_free(this_obj);
+               // debug statements here
+       }
+       // 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) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ErrorMessage_get_channel_id(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void ErrorMessage_set_channel_id(struct LDKErrorMessage *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function ErrorMessage_set_channel_id(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ErrorMessage_set_channel_id(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKStr ErrorMessage_get_data(const struct LDKErrorMessage *NONNULL_PTR this_ptr);
+       export function ErrorMessage_get_data(this_ptr: number): String {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ErrorMessage_get_data(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ErrorMessage_set_data(struct LDKErrorMessage *NONNULL_PTR this_ptr, struct LDKStr val);
+       export function ErrorMessage_set_data(this_ptr: number, val: String): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ErrorMessage_set_data(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKErrorMessage ErrorMessage_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKStr data_arg);
+       export function ErrorMessage_new(channel_id_arg: Uint8Array, data_arg: String): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ErrorMessage_new(encodeUint8Array(channel_id_arg), data_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t ErrorMessage_clone_ptr(LDKErrorMessage *NONNULL_PTR arg);
+       export function ErrorMessage_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ErrorMessage_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_ErrorMessage_clone(orig);
+               return nativeResponseValue;
+       }
+       // void Ping_free(struct LDKPing this_obj);
+       export function Ping_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Ping_free(this_obj);
+               // debug statements here
+       }
+       // uint16_t Ping_get_ponglen(const struct LDKPing *NONNULL_PTR this_ptr);
+       export function Ping_get_ponglen(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Ping_get_ponglen(this_ptr);
+               return nativeResponseValue;
+       }
+       // void Ping_set_ponglen(struct LDKPing *NONNULL_PTR this_ptr, uint16_t val);
+       export function Ping_set_ponglen(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Ping_set_ponglen(this_ptr, val);
+               // debug statements here
+       }
+       // uint16_t Ping_get_byteslen(const struct LDKPing *NONNULL_PTR this_ptr);
+       export function Ping_get_byteslen(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Ping_get_byteslen(this_ptr);
+               return nativeResponseValue;
+       }
+       // void Ping_set_byteslen(struct LDKPing *NONNULL_PTR this_ptr, uint16_t val);
+       export function Ping_set_byteslen(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Ping_set_byteslen(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKPing Ping_new(uint16_t ponglen_arg, uint16_t byteslen_arg);
+       export function Ping_new(ponglen_arg: number, byteslen_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Ping_new(ponglen_arg, byteslen_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t Ping_clone_ptr(LDKPing *NONNULL_PTR arg);
+       export function Ping_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Ping_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_Ping_clone(orig);
+               return nativeResponseValue;
+       }
+       // void Pong_free(struct LDKPong this_obj);
+       export function Pong_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Pong_free(this_obj);
+               // debug statements here
+       }
+       // uint16_t Pong_get_byteslen(const struct LDKPong *NONNULL_PTR this_ptr);
+       export function Pong_get_byteslen(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Pong_get_byteslen(this_ptr);
+               return nativeResponseValue;
+       }
+       // void Pong_set_byteslen(struct LDKPong *NONNULL_PTR this_ptr, uint16_t val);
+       export function Pong_set_byteslen(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Pong_set_byteslen(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKPong Pong_new(uint16_t byteslen_arg);
+       export function Pong_new(byteslen_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Pong_new(byteslen_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t Pong_clone_ptr(LDKPong *NONNULL_PTR arg);
+       export function Pong_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Pong_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_Pong_clone(orig);
+               return nativeResponseValue;
+       }
+       // void OpenChannel_free(struct LDKOpenChannel this_obj);
+       export function OpenChannel_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_free(this_obj);
+               // 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 {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_get_chain_hash(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void OpenChannel_set_chain_hash(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function OpenChannel_set_chain_hash(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_set_chain_hash(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // const uint8_t (*OpenChannel_get_temporary_channel_id(const struct LDKOpenChannel *NONNULL_PTR this_ptr))[32];
+       export function OpenChannel_get_temporary_channel_id(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_get_temporary_channel_id(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void OpenChannel_set_temporary_channel_id(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function OpenChannel_set_temporary_channel_id(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_set_temporary_channel_id(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // uint64_t OpenChannel_get_funding_satoshis(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
+       export function OpenChannel_get_funding_satoshis(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_get_funding_satoshis(this_ptr);
+               return nativeResponseValue;
+       }
+       // void OpenChannel_set_funding_satoshis(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
+       export function OpenChannel_set_funding_satoshis(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_set_funding_satoshis(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t OpenChannel_get_push_msat(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
+       export function OpenChannel_get_push_msat(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_get_push_msat(this_ptr);
+               return nativeResponseValue;
+       }
+       // void OpenChannel_set_push_msat(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
+       export function OpenChannel_set_push_msat(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_set_push_msat(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t OpenChannel_get_dust_limit_satoshis(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
+       export function OpenChannel_get_dust_limit_satoshis(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_get_dust_limit_satoshis(this_ptr);
+               return nativeResponseValue;
+       }
+       // void OpenChannel_set_dust_limit_satoshis(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
+       export function OpenChannel_set_dust_limit_satoshis(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_set_dust_limit_satoshis(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t OpenChannel_get_max_htlc_value_in_flight_msat(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
+       export function OpenChannel_get_max_htlc_value_in_flight_msat(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_get_max_htlc_value_in_flight_msat(this_ptr);
+               return nativeResponseValue;
+       }
+       // void OpenChannel_set_max_htlc_value_in_flight_msat(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
+       export function OpenChannel_set_max_htlc_value_in_flight_msat(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_set_max_htlc_value_in_flight_msat(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t OpenChannel_get_channel_reserve_satoshis(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
+       export function OpenChannel_get_channel_reserve_satoshis(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_get_channel_reserve_satoshis(this_ptr);
+               return nativeResponseValue;
+       }
+       // void OpenChannel_set_channel_reserve_satoshis(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
+       export function OpenChannel_set_channel_reserve_satoshis(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_set_channel_reserve_satoshis(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t OpenChannel_get_htlc_minimum_msat(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
+       export function OpenChannel_get_htlc_minimum_msat(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_get_htlc_minimum_msat(this_ptr);
+               return nativeResponseValue;
+       }
+       // void OpenChannel_set_htlc_minimum_msat(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
+       export function OpenChannel_set_htlc_minimum_msat(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_set_htlc_minimum_msat(this_ptr, val);
+               // debug statements here
+       }
+       // uint32_t OpenChannel_get_feerate_per_kw(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
+       export function OpenChannel_get_feerate_per_kw(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_get_feerate_per_kw(this_ptr);
+               return nativeResponseValue;
+       }
+       // void OpenChannel_set_feerate_per_kw(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint32_t val);
+       export function OpenChannel_set_feerate_per_kw(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_set_feerate_per_kw(this_ptr, val);
+               // debug statements here
+       }
+       // uint16_t OpenChannel_get_to_self_delay(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
+       export function OpenChannel_get_to_self_delay(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_get_to_self_delay(this_ptr);
+               return nativeResponseValue;
+       }
+       // void OpenChannel_set_to_self_delay(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint16_t val);
+       export function OpenChannel_set_to_self_delay(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_set_to_self_delay(this_ptr, val);
+               // debug statements here
+       }
+       // uint16_t OpenChannel_get_max_accepted_htlcs(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
+       export function OpenChannel_get_max_accepted_htlcs(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_get_max_accepted_htlcs(this_ptr);
+               return nativeResponseValue;
+       }
+       // void OpenChannel_set_max_accepted_htlcs(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint16_t val);
+       export function OpenChannel_set_max_accepted_htlcs(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_set_max_accepted_htlcs(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKPublicKey OpenChannel_get_funding_pubkey(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
+       export function OpenChannel_get_funding_pubkey(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_get_funding_pubkey(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void OpenChannel_set_funding_pubkey(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function OpenChannel_set_funding_pubkey(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_set_funding_pubkey(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKPublicKey OpenChannel_get_revocation_basepoint(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
+       export function OpenChannel_get_revocation_basepoint(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_get_revocation_basepoint(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void OpenChannel_set_revocation_basepoint(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function OpenChannel_set_revocation_basepoint(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_set_revocation_basepoint(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKPublicKey OpenChannel_get_payment_point(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
+       export function OpenChannel_get_payment_point(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_get_payment_point(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void OpenChannel_set_payment_point(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function OpenChannel_set_payment_point(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_set_payment_point(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKPublicKey OpenChannel_get_delayed_payment_basepoint(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
+       export function OpenChannel_get_delayed_payment_basepoint(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_get_delayed_payment_basepoint(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void OpenChannel_set_delayed_payment_basepoint(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function OpenChannel_set_delayed_payment_basepoint(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_set_delayed_payment_basepoint(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKPublicKey OpenChannel_get_htlc_basepoint(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
+       export function OpenChannel_get_htlc_basepoint(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_get_htlc_basepoint(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void OpenChannel_set_htlc_basepoint(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function OpenChannel_set_htlc_basepoint(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_set_htlc_basepoint(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKPublicKey OpenChannel_get_first_per_commitment_point(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
+       export function OpenChannel_get_first_per_commitment_point(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_get_first_per_commitment_point(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void OpenChannel_set_first_per_commitment_point(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function OpenChannel_set_first_per_commitment_point(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_set_first_per_commitment_point(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // uint8_t OpenChannel_get_channel_flags(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
+       export function OpenChannel_get_channel_flags(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_get_channel_flags(this_ptr);
+               return nativeResponseValue;
+       }
+       // void OpenChannel_set_channel_flags(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint8_t val);
+       export function OpenChannel_set_channel_flags(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_set_channel_flags(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKChannelTypeFeatures OpenChannel_get_channel_type(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
+       export function OpenChannel_get_channel_type(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_get_channel_type(this_ptr);
+               return nativeResponseValue;
+       }
+       // void OpenChannel_set_channel_type(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKChannelTypeFeatures val);
+       export function OpenChannel_set_channel_type(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_set_channel_type(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t OpenChannel_clone_ptr(LDKOpenChannel *NONNULL_PTR arg);
+       export function OpenChannel_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_OpenChannel_clone(orig);
+               return nativeResponseValue;
+       }
+       // void AcceptChannel_free(struct LDKAcceptChannel this_obj);
+       export function AcceptChannel_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_free(this_obj);
+               // 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 {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_get_temporary_channel_id(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void AcceptChannel_set_temporary_channel_id(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function AcceptChannel_set_temporary_channel_id(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_set_temporary_channel_id(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // uint64_t AcceptChannel_get_dust_limit_satoshis(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
+       export function AcceptChannel_get_dust_limit_satoshis(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_get_dust_limit_satoshis(this_ptr);
+               return nativeResponseValue;
+       }
+       // void AcceptChannel_set_dust_limit_satoshis(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
+       export function AcceptChannel_set_dust_limit_satoshis(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_set_dust_limit_satoshis(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t AcceptChannel_get_max_htlc_value_in_flight_msat(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
+       export function AcceptChannel_get_max_htlc_value_in_flight_msat(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_get_max_htlc_value_in_flight_msat(this_ptr);
+               return nativeResponseValue;
+       }
+       // void AcceptChannel_set_max_htlc_value_in_flight_msat(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
+       export function AcceptChannel_set_max_htlc_value_in_flight_msat(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_set_max_htlc_value_in_flight_msat(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t AcceptChannel_get_channel_reserve_satoshis(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
+       export function AcceptChannel_get_channel_reserve_satoshis(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_get_channel_reserve_satoshis(this_ptr);
+               return nativeResponseValue;
+       }
+       // void AcceptChannel_set_channel_reserve_satoshis(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
+       export function AcceptChannel_set_channel_reserve_satoshis(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_set_channel_reserve_satoshis(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t AcceptChannel_get_htlc_minimum_msat(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
+       export function AcceptChannel_get_htlc_minimum_msat(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_get_htlc_minimum_msat(this_ptr);
+               return nativeResponseValue;
+       }
+       // void AcceptChannel_set_htlc_minimum_msat(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
+       export function AcceptChannel_set_htlc_minimum_msat(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_set_htlc_minimum_msat(this_ptr, val);
+               // debug statements here
+       }
+       // uint32_t AcceptChannel_get_minimum_depth(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
+       export function AcceptChannel_get_minimum_depth(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_get_minimum_depth(this_ptr);
+               return nativeResponseValue;
+       }
+       // void AcceptChannel_set_minimum_depth(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint32_t val);
+       export function AcceptChannel_set_minimum_depth(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_set_minimum_depth(this_ptr, val);
+               // debug statements here
+       }
+       // uint16_t AcceptChannel_get_to_self_delay(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
+       export function AcceptChannel_get_to_self_delay(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_get_to_self_delay(this_ptr);
+               return nativeResponseValue;
+       }
+       // void AcceptChannel_set_to_self_delay(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint16_t val);
+       export function AcceptChannel_set_to_self_delay(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_set_to_self_delay(this_ptr, val);
+               // debug statements here
+       }
+       // uint16_t AcceptChannel_get_max_accepted_htlcs(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
+       export function AcceptChannel_get_max_accepted_htlcs(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_get_max_accepted_htlcs(this_ptr);
+               return nativeResponseValue;
+       }
+       // void AcceptChannel_set_max_accepted_htlcs(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint16_t val);
+       export function AcceptChannel_set_max_accepted_htlcs(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_set_max_accepted_htlcs(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKPublicKey AcceptChannel_get_funding_pubkey(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
+       export function AcceptChannel_get_funding_pubkey(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_get_funding_pubkey(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void AcceptChannel_set_funding_pubkey(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function AcceptChannel_set_funding_pubkey(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_set_funding_pubkey(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKPublicKey AcceptChannel_get_revocation_basepoint(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
+       export function AcceptChannel_get_revocation_basepoint(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_get_revocation_basepoint(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void AcceptChannel_set_revocation_basepoint(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function AcceptChannel_set_revocation_basepoint(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_set_revocation_basepoint(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKPublicKey AcceptChannel_get_payment_point(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
+       export function AcceptChannel_get_payment_point(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_get_payment_point(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void AcceptChannel_set_payment_point(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function AcceptChannel_set_payment_point(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_set_payment_point(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKPublicKey AcceptChannel_get_delayed_payment_basepoint(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
+       export function AcceptChannel_get_delayed_payment_basepoint(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_get_delayed_payment_basepoint(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void AcceptChannel_set_delayed_payment_basepoint(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function AcceptChannel_set_delayed_payment_basepoint(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_set_delayed_payment_basepoint(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKPublicKey AcceptChannel_get_htlc_basepoint(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
+       export function AcceptChannel_get_htlc_basepoint(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_get_htlc_basepoint(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void AcceptChannel_set_htlc_basepoint(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function AcceptChannel_set_htlc_basepoint(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_set_htlc_basepoint(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKPublicKey AcceptChannel_get_first_per_commitment_point(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
+       export function AcceptChannel_get_first_per_commitment_point(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_get_first_per_commitment_point(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void AcceptChannel_set_first_per_commitment_point(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function AcceptChannel_set_first_per_commitment_point(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_set_first_per_commitment_point(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // uint64_t AcceptChannel_clone_ptr(LDKAcceptChannel *NONNULL_PTR arg);
+       export function AcceptChannel_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_AcceptChannel_clone(orig);
+               return nativeResponseValue;
+       }
+       // void FundingCreated_free(struct LDKFundingCreated this_obj);
+       export function FundingCreated_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FundingCreated_free(this_obj);
+               // debug statements here
+       }
+       // 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) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FundingCreated_get_temporary_channel_id(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void FundingCreated_set_temporary_channel_id(struct LDKFundingCreated *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function FundingCreated_set_temporary_channel_id(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FundingCreated_set_temporary_channel_id(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // const uint8_t (*FundingCreated_get_funding_txid(const struct LDKFundingCreated *NONNULL_PTR this_ptr))[32];
+       export function FundingCreated_get_funding_txid(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FundingCreated_get_funding_txid(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void FundingCreated_set_funding_txid(struct LDKFundingCreated *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function FundingCreated_set_funding_txid(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FundingCreated_set_funding_txid(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // uint16_t FundingCreated_get_funding_output_index(const struct LDKFundingCreated *NONNULL_PTR this_ptr);
+       export function FundingCreated_get_funding_output_index(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FundingCreated_get_funding_output_index(this_ptr);
+               return nativeResponseValue;
+       }
+       // void FundingCreated_set_funding_output_index(struct LDKFundingCreated *NONNULL_PTR this_ptr, uint16_t val);
+       export function FundingCreated_set_funding_output_index(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FundingCreated_set_funding_output_index(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKSignature FundingCreated_get_signature(const struct LDKFundingCreated *NONNULL_PTR this_ptr);
+       export function FundingCreated_get_signature(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FundingCreated_get_signature(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void FundingCreated_set_signature(struct LDKFundingCreated *NONNULL_PTR this_ptr, struct LDKSignature val);
+       export function FundingCreated_set_signature(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FundingCreated_set_signature(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // 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);
+       export function FundingCreated_new(temporary_channel_id_arg: Uint8Array, funding_txid_arg: Uint8Array, funding_output_index_arg: number, signature_arg: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FundingCreated_new(encodeUint8Array(temporary_channel_id_arg), encodeUint8Array(funding_txid_arg), funding_output_index_arg, encodeUint8Array(signature_arg));
+               return nativeResponseValue;
+       }
+       // uint64_t FundingCreated_clone_ptr(LDKFundingCreated *NONNULL_PTR arg);
+       export function FundingCreated_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FundingCreated_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_FundingCreated_clone(orig);
+               return nativeResponseValue;
+       }
+       // void FundingSigned_free(struct LDKFundingSigned this_obj);
+       export function FundingSigned_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FundingSigned_free(this_obj);
+               // 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 {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FundingSigned_get_channel_id(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void FundingSigned_set_channel_id(struct LDKFundingSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function FundingSigned_set_channel_id(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FundingSigned_set_channel_id(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKSignature FundingSigned_get_signature(const struct LDKFundingSigned *NONNULL_PTR this_ptr);
+       export function FundingSigned_get_signature(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FundingSigned_get_signature(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void FundingSigned_set_signature(struct LDKFundingSigned *NONNULL_PTR this_ptr, struct LDKSignature val);
+       export function FundingSigned_set_signature(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FundingSigned_set_signature(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKFundingSigned FundingSigned_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKSignature signature_arg);
+       export function FundingSigned_new(channel_id_arg: Uint8Array, signature_arg: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FundingSigned_new(encodeUint8Array(channel_id_arg), encodeUint8Array(signature_arg));
+               return nativeResponseValue;
+       }
+       // uint64_t FundingSigned_clone_ptr(LDKFundingSigned *NONNULL_PTR arg);
+       export function FundingSigned_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FundingSigned_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_FundingSigned_clone(orig);
+               return nativeResponseValue;
+       }
+       // void FundingLocked_free(struct LDKFundingLocked this_obj);
+       export function FundingLocked_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FundingLocked_free(this_obj);
+               // 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 {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FundingLocked_get_channel_id(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void FundingLocked_set_channel_id(struct LDKFundingLocked *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function FundingLocked_set_channel_id(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FundingLocked_set_channel_id(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKPublicKey FundingLocked_get_next_per_commitment_point(const struct LDKFundingLocked *NONNULL_PTR this_ptr);
+       export function FundingLocked_get_next_per_commitment_point(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FundingLocked_get_next_per_commitment_point(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void FundingLocked_set_next_per_commitment_point(struct LDKFundingLocked *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function FundingLocked_set_next_per_commitment_point(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FundingLocked_set_next_per_commitment_point(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKFundingLocked FundingLocked_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKPublicKey next_per_commitment_point_arg);
+       export function FundingLocked_new(channel_id_arg: Uint8Array, next_per_commitment_point_arg: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FundingLocked_new(encodeUint8Array(channel_id_arg), encodeUint8Array(next_per_commitment_point_arg));
+               return nativeResponseValue;
+       }
+       // uint64_t FundingLocked_clone_ptr(LDKFundingLocked *NONNULL_PTR arg);
+       export function FundingLocked_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FundingLocked_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_FundingLocked_clone(orig);
+               return nativeResponseValue;
+       }
+       // void Shutdown_free(struct LDKShutdown this_obj);
+       export function Shutdown_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Shutdown_free(this_obj);
+               // 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 {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Shutdown_get_channel_id(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void Shutdown_set_channel_id(struct LDKShutdown *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function Shutdown_set_channel_id(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Shutdown_set_channel_id(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKu8slice Shutdown_get_scriptpubkey(const struct LDKShutdown *NONNULL_PTR this_ptr);
+       export function Shutdown_get_scriptpubkey(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Shutdown_get_scriptpubkey(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void Shutdown_set_scriptpubkey(struct LDKShutdown *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
+       export function Shutdown_set_scriptpubkey(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Shutdown_set_scriptpubkey(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKShutdown Shutdown_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKCVec_u8Z scriptpubkey_arg);
+       export function Shutdown_new(channel_id_arg: Uint8Array, scriptpubkey_arg: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Shutdown_new(encodeUint8Array(channel_id_arg), encodeUint8Array(scriptpubkey_arg));
+               return nativeResponseValue;
+       }
+       // uint64_t Shutdown_clone_ptr(LDKShutdown *NONNULL_PTR arg);
+       export function Shutdown_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Shutdown_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_Shutdown_clone(orig);
+               return nativeResponseValue;
+       }
+       // void ClosingSignedFeeRange_free(struct LDKClosingSignedFeeRange this_obj);
+       export function ClosingSignedFeeRange_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingSignedFeeRange_free(this_obj);
+               // debug statements here
+       }
+       // uint64_t ClosingSignedFeeRange_get_min_fee_satoshis(const struct LDKClosingSignedFeeRange *NONNULL_PTR this_ptr);
+       export function ClosingSignedFeeRange_get_min_fee_satoshis(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingSignedFeeRange_get_min_fee_satoshis(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ClosingSignedFeeRange_set_min_fee_satoshis(struct LDKClosingSignedFeeRange *NONNULL_PTR this_ptr, uint64_t val);
+       export function ClosingSignedFeeRange_set_min_fee_satoshis(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingSignedFeeRange_set_min_fee_satoshis(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t ClosingSignedFeeRange_get_max_fee_satoshis(const struct LDKClosingSignedFeeRange *NONNULL_PTR this_ptr);
+       export function ClosingSignedFeeRange_get_max_fee_satoshis(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingSignedFeeRange_get_max_fee_satoshis(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ClosingSignedFeeRange_set_max_fee_satoshis(struct LDKClosingSignedFeeRange *NONNULL_PTR this_ptr, uint64_t val);
+       export function ClosingSignedFeeRange_set_max_fee_satoshis(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingSignedFeeRange_set_max_fee_satoshis(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKClosingSignedFeeRange ClosingSignedFeeRange_new(uint64_t min_fee_satoshis_arg, uint64_t max_fee_satoshis_arg);
+       export function ClosingSignedFeeRange_new(min_fee_satoshis_arg: number, max_fee_satoshis_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingSignedFeeRange_new(min_fee_satoshis_arg, max_fee_satoshis_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t ClosingSignedFeeRange_clone_ptr(LDKClosingSignedFeeRange *NONNULL_PTR arg);
+       export function ClosingSignedFeeRange_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingSignedFeeRange_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKClosingSignedFeeRange ClosingSignedFeeRange_clone(const struct LDKClosingSignedFeeRange *NONNULL_PTR orig);
+       export function ClosingSignedFeeRange_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingSignedFeeRange_clone(orig);
+               return nativeResponseValue;
+       }
+       // void ClosingSigned_free(struct LDKClosingSigned this_obj);
+       export function ClosingSigned_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingSigned_free(this_obj);
+               // 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 {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingSigned_get_channel_id(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void ClosingSigned_set_channel_id(struct LDKClosingSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function ClosingSigned_set_channel_id(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingSigned_set_channel_id(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // uint64_t ClosingSigned_get_fee_satoshis(const struct LDKClosingSigned *NONNULL_PTR this_ptr);
+       export function ClosingSigned_get_fee_satoshis(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingSigned_get_fee_satoshis(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ClosingSigned_set_fee_satoshis(struct LDKClosingSigned *NONNULL_PTR this_ptr, uint64_t val);
+       export function ClosingSigned_set_fee_satoshis(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingSigned_set_fee_satoshis(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKSignature ClosingSigned_get_signature(const struct LDKClosingSigned *NONNULL_PTR this_ptr);
+       export function ClosingSigned_get_signature(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingSigned_get_signature(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void ClosingSigned_set_signature(struct LDKClosingSigned *NONNULL_PTR this_ptr, struct LDKSignature val);
+       export function ClosingSigned_set_signature(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingSigned_set_signature(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKClosingSignedFeeRange ClosingSigned_get_fee_range(const struct LDKClosingSigned *NONNULL_PTR this_ptr);
+       export function ClosingSigned_get_fee_range(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingSigned_get_fee_range(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ClosingSigned_set_fee_range(struct LDKClosingSigned *NONNULL_PTR this_ptr, struct LDKClosingSignedFeeRange val);
+       export function ClosingSigned_set_fee_range(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingSigned_set_fee_range(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKClosingSigned ClosingSigned_new(struct LDKThirtyTwoBytes channel_id_arg, uint64_t fee_satoshis_arg, struct LDKSignature signature_arg, struct LDKClosingSignedFeeRange fee_range_arg);
+       export function ClosingSigned_new(channel_id_arg: Uint8Array, fee_satoshis_arg: number, signature_arg: Uint8Array, fee_range_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingSigned_new(encodeUint8Array(channel_id_arg), fee_satoshis_arg, encodeUint8Array(signature_arg), fee_range_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t ClosingSigned_clone_ptr(LDKClosingSigned *NONNULL_PTR arg);
+       export function ClosingSigned_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingSigned_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_ClosingSigned_clone(orig);
+               return nativeResponseValue;
+       }
+       // void UpdateAddHTLC_free(struct LDKUpdateAddHTLC this_obj);
+       export function UpdateAddHTLC_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateAddHTLC_free(this_obj);
+               // 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 {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateAddHTLC_get_channel_id(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void UpdateAddHTLC_set_channel_id(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function UpdateAddHTLC_set_channel_id(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateAddHTLC_set_channel_id(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // uint64_t UpdateAddHTLC_get_htlc_id(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr);
+       export function UpdateAddHTLC_get_htlc_id(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateAddHTLC_get_htlc_id(this_ptr);
+               return nativeResponseValue;
+       }
+       // void UpdateAddHTLC_set_htlc_id(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint64_t val);
+       export function UpdateAddHTLC_set_htlc_id(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateAddHTLC_set_htlc_id(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t UpdateAddHTLC_get_amount_msat(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr);
+       export function UpdateAddHTLC_get_amount_msat(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateAddHTLC_get_amount_msat(this_ptr);
+               return nativeResponseValue;
+       }
+       // void UpdateAddHTLC_set_amount_msat(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint64_t val);
+       export function UpdateAddHTLC_set_amount_msat(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateAddHTLC_set_amount_msat(this_ptr, val);
+               // debug statements here
+       }
+       // const uint8_t (*UpdateAddHTLC_get_payment_hash(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr))[32];
+       export function UpdateAddHTLC_get_payment_hash(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateAddHTLC_get_payment_hash(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void UpdateAddHTLC_set_payment_hash(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function UpdateAddHTLC_set_payment_hash(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateAddHTLC_set_payment_hash(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // uint32_t UpdateAddHTLC_get_cltv_expiry(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr);
+       export function UpdateAddHTLC_get_cltv_expiry(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateAddHTLC_get_cltv_expiry(this_ptr);
+               return nativeResponseValue;
+       }
+       // void UpdateAddHTLC_set_cltv_expiry(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint32_t val);
+       export function UpdateAddHTLC_set_cltv_expiry(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateAddHTLC_set_cltv_expiry(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t UpdateAddHTLC_clone_ptr(LDKUpdateAddHTLC *NONNULL_PTR arg);
+       export function UpdateAddHTLC_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateAddHTLC_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_UpdateAddHTLC_clone(orig);
+               return nativeResponseValue;
+       }
+       // void UpdateFulfillHTLC_free(struct LDKUpdateFulfillHTLC this_obj);
+       export function UpdateFulfillHTLC_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFulfillHTLC_free(this_obj);
+               // 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 {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFulfillHTLC_get_channel_id(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void UpdateFulfillHTLC_set_channel_id(struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function UpdateFulfillHTLC_set_channel_id(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFulfillHTLC_set_channel_id(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // uint64_t UpdateFulfillHTLC_get_htlc_id(const struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr);
+       export function UpdateFulfillHTLC_get_htlc_id(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFulfillHTLC_get_htlc_id(this_ptr);
+               return nativeResponseValue;
+       }
+       // void UpdateFulfillHTLC_set_htlc_id(struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr, uint64_t val);
+       export function UpdateFulfillHTLC_set_htlc_id(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFulfillHTLC_set_htlc_id(this_ptr, val);
+               // debug statements here
+       }
+       // const uint8_t (*UpdateFulfillHTLC_get_payment_preimage(const struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr))[32];
+       export function UpdateFulfillHTLC_get_payment_preimage(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFulfillHTLC_get_payment_preimage(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void UpdateFulfillHTLC_set_payment_preimage(struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function UpdateFulfillHTLC_set_payment_preimage(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFulfillHTLC_set_payment_preimage(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKUpdateFulfillHTLC UpdateFulfillHTLC_new(struct LDKThirtyTwoBytes channel_id_arg, uint64_t htlc_id_arg, struct LDKThirtyTwoBytes payment_preimage_arg);
+       export function UpdateFulfillHTLC_new(channel_id_arg: Uint8Array, htlc_id_arg: number, payment_preimage_arg: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFulfillHTLC_new(encodeUint8Array(channel_id_arg), htlc_id_arg, encodeUint8Array(payment_preimage_arg));
+               return nativeResponseValue;
+       }
+       // uint64_t UpdateFulfillHTLC_clone_ptr(LDKUpdateFulfillHTLC *NONNULL_PTR arg);
+       export function UpdateFulfillHTLC_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFulfillHTLC_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_UpdateFulfillHTLC_clone(orig);
+               return nativeResponseValue;
+       }
+       // void UpdateFailHTLC_free(struct LDKUpdateFailHTLC this_obj);
+       export function UpdateFailHTLC_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFailHTLC_free(this_obj);
+               // 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 {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFailHTLC_get_channel_id(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void UpdateFailHTLC_set_channel_id(struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function UpdateFailHTLC_set_channel_id(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFailHTLC_set_channel_id(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // uint64_t UpdateFailHTLC_get_htlc_id(const struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr);
+       export function UpdateFailHTLC_get_htlc_id(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFailHTLC_get_htlc_id(this_ptr);
+               return nativeResponseValue;
+       }
+       // void UpdateFailHTLC_set_htlc_id(struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr, uint64_t val);
+       export function UpdateFailHTLC_set_htlc_id(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFailHTLC_set_htlc_id(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t UpdateFailHTLC_clone_ptr(LDKUpdateFailHTLC *NONNULL_PTR arg);
+       export function UpdateFailHTLC_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFailHTLC_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_UpdateFailHTLC_clone(orig);
+               return nativeResponseValue;
+       }
+       // void UpdateFailMalformedHTLC_free(struct LDKUpdateFailMalformedHTLC this_obj);
+       export function UpdateFailMalformedHTLC_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFailMalformedHTLC_free(this_obj);
+               // 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 {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFailMalformedHTLC_get_channel_id(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void UpdateFailMalformedHTLC_set_channel_id(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function UpdateFailMalformedHTLC_set_channel_id(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFailMalformedHTLC_set_channel_id(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // uint64_t UpdateFailMalformedHTLC_get_htlc_id(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr);
+       export function UpdateFailMalformedHTLC_get_htlc_id(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFailMalformedHTLC_get_htlc_id(this_ptr);
+               return nativeResponseValue;
+       }
+       // void UpdateFailMalformedHTLC_set_htlc_id(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, uint64_t val);
+       export function UpdateFailMalformedHTLC_set_htlc_id(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFailMalformedHTLC_set_htlc_id(this_ptr, val);
+               // debug statements here
+       }
+       // uint16_t UpdateFailMalformedHTLC_get_failure_code(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr);
+       export function UpdateFailMalformedHTLC_get_failure_code(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFailMalformedHTLC_get_failure_code(this_ptr);
+               return nativeResponseValue;
+       }
+       // void UpdateFailMalformedHTLC_set_failure_code(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, uint16_t val);
+       export function UpdateFailMalformedHTLC_set_failure_code(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFailMalformedHTLC_set_failure_code(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t UpdateFailMalformedHTLC_clone_ptr(LDKUpdateFailMalformedHTLC *NONNULL_PTR arg);
+       export function UpdateFailMalformedHTLC_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFailMalformedHTLC_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_UpdateFailMalformedHTLC_clone(orig);
+               return nativeResponseValue;
+       }
+       // void CommitmentSigned_free(struct LDKCommitmentSigned this_obj);
+       export function CommitmentSigned_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentSigned_free(this_obj);
+               // 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 {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentSigned_get_channel_id(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void CommitmentSigned_set_channel_id(struct LDKCommitmentSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function CommitmentSigned_set_channel_id(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentSigned_set_channel_id(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKSignature CommitmentSigned_get_signature(const struct LDKCommitmentSigned *NONNULL_PTR this_ptr);
+       export function CommitmentSigned_get_signature(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentSigned_get_signature(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void CommitmentSigned_set_signature(struct LDKCommitmentSigned *NONNULL_PTR this_ptr, struct LDKSignature val);
+       export function CommitmentSigned_set_signature(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentSigned_set_signature(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // void CommitmentSigned_set_htlc_signatures(struct LDKCommitmentSigned *NONNULL_PTR this_ptr, struct LDKCVec_SignatureZ val);
+       export function CommitmentSigned_set_htlc_signatures(this_ptr: number, val: Uint8Array[]): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentSigned_set_htlc_signatures(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKCommitmentSigned CommitmentSigned_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKSignature signature_arg, struct LDKCVec_SignatureZ htlc_signatures_arg);
+       export function CommitmentSigned_new(channel_id_arg: Uint8Array, signature_arg: Uint8Array, htlc_signatures_arg: Uint8Array[]): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentSigned_new(encodeUint8Array(channel_id_arg), encodeUint8Array(signature_arg), htlc_signatures_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t CommitmentSigned_clone_ptr(LDKCommitmentSigned *NONNULL_PTR arg);
+       export function CommitmentSigned_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentSigned_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_CommitmentSigned_clone(orig);
+               return nativeResponseValue;
+       }
+       // void RevokeAndACK_free(struct LDKRevokeAndACK this_obj);
+       export function RevokeAndACK_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RevokeAndACK_free(this_obj);
+               // 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 {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RevokeAndACK_get_channel_id(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void RevokeAndACK_set_channel_id(struct LDKRevokeAndACK *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function RevokeAndACK_set_channel_id(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RevokeAndACK_set_channel_id(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // const uint8_t (*RevokeAndACK_get_per_commitment_secret(const struct LDKRevokeAndACK *NONNULL_PTR this_ptr))[32];
+       export function RevokeAndACK_get_per_commitment_secret(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RevokeAndACK_get_per_commitment_secret(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void RevokeAndACK_set_per_commitment_secret(struct LDKRevokeAndACK *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function RevokeAndACK_set_per_commitment_secret(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RevokeAndACK_set_per_commitment_secret(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKPublicKey RevokeAndACK_get_next_per_commitment_point(const struct LDKRevokeAndACK *NONNULL_PTR this_ptr);
+       export function RevokeAndACK_get_next_per_commitment_point(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RevokeAndACK_get_next_per_commitment_point(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void RevokeAndACK_set_next_per_commitment_point(struct LDKRevokeAndACK *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function RevokeAndACK_set_next_per_commitment_point(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RevokeAndACK_set_next_per_commitment_point(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // 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);
+       export function RevokeAndACK_new(channel_id_arg: Uint8Array, per_commitment_secret_arg: Uint8Array, next_per_commitment_point_arg: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RevokeAndACK_new(encodeUint8Array(channel_id_arg), encodeUint8Array(per_commitment_secret_arg), encodeUint8Array(next_per_commitment_point_arg));
+               return nativeResponseValue;
+       }
+       // uint64_t RevokeAndACK_clone_ptr(LDKRevokeAndACK *NONNULL_PTR arg);
+       export function RevokeAndACK_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RevokeAndACK_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_RevokeAndACK_clone(orig);
+               return nativeResponseValue;
+       }
+       // void UpdateFee_free(struct LDKUpdateFee this_obj);
+       export function UpdateFee_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFee_free(this_obj);
+               // 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 {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFee_get_channel_id(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void UpdateFee_set_channel_id(struct LDKUpdateFee *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function UpdateFee_set_channel_id(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFee_set_channel_id(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // uint32_t UpdateFee_get_feerate_per_kw(const struct LDKUpdateFee *NONNULL_PTR this_ptr);
+       export function UpdateFee_get_feerate_per_kw(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFee_get_feerate_per_kw(this_ptr);
+               return nativeResponseValue;
+       }
+       // void UpdateFee_set_feerate_per_kw(struct LDKUpdateFee *NONNULL_PTR this_ptr, uint32_t val);
+       export function UpdateFee_set_feerate_per_kw(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFee_set_feerate_per_kw(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKUpdateFee UpdateFee_new(struct LDKThirtyTwoBytes channel_id_arg, uint32_t feerate_per_kw_arg);
+       export function UpdateFee_new(channel_id_arg: Uint8Array, feerate_per_kw_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFee_new(encodeUint8Array(channel_id_arg), feerate_per_kw_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t UpdateFee_clone_ptr(LDKUpdateFee *NONNULL_PTR arg);
+       export function UpdateFee_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFee_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_UpdateFee_clone(orig);
+               return nativeResponseValue;
+       }
+       // void DataLossProtect_free(struct LDKDataLossProtect this_obj);
+       export function DataLossProtect_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DataLossProtect_free(this_obj);
+               // 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 {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DataLossProtect_get_your_last_per_commitment_secret(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void DataLossProtect_set_your_last_per_commitment_secret(struct LDKDataLossProtect *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function DataLossProtect_set_your_last_per_commitment_secret(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DataLossProtect_set_your_last_per_commitment_secret(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKPublicKey DataLossProtect_get_my_current_per_commitment_point(const struct LDKDataLossProtect *NONNULL_PTR this_ptr);
+       export function DataLossProtect_get_my_current_per_commitment_point(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DataLossProtect_get_my_current_per_commitment_point(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void DataLossProtect_set_my_current_per_commitment_point(struct LDKDataLossProtect *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function DataLossProtect_set_my_current_per_commitment_point(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DataLossProtect_set_my_current_per_commitment_point(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKDataLossProtect DataLossProtect_new(struct LDKThirtyTwoBytes your_last_per_commitment_secret_arg, struct LDKPublicKey my_current_per_commitment_point_arg);
+       export function DataLossProtect_new(your_last_per_commitment_secret_arg: Uint8Array, my_current_per_commitment_point_arg: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DataLossProtect_new(encodeUint8Array(your_last_per_commitment_secret_arg), encodeUint8Array(my_current_per_commitment_point_arg));
+               return nativeResponseValue;
+       }
+       // uint64_t DataLossProtect_clone_ptr(LDKDataLossProtect *NONNULL_PTR arg);
+       export function DataLossProtect_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DataLossProtect_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_DataLossProtect_clone(orig);
+               return nativeResponseValue;
+       }
+       // void ChannelReestablish_free(struct LDKChannelReestablish this_obj);
+       export function ChannelReestablish_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelReestablish_free(this_obj);
+               // 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 {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelReestablish_get_channel_id(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void ChannelReestablish_set_channel_id(struct LDKChannelReestablish *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function ChannelReestablish_set_channel_id(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelReestablish_set_channel_id(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // uint64_t ChannelReestablish_get_next_local_commitment_number(const struct LDKChannelReestablish *NONNULL_PTR this_ptr);
+       export function ChannelReestablish_get_next_local_commitment_number(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelReestablish_get_next_local_commitment_number(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelReestablish_set_next_local_commitment_number(struct LDKChannelReestablish *NONNULL_PTR this_ptr, uint64_t val);
+       export function ChannelReestablish_set_next_local_commitment_number(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelReestablish_set_next_local_commitment_number(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t ChannelReestablish_get_next_remote_commitment_number(const struct LDKChannelReestablish *NONNULL_PTR this_ptr);
+       export function ChannelReestablish_get_next_remote_commitment_number(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelReestablish_get_next_remote_commitment_number(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelReestablish_set_next_remote_commitment_number(struct LDKChannelReestablish *NONNULL_PTR this_ptr, uint64_t val);
+       export function ChannelReestablish_set_next_remote_commitment_number(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelReestablish_set_next_remote_commitment_number(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t ChannelReestablish_clone_ptr(LDKChannelReestablish *NONNULL_PTR arg);
+       export function ChannelReestablish_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelReestablish_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_ChannelReestablish_clone(orig);
+               return nativeResponseValue;
+       }
+       // void AnnouncementSignatures_free(struct LDKAnnouncementSignatures this_obj);
+       export function AnnouncementSignatures_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AnnouncementSignatures_free(this_obj);
+               // 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 {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AnnouncementSignatures_get_channel_id(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void AnnouncementSignatures_set_channel_id(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function AnnouncementSignatures_set_channel_id(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AnnouncementSignatures_set_channel_id(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // uint64_t AnnouncementSignatures_get_short_channel_id(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr);
+       export function AnnouncementSignatures_get_short_channel_id(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AnnouncementSignatures_get_short_channel_id(this_ptr);
+               return nativeResponseValue;
+       }
+       // void AnnouncementSignatures_set_short_channel_id(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, uint64_t val);
+       export function AnnouncementSignatures_set_short_channel_id(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AnnouncementSignatures_set_short_channel_id(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKSignature AnnouncementSignatures_get_node_signature(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr);
+       export function AnnouncementSignatures_get_node_signature(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AnnouncementSignatures_get_node_signature(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void AnnouncementSignatures_set_node_signature(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, struct LDKSignature val);
+       export function AnnouncementSignatures_set_node_signature(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AnnouncementSignatures_set_node_signature(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKSignature AnnouncementSignatures_get_bitcoin_signature(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr);
+       export function AnnouncementSignatures_get_bitcoin_signature(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AnnouncementSignatures_get_bitcoin_signature(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void AnnouncementSignatures_set_bitcoin_signature(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, struct LDKSignature val);
+       export function AnnouncementSignatures_set_bitcoin_signature(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AnnouncementSignatures_set_bitcoin_signature(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // 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);
+       export function AnnouncementSignatures_new(channel_id_arg: Uint8Array, short_channel_id_arg: number, node_signature_arg: Uint8Array, bitcoin_signature_arg: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AnnouncementSignatures_new(encodeUint8Array(channel_id_arg), short_channel_id_arg, encodeUint8Array(node_signature_arg), encodeUint8Array(bitcoin_signature_arg));
+               return nativeResponseValue;
+       }
+       // uint64_t AnnouncementSignatures_clone_ptr(LDKAnnouncementSignatures *NONNULL_PTR arg);
+       export function AnnouncementSignatures_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AnnouncementSignatures_clone_ptr(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.TS_AnnouncementSignatures_clone(orig);
+               return nativeResponseValue;
+       }
+       // void NetAddress_free(struct LDKNetAddress this_ptr);
+       export function NetAddress_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetAddress_free(this_ptr);
+               // debug statements here
+       }
+       // uint64_t NetAddress_clone_ptr(LDKNetAddress *NONNULL_PTR arg);
+       export function NetAddress_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetAddress_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKNetAddress NetAddress_clone(const struct LDKNetAddress *NONNULL_PTR orig);
+       export function NetAddress_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetAddress_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKNetAddress NetAddress_ipv4(struct LDKFourBytes addr, uint16_t port);
+       export function NetAddress_ipv4(addr: Uint8Array, port: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetAddress_ipv4(encodeUint8Array(addr), port);
+               return nativeResponseValue;
+       }
+       // struct LDKNetAddress NetAddress_ipv6(struct LDKSixteenBytes addr, uint16_t port);
+       export function NetAddress_ipv6(addr: Uint8Array, port: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetAddress_ipv6(encodeUint8Array(addr), port);
+               return nativeResponseValue;
+       }
+       // struct LDKNetAddress NetAddress_onion_v2(struct LDKTwelveBytes a);
+       export function NetAddress_onion_v2(a: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetAddress_onion_v2(encodeUint8Array(a));
+               return nativeResponseValue;
+       }
+       // struct LDKNetAddress NetAddress_onion_v3(struct LDKThirtyTwoBytes ed25519_pubkey, uint16_t checksum, uint8_t version, uint16_t port);
+       export function NetAddress_onion_v3(ed25519_pubkey: Uint8Array, checksum: number, version: number, port: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetAddress_onion_v3(encodeUint8Array(ed25519_pubkey), checksum, version, port);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z NetAddress_write(const struct LDKNetAddress *NONNULL_PTR obj);
+       export function NetAddress_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetAddress_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_NetAddressDecodeErrorZ NetAddress_read(struct LDKu8slice ser);
+       export function NetAddress_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetAddress_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // void UnsignedNodeAnnouncement_free(struct LDKUnsignedNodeAnnouncement this_obj);
+       export function UnsignedNodeAnnouncement_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedNodeAnnouncement_free(this_obj);
+               // debug statements here
+       }
+       // struct LDKNodeFeatures UnsignedNodeAnnouncement_get_features(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr);
+       export function UnsignedNodeAnnouncement_get_features(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedNodeAnnouncement_get_features(this_ptr);
+               return nativeResponseValue;
+       }
+       // void UnsignedNodeAnnouncement_set_features(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKNodeFeatures val);
+       export function UnsignedNodeAnnouncement_set_features(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedNodeAnnouncement_set_features(this_ptr, val);
+               // debug statements here
+       }
+       // uint32_t UnsignedNodeAnnouncement_get_timestamp(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr);
+       export function UnsignedNodeAnnouncement_get_timestamp(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedNodeAnnouncement_get_timestamp(this_ptr);
+               return nativeResponseValue;
+       }
+       // void UnsignedNodeAnnouncement_set_timestamp(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, uint32_t val);
+       export function UnsignedNodeAnnouncement_set_timestamp(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedNodeAnnouncement_set_timestamp(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKPublicKey UnsignedNodeAnnouncement_get_node_id(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr);
+       export function UnsignedNodeAnnouncement_get_node_id(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedNodeAnnouncement_get_node_id(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void UnsignedNodeAnnouncement_set_node_id(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function UnsignedNodeAnnouncement_set_node_id(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedNodeAnnouncement_set_node_id(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // const uint8_t (*UnsignedNodeAnnouncement_get_rgb(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr))[3];
+       export function UnsignedNodeAnnouncement_get_rgb(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedNodeAnnouncement_get_rgb(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void UnsignedNodeAnnouncement_set_rgb(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKThreeBytes val);
+       export function UnsignedNodeAnnouncement_set_rgb(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedNodeAnnouncement_set_rgb(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // const uint8_t (*UnsignedNodeAnnouncement_get_alias(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr))[32];
+       export function UnsignedNodeAnnouncement_get_alias(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedNodeAnnouncement_get_alias(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void UnsignedNodeAnnouncement_set_alias(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function UnsignedNodeAnnouncement_set_alias(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedNodeAnnouncement_set_alias(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // void UnsignedNodeAnnouncement_set_addresses(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKCVec_NetAddressZ val);
+       export function UnsignedNodeAnnouncement_set_addresses(this_ptr: number, val: number[]): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedNodeAnnouncement_set_addresses(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t UnsignedNodeAnnouncement_clone_ptr(LDKUnsignedNodeAnnouncement *NONNULL_PTR arg);
+       export function UnsignedNodeAnnouncement_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedNodeAnnouncement_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_UnsignedNodeAnnouncement_clone(orig);
+               return nativeResponseValue;
+       }
+       // void NodeAnnouncement_free(struct LDKNodeAnnouncement this_obj);
+       export function NodeAnnouncement_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeAnnouncement_free(this_obj);
+               // debug statements here
+       }
+       // struct LDKSignature NodeAnnouncement_get_signature(const struct LDKNodeAnnouncement *NONNULL_PTR this_ptr);
+       export function NodeAnnouncement_get_signature(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeAnnouncement_get_signature(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void NodeAnnouncement_set_signature(struct LDKNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
+       export function NodeAnnouncement_set_signature(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeAnnouncement_set_signature(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKUnsignedNodeAnnouncement NodeAnnouncement_get_contents(const struct LDKNodeAnnouncement *NONNULL_PTR this_ptr);
+       export function NodeAnnouncement_get_contents(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeAnnouncement_get_contents(this_ptr);
+               return nativeResponseValue;
+       }
+       // void NodeAnnouncement_set_contents(struct LDKNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKUnsignedNodeAnnouncement val);
+       export function NodeAnnouncement_set_contents(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeAnnouncement_set_contents(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKNodeAnnouncement NodeAnnouncement_new(struct LDKSignature signature_arg, struct LDKUnsignedNodeAnnouncement contents_arg);
+       export function NodeAnnouncement_new(signature_arg: Uint8Array, contents_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeAnnouncement_new(encodeUint8Array(signature_arg), contents_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t NodeAnnouncement_clone_ptr(LDKNodeAnnouncement *NONNULL_PTR arg);
+       export function NodeAnnouncement_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeAnnouncement_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_NodeAnnouncement_clone(orig);
+               return nativeResponseValue;
+       }
+       // void UnsignedChannelAnnouncement_free(struct LDKUnsignedChannelAnnouncement this_obj);
+       export function UnsignedChannelAnnouncement_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelAnnouncement_free(this_obj);
+               // debug statements here
+       }
+       // struct LDKChannelFeatures UnsignedChannelAnnouncement_get_features(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
+       export function UnsignedChannelAnnouncement_get_features(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelAnnouncement_get_features(this_ptr);
+               return nativeResponseValue;
+       }
+       // void UnsignedChannelAnnouncement_set_features(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKChannelFeatures val);
+       export function UnsignedChannelAnnouncement_set_features(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelAnnouncement_set_features(this_ptr, val);
+               // debug statements here
+       }
+       // const uint8_t (*UnsignedChannelAnnouncement_get_chain_hash(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr))[32];
+       export function UnsignedChannelAnnouncement_get_chain_hash(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelAnnouncement_get_chain_hash(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void UnsignedChannelAnnouncement_set_chain_hash(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function UnsignedChannelAnnouncement_set_chain_hash(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelAnnouncement_set_chain_hash(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // uint64_t UnsignedChannelAnnouncement_get_short_channel_id(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
+       export function UnsignedChannelAnnouncement_get_short_channel_id(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelAnnouncement_get_short_channel_id(this_ptr);
+               return nativeResponseValue;
+       }
+       // void UnsignedChannelAnnouncement_set_short_channel_id(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, uint64_t val);
+       export function UnsignedChannelAnnouncement_set_short_channel_id(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelAnnouncement_set_short_channel_id(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKPublicKey UnsignedChannelAnnouncement_get_node_id_1(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
+       export function UnsignedChannelAnnouncement_get_node_id_1(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelAnnouncement_get_node_id_1(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void UnsignedChannelAnnouncement_set_node_id_1(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function UnsignedChannelAnnouncement_set_node_id_1(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelAnnouncement_set_node_id_1(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKPublicKey UnsignedChannelAnnouncement_get_node_id_2(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
+       export function UnsignedChannelAnnouncement_get_node_id_2(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelAnnouncement_get_node_id_2(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void UnsignedChannelAnnouncement_set_node_id_2(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function UnsignedChannelAnnouncement_set_node_id_2(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelAnnouncement_set_node_id_2(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKPublicKey UnsignedChannelAnnouncement_get_bitcoin_key_1(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
+       export function UnsignedChannelAnnouncement_get_bitcoin_key_1(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelAnnouncement_get_bitcoin_key_1(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void UnsignedChannelAnnouncement_set_bitcoin_key_1(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function UnsignedChannelAnnouncement_set_bitcoin_key_1(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelAnnouncement_set_bitcoin_key_1(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKPublicKey UnsignedChannelAnnouncement_get_bitcoin_key_2(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
+       export function UnsignedChannelAnnouncement_get_bitcoin_key_2(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelAnnouncement_get_bitcoin_key_2(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void UnsignedChannelAnnouncement_set_bitcoin_key_2(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function UnsignedChannelAnnouncement_set_bitcoin_key_2(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelAnnouncement_set_bitcoin_key_2(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // uint64_t UnsignedChannelAnnouncement_clone_ptr(LDKUnsignedChannelAnnouncement *NONNULL_PTR arg);
+       export function UnsignedChannelAnnouncement_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelAnnouncement_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_UnsignedChannelAnnouncement_clone(orig);
+               return nativeResponseValue;
+       }
+       // void ChannelAnnouncement_free(struct LDKChannelAnnouncement this_obj);
+       export function ChannelAnnouncement_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelAnnouncement_free(this_obj);
+               // 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 {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelAnnouncement_get_node_signature_1(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void ChannelAnnouncement_set_node_signature_1(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
+       export function ChannelAnnouncement_set_node_signature_1(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelAnnouncement_set_node_signature_1(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKSignature ChannelAnnouncement_get_node_signature_2(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
+       export function ChannelAnnouncement_get_node_signature_2(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelAnnouncement_get_node_signature_2(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void ChannelAnnouncement_set_node_signature_2(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
+       export function ChannelAnnouncement_set_node_signature_2(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelAnnouncement_set_node_signature_2(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKSignature ChannelAnnouncement_get_bitcoin_signature_1(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
+       export function ChannelAnnouncement_get_bitcoin_signature_1(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelAnnouncement_get_bitcoin_signature_1(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void ChannelAnnouncement_set_bitcoin_signature_1(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
+       export function ChannelAnnouncement_set_bitcoin_signature_1(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelAnnouncement_set_bitcoin_signature_1(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKSignature ChannelAnnouncement_get_bitcoin_signature_2(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
+       export function ChannelAnnouncement_get_bitcoin_signature_2(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelAnnouncement_get_bitcoin_signature_2(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void ChannelAnnouncement_set_bitcoin_signature_2(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
+       export function ChannelAnnouncement_set_bitcoin_signature_2(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelAnnouncement_set_bitcoin_signature_2(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKUnsignedChannelAnnouncement ChannelAnnouncement_get_contents(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
+       export function ChannelAnnouncement_get_contents(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelAnnouncement_get_contents(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelAnnouncement_set_contents(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKUnsignedChannelAnnouncement val);
+       export function ChannelAnnouncement_set_contents(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelAnnouncement_set_contents(this_ptr, val);
+               // debug statements here
+       }
+       // 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);
+       export function ChannelAnnouncement_new(node_signature_1_arg: Uint8Array, node_signature_2_arg: Uint8Array, bitcoin_signature_1_arg: Uint8Array, bitcoin_signature_2_arg: Uint8Array, contents_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelAnnouncement_new(encodeUint8Array(node_signature_1_arg), encodeUint8Array(node_signature_2_arg), encodeUint8Array(bitcoin_signature_1_arg), encodeUint8Array(bitcoin_signature_2_arg), contents_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t ChannelAnnouncement_clone_ptr(LDKChannelAnnouncement *NONNULL_PTR arg);
+       export function ChannelAnnouncement_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelAnnouncement_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_ChannelAnnouncement_clone(orig);
+               return nativeResponseValue;
+       }
+       // void UnsignedChannelUpdate_free(struct LDKUnsignedChannelUpdate this_obj);
+       export function UnsignedChannelUpdate_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelUpdate_free(this_obj);
+               // 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 {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelUpdate_get_chain_hash(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void UnsignedChannelUpdate_set_chain_hash(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function UnsignedChannelUpdate_set_chain_hash(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelUpdate_set_chain_hash(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // uint64_t UnsignedChannelUpdate_get_short_channel_id(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
+       export function UnsignedChannelUpdate_get_short_channel_id(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelUpdate_get_short_channel_id(this_ptr);
+               return nativeResponseValue;
+       }
+       // void UnsignedChannelUpdate_set_short_channel_id(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint64_t val);
+       export function UnsignedChannelUpdate_set_short_channel_id(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelUpdate_set_short_channel_id(this_ptr, val);
+               // debug statements here
+       }
+       // uint32_t UnsignedChannelUpdate_get_timestamp(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
+       export function UnsignedChannelUpdate_get_timestamp(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelUpdate_get_timestamp(this_ptr);
+               return nativeResponseValue;
+       }
+       // void UnsignedChannelUpdate_set_timestamp(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val);
+       export function UnsignedChannelUpdate_set_timestamp(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelUpdate_set_timestamp(this_ptr, val);
+               // debug statements here
+       }
+       // uint8_t UnsignedChannelUpdate_get_flags(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
+       export function UnsignedChannelUpdate_get_flags(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelUpdate_get_flags(this_ptr);
+               return nativeResponseValue;
+       }
+       // void UnsignedChannelUpdate_set_flags(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint8_t val);
+       export function UnsignedChannelUpdate_set_flags(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelUpdate_set_flags(this_ptr, val);
+               // debug statements here
+       }
+       // uint16_t UnsignedChannelUpdate_get_cltv_expiry_delta(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
+       export function UnsignedChannelUpdate_get_cltv_expiry_delta(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelUpdate_get_cltv_expiry_delta(this_ptr);
+               return nativeResponseValue;
+       }
+       // void UnsignedChannelUpdate_set_cltv_expiry_delta(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint16_t val);
+       export function UnsignedChannelUpdate_set_cltv_expiry_delta(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelUpdate_set_cltv_expiry_delta(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t UnsignedChannelUpdate_get_htlc_minimum_msat(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
+       export function UnsignedChannelUpdate_get_htlc_minimum_msat(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelUpdate_get_htlc_minimum_msat(this_ptr);
+               return nativeResponseValue;
+       }
+       // void UnsignedChannelUpdate_set_htlc_minimum_msat(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint64_t val);
+       export function UnsignedChannelUpdate_set_htlc_minimum_msat(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelUpdate_set_htlc_minimum_msat(this_ptr, val);
+               // debug statements here
+       }
+       // uint32_t UnsignedChannelUpdate_get_fee_base_msat(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
+       export function UnsignedChannelUpdate_get_fee_base_msat(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelUpdate_get_fee_base_msat(this_ptr);
+               return nativeResponseValue;
+       }
+       // void UnsignedChannelUpdate_set_fee_base_msat(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val);
+       export function UnsignedChannelUpdate_set_fee_base_msat(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelUpdate_set_fee_base_msat(this_ptr, val);
+               // debug statements here
+       }
+       // uint32_t UnsignedChannelUpdate_get_fee_proportional_millionths(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
+       export function UnsignedChannelUpdate_get_fee_proportional_millionths(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelUpdate_get_fee_proportional_millionths(this_ptr);
+               return nativeResponseValue;
+       }
+       // void UnsignedChannelUpdate_set_fee_proportional_millionths(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val);
+       export function UnsignedChannelUpdate_set_fee_proportional_millionths(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelUpdate_set_fee_proportional_millionths(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t UnsignedChannelUpdate_clone_ptr(LDKUnsignedChannelUpdate *NONNULL_PTR arg);
+       export function UnsignedChannelUpdate_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelUpdate_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_UnsignedChannelUpdate_clone(orig);
+               return nativeResponseValue;
+       }
+       // void ChannelUpdate_free(struct LDKChannelUpdate this_obj);
+       export function ChannelUpdate_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelUpdate_free(this_obj);
+               // debug statements here
+       }
+       // struct LDKSignature ChannelUpdate_get_signature(const struct LDKChannelUpdate *NONNULL_PTR this_ptr);
+       export function ChannelUpdate_get_signature(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelUpdate_get_signature(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void ChannelUpdate_set_signature(struct LDKChannelUpdate *NONNULL_PTR this_ptr, struct LDKSignature val);
+       export function ChannelUpdate_set_signature(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelUpdate_set_signature(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKUnsignedChannelUpdate ChannelUpdate_get_contents(const struct LDKChannelUpdate *NONNULL_PTR this_ptr);
+       export function ChannelUpdate_get_contents(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelUpdate_get_contents(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelUpdate_set_contents(struct LDKChannelUpdate *NONNULL_PTR this_ptr, struct LDKUnsignedChannelUpdate val);
+       export function ChannelUpdate_set_contents(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelUpdate_set_contents(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKChannelUpdate ChannelUpdate_new(struct LDKSignature signature_arg, struct LDKUnsignedChannelUpdate contents_arg);
+       export function ChannelUpdate_new(signature_arg: Uint8Array, contents_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelUpdate_new(encodeUint8Array(signature_arg), contents_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t ChannelUpdate_clone_ptr(LDKChannelUpdate *NONNULL_PTR arg);
+       export function ChannelUpdate_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelUpdate_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_ChannelUpdate_clone(orig);
+               return nativeResponseValue;
+       }
+       // void QueryChannelRange_free(struct LDKQueryChannelRange this_obj);
+       export function QueryChannelRange_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_QueryChannelRange_free(this_obj);
+               // 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 {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_QueryChannelRange_get_chain_hash(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void QueryChannelRange_set_chain_hash(struct LDKQueryChannelRange *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function QueryChannelRange_set_chain_hash(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_QueryChannelRange_set_chain_hash(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // uint32_t QueryChannelRange_get_first_blocknum(const struct LDKQueryChannelRange *NONNULL_PTR this_ptr);
+       export function QueryChannelRange_get_first_blocknum(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_QueryChannelRange_get_first_blocknum(this_ptr);
+               return nativeResponseValue;
+       }
+       // void QueryChannelRange_set_first_blocknum(struct LDKQueryChannelRange *NONNULL_PTR this_ptr, uint32_t val);
+       export function QueryChannelRange_set_first_blocknum(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_QueryChannelRange_set_first_blocknum(this_ptr, val);
+               // debug statements here
+       }
+       // uint32_t QueryChannelRange_get_number_of_blocks(const struct LDKQueryChannelRange *NONNULL_PTR this_ptr);
+       export function QueryChannelRange_get_number_of_blocks(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_QueryChannelRange_get_number_of_blocks(this_ptr);
+               return nativeResponseValue;
+       }
+       // void QueryChannelRange_set_number_of_blocks(struct LDKQueryChannelRange *NONNULL_PTR this_ptr, uint32_t val);
+       export function QueryChannelRange_set_number_of_blocks(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_QueryChannelRange_set_number_of_blocks(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKQueryChannelRange QueryChannelRange_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_blocknum_arg, uint32_t number_of_blocks_arg);
+       export function QueryChannelRange_new(chain_hash_arg: Uint8Array, first_blocknum_arg: number, number_of_blocks_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_QueryChannelRange_new(encodeUint8Array(chain_hash_arg), first_blocknum_arg, number_of_blocks_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t QueryChannelRange_clone_ptr(LDKQueryChannelRange *NONNULL_PTR arg);
+       export function QueryChannelRange_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_QueryChannelRange_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_QueryChannelRange_clone(orig);
+               return nativeResponseValue;
+       }
+       // void ReplyChannelRange_free(struct LDKReplyChannelRange this_obj);
+       export function ReplyChannelRange_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ReplyChannelRange_free(this_obj);
+               // 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 {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ReplyChannelRange_get_chain_hash(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void ReplyChannelRange_set_chain_hash(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function ReplyChannelRange_set_chain_hash(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ReplyChannelRange_set_chain_hash(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // uint32_t ReplyChannelRange_get_first_blocknum(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr);
+       export function ReplyChannelRange_get_first_blocknum(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ReplyChannelRange_get_first_blocknum(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ReplyChannelRange_set_first_blocknum(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, uint32_t val);
+       export function ReplyChannelRange_set_first_blocknum(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ReplyChannelRange_set_first_blocknum(this_ptr, val);
+               // debug statements here
+       }
+       // uint32_t ReplyChannelRange_get_number_of_blocks(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr);
+       export function ReplyChannelRange_get_number_of_blocks(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ReplyChannelRange_get_number_of_blocks(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ReplyChannelRange_set_number_of_blocks(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, uint32_t val);
+       export function ReplyChannelRange_set_number_of_blocks(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ReplyChannelRange_set_number_of_blocks(this_ptr, val);
+               // debug statements here
+       }
+       // 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.TS_ReplyChannelRange_get_sync_complete(this_ptr);
+               return nativeResponseValue;
+       }
+       // 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.TS_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);
+       export function ReplyChannelRange_set_short_channel_ids(this_ptr: number, val: number[]): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_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 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.TS_ReplyChannelRange_new(encodeUint8Array(chain_hash_arg), first_blocknum_arg, number_of_blocks_arg, sync_complete_arg, short_channel_ids_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t ReplyChannelRange_clone_ptr(LDKReplyChannelRange *NONNULL_PTR arg);
+       export function ReplyChannelRange_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ReplyChannelRange_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_ReplyChannelRange_clone(orig);
+               return nativeResponseValue;
+       }
+       // void QueryShortChannelIds_free(struct LDKQueryShortChannelIds this_obj);
+       export function QueryShortChannelIds_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_QueryShortChannelIds_free(this_obj);
+               // 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 {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_QueryShortChannelIds_get_chain_hash(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void QueryShortChannelIds_set_chain_hash(struct LDKQueryShortChannelIds *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function QueryShortChannelIds_set_chain_hash(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_QueryShortChannelIds_set_chain_hash(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // void QueryShortChannelIds_set_short_channel_ids(struct LDKQueryShortChannelIds *NONNULL_PTR this_ptr, struct LDKCVec_u64Z val);
+       export function QueryShortChannelIds_set_short_channel_ids(this_ptr: number, val: number[]): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_QueryShortChannelIds_set_short_channel_ids(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKQueryShortChannelIds QueryShortChannelIds_new(struct LDKThirtyTwoBytes chain_hash_arg, struct LDKCVec_u64Z short_channel_ids_arg);
+       export function QueryShortChannelIds_new(chain_hash_arg: Uint8Array, short_channel_ids_arg: number[]): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_QueryShortChannelIds_new(encodeUint8Array(chain_hash_arg), short_channel_ids_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t QueryShortChannelIds_clone_ptr(LDKQueryShortChannelIds *NONNULL_PTR arg);
+       export function QueryShortChannelIds_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_QueryShortChannelIds_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_QueryShortChannelIds_clone(orig);
+               return nativeResponseValue;
+       }
+       // void ReplyShortChannelIdsEnd_free(struct LDKReplyShortChannelIdsEnd this_obj);
+       export function ReplyShortChannelIdsEnd_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ReplyShortChannelIdsEnd_free(this_obj);
+               // 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 {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ReplyShortChannelIdsEnd_get_chain_hash(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void ReplyShortChannelIdsEnd_set_chain_hash(struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function ReplyShortChannelIdsEnd_set_chain_hash(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ReplyShortChannelIdsEnd_set_chain_hash(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // bool ReplyShortChannelIdsEnd_get_full_information(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr);
+       export function ReplyShortChannelIdsEnd_get_full_information(this_ptr: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ReplyShortChannelIdsEnd_get_full_information(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ReplyShortChannelIdsEnd_set_full_information(struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr, bool val);
+       export function ReplyShortChannelIdsEnd_set_full_information(this_ptr: number, val: boolean): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ReplyShortChannelIdsEnd_set_full_information(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKReplyShortChannelIdsEnd ReplyShortChannelIdsEnd_new(struct LDKThirtyTwoBytes chain_hash_arg, bool full_information_arg);
+       export function ReplyShortChannelIdsEnd_new(chain_hash_arg: Uint8Array, full_information_arg: boolean): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ReplyShortChannelIdsEnd_new(encodeUint8Array(chain_hash_arg), full_information_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t ReplyShortChannelIdsEnd_clone_ptr(LDKReplyShortChannelIdsEnd *NONNULL_PTR arg);
+       export function ReplyShortChannelIdsEnd_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ReplyShortChannelIdsEnd_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_ReplyShortChannelIdsEnd_clone(orig);
+               return nativeResponseValue;
+       }
+       // void GossipTimestampFilter_free(struct LDKGossipTimestampFilter this_obj);
+       export function GossipTimestampFilter_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_GossipTimestampFilter_free(this_obj);
+               // 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 {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_GossipTimestampFilter_get_chain_hash(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void GossipTimestampFilter_set_chain_hash(struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function GossipTimestampFilter_set_chain_hash(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_GossipTimestampFilter_set_chain_hash(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // uint32_t GossipTimestampFilter_get_first_timestamp(const struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr);
+       export function GossipTimestampFilter_get_first_timestamp(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_GossipTimestampFilter_get_first_timestamp(this_ptr);
+               return nativeResponseValue;
+       }
+       // void GossipTimestampFilter_set_first_timestamp(struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr, uint32_t val);
+       export function GossipTimestampFilter_set_first_timestamp(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_GossipTimestampFilter_set_first_timestamp(this_ptr, val);
+               // debug statements here
+       }
+       // uint32_t GossipTimestampFilter_get_timestamp_range(const struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr);
+       export function GossipTimestampFilter_get_timestamp_range(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_GossipTimestampFilter_get_timestamp_range(this_ptr);
+               return nativeResponseValue;
+       }
+       // void GossipTimestampFilter_set_timestamp_range(struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr, uint32_t val);
+       export function GossipTimestampFilter_set_timestamp_range(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_GossipTimestampFilter_set_timestamp_range(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKGossipTimestampFilter GossipTimestampFilter_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_timestamp_arg, uint32_t timestamp_range_arg);
+       export function GossipTimestampFilter_new(chain_hash_arg: Uint8Array, first_timestamp_arg: number, timestamp_range_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_GossipTimestampFilter_new(encodeUint8Array(chain_hash_arg), first_timestamp_arg, timestamp_range_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t GossipTimestampFilter_clone_ptr(LDKGossipTimestampFilter *NONNULL_PTR arg);
+       export function GossipTimestampFilter_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_GossipTimestampFilter_clone_ptr(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.TS_GossipTimestampFilter_clone(orig);
+               return nativeResponseValue;
+       }
+       // void ErrorAction_free(struct LDKErrorAction this_ptr);
+       export function ErrorAction_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ErrorAction_free(this_ptr);
+               // debug statements here
+       }
+       // uint64_t ErrorAction_clone_ptr(LDKErrorAction *NONNULL_PTR arg);
+       export function ErrorAction_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ErrorAction_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKErrorAction ErrorAction_clone(const struct LDKErrorAction *NONNULL_PTR orig);
+       export function ErrorAction_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ErrorAction_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKErrorAction ErrorAction_disconnect_peer(struct LDKErrorMessage msg);
+       export function ErrorAction_disconnect_peer(msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ErrorAction_disconnect_peer(msg);
+               return nativeResponseValue;
+       }
+       // struct LDKErrorAction ErrorAction_ignore_error(void);
+       export function ErrorAction_ignore_error(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ErrorAction_ignore_error();
+               return nativeResponseValue;
+       }
+       // struct LDKErrorAction ErrorAction_ignore_and_log(enum LDKLevel a);
+       export function ErrorAction_ignore_and_log(a: Level): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ErrorAction_ignore_and_log(a);
+               return nativeResponseValue;
+       }
+       // struct LDKErrorAction ErrorAction_ignore_duplicate_gossip(void);
+       export function ErrorAction_ignore_duplicate_gossip(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ErrorAction_ignore_duplicate_gossip();
+               return nativeResponseValue;
+       }
+       // struct LDKErrorAction ErrorAction_send_error_message(struct LDKErrorMessage msg);
+       export function ErrorAction_send_error_message(msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ErrorAction_send_error_message(msg);
+               return nativeResponseValue;
+       }
+       // void LightningError_free(struct LDKLightningError this_obj);
+       export function LightningError_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LightningError_free(this_obj);
+               // debug statements here
+       }
+       // struct LDKStr LightningError_get_err(const struct LDKLightningError *NONNULL_PTR this_ptr);
+       export function LightningError_get_err(this_ptr: number): String {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LightningError_get_err(this_ptr);
+               return nativeResponseValue;
+       }
+       // void LightningError_set_err(struct LDKLightningError *NONNULL_PTR this_ptr, struct LDKStr val);
+       export function LightningError_set_err(this_ptr: number, val: String): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LightningError_set_err(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKErrorAction LightningError_get_action(const struct LDKLightningError *NONNULL_PTR this_ptr);
+       export function LightningError_get_action(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LightningError_get_action(this_ptr);
+               return nativeResponseValue;
+       }
+       // void LightningError_set_action(struct LDKLightningError *NONNULL_PTR this_ptr, struct LDKErrorAction val);
+       export function LightningError_set_action(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LightningError_set_action(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKLightningError LightningError_new(struct LDKStr err_arg, struct LDKErrorAction action_arg);
+       export function LightningError_new(err_arg: String, action_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LightningError_new(err_arg, action_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t LightningError_clone_ptr(LDKLightningError *NONNULL_PTR arg);
+       export function LightningError_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LightningError_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_LightningError_clone(orig);
+               return nativeResponseValue;
+       }
+       // void CommitmentUpdate_free(struct LDKCommitmentUpdate this_obj);
+       export function CommitmentUpdate_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentUpdate_free(this_obj);
+               // debug statements here
+       }
+       // struct LDKCVec_UpdateAddHTLCZ CommitmentUpdate_get_update_add_htlcs(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
+       export function CommitmentUpdate_get_update_add_htlcs(this_ptr: number): number[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentUpdate_get_update_add_htlcs(this_ptr);
+               return nativeResponseValue;
+       }
+       // 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 {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentUpdate_set_update_add_htlcs(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKCVec_UpdateFulfillHTLCZ CommitmentUpdate_get_update_fulfill_htlcs(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
+       export function CommitmentUpdate_get_update_fulfill_htlcs(this_ptr: number): number[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentUpdate_get_update_fulfill_htlcs(this_ptr);
+               return nativeResponseValue;
+       }
+       // void CommitmentUpdate_set_update_fulfill_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateFulfillHTLCZ val);
+       export function CommitmentUpdate_set_update_fulfill_htlcs(this_ptr: number, val: number[]): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentUpdate_set_update_fulfill_htlcs(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKCVec_UpdateFailHTLCZ CommitmentUpdate_get_update_fail_htlcs(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
+       export function CommitmentUpdate_get_update_fail_htlcs(this_ptr: number): number[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentUpdate_get_update_fail_htlcs(this_ptr);
+               return nativeResponseValue;
+       }
+       // void CommitmentUpdate_set_update_fail_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateFailHTLCZ val);
+       export function CommitmentUpdate_set_update_fail_htlcs(this_ptr: number, val: number[]): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentUpdate_set_update_fail_htlcs(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKCVec_UpdateFailMalformedHTLCZ CommitmentUpdate_get_update_fail_malformed_htlcs(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
+       export function CommitmentUpdate_get_update_fail_malformed_htlcs(this_ptr: number): number[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentUpdate_get_update_fail_malformed_htlcs(this_ptr);
+               return nativeResponseValue;
+       }
+       // void CommitmentUpdate_set_update_fail_malformed_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateFailMalformedHTLCZ val);
+       export function CommitmentUpdate_set_update_fail_malformed_htlcs(this_ptr: number, val: number[]): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentUpdate_set_update_fail_malformed_htlcs(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKUpdateFee CommitmentUpdate_get_update_fee(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
+       export function CommitmentUpdate_get_update_fee(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentUpdate_get_update_fee(this_ptr);
+               return nativeResponseValue;
+       }
+       // void CommitmentUpdate_set_update_fee(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKUpdateFee val);
+       export function CommitmentUpdate_set_update_fee(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentUpdate_set_update_fee(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKCommitmentSigned CommitmentUpdate_get_commitment_signed(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
+       export function CommitmentUpdate_get_commitment_signed(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentUpdate_get_commitment_signed(this_ptr);
+               return nativeResponseValue;
+       }
+       // void CommitmentUpdate_set_commitment_signed(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCommitmentSigned val);
+       export function CommitmentUpdate_set_commitment_signed(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentUpdate_set_commitment_signed(this_ptr, val);
+               // debug statements here
+       }
+       // 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);
+       export function CommitmentUpdate_new(update_add_htlcs_arg: number[], update_fulfill_htlcs_arg: number[], update_fail_htlcs_arg: number[], update_fail_malformed_htlcs_arg: number[], update_fee_arg: number, commitment_signed_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_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;
+       }
+       // uint64_t CommitmentUpdate_clone_ptr(LDKCommitmentUpdate *NONNULL_PTR arg);
+       export function CommitmentUpdate_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentUpdate_clone_ptr(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.TS_CommitmentUpdate_clone(orig);
+               return nativeResponseValue;
+       }
+       // void ChannelMessageHandler_free(struct LDKChannelMessageHandler this_ptr);
+       export function ChannelMessageHandler_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelMessageHandler_free(this_ptr);
+               // debug statements here
+       }
+       // void RoutingMessageHandler_free(struct LDKRoutingMessageHandler this_ptr);
+       export function RoutingMessageHandler_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RoutingMessageHandler_free(this_ptr);
+               // debug statements here
+       }
+       // struct LDKCVec_u8Z AcceptChannel_write(const struct LDKAcceptChannel *NONNULL_PTR obj);
+       export function AcceptChannel_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_AcceptChannel_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z AnnouncementSignatures_write(const struct LDKAnnouncementSignatures *NONNULL_PTR obj);
+       export function AnnouncementSignatures_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_AnnouncementSignatures_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_AnnouncementSignatures_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z ChannelReestablish_write(const struct LDKChannelReestablish *NONNULL_PTR obj);
+       export function ChannelReestablish_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelReestablish_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_ChannelReestablishDecodeErrorZ ChannelReestablish_read(struct LDKu8slice ser);
+       export function ChannelReestablish_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelReestablish_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z ClosingSigned_write(const struct LDKClosingSigned *NONNULL_PTR obj);
+       export function ClosingSigned_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingSigned_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingSigned_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z ClosingSignedFeeRange_write(const struct LDKClosingSignedFeeRange *NONNULL_PTR obj);
+       export function ClosingSignedFeeRange_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingSignedFeeRange_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ ClosingSignedFeeRange_read(struct LDKu8slice ser);
+       export function ClosingSignedFeeRange_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingSignedFeeRange_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z CommitmentSigned_write(const struct LDKCommitmentSigned *NONNULL_PTR obj);
+       export function CommitmentSigned_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentSigned_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentSigned_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z FundingCreated_write(const struct LDKFundingCreated *NONNULL_PTR obj);
+       export function FundingCreated_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FundingCreated_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_FundingCreated_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z FundingSigned_write(const struct LDKFundingSigned *NONNULL_PTR obj);
+       export function FundingSigned_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FundingSigned_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_FundingSigned_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z FundingLocked_write(const struct LDKFundingLocked *NONNULL_PTR obj);
+       export function FundingLocked_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_FundingLocked_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_FundingLocked_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z Init_write(const struct LDKInit *NONNULL_PTR obj);
+       export function Init_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Init_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_InitDecodeErrorZ Init_read(struct LDKu8slice ser);
+       export function Init_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Init_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z OpenChannel_write(const struct LDKOpenChannel *NONNULL_PTR obj);
+       export function OpenChannel_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_OpenChannel_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z RevokeAndACK_write(const struct LDKRevokeAndACK *NONNULL_PTR obj);
+       export function RevokeAndACK_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RevokeAndACK_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_RevokeAndACK_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z Shutdown_write(const struct LDKShutdown *NONNULL_PTR obj);
+       export function Shutdown_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Shutdown_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_Shutdown_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z UpdateFailHTLC_write(const struct LDKUpdateFailHTLC *NONNULL_PTR obj);
+       export function UpdateFailHTLC_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFailHTLC_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFailHTLC_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z UpdateFailMalformedHTLC_write(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR obj);
+       export function UpdateFailMalformedHTLC_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFailMalformedHTLC_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFailMalformedHTLC_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z UpdateFee_write(const struct LDKUpdateFee *NONNULL_PTR obj);
+       export function UpdateFee_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFee_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFee_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z UpdateFulfillHTLC_write(const struct LDKUpdateFulfillHTLC *NONNULL_PTR obj);
+       export function UpdateFulfillHTLC_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFulfillHTLC_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateFulfillHTLC_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z UpdateAddHTLC_write(const struct LDKUpdateAddHTLC *NONNULL_PTR obj);
+       export function UpdateAddHTLC_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateAddHTLC_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_UpdateAddHTLC_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z Ping_write(const struct LDKPing *NONNULL_PTR obj);
+       export function Ping_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Ping_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_PingDecodeErrorZ Ping_read(struct LDKu8slice ser);
+       export function Ping_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Ping_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z Pong_write(const struct LDKPong *NONNULL_PTR obj);
+       export function Pong_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Pong_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_PongDecodeErrorZ Pong_read(struct LDKu8slice ser);
+       export function Pong_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Pong_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z UnsignedChannelAnnouncement_write(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR obj);
+       export function UnsignedChannelAnnouncement_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelAnnouncement_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ UnsignedChannelAnnouncement_read(struct LDKu8slice ser);
+       export function UnsignedChannelAnnouncement_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelAnnouncement_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z ChannelAnnouncement_write(const struct LDKChannelAnnouncement *NONNULL_PTR obj);
+       export function ChannelAnnouncement_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelAnnouncement_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelAnnouncement_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z UnsignedChannelUpdate_write(const struct LDKUnsignedChannelUpdate *NONNULL_PTR obj);
+       export function UnsignedChannelUpdate_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelUpdate_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ UnsignedChannelUpdate_read(struct LDKu8slice ser);
+       export function UnsignedChannelUpdate_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedChannelUpdate_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z ChannelUpdate_write(const struct LDKChannelUpdate *NONNULL_PTR obj);
+       export function ChannelUpdate_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelUpdate_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelUpdate_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z ErrorMessage_write(const struct LDKErrorMessage *NONNULL_PTR obj);
+       export function ErrorMessage_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ErrorMessage_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_ErrorMessageDecodeErrorZ ErrorMessage_read(struct LDKu8slice ser);
+       export function ErrorMessage_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ErrorMessage_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z UnsignedNodeAnnouncement_write(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR obj);
+       export function UnsignedNodeAnnouncement_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedNodeAnnouncement_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ UnsignedNodeAnnouncement_read(struct LDKu8slice ser);
+       export function UnsignedNodeAnnouncement_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_UnsignedNodeAnnouncement_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z NodeAnnouncement_write(const struct LDKNodeAnnouncement *NONNULL_PTR obj);
+       export function NodeAnnouncement_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeAnnouncement_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_NodeAnnouncement_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_QueryShortChannelIdsDecodeErrorZ QueryShortChannelIds_read(struct LDKu8slice ser);
+       export function QueryShortChannelIds_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_QueryShortChannelIds_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z QueryShortChannelIds_write(const struct LDKQueryShortChannelIds *NONNULL_PTR obj);
+       export function QueryShortChannelIds_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_QueryShortChannelIds_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCVec_u8Z ReplyShortChannelIdsEnd_write(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR obj);
+       export function ReplyShortChannelIdsEnd_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ReplyShortChannelIdsEnd_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ ReplyShortChannelIdsEnd_read(struct LDKu8slice ser);
+       export function ReplyShortChannelIdsEnd_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ReplyShortChannelIdsEnd_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES uint32_t QueryChannelRange_end_blocknum(const struct LDKQueryChannelRange *NONNULL_PTR this_arg);
+       export function QueryChannelRange_end_blocknum(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_QueryChannelRange_end_blocknum(this_arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z QueryChannelRange_write(const struct LDKQueryChannelRange *NONNULL_PTR obj);
+       export function QueryChannelRange_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_QueryChannelRange_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_QueryChannelRangeDecodeErrorZ QueryChannelRange_read(struct LDKu8slice ser);
+       export function QueryChannelRange_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_QueryChannelRange_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_ReplyChannelRangeDecodeErrorZ ReplyChannelRange_read(struct LDKu8slice ser);
+       export function ReplyChannelRange_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ReplyChannelRange_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z ReplyChannelRange_write(const struct LDKReplyChannelRange *NONNULL_PTR obj);
+       export function ReplyChannelRange_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ReplyChannelRange_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCVec_u8Z GossipTimestampFilter_write(const struct LDKGossipTimestampFilter *NONNULL_PTR obj);
+       export function GossipTimestampFilter_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_GossipTimestampFilter_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_GossipTimestampFilterDecodeErrorZ GossipTimestampFilter_read(struct LDKu8slice ser);
+       export function GossipTimestampFilter_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_GossipTimestampFilter_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // void CustomMessageHandler_free(struct LDKCustomMessageHandler this_ptr);
+       export function CustomMessageHandler_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CustomMessageHandler_free(this_ptr);
+               // debug statements here
+       }
+       // void IgnoringMessageHandler_free(struct LDKIgnoringMessageHandler this_obj);
+       export function IgnoringMessageHandler_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_IgnoringMessageHandler_free(this_obj);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKIgnoringMessageHandler IgnoringMessageHandler_new(void);
+       export function IgnoringMessageHandler_new(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_IgnoringMessageHandler_new();
+               return nativeResponseValue;
+       }
+       // struct LDKMessageSendEventsProvider IgnoringMessageHandler_as_MessageSendEventsProvider(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
+       export function IgnoringMessageHandler_as_MessageSendEventsProvider(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_IgnoringMessageHandler_as_MessageSendEventsProvider(this_arg);
+               return nativeResponseValue;
+       }
+       // struct LDKRoutingMessageHandler IgnoringMessageHandler_as_RoutingMessageHandler(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
+       export function IgnoringMessageHandler_as_RoutingMessageHandler(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_IgnoringMessageHandler_as_RoutingMessageHandler(this_arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCustomMessageReader IgnoringMessageHandler_as_CustomMessageReader(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
+       export function IgnoringMessageHandler_as_CustomMessageReader(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_IgnoringMessageHandler_as_CustomMessageReader(this_arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCustomMessageHandler IgnoringMessageHandler_as_CustomMessageHandler(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
+       export function IgnoringMessageHandler_as_CustomMessageHandler(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_IgnoringMessageHandler_as_CustomMessageHandler(this_arg);
+               return nativeResponseValue;
+       }
+       // void ErroringMessageHandler_free(struct LDKErroringMessageHandler this_obj);
+       export function ErroringMessageHandler_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ErroringMessageHandler_free(this_obj);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKErroringMessageHandler ErroringMessageHandler_new(void);
+       export function ErroringMessageHandler_new(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ErroringMessageHandler_new();
+               return nativeResponseValue;
+       }
+       // struct LDKMessageSendEventsProvider ErroringMessageHandler_as_MessageSendEventsProvider(const struct LDKErroringMessageHandler *NONNULL_PTR this_arg);
+       export function ErroringMessageHandler_as_MessageSendEventsProvider(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ErroringMessageHandler_as_MessageSendEventsProvider(this_arg);
+               return nativeResponseValue;
+       }
+       // struct LDKChannelMessageHandler ErroringMessageHandler_as_ChannelMessageHandler(const struct LDKErroringMessageHandler *NONNULL_PTR this_arg);
+       export function ErroringMessageHandler_as_ChannelMessageHandler(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ErroringMessageHandler_as_ChannelMessageHandler(this_arg);
+               return nativeResponseValue;
+       }
+       // void MessageHandler_free(struct LDKMessageHandler this_obj);
+       export function MessageHandler_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageHandler_free(this_obj);
+               // debug statements here
+       }
+       // const struct LDKChannelMessageHandler *MessageHandler_get_chan_handler(const struct LDKMessageHandler *NONNULL_PTR this_ptr);
+       export function MessageHandler_get_chan_handler(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageHandler_get_chan_handler(this_ptr);
+               return nativeResponseValue;
+       }
+       // void MessageHandler_set_chan_handler(struct LDKMessageHandler *NONNULL_PTR this_ptr, struct LDKChannelMessageHandler val);
+       export function MessageHandler_set_chan_handler(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageHandler_set_chan_handler(this_ptr, val);
+               // debug statements here
+       }
+       // const struct LDKRoutingMessageHandler *MessageHandler_get_route_handler(const struct LDKMessageHandler *NONNULL_PTR this_ptr);
+       export function MessageHandler_get_route_handler(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageHandler_get_route_handler(this_ptr);
+               return nativeResponseValue;
+       }
+       // void MessageHandler_set_route_handler(struct LDKMessageHandler *NONNULL_PTR this_ptr, struct LDKRoutingMessageHandler val);
+       export function MessageHandler_set_route_handler(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageHandler_set_route_handler(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKMessageHandler MessageHandler_new(struct LDKChannelMessageHandler chan_handler_arg, struct LDKRoutingMessageHandler route_handler_arg);
+       export function MessageHandler_new(chan_handler_arg: number, route_handler_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MessageHandler_new(chan_handler_arg, route_handler_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t SocketDescriptor_clone_ptr(LDKSocketDescriptor *NONNULL_PTR arg);
+       export function SocketDescriptor_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_SocketDescriptor_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKSocketDescriptor SocketDescriptor_clone(const struct LDKSocketDescriptor *NONNULL_PTR orig);
+       export function SocketDescriptor_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_SocketDescriptor_clone(orig);
+               return nativeResponseValue;
+       }
+       // void SocketDescriptor_free(struct LDKSocketDescriptor this_ptr);
+       export function SocketDescriptor_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_SocketDescriptor_free(this_ptr);
+               // debug statements here
+       }
+       // void PeerHandleError_free(struct LDKPeerHandleError this_obj);
+       export function PeerHandleError_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_PeerHandleError_free(this_obj);
+               // debug statements here
+       }
+       // 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) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_PeerHandleError_get_no_connection_possible(this_ptr);
+               return nativeResponseValue;
+       }
+       // void PeerHandleError_set_no_connection_possible(struct LDKPeerHandleError *NONNULL_PTR this_ptr, bool val);
+       export function PeerHandleError_set_no_connection_possible(this_ptr: number, val: boolean): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_PeerHandleError_set_no_connection_possible(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKPeerHandleError PeerHandleError_new(bool no_connection_possible_arg);
+       export function PeerHandleError_new(no_connection_possible_arg: boolean): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_PeerHandleError_new(no_connection_possible_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t PeerHandleError_clone_ptr(LDKPeerHandleError *NONNULL_PTR arg);
+       export function PeerHandleError_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_PeerHandleError_clone_ptr(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.TS_PeerHandleError_clone(orig);
+               return nativeResponseValue;
+       }
+       // void PeerManager_free(struct LDKPeerManager this_obj);
+       export function PeerManager_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_PeerManager_free(this_obj);
+               // debug statements here
+       }
+       // 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, struct LDKCustomMessageHandler custom_message_handler);
+       export function PeerManager_new(message_handler: number, our_node_secret: Uint8Array, ephemeral_random_data: Uint8Array, logger: number, custom_message_handler: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_PeerManager_new(message_handler, encodeUint8Array(our_node_secret), encodeUint8Array(ephemeral_random_data), logger, custom_message_handler);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCVec_PublicKeyZ PeerManager_get_peer_node_ids(const struct LDKPeerManager *NONNULL_PTR this_arg);
+       export function PeerManager_get_peer_node_ids(this_arg: number): Uint8Array[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_PeerManager_get_peer_node_ids(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCResult_CVec_u8ZPeerHandleErrorZ PeerManager_new_outbound_connection(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, struct LDKSocketDescriptor descriptor);
+       export function PeerManager_new_outbound_connection(this_arg: number, their_node_id: Uint8Array, descriptor: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_PeerManager_new_outbound_connection(this_arg, encodeUint8Array(their_node_id), descriptor);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCResult_NonePeerHandleErrorZ PeerManager_new_inbound_connection(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKSocketDescriptor descriptor);
+       export function PeerManager_new_inbound_connection(this_arg: number, descriptor: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_PeerManager_new_inbound_connection(this_arg, descriptor);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCResult_NonePeerHandleErrorZ PeerManager_write_buffer_space_avail(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKSocketDescriptor *NONNULL_PTR descriptor);
+       export function PeerManager_write_buffer_space_avail(this_arg: number, descriptor: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_PeerManager_write_buffer_space_avail(this_arg, descriptor);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCResult_boolPeerHandleErrorZ PeerManager_read_event(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKSocketDescriptor *NONNULL_PTR peer_descriptor, struct LDKu8slice data);
+       export function PeerManager_read_event(this_arg: number, peer_descriptor: number, data: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_PeerManager_read_event(this_arg, peer_descriptor, encodeUint8Array(data));
+               return nativeResponseValue;
+       }
+       // void PeerManager_process_events(const struct LDKPeerManager *NONNULL_PTR this_arg);
+       export function PeerManager_process_events(this_arg: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_PeerManager_process_events(this_arg);
+               // debug statements here
+       }
+       // void PeerManager_socket_disconnected(const struct LDKPeerManager *NONNULL_PTR this_arg, const struct LDKSocketDescriptor *NONNULL_PTR descriptor);
+       export function PeerManager_socket_disconnected(this_arg: number, descriptor: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_PeerManager_socket_disconnected(this_arg, descriptor);
+               // debug statements here
+       }
+       // void PeerManager_disconnect_by_node_id(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKPublicKey node_id, bool no_connection_possible);
+       export function PeerManager_disconnect_by_node_id(this_arg: number, node_id: Uint8Array, no_connection_possible: boolean): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_PeerManager_disconnect_by_node_id(this_arg, encodeUint8Array(node_id), no_connection_possible);
+               // debug statements here
+       }
+       // void PeerManager_disconnect_all_peers(const struct LDKPeerManager *NONNULL_PTR this_arg);
+       export function PeerManager_disconnect_all_peers(this_arg: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_PeerManager_disconnect_all_peers(this_arg);
+               // debug statements here
+       }
+       // void PeerManager_timer_tick_occurred(const struct LDKPeerManager *NONNULL_PTR this_arg);
+       export function PeerManager_timer_tick_occurred(this_arg: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_PeerManager_timer_tick_occurred(this_arg);
+               // debug statements here
+       }
+       // uint64_t htlc_success_tx_weight(bool opt_anchors);
+       export function htlc_success_tx_weight(opt_anchors: boolean): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_htlc_success_tx_weight(opt_anchors);
+               return nativeResponseValue;
+       }
+       // uint64_t htlc_timeout_tx_weight(bool opt_anchors);
+       export function htlc_timeout_tx_weight(opt_anchors: boolean): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_htlc_timeout_tx_weight(opt_anchors);
+               return nativeResponseValue;
+       }
+       // struct LDKThirtyTwoBytes build_commitment_secret(const uint8_t (*commitment_seed)[32], uint64_t idx);
+       export function build_commitment_secret(commitment_seed: Uint8Array, idx: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_build_commitment_secret(encodeUint8Array(commitment_seed), idx);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKTransaction build_closing_transaction(uint64_t to_holder_value_sat, uint64_t to_counterparty_value_sat, struct LDKCVec_u8Z to_holder_script, struct LDKCVec_u8Z to_counterparty_script, struct LDKOutPoint funding_outpoint);
+       export function build_closing_transaction(to_holder_value_sat: number, to_counterparty_value_sat: number, to_holder_script: Uint8Array, to_counterparty_script: Uint8Array, funding_outpoint: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_build_closing_transaction(to_holder_value_sat, to_counterparty_value_sat, encodeUint8Array(to_holder_script), encodeUint8Array(to_counterparty_script), funding_outpoint);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_derive_private_key(encodeUint8Array(per_commitment_point), encodeUint8Array(base_secret));
+               return nativeResponseValue;
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_derive_public_key(encodeUint8Array(per_commitment_point), encodeUint8Array(base_point));
+               return nativeResponseValue;
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_derive_private_revocation_key(encodeUint8Array(per_commitment_secret), encodeUint8Array(countersignatory_revocation_base_secret));
+               return nativeResponseValue;
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_derive_public_revocation_key(encodeUint8Array(per_commitment_point), encodeUint8Array(countersignatory_revocation_base_point));
+               return nativeResponseValue;
+       }
+       // void TxCreationKeys_free(struct LDKTxCreationKeys this_obj);
+       export function TxCreationKeys_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TxCreationKeys_free(this_obj);
+               // debug statements here
+       }
+       // 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) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TxCreationKeys_get_per_commitment_point(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void TxCreationKeys_set_per_commitment_point(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function TxCreationKeys_set_per_commitment_point(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TxCreationKeys_set_per_commitment_point(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKPublicKey TxCreationKeys_get_revocation_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
+       export function TxCreationKeys_get_revocation_key(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TxCreationKeys_get_revocation_key(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void TxCreationKeys_set_revocation_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function TxCreationKeys_set_revocation_key(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TxCreationKeys_set_revocation_key(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKPublicKey TxCreationKeys_get_broadcaster_htlc_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
+       export function TxCreationKeys_get_broadcaster_htlc_key(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TxCreationKeys_get_broadcaster_htlc_key(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void TxCreationKeys_set_broadcaster_htlc_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function TxCreationKeys_set_broadcaster_htlc_key(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TxCreationKeys_set_broadcaster_htlc_key(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKPublicKey TxCreationKeys_get_countersignatory_htlc_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
+       export function TxCreationKeys_get_countersignatory_htlc_key(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TxCreationKeys_get_countersignatory_htlc_key(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void TxCreationKeys_set_countersignatory_htlc_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function TxCreationKeys_set_countersignatory_htlc_key(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TxCreationKeys_set_countersignatory_htlc_key(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKPublicKey TxCreationKeys_get_broadcaster_delayed_payment_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
+       export function TxCreationKeys_get_broadcaster_delayed_payment_key(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TxCreationKeys_get_broadcaster_delayed_payment_key(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void TxCreationKeys_set_broadcaster_delayed_payment_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function TxCreationKeys_set_broadcaster_delayed_payment_key(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TxCreationKeys_set_broadcaster_delayed_payment_key(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // 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);
+       export function TxCreationKeys_new(per_commitment_point_arg: Uint8Array, revocation_key_arg: Uint8Array, broadcaster_htlc_key_arg: Uint8Array, countersignatory_htlc_key_arg: Uint8Array, broadcaster_delayed_payment_key_arg: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TxCreationKeys_new(encodeUint8Array(per_commitment_point_arg), encodeUint8Array(revocation_key_arg), encodeUint8Array(broadcaster_htlc_key_arg), encodeUint8Array(countersignatory_htlc_key_arg), encodeUint8Array(broadcaster_delayed_payment_key_arg));
+               return nativeResponseValue;
+       }
+       // uint64_t TxCreationKeys_clone_ptr(LDKTxCreationKeys *NONNULL_PTR arg);
+       export function TxCreationKeys_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TxCreationKeys_clone_ptr(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.TS_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) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TxCreationKeys_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_TxCreationKeys_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // void ChannelPublicKeys_free(struct LDKChannelPublicKeys this_obj);
+       export function ChannelPublicKeys_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelPublicKeys_free(this_obj);
+               // debug statements here
+       }
+       // 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) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelPublicKeys_get_funding_pubkey(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void ChannelPublicKeys_set_funding_pubkey(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function ChannelPublicKeys_set_funding_pubkey(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelPublicKeys_set_funding_pubkey(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKPublicKey ChannelPublicKeys_get_revocation_basepoint(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
+       export function ChannelPublicKeys_get_revocation_basepoint(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelPublicKeys_get_revocation_basepoint(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void ChannelPublicKeys_set_revocation_basepoint(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function ChannelPublicKeys_set_revocation_basepoint(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelPublicKeys_set_revocation_basepoint(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKPublicKey ChannelPublicKeys_get_payment_point(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
+       export function ChannelPublicKeys_get_payment_point(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelPublicKeys_get_payment_point(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void ChannelPublicKeys_set_payment_point(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function ChannelPublicKeys_set_payment_point(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelPublicKeys_set_payment_point(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKPublicKey ChannelPublicKeys_get_delayed_payment_basepoint(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
+       export function ChannelPublicKeys_get_delayed_payment_basepoint(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelPublicKeys_get_delayed_payment_basepoint(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void ChannelPublicKeys_set_delayed_payment_basepoint(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function ChannelPublicKeys_set_delayed_payment_basepoint(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelPublicKeys_set_delayed_payment_basepoint(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKPublicKey ChannelPublicKeys_get_htlc_basepoint(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
+       export function ChannelPublicKeys_get_htlc_basepoint(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelPublicKeys_get_htlc_basepoint(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void ChannelPublicKeys_set_htlc_basepoint(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function ChannelPublicKeys_set_htlc_basepoint(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelPublicKeys_set_htlc_basepoint(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // 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);
+       export function ChannelPublicKeys_new(funding_pubkey_arg: Uint8Array, revocation_basepoint_arg: Uint8Array, payment_point_arg: Uint8Array, delayed_payment_basepoint_arg: Uint8Array, htlc_basepoint_arg: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelPublicKeys_new(encodeUint8Array(funding_pubkey_arg), encodeUint8Array(revocation_basepoint_arg), encodeUint8Array(payment_point_arg), encodeUint8Array(delayed_payment_basepoint_arg), encodeUint8Array(htlc_basepoint_arg));
+               return nativeResponseValue;
+       }
+       // uint64_t ChannelPublicKeys_clone_ptr(LDKChannelPublicKeys *NONNULL_PTR arg);
+       export function ChannelPublicKeys_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelPublicKeys_clone_ptr(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.TS_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) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelPublicKeys_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelPublicKeys_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_TxCreationKeys_derive_new(encodeUint8Array(per_commitment_point), encodeUint8Array(broadcaster_delayed_payment_base), encodeUint8Array(broadcaster_htlc_base), encodeUint8Array(countersignatory_revocation_base), encodeUint8Array(countersignatory_htlc_base));
+               return nativeResponseValue;
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_TxCreationKeys_from_channel_static_keys(encodeUint8Array(per_commitment_point), broadcaster_keys, countersignatory_keys);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z get_revokeable_redeemscript(struct LDKPublicKey revocation_key, uint16_t contest_delay, struct LDKPublicKey broadcaster_delayed_payment_key);
+       export function get_revokeable_redeemscript(revocation_key: Uint8Array, contest_delay: number, broadcaster_delayed_payment_key: Uint8Array): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_get_revokeable_redeemscript(encodeUint8Array(revocation_key), contest_delay, encodeUint8Array(broadcaster_delayed_payment_key));
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void HTLCOutputInCommitment_free(struct LDKHTLCOutputInCommitment this_obj);
+       export function HTLCOutputInCommitment_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_HTLCOutputInCommitment_free(this_obj);
+               // debug statements here
+       }
+       // bool HTLCOutputInCommitment_get_offered(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
+       export function HTLCOutputInCommitment_get_offered(this_ptr: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_HTLCOutputInCommitment_get_offered(this_ptr);
+               return nativeResponseValue;
+       }
+       // void HTLCOutputInCommitment_set_offered(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, bool val);
+       export function HTLCOutputInCommitment_set_offered(this_ptr: number, val: boolean): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_HTLCOutputInCommitment_set_offered(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t HTLCOutputInCommitment_get_amount_msat(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
+       export function HTLCOutputInCommitment_get_amount_msat(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_HTLCOutputInCommitment_get_amount_msat(this_ptr);
+               return nativeResponseValue;
+       }
+       // void HTLCOutputInCommitment_set_amount_msat(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, uint64_t val);
+       export function HTLCOutputInCommitment_set_amount_msat(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_HTLCOutputInCommitment_set_amount_msat(this_ptr, val);
+               // debug statements here
+       }
+       // uint32_t HTLCOutputInCommitment_get_cltv_expiry(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
+       export function HTLCOutputInCommitment_get_cltv_expiry(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_HTLCOutputInCommitment_get_cltv_expiry(this_ptr);
+               return nativeResponseValue;
+       }
+       // void HTLCOutputInCommitment_set_cltv_expiry(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, uint32_t val);
+       export function HTLCOutputInCommitment_set_cltv_expiry(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_HTLCOutputInCommitment_set_cltv_expiry(this_ptr, val);
+               // debug statements here
+       }
+       // const uint8_t (*HTLCOutputInCommitment_get_payment_hash(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr))[32];
+       export function HTLCOutputInCommitment_get_payment_hash(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_HTLCOutputInCommitment_get_payment_hash(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void HTLCOutputInCommitment_set_payment_hash(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function HTLCOutputInCommitment_set_payment_hash(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_HTLCOutputInCommitment_set_payment_hash(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKCOption_u32Z HTLCOutputInCommitment_get_transaction_output_index(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
+       export function HTLCOutputInCommitment_get_transaction_output_index(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_HTLCOutputInCommitment_get_transaction_output_index(this_ptr);
+               return nativeResponseValue;
+       }
+       // void HTLCOutputInCommitment_set_transaction_output_index(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, struct LDKCOption_u32Z val);
+       export function HTLCOutputInCommitment_set_transaction_output_index(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_HTLCOutputInCommitment_set_transaction_output_index(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKHTLCOutputInCommitment HTLCOutputInCommitment_new(bool offered_arg, uint64_t amount_msat_arg, uint32_t cltv_expiry_arg, struct LDKThirtyTwoBytes payment_hash_arg, struct LDKCOption_u32Z transaction_output_index_arg);
+       export function HTLCOutputInCommitment_new(offered_arg: boolean, amount_msat_arg: number, cltv_expiry_arg: number, payment_hash_arg: Uint8Array, transaction_output_index_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_HTLCOutputInCommitment_new(offered_arg, amount_msat_arg, cltv_expiry_arg, encodeUint8Array(payment_hash_arg), transaction_output_index_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t HTLCOutputInCommitment_clone_ptr(LDKHTLCOutputInCommitment *NONNULL_PTR arg);
+       export function HTLCOutputInCommitment_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_HTLCOutputInCommitment_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_HTLCOutputInCommitment_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z HTLCOutputInCommitment_write(const struct LDKHTLCOutputInCommitment *NONNULL_PTR obj);
+       export function HTLCOutputInCommitment_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_HTLCOutputInCommitment_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_HTLCOutputInCommitment_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z get_htlc_redeemscript(const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc, bool opt_anchors, const struct LDKTxCreationKeys *NONNULL_PTR keys);
+       export function get_htlc_redeemscript(htlc: number, opt_anchors: boolean, keys: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_get_htlc_redeemscript(htlc, opt_anchors, keys);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCVec_u8Z make_funding_redeemscript(struct LDKPublicKey broadcaster, struct LDKPublicKey countersignatory);
+       export function make_funding_redeemscript(broadcaster: Uint8Array, countersignatory: Uint8Array): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_make_funding_redeemscript(encodeUint8Array(broadcaster), encodeUint8Array(countersignatory));
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKTransaction build_htlc_transaction(const uint8_t (*commitment_txid)[32], uint32_t feerate_per_kw, uint16_t contest_delay, const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc, bool opt_anchors, struct LDKPublicKey broadcaster_delayed_payment_key, struct LDKPublicKey revocation_key);
+       export function build_htlc_transaction(commitment_txid: Uint8Array, feerate_per_kw: number, contest_delay: number, htlc: number, opt_anchors: boolean, broadcaster_delayed_payment_key: Uint8Array, revocation_key: Uint8Array): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_build_htlc_transaction(encodeUint8Array(commitment_txid), feerate_per_kw, contest_delay, htlc, opt_anchors, encodeUint8Array(broadcaster_delayed_payment_key), encodeUint8Array(revocation_key));
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCVec_u8Z get_anchor_redeemscript(struct LDKPublicKey funding_pubkey);
+       export function get_anchor_redeemscript(funding_pubkey: Uint8Array): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_get_anchor_redeemscript(encodeUint8Array(funding_pubkey));
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void ChannelTransactionParameters_free(struct LDKChannelTransactionParameters this_obj);
+       export function ChannelTransactionParameters_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelTransactionParameters_free(this_obj);
+               // debug statements here
+       }
+       // 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) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelTransactionParameters_get_holder_pubkeys(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelTransactionParameters_set_holder_pubkeys(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKChannelPublicKeys val);
+       export function ChannelTransactionParameters_set_holder_pubkeys(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelTransactionParameters_set_holder_pubkeys(this_ptr, val);
+               // debug statements here
+       }
+       // uint16_t ChannelTransactionParameters_get_holder_selected_contest_delay(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
+       export function ChannelTransactionParameters_get_holder_selected_contest_delay(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelTransactionParameters_get_holder_selected_contest_delay(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelTransactionParameters_set_holder_selected_contest_delay(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, uint16_t val);
+       export function ChannelTransactionParameters_set_holder_selected_contest_delay(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelTransactionParameters_set_holder_selected_contest_delay(this_ptr, val);
+               // debug statements here
+       }
+       // bool ChannelTransactionParameters_get_is_outbound_from_holder(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
+       export function ChannelTransactionParameters_get_is_outbound_from_holder(this_ptr: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelTransactionParameters_get_is_outbound_from_holder(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelTransactionParameters_set_is_outbound_from_holder(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, bool val);
+       export function ChannelTransactionParameters_set_is_outbound_from_holder(this_ptr: number, val: boolean): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelTransactionParameters_set_is_outbound_from_holder(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKCounterpartyChannelTransactionParameters ChannelTransactionParameters_get_counterparty_parameters(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
+       export function ChannelTransactionParameters_get_counterparty_parameters(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelTransactionParameters_get_counterparty_parameters(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelTransactionParameters_set_counterparty_parameters(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKCounterpartyChannelTransactionParameters val);
+       export function ChannelTransactionParameters_set_counterparty_parameters(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelTransactionParameters_set_counterparty_parameters(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKOutPoint ChannelTransactionParameters_get_funding_outpoint(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
+       export function ChannelTransactionParameters_get_funding_outpoint(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelTransactionParameters_get_funding_outpoint(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelTransactionParameters_set_funding_outpoint(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKOutPoint val);
+       export function ChannelTransactionParameters_set_funding_outpoint(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelTransactionParameters_set_funding_outpoint(this_ptr, val);
+               // debug statements here
+       }
+       // enum LDKCOption_NoneZ ChannelTransactionParameters_get_opt_anchors(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
+       export function ChannelTransactionParameters_get_opt_anchors(this_ptr: number): COption_NoneZ {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelTransactionParameters_get_opt_anchors(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelTransactionParameters_set_opt_anchors(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, enum LDKCOption_NoneZ val);
+       export function ChannelTransactionParameters_set_opt_anchors(this_ptr: number, val: COption_NoneZ): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelTransactionParameters_set_opt_anchors(this_ptr, val);
+               // debug statements here
+       }
+       // 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, enum LDKCOption_NoneZ opt_anchors_arg);
+       export function ChannelTransactionParameters_new(holder_pubkeys_arg: number, holder_selected_contest_delay_arg: number, is_outbound_from_holder_arg: boolean, counterparty_parameters_arg: number, funding_outpoint_arg: number, opt_anchors_arg: COption_NoneZ): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelTransactionParameters_new(holder_pubkeys_arg, holder_selected_contest_delay_arg, is_outbound_from_holder_arg, counterparty_parameters_arg, funding_outpoint_arg, opt_anchors_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t ChannelTransactionParameters_clone_ptr(LDKChannelTransactionParameters *NONNULL_PTR arg);
+       export function ChannelTransactionParameters_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelTransactionParameters_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_ChannelTransactionParameters_clone(orig);
+               return nativeResponseValue;
+       }
+       // void CounterpartyChannelTransactionParameters_free(struct LDKCounterpartyChannelTransactionParameters this_obj);
+       export function CounterpartyChannelTransactionParameters_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CounterpartyChannelTransactionParameters_free(this_obj);
+               // debug statements here
+       }
+       // struct LDKChannelPublicKeys CounterpartyChannelTransactionParameters_get_pubkeys(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr);
+       export function CounterpartyChannelTransactionParameters_get_pubkeys(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CounterpartyChannelTransactionParameters_get_pubkeys(this_ptr);
+               return nativeResponseValue;
+       }
+       // void CounterpartyChannelTransactionParameters_set_pubkeys(struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKChannelPublicKeys val);
+       export function CounterpartyChannelTransactionParameters_set_pubkeys(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CounterpartyChannelTransactionParameters_set_pubkeys(this_ptr, val);
+               // debug statements here
+       }
+       // uint16_t CounterpartyChannelTransactionParameters_get_selected_contest_delay(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr);
+       export function CounterpartyChannelTransactionParameters_get_selected_contest_delay(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CounterpartyChannelTransactionParameters_get_selected_contest_delay(this_ptr);
+               return nativeResponseValue;
+       }
+       // void CounterpartyChannelTransactionParameters_set_selected_contest_delay(struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr, uint16_t val);
+       export function CounterpartyChannelTransactionParameters_set_selected_contest_delay(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CounterpartyChannelTransactionParameters_set_selected_contest_delay(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKCounterpartyChannelTransactionParameters CounterpartyChannelTransactionParameters_new(struct LDKChannelPublicKeys pubkeys_arg, uint16_t selected_contest_delay_arg);
+       export function CounterpartyChannelTransactionParameters_new(pubkeys_arg: number, selected_contest_delay_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CounterpartyChannelTransactionParameters_new(pubkeys_arg, selected_contest_delay_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t CounterpartyChannelTransactionParameters_clone_ptr(LDKCounterpartyChannelTransactionParameters *NONNULL_PTR arg);
+       export function CounterpartyChannelTransactionParameters_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CounterpartyChannelTransactionParameters_clone_ptr(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.TS_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) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelTransactionParameters_is_populated(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKDirectedChannelTransactionParameters ChannelTransactionParameters_as_holder_broadcastable(const struct LDKChannelTransactionParameters *NONNULL_PTR this_arg);
+       export function ChannelTransactionParameters_as_holder_broadcastable(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelTransactionParameters_as_holder_broadcastable(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKDirectedChannelTransactionParameters ChannelTransactionParameters_as_counterparty_broadcastable(const struct LDKChannelTransactionParameters *NONNULL_PTR this_arg);
+       export function ChannelTransactionParameters_as_counterparty_broadcastable(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelTransactionParameters_as_counterparty_broadcastable(this_arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z CounterpartyChannelTransactionParameters_write(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR obj);
+       export function CounterpartyChannelTransactionParameters_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CounterpartyChannelTransactionParameters_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_CounterpartyChannelTransactionParameters_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z ChannelTransactionParameters_write(const struct LDKChannelTransactionParameters *NONNULL_PTR obj);
+       export function ChannelTransactionParameters_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelTransactionParameters_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelTransactionParameters_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // void DirectedChannelTransactionParameters_free(struct LDKDirectedChannelTransactionParameters this_obj);
+       export function DirectedChannelTransactionParameters_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DirectedChannelTransactionParameters_free(this_obj);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKChannelPublicKeys DirectedChannelTransactionParameters_broadcaster_pubkeys(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
+       export function DirectedChannelTransactionParameters_broadcaster_pubkeys(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DirectedChannelTransactionParameters_broadcaster_pubkeys(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKChannelPublicKeys DirectedChannelTransactionParameters_countersignatory_pubkeys(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
+       export function DirectedChannelTransactionParameters_countersignatory_pubkeys(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DirectedChannelTransactionParameters_countersignatory_pubkeys(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES uint16_t DirectedChannelTransactionParameters_contest_delay(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
+       export function DirectedChannelTransactionParameters_contest_delay(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DirectedChannelTransactionParameters_contest_delay(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES bool DirectedChannelTransactionParameters_is_outbound(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
+       export function DirectedChannelTransactionParameters_is_outbound(this_arg: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DirectedChannelTransactionParameters_is_outbound(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKOutPoint DirectedChannelTransactionParameters_funding_outpoint(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
+       export function DirectedChannelTransactionParameters_funding_outpoint(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DirectedChannelTransactionParameters_funding_outpoint(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES bool DirectedChannelTransactionParameters_opt_anchors(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
+       export function DirectedChannelTransactionParameters_opt_anchors(this_arg: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DirectedChannelTransactionParameters_opt_anchors(this_arg);
+               return nativeResponseValue;
+       }
+       // void HolderCommitmentTransaction_free(struct LDKHolderCommitmentTransaction this_obj);
+       export function HolderCommitmentTransaction_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_HolderCommitmentTransaction_free(this_obj);
+               // debug statements here
+       }
+       // 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) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_HolderCommitmentTransaction_get_counterparty_sig(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void HolderCommitmentTransaction_set_counterparty_sig(struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKSignature val);
+       export function HolderCommitmentTransaction_set_counterparty_sig(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_HolderCommitmentTransaction_set_counterparty_sig(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // void HolderCommitmentTransaction_set_counterparty_htlc_sigs(struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKCVec_SignatureZ val);
+       export function HolderCommitmentTransaction_set_counterparty_htlc_sigs(this_ptr: number, val: Uint8Array[]): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_HolderCommitmentTransaction_set_counterparty_htlc_sigs(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t HolderCommitmentTransaction_clone_ptr(LDKHolderCommitmentTransaction *NONNULL_PTR arg);
+       export function HolderCommitmentTransaction_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_HolderCommitmentTransaction_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_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) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_HolderCommitmentTransaction_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_HolderCommitmentTransaction_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // 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);
+       export function HolderCommitmentTransaction_new(commitment_tx: number, counterparty_sig: Uint8Array, counterparty_htlc_sigs: Uint8Array[], holder_funding_key: Uint8Array, counterparty_funding_key: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_HolderCommitmentTransaction_new(commitment_tx, encodeUint8Array(counterparty_sig), counterparty_htlc_sigs, encodeUint8Array(holder_funding_key), encodeUint8Array(counterparty_funding_key));
+               return nativeResponseValue;
+       }
+       // void BuiltCommitmentTransaction_free(struct LDKBuiltCommitmentTransaction this_obj);
+       export function BuiltCommitmentTransaction_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BuiltCommitmentTransaction_free(this_obj);
+               // debug statements here
+       }
+       // struct LDKTransaction BuiltCommitmentTransaction_get_transaction(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr);
+       export function BuiltCommitmentTransaction_get_transaction(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BuiltCommitmentTransaction_get_transaction(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void BuiltCommitmentTransaction_set_transaction(struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKTransaction val);
+       export function BuiltCommitmentTransaction_set_transaction(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BuiltCommitmentTransaction_set_transaction(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // const uint8_t (*BuiltCommitmentTransaction_get_txid(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr))[32];
+       export function BuiltCommitmentTransaction_get_txid(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BuiltCommitmentTransaction_get_txid(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void BuiltCommitmentTransaction_set_txid(struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function BuiltCommitmentTransaction_set_txid(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BuiltCommitmentTransaction_set_txid(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKBuiltCommitmentTransaction BuiltCommitmentTransaction_new(struct LDKTransaction transaction_arg, struct LDKThirtyTwoBytes txid_arg);
+       export function BuiltCommitmentTransaction_new(transaction_arg: Uint8Array, txid_arg: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BuiltCommitmentTransaction_new(encodeUint8Array(transaction_arg), encodeUint8Array(txid_arg));
+               return nativeResponseValue;
+       }
+       // uint64_t BuiltCommitmentTransaction_clone_ptr(LDKBuiltCommitmentTransaction *NONNULL_PTR arg);
+       export function BuiltCommitmentTransaction_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BuiltCommitmentTransaction_clone_ptr(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.TS_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) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BuiltCommitmentTransaction_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_BuiltCommitmentTransaction_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // 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);
+       export function BuiltCommitmentTransaction_get_sighash_all(this_arg: number, funding_redeemscript: Uint8Array, channel_value_satoshis: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BuiltCommitmentTransaction_get_sighash_all(this_arg, encodeUint8Array(funding_redeemscript), channel_value_satoshis);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // MUST_USE_RES struct LDKSignature BuiltCommitmentTransaction_sign(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_arg, const uint8_t (*funding_key)[32], struct LDKu8slice funding_redeemscript, uint64_t channel_value_satoshis);
+       export function BuiltCommitmentTransaction_sign(this_arg: number, funding_key: Uint8Array, funding_redeemscript: Uint8Array, channel_value_satoshis: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_BuiltCommitmentTransaction_sign(this_arg, encodeUint8Array(funding_key), encodeUint8Array(funding_redeemscript), channel_value_satoshis);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void ClosingTransaction_free(struct LDKClosingTransaction this_obj);
+       export function ClosingTransaction_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingTransaction_free(this_obj);
+               // debug statements here
+       }
+       // uint64_t ClosingTransaction_clone_ptr(LDKClosingTransaction *NONNULL_PTR arg);
+       export function ClosingTransaction_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingTransaction_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKClosingTransaction ClosingTransaction_clone(const struct LDKClosingTransaction *NONNULL_PTR orig);
+       export function ClosingTransaction_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingTransaction_clone(orig);
+               return nativeResponseValue;
+       }
+       // uint64_t ClosingTransaction_hash(const struct LDKClosingTransaction *NONNULL_PTR o);
+       export function ClosingTransaction_hash(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingTransaction_hash(o);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKClosingTransaction ClosingTransaction_new(uint64_t to_holder_value_sat, uint64_t to_counterparty_value_sat, struct LDKCVec_u8Z to_holder_script, struct LDKCVec_u8Z to_counterparty_script, struct LDKOutPoint funding_outpoint);
+       export function ClosingTransaction_new(to_holder_value_sat: number, to_counterparty_value_sat: number, to_holder_script: Uint8Array, to_counterparty_script: Uint8Array, funding_outpoint: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingTransaction_new(to_holder_value_sat, to_counterparty_value_sat, encodeUint8Array(to_holder_script), encodeUint8Array(to_counterparty_script), funding_outpoint);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKTrustedClosingTransaction ClosingTransaction_trust(const struct LDKClosingTransaction *NONNULL_PTR this_arg);
+       export function ClosingTransaction_trust(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingTransaction_trust(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCResult_TrustedClosingTransactionNoneZ ClosingTransaction_verify(const struct LDKClosingTransaction *NONNULL_PTR this_arg, struct LDKOutPoint funding_outpoint);
+       export function ClosingTransaction_verify(this_arg: number, funding_outpoint: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingTransaction_verify(this_arg, funding_outpoint);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES uint64_t ClosingTransaction_to_holder_value_sat(const struct LDKClosingTransaction *NONNULL_PTR this_arg);
+       export function ClosingTransaction_to_holder_value_sat(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingTransaction_to_holder_value_sat(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES uint64_t ClosingTransaction_to_counterparty_value_sat(const struct LDKClosingTransaction *NONNULL_PTR this_arg);
+       export function ClosingTransaction_to_counterparty_value_sat(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingTransaction_to_counterparty_value_sat(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKu8slice ClosingTransaction_to_holder_script(const struct LDKClosingTransaction *NONNULL_PTR this_arg);
+       export function ClosingTransaction_to_holder_script(this_arg: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingTransaction_to_holder_script(this_arg);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // MUST_USE_RES struct LDKu8slice ClosingTransaction_to_counterparty_script(const struct LDKClosingTransaction *NONNULL_PTR this_arg);
+       export function ClosingTransaction_to_counterparty_script(this_arg: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ClosingTransaction_to_counterparty_script(this_arg);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void TrustedClosingTransaction_free(struct LDKTrustedClosingTransaction this_obj);
+       export function TrustedClosingTransaction_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TrustedClosingTransaction_free(this_obj);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKTransaction TrustedClosingTransaction_built_transaction(const struct LDKTrustedClosingTransaction *NONNULL_PTR this_arg);
+       export function TrustedClosingTransaction_built_transaction(this_arg: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TrustedClosingTransaction_built_transaction(this_arg);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // MUST_USE_RES struct LDKThirtyTwoBytes TrustedClosingTransaction_get_sighash_all(const struct LDKTrustedClosingTransaction *NONNULL_PTR this_arg, struct LDKu8slice funding_redeemscript, uint64_t channel_value_satoshis);
+       export function TrustedClosingTransaction_get_sighash_all(this_arg: number, funding_redeemscript: Uint8Array, channel_value_satoshis: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TrustedClosingTransaction_get_sighash_all(this_arg, encodeUint8Array(funding_redeemscript), channel_value_satoshis);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // MUST_USE_RES struct LDKSignature TrustedClosingTransaction_sign(const struct LDKTrustedClosingTransaction *NONNULL_PTR this_arg, const uint8_t (*funding_key)[32], struct LDKu8slice funding_redeemscript, uint64_t channel_value_satoshis);
+       export function TrustedClosingTransaction_sign(this_arg: number, funding_key: Uint8Array, funding_redeemscript: Uint8Array, channel_value_satoshis: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TrustedClosingTransaction_sign(this_arg, encodeUint8Array(funding_key), encodeUint8Array(funding_redeemscript), channel_value_satoshis);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void CommitmentTransaction_free(struct LDKCommitmentTransaction this_obj);
+       export function CommitmentTransaction_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentTransaction_free(this_obj);
+               // debug statements here
+       }
+       // uint64_t CommitmentTransaction_clone_ptr(LDKCommitmentTransaction *NONNULL_PTR arg);
+       export function CommitmentTransaction_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentTransaction_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCommitmentTransaction CommitmentTransaction_clone(const struct LDKCommitmentTransaction *NONNULL_PTR orig);
+       export function CommitmentTransaction_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentTransaction_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z CommitmentTransaction_write(const struct LDKCommitmentTransaction *NONNULL_PTR obj);
+       export function CommitmentTransaction_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentTransaction_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentTransaction_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES uint64_t CommitmentTransaction_commitment_number(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
+       export function CommitmentTransaction_commitment_number(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentTransaction_commitment_number(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES uint64_t CommitmentTransaction_to_broadcaster_value_sat(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
+       export function CommitmentTransaction_to_broadcaster_value_sat(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentTransaction_to_broadcaster_value_sat(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES uint64_t CommitmentTransaction_to_countersignatory_value_sat(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
+       export function CommitmentTransaction_to_countersignatory_value_sat(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentTransaction_to_countersignatory_value_sat(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES uint32_t CommitmentTransaction_feerate_per_kw(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
+       export function CommitmentTransaction_feerate_per_kw(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentTransaction_feerate_per_kw(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKTrustedCommitmentTransaction CommitmentTransaction_trust(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
+       export function CommitmentTransaction_trust(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentTransaction_trust(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCResult_TrustedCommitmentTransactionNoneZ CommitmentTransaction_verify(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg, const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR channel_parameters, const struct LDKChannelPublicKeys *NONNULL_PTR broadcaster_keys, const struct LDKChannelPublicKeys *NONNULL_PTR countersignatory_keys);
+       export function CommitmentTransaction_verify(this_arg: number, channel_parameters: number, broadcaster_keys: number, countersignatory_keys: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CommitmentTransaction_verify(this_arg, channel_parameters, broadcaster_keys, countersignatory_keys);
+               return nativeResponseValue;
+       }
+       // void TrustedCommitmentTransaction_free(struct LDKTrustedCommitmentTransaction this_obj);
+       export function TrustedCommitmentTransaction_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TrustedCommitmentTransaction_free(this_obj);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKThirtyTwoBytes TrustedCommitmentTransaction_txid(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
+       export function TrustedCommitmentTransaction_txid(this_arg: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TrustedCommitmentTransaction_txid(this_arg);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // MUST_USE_RES struct LDKBuiltCommitmentTransaction TrustedCommitmentTransaction_built_transaction(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
+       export function TrustedCommitmentTransaction_built_transaction(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TrustedCommitmentTransaction_built_transaction(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKTxCreationKeys TrustedCommitmentTransaction_keys(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
+       export function TrustedCommitmentTransaction_keys(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TrustedCommitmentTransaction_keys(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES bool TrustedCommitmentTransaction_opt_anchors(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
+       export function TrustedCommitmentTransaction_opt_anchors(this_arg: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TrustedCommitmentTransaction_opt_anchors(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCResult_CVec_SignatureZNoneZ TrustedCommitmentTransaction_get_htlc_sigs(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg, const uint8_t (*htlc_base_key)[32], const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR channel_parameters);
+       export function TrustedCommitmentTransaction_get_htlc_sigs(this_arg: number, htlc_base_key: Uint8Array, channel_parameters: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_TrustedCommitmentTransaction_get_htlc_sigs(this_arg, encodeUint8Array(htlc_base_key), channel_parameters);
+               return nativeResponseValue;
+       }
+       // uint64_t get_commitment_transaction_number_obscure_factor(struct LDKPublicKey broadcaster_payment_basepoint, struct LDKPublicKey countersignatory_payment_basepoint, bool outbound_from_broadcaster);
+       export function get_commitment_transaction_number_obscure_factor(broadcaster_payment_basepoint: Uint8Array, countersignatory_payment_basepoint: Uint8Array, outbound_from_broadcaster: boolean): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_get_commitment_transaction_number_obscure_factor(encodeUint8Array(broadcaster_payment_basepoint), encodeUint8Array(countersignatory_payment_basepoint), outbound_from_broadcaster);
+               return nativeResponseValue;
+       }
+       // bool InitFeatures_eq(const struct LDKInitFeatures *NONNULL_PTR a, const struct LDKInitFeatures *NONNULL_PTR b);
+       export function InitFeatures_eq(a: number, b: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InitFeatures_eq(a, b);
+               return nativeResponseValue;
+       }
+       // bool NodeFeatures_eq(const struct LDKNodeFeatures *NONNULL_PTR a, const struct LDKNodeFeatures *NONNULL_PTR b);
+       export function NodeFeatures_eq(a: number, b: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeFeatures_eq(a, b);
+               return nativeResponseValue;
+       }
+       // bool ChannelFeatures_eq(const struct LDKChannelFeatures *NONNULL_PTR a, const struct LDKChannelFeatures *NONNULL_PTR b);
+       export function ChannelFeatures_eq(a: number, b: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelFeatures_eq(a, b);
+               return nativeResponseValue;
+       }
+       // bool InvoiceFeatures_eq(const struct LDKInvoiceFeatures *NONNULL_PTR a, const struct LDKInvoiceFeatures *NONNULL_PTR b);
+       export function InvoiceFeatures_eq(a: number, b: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InvoiceFeatures_eq(a, b);
+               return nativeResponseValue;
+       }
+       // bool ChannelTypeFeatures_eq(const struct LDKChannelTypeFeatures *NONNULL_PTR a, const struct LDKChannelTypeFeatures *NONNULL_PTR b);
+       export function ChannelTypeFeatures_eq(a: number, b: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelTypeFeatures_eq(a, b);
+               return nativeResponseValue;
+       }
+       // uint64_t InitFeatures_clone_ptr(LDKInitFeatures *NONNULL_PTR arg);
+       export function InitFeatures_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InitFeatures_clone_ptr(arg);
+               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.TS_InitFeatures_clone(orig);
+               return nativeResponseValue;
+       }
+       // uint64_t NodeFeatures_clone_ptr(LDKNodeFeatures *NONNULL_PTR arg);
+       export function NodeFeatures_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeFeatures_clone_ptr(arg);
+               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.TS_NodeFeatures_clone(orig);
+               return nativeResponseValue;
+       }
+       // uint64_t ChannelFeatures_clone_ptr(LDKChannelFeatures *NONNULL_PTR arg);
+       export function ChannelFeatures_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelFeatures_clone_ptr(arg);
+               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.TS_ChannelFeatures_clone(orig);
+               return nativeResponseValue;
+       }
+       // uint64_t InvoiceFeatures_clone_ptr(LDKInvoiceFeatures *NONNULL_PTR arg);
+       export function InvoiceFeatures_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InvoiceFeatures_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKInvoiceFeatures InvoiceFeatures_clone(const struct LDKInvoiceFeatures *NONNULL_PTR orig);
+       export function InvoiceFeatures_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InvoiceFeatures_clone(orig);
+               return nativeResponseValue;
+       }
+       // uint64_t ChannelTypeFeatures_clone_ptr(LDKChannelTypeFeatures *NONNULL_PTR arg);
+       export function ChannelTypeFeatures_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelTypeFeatures_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKChannelTypeFeatures ChannelTypeFeatures_clone(const struct LDKChannelTypeFeatures *NONNULL_PTR orig);
+       export function ChannelTypeFeatures_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelTypeFeatures_clone(orig);
+               return nativeResponseValue;
+       }
+       // void InitFeatures_free(struct LDKInitFeatures this_obj);
+       export function InitFeatures_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InitFeatures_free(this_obj);
+               // debug statements here
+       }
+       // void NodeFeatures_free(struct LDKNodeFeatures this_obj);
+       export function NodeFeatures_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeFeatures_free(this_obj);
+               // debug statements here
+       }
+       // void ChannelFeatures_free(struct LDKChannelFeatures this_obj);
+       export function ChannelFeatures_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelFeatures_free(this_obj);
+               // debug statements here
+       }
+       // void InvoiceFeatures_free(struct LDKInvoiceFeatures this_obj);
+       export function InvoiceFeatures_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InvoiceFeatures_free(this_obj);
+               // debug statements here
+       }
+       // void ChannelTypeFeatures_free(struct LDKChannelTypeFeatures this_obj);
+       export function ChannelTypeFeatures_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelTypeFeatures_free(this_obj);
+               // debug statements here
+       }
+       // 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.TS_InitFeatures_empty();
+               return nativeResponseValue;
+       }
+       // 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.TS_InitFeatures_known();
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES bool InitFeatures_requires_unknown_bits(const struct LDKInitFeatures *NONNULL_PTR this_arg);
+       export function InitFeatures_requires_unknown_bits(this_arg: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InitFeatures_requires_unknown_bits(this_arg);
+               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.TS_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.TS_NodeFeatures_known();
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES bool NodeFeatures_requires_unknown_bits(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
+       export function NodeFeatures_requires_unknown_bits(this_arg: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeFeatures_requires_unknown_bits(this_arg);
+               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.TS_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.TS_ChannelFeatures_known();
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES bool ChannelFeatures_requires_unknown_bits(const struct LDKChannelFeatures *NONNULL_PTR this_arg);
+       export function ChannelFeatures_requires_unknown_bits(this_arg: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelFeatures_requires_unknown_bits(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKInvoiceFeatures InvoiceFeatures_empty(void);
+       export function InvoiceFeatures_empty(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InvoiceFeatures_empty();
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKInvoiceFeatures InvoiceFeatures_known(void);
+       export function InvoiceFeatures_known(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InvoiceFeatures_known();
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES bool InvoiceFeatures_requires_unknown_bits(const struct LDKInvoiceFeatures *NONNULL_PTR this_arg);
+       export function InvoiceFeatures_requires_unknown_bits(this_arg: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InvoiceFeatures_requires_unknown_bits(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKChannelTypeFeatures ChannelTypeFeatures_empty(void);
+       export function ChannelTypeFeatures_empty(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelTypeFeatures_empty();
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKChannelTypeFeatures ChannelTypeFeatures_known(void);
+       export function ChannelTypeFeatures_known(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelTypeFeatures_known();
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES bool ChannelTypeFeatures_requires_unknown_bits(const struct LDKChannelTypeFeatures *NONNULL_PTR this_arg);
+       export function ChannelTypeFeatures_requires_unknown_bits(this_arg: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelTypeFeatures_requires_unknown_bits(this_arg);
+               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.TS_InitFeatures_write(obj);
+               return decodeUint8Array(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.TS_InitFeatures_read(encodeUint8Array(ser));
+               return 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.TS_ChannelFeatures_write(obj);
+               return decodeUint8Array(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.TS_ChannelFeatures_read(encodeUint8Array(ser));
+               return 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.TS_NodeFeatures_write(obj);
+               return decodeUint8Array(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.TS_NodeFeatures_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z InvoiceFeatures_write(const struct LDKInvoiceFeatures *NONNULL_PTR obj);
+       export function InvoiceFeatures_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InvoiceFeatures_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_InvoiceFeaturesDecodeErrorZ InvoiceFeatures_read(struct LDKu8slice ser);
+       export function InvoiceFeatures_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InvoiceFeatures_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z ChannelTypeFeatures_write(const struct LDKChannelTypeFeatures *NONNULL_PTR obj);
+       export function ChannelTypeFeatures_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelTypeFeatures_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ ChannelTypeFeatures_read(struct LDKu8slice ser);
+       export function ChannelTypeFeatures_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelTypeFeatures_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // void ShutdownScript_free(struct LDKShutdownScript this_obj);
+       export function ShutdownScript_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ShutdownScript_free(this_obj);
+               // debug statements here
+       }
+       // uint64_t ShutdownScript_clone_ptr(LDKShutdownScript *NONNULL_PTR arg);
+       export function ShutdownScript_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ShutdownScript_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKShutdownScript ShutdownScript_clone(const struct LDKShutdownScript *NONNULL_PTR orig);
+       export function ShutdownScript_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ShutdownScript_clone(orig);
+               return nativeResponseValue;
+       }
+       // void InvalidShutdownScript_free(struct LDKInvalidShutdownScript this_obj);
+       export function InvalidShutdownScript_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InvalidShutdownScript_free(this_obj);
+               // debug statements here
+       }
+       // struct LDKu8slice InvalidShutdownScript_get_script(const struct LDKInvalidShutdownScript *NONNULL_PTR this_ptr);
+       export function InvalidShutdownScript_get_script(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InvalidShutdownScript_get_script(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void InvalidShutdownScript_set_script(struct LDKInvalidShutdownScript *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
+       export function InvalidShutdownScript_set_script(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InvalidShutdownScript_set_script(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKInvalidShutdownScript InvalidShutdownScript_new(struct LDKCVec_u8Z script_arg);
+       export function InvalidShutdownScript_new(script_arg: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InvalidShutdownScript_new(encodeUint8Array(script_arg));
+               return nativeResponseValue;
+       }
+       // uint64_t InvalidShutdownScript_clone_ptr(LDKInvalidShutdownScript *NONNULL_PTR arg);
+       export function InvalidShutdownScript_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InvalidShutdownScript_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKInvalidShutdownScript InvalidShutdownScript_clone(const struct LDKInvalidShutdownScript *NONNULL_PTR orig);
+       export function InvalidShutdownScript_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_InvalidShutdownScript_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z ShutdownScript_write(const struct LDKShutdownScript *NONNULL_PTR obj);
+       export function ShutdownScript_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ShutdownScript_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_ShutdownScriptDecodeErrorZ ShutdownScript_read(struct LDKu8slice ser);
+       export function ShutdownScript_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ShutdownScript_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKShutdownScript ShutdownScript_new_p2wpkh(const uint8_t (*pubkey_hash)[20]);
+       export function ShutdownScript_new_p2wpkh(pubkey_hash: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ShutdownScript_new_p2wpkh(encodeUint8Array(pubkey_hash));
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKShutdownScript ShutdownScript_new_p2wsh(const uint8_t (*script_hash)[32]);
+       export function ShutdownScript_new_p2wsh(script_hash: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ShutdownScript_new_p2wsh(encodeUint8Array(script_hash));
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ ShutdownScript_new_witness_program(uint8_t version, struct LDKu8slice program);
+       export function ShutdownScript_new_witness_program(version: number, program: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ShutdownScript_new_witness_program(version, encodeUint8Array(program));
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCVec_u8Z ShutdownScript_into_inner(struct LDKShutdownScript this_arg);
+       export function ShutdownScript_into_inner(this_arg: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ShutdownScript_into_inner(this_arg);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // MUST_USE_RES struct LDKPublicKey ShutdownScript_as_legacy_pubkey(const struct LDKShutdownScript *NONNULL_PTR this_arg);
+       export function ShutdownScript_as_legacy_pubkey(this_arg: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ShutdownScript_as_legacy_pubkey(this_arg);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // MUST_USE_RES bool ShutdownScript_is_compatible(const struct LDKShutdownScript *NONNULL_PTR this_arg, const struct LDKInitFeatures *NONNULL_PTR features);
+       export function ShutdownScript_is_compatible(this_arg: number, features: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ShutdownScript_is_compatible(this_arg, features);
+               return nativeResponseValue;
+       }
+       // void CustomMessageReader_free(struct LDKCustomMessageReader this_ptr);
+       export function CustomMessageReader_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_CustomMessageReader_free(this_ptr);
+               // debug statements here
+       }
+       // uint64_t Type_clone_ptr(LDKType *NONNULL_PTR arg);
+       export function Type_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Type_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKType Type_clone(const struct LDKType *NONNULL_PTR orig);
+       export function Type_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Type_clone(orig);
+               return nativeResponseValue;
+       }
+       // void Type_free(struct LDKType this_ptr);
+       export function Type_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Type_free(this_ptr);
+               // debug statements here
+       }
+       // void NodeId_free(struct LDKNodeId this_obj);
+       export function NodeId_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeId_free(this_obj);
+               // debug statements here
+       }
+       // uint64_t NodeId_clone_ptr(LDKNodeId *NONNULL_PTR arg);
+       export function NodeId_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeId_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKNodeId NodeId_clone(const struct LDKNodeId *NONNULL_PTR orig);
+       export function NodeId_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeId_clone(orig);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKNodeId NodeId_from_pubkey(struct LDKPublicKey pubkey);
+       export function NodeId_from_pubkey(pubkey: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeId_from_pubkey(encodeUint8Array(pubkey));
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKu8slice NodeId_as_slice(const struct LDKNodeId *NONNULL_PTR this_arg);
+       export function NodeId_as_slice(this_arg: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeId_as_slice(this_arg);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // uint64_t NodeId_hash(const struct LDKNodeId *NONNULL_PTR o);
+       export function NodeId_hash(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeId_hash(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z NodeId_write(const struct LDKNodeId *NONNULL_PTR obj);
+       export function NodeId_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeId_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_NodeIdDecodeErrorZ NodeId_read(struct LDKu8slice ser);
+       export function NodeId_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeId_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // void NetworkGraph_free(struct LDKNetworkGraph this_obj);
+       export function NetworkGraph_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetworkGraph_free(this_obj);
+               // debug statements here
+       }
+       // uint64_t NetworkGraph_clone_ptr(LDKNetworkGraph *NONNULL_PTR arg);
+       export function NetworkGraph_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetworkGraph_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKNetworkGraph NetworkGraph_clone(const struct LDKNetworkGraph *NONNULL_PTR orig);
+       export function NetworkGraph_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetworkGraph_clone(orig);
+               return nativeResponseValue;
+       }
+       // void ReadOnlyNetworkGraph_free(struct LDKReadOnlyNetworkGraph this_obj);
+       export function ReadOnlyNetworkGraph_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ReadOnlyNetworkGraph_free(this_obj);
+               // debug statements here
+       }
+       // void NetworkUpdate_free(struct LDKNetworkUpdate this_ptr);
+       export function NetworkUpdate_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetworkUpdate_free(this_ptr);
+               // debug statements here
+       }
+       // uint64_t NetworkUpdate_clone_ptr(LDKNetworkUpdate *NONNULL_PTR arg);
+       export function NetworkUpdate_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetworkUpdate_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKNetworkUpdate NetworkUpdate_clone(const struct LDKNetworkUpdate *NONNULL_PTR orig);
+       export function NetworkUpdate_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetworkUpdate_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKNetworkUpdate NetworkUpdate_channel_update_message(struct LDKChannelUpdate msg);
+       export function NetworkUpdate_channel_update_message(msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetworkUpdate_channel_update_message(msg);
+               return nativeResponseValue;
+       }
+       // struct LDKNetworkUpdate NetworkUpdate_channel_closed(uint64_t short_channel_id, bool is_permanent);
+       export function NetworkUpdate_channel_closed(short_channel_id: number, is_permanent: boolean): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetworkUpdate_channel_closed(short_channel_id, is_permanent);
+               return nativeResponseValue;
+       }
+       // struct LDKNetworkUpdate NetworkUpdate_node_failure(struct LDKPublicKey node_id, bool is_permanent);
+       export function NetworkUpdate_node_failure(node_id: Uint8Array, is_permanent: boolean): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetworkUpdate_node_failure(encodeUint8Array(node_id), is_permanent);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z NetworkUpdate_write(const struct LDKNetworkUpdate *NONNULL_PTR obj);
+       export function NetworkUpdate_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetworkUpdate_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ NetworkUpdate_read(struct LDKu8slice ser);
+       export function NetworkUpdate_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetworkUpdate_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKEventHandler NetGraphMsgHandler_as_EventHandler(const struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg);
+       export function NetGraphMsgHandler_as_EventHandler(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetGraphMsgHandler_as_EventHandler(this_arg);
+               return nativeResponseValue;
+       }
+       // void NetGraphMsgHandler_free(struct LDKNetGraphMsgHandler this_obj);
+       export function NetGraphMsgHandler_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetGraphMsgHandler_free(this_obj);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKNetGraphMsgHandler NetGraphMsgHandler_new(const struct LDKNetworkGraph *NONNULL_PTR network_graph, struct LDKCOption_AccessZ chain_access, struct LDKLogger logger);
+       export function NetGraphMsgHandler_new(network_graph: number, chain_access: number, logger: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetGraphMsgHandler_new(network_graph, chain_access, logger);
+               return nativeResponseValue;
+       }
+       // void NetGraphMsgHandler_add_chain_access(struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg, struct LDKCOption_AccessZ chain_access);
+       export function NetGraphMsgHandler_add_chain_access(this_arg: number, chain_access: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetGraphMsgHandler_add_chain_access(this_arg, chain_access);
+               // debug statements here
+       }
+       // struct LDKRoutingMessageHandler NetGraphMsgHandler_as_RoutingMessageHandler(const struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg);
+       export function NetGraphMsgHandler_as_RoutingMessageHandler(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetGraphMsgHandler_as_RoutingMessageHandler(this_arg);
+               return nativeResponseValue;
+       }
+       // struct LDKMessageSendEventsProvider NetGraphMsgHandler_as_MessageSendEventsProvider(const struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg);
+       export function NetGraphMsgHandler_as_MessageSendEventsProvider(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetGraphMsgHandler_as_MessageSendEventsProvider(this_arg);
+               return nativeResponseValue;
+       }
+       // void DirectionalChannelInfo_free(struct LDKDirectionalChannelInfo this_obj);
+       export function DirectionalChannelInfo_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DirectionalChannelInfo_free(this_obj);
+               // debug statements here
+       }
+       // 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) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DirectionalChannelInfo_get_last_update(this_ptr);
+               return nativeResponseValue;
+       }
+       // void DirectionalChannelInfo_set_last_update(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, uint32_t val);
+       export function DirectionalChannelInfo_set_last_update(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DirectionalChannelInfo_set_last_update(this_ptr, val);
+               // debug statements here
+       }
+       // bool DirectionalChannelInfo_get_enabled(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
+       export function DirectionalChannelInfo_get_enabled(this_ptr: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DirectionalChannelInfo_get_enabled(this_ptr);
+               return nativeResponseValue;
+       }
+       // void DirectionalChannelInfo_set_enabled(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, bool val);
+       export function DirectionalChannelInfo_set_enabled(this_ptr: number, val: boolean): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DirectionalChannelInfo_set_enabled(this_ptr, val);
+               // debug statements here
+       }
+       // uint16_t DirectionalChannelInfo_get_cltv_expiry_delta(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
+       export function DirectionalChannelInfo_get_cltv_expiry_delta(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DirectionalChannelInfo_get_cltv_expiry_delta(this_ptr);
+               return nativeResponseValue;
+       }
+       // void DirectionalChannelInfo_set_cltv_expiry_delta(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, uint16_t val);
+       export function DirectionalChannelInfo_set_cltv_expiry_delta(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DirectionalChannelInfo_set_cltv_expiry_delta(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t DirectionalChannelInfo_get_htlc_minimum_msat(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
+       export function DirectionalChannelInfo_get_htlc_minimum_msat(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DirectionalChannelInfo_get_htlc_minimum_msat(this_ptr);
+               return nativeResponseValue;
+       }
+       // void DirectionalChannelInfo_set_htlc_minimum_msat(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, uint64_t val);
+       export function DirectionalChannelInfo_set_htlc_minimum_msat(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DirectionalChannelInfo_set_htlc_minimum_msat(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKCOption_u64Z DirectionalChannelInfo_get_htlc_maximum_msat(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
+       export function DirectionalChannelInfo_get_htlc_maximum_msat(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DirectionalChannelInfo_get_htlc_maximum_msat(this_ptr);
+               return nativeResponseValue;
+       }
+       // void DirectionalChannelInfo_set_htlc_maximum_msat(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
+       export function DirectionalChannelInfo_set_htlc_maximum_msat(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DirectionalChannelInfo_set_htlc_maximum_msat(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKRoutingFees DirectionalChannelInfo_get_fees(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
+       export function DirectionalChannelInfo_get_fees(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DirectionalChannelInfo_get_fees(this_ptr);
+               return nativeResponseValue;
+       }
+       // void DirectionalChannelInfo_set_fees(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, struct LDKRoutingFees val);
+       export function DirectionalChannelInfo_set_fees(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DirectionalChannelInfo_set_fees(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKChannelUpdate DirectionalChannelInfo_get_last_update_message(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
+       export function DirectionalChannelInfo_get_last_update_message(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DirectionalChannelInfo_get_last_update_message(this_ptr);
+               return nativeResponseValue;
+       }
+       // void DirectionalChannelInfo_set_last_update_message(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelUpdate val);
+       export function DirectionalChannelInfo_set_last_update_message(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DirectionalChannelInfo_set_last_update_message(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKDirectionalChannelInfo DirectionalChannelInfo_new(uint32_t last_update_arg, bool enabled_arg, uint16_t cltv_expiry_delta_arg, uint64_t htlc_minimum_msat_arg, struct LDKCOption_u64Z htlc_maximum_msat_arg, struct LDKRoutingFees fees_arg, struct LDKChannelUpdate last_update_message_arg);
+       export function DirectionalChannelInfo_new(last_update_arg: number, enabled_arg: boolean, cltv_expiry_delta_arg: number, htlc_minimum_msat_arg: number, htlc_maximum_msat_arg: number, fees_arg: number, last_update_message_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DirectionalChannelInfo_new(last_update_arg, enabled_arg, cltv_expiry_delta_arg, htlc_minimum_msat_arg, htlc_maximum_msat_arg, fees_arg, last_update_message_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t DirectionalChannelInfo_clone_ptr(LDKDirectionalChannelInfo *NONNULL_PTR arg);
+       export function DirectionalChannelInfo_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DirectionalChannelInfo_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_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) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_DirectionalChannelInfo_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_DirectionalChannelInfo_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // void ChannelInfo_free(struct LDKChannelInfo this_obj);
+       export function ChannelInfo_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelInfo_free(this_obj);
+               // debug statements here
+       }
+       // struct LDKChannelFeatures ChannelInfo_get_features(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
+       export function ChannelInfo_get_features(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelInfo_get_features(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelInfo_set_features(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelFeatures val);
+       export function ChannelInfo_set_features(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelInfo_set_features(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKNodeId ChannelInfo_get_node_one(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
+       export function ChannelInfo_get_node_one(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelInfo_get_node_one(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelInfo_set_node_one(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKNodeId val);
+       export function ChannelInfo_set_node_one(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelInfo_set_node_one(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKDirectionalChannelInfo ChannelInfo_get_one_to_two(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
+       export function ChannelInfo_get_one_to_two(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelInfo_get_one_to_two(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelInfo_set_one_to_two(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKDirectionalChannelInfo val);
+       export function ChannelInfo_set_one_to_two(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelInfo_set_one_to_two(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKNodeId ChannelInfo_get_node_two(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
+       export function ChannelInfo_get_node_two(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelInfo_get_node_two(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelInfo_set_node_two(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKNodeId val);
+       export function ChannelInfo_set_node_two(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelInfo_set_node_two(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKDirectionalChannelInfo ChannelInfo_get_two_to_one(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
+       export function ChannelInfo_get_two_to_one(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelInfo_get_two_to_one(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelInfo_set_two_to_one(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKDirectionalChannelInfo val);
+       export function ChannelInfo_set_two_to_one(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelInfo_set_two_to_one(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKCOption_u64Z ChannelInfo_get_capacity_sats(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
+       export function ChannelInfo_get_capacity_sats(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelInfo_get_capacity_sats(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelInfo_set_capacity_sats(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
+       export function ChannelInfo_set_capacity_sats(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelInfo_set_capacity_sats(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKChannelAnnouncement ChannelInfo_get_announcement_message(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
+       export function ChannelInfo_get_announcement_message(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelInfo_get_announcement_message(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ChannelInfo_set_announcement_message(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelAnnouncement val);
+       export function ChannelInfo_set_announcement_message(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelInfo_set_announcement_message(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t ChannelInfo_clone_ptr(LDKChannelInfo *NONNULL_PTR arg);
+       export function ChannelInfo_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelInfo_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKChannelInfo ChannelInfo_clone(const struct LDKChannelInfo *NONNULL_PTR orig);
+       export function ChannelInfo_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelInfo_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z ChannelInfo_write(const struct LDKChannelInfo *NONNULL_PTR obj);
+       export function ChannelInfo_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelInfo_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // 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!");
+               }
+               const nativeResponseValue = wasm.TS_ChannelInfo_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // void RoutingFees_free(struct LDKRoutingFees this_obj);
+       export function RoutingFees_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RoutingFees_free(this_obj);
+               // debug statements here
+       }
+       // 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) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RoutingFees_get_base_msat(this_ptr);
+               return nativeResponseValue;
+       }
+       // void RoutingFees_set_base_msat(struct LDKRoutingFees *NONNULL_PTR this_ptr, uint32_t val);
+       export function RoutingFees_set_base_msat(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RoutingFees_set_base_msat(this_ptr, val);
+               // debug statements here
+       }
+       // uint32_t RoutingFees_get_proportional_millionths(const struct LDKRoutingFees *NONNULL_PTR this_ptr);
+       export function RoutingFees_get_proportional_millionths(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RoutingFees_get_proportional_millionths(this_ptr);
+               return nativeResponseValue;
+       }
+       // void RoutingFees_set_proportional_millionths(struct LDKRoutingFees *NONNULL_PTR this_ptr, uint32_t val);
+       export function RoutingFees_set_proportional_millionths(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RoutingFees_set_proportional_millionths(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKRoutingFees RoutingFees_new(uint32_t base_msat_arg, uint32_t proportional_millionths_arg);
+       export function RoutingFees_new(base_msat_arg: number, proportional_millionths_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RoutingFees_new(base_msat_arg, proportional_millionths_arg);
+               return nativeResponseValue;
+       }
+       // bool RoutingFees_eq(const struct LDKRoutingFees *NONNULL_PTR a, const struct LDKRoutingFees *NONNULL_PTR b);
+       export function RoutingFees_eq(a: number, b: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RoutingFees_eq(a, b);
+               return nativeResponseValue;
+       }
+       // uint64_t RoutingFees_clone_ptr(LDKRoutingFees *NONNULL_PTR arg);
+       export function RoutingFees_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RoutingFees_clone_ptr(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.TS_RoutingFees_clone(orig);
+               return nativeResponseValue;
+       }
+       // uint64_t RoutingFees_hash(const struct LDKRoutingFees *NONNULL_PTR o);
+       export function RoutingFees_hash(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RoutingFees_hash(o);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z RoutingFees_write(const struct LDKRoutingFees *NONNULL_PTR obj);
+       export function RoutingFees_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RoutingFees_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_RoutingFeesDecodeErrorZ RoutingFees_read(struct LDKu8slice ser);
+       export function RoutingFees_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RoutingFees_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // void NodeAnnouncementInfo_free(struct LDKNodeAnnouncementInfo this_obj);
+       export function NodeAnnouncementInfo_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeAnnouncementInfo_free(this_obj);
+               // debug statements here
+       }
+       // struct LDKNodeFeatures NodeAnnouncementInfo_get_features(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr);
+       export function NodeAnnouncementInfo_get_features(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeAnnouncementInfo_get_features(this_ptr);
+               return nativeResponseValue;
+       }
+       // void NodeAnnouncementInfo_set_features(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKNodeFeatures val);
+       export function NodeAnnouncementInfo_set_features(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeAnnouncementInfo_set_features(this_ptr, val);
+               // debug statements here
+       }
+       // uint32_t NodeAnnouncementInfo_get_last_update(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr);
+       export function NodeAnnouncementInfo_get_last_update(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeAnnouncementInfo_get_last_update(this_ptr);
+               return nativeResponseValue;
+       }
+       // void NodeAnnouncementInfo_set_last_update(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, uint32_t val);
+       export function NodeAnnouncementInfo_set_last_update(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeAnnouncementInfo_set_last_update(this_ptr, val);
+               // debug statements here
+       }
+       // const uint8_t (*NodeAnnouncementInfo_get_rgb(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr))[3];
+       export function NodeAnnouncementInfo_get_rgb(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeAnnouncementInfo_get_rgb(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void NodeAnnouncementInfo_set_rgb(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKThreeBytes val);
+       export function NodeAnnouncementInfo_set_rgb(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeAnnouncementInfo_set_rgb(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // const uint8_t (*NodeAnnouncementInfo_get_alias(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr))[32];
+       export function NodeAnnouncementInfo_get_alias(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeAnnouncementInfo_get_alias(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void NodeAnnouncementInfo_set_alias(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
+       export function NodeAnnouncementInfo_set_alias(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeAnnouncementInfo_set_alias(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // void NodeAnnouncementInfo_set_addresses(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKCVec_NetAddressZ val);
+       export function NodeAnnouncementInfo_set_addresses(this_ptr: number, val: number[]): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeAnnouncementInfo_set_addresses(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKNodeAnnouncement NodeAnnouncementInfo_get_announcement_message(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr);
+       export function NodeAnnouncementInfo_get_announcement_message(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeAnnouncementInfo_get_announcement_message(this_ptr);
+               return nativeResponseValue;
+       }
+       // void NodeAnnouncementInfo_set_announcement_message(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKNodeAnnouncement val);
+       export function NodeAnnouncementInfo_set_announcement_message(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeAnnouncementInfo_set_announcement_message(this_ptr, val);
+               // debug statements here
+       }
+       // 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);
+       export function NodeAnnouncementInfo_new(features_arg: number, last_update_arg: number, rgb_arg: Uint8Array, alias_arg: Uint8Array, addresses_arg: number[], announcement_message_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeAnnouncementInfo_new(features_arg, last_update_arg, encodeUint8Array(rgb_arg), encodeUint8Array(alias_arg), addresses_arg, announcement_message_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t NodeAnnouncementInfo_clone_ptr(LDKNodeAnnouncementInfo *NONNULL_PTR arg);
+       export function NodeAnnouncementInfo_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeAnnouncementInfo_clone_ptr(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.TS_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) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeAnnouncementInfo_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ NodeAnnouncementInfo_read(struct LDKu8slice ser);
+       export function NodeAnnouncementInfo_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeAnnouncementInfo_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // void NodeInfo_free(struct LDKNodeInfo this_obj);
+       export function NodeInfo_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeInfo_free(this_obj);
+               // debug statements here
+       }
+       // 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) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeInfo_set_channels(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKRoutingFees NodeInfo_get_lowest_inbound_channel_fees(const struct LDKNodeInfo *NONNULL_PTR this_ptr);
+       export function NodeInfo_get_lowest_inbound_channel_fees(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeInfo_get_lowest_inbound_channel_fees(this_ptr);
+               return nativeResponseValue;
+       }
+       // void NodeInfo_set_lowest_inbound_channel_fees(struct LDKNodeInfo *NONNULL_PTR this_ptr, struct LDKRoutingFees val);
+       export function NodeInfo_set_lowest_inbound_channel_fees(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeInfo_set_lowest_inbound_channel_fees(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKNodeAnnouncementInfo NodeInfo_get_announcement_info(const struct LDKNodeInfo *NONNULL_PTR this_ptr);
+       export function NodeInfo_get_announcement_info(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeInfo_get_announcement_info(this_ptr);
+               return nativeResponseValue;
+       }
+       // void NodeInfo_set_announcement_info(struct LDKNodeInfo *NONNULL_PTR this_ptr, struct LDKNodeAnnouncementInfo val);
+       export function NodeInfo_set_announcement_info(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeInfo_set_announcement_info(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKNodeInfo NodeInfo_new(struct LDKCVec_u64Z channels_arg, struct LDKRoutingFees lowest_inbound_channel_fees_arg, struct LDKNodeAnnouncementInfo announcement_info_arg);
+       export function NodeInfo_new(channels_arg: number[], lowest_inbound_channel_fees_arg: number, announcement_info_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeInfo_new(channels_arg, lowest_inbound_channel_fees_arg, announcement_info_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t NodeInfo_clone_ptr(LDKNodeInfo *NONNULL_PTR arg);
+       export function NodeInfo_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeInfo_clone_ptr(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.TS_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) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeInfo_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_NodeInfoDecodeErrorZ NodeInfo_read(struct LDKu8slice ser);
+       export function NodeInfo_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NodeInfo_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z NetworkGraph_write(const struct LDKNetworkGraph *NONNULL_PTR obj);
+       export function NetworkGraph_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetworkGraph_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_NetworkGraphDecodeErrorZ NetworkGraph_read(struct LDKu8slice ser);
+       export function NetworkGraph_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetworkGraph_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKNetworkGraph NetworkGraph_new(struct LDKThirtyTwoBytes genesis_hash);
+       export function NetworkGraph_new(genesis_hash: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetworkGraph_new(encodeUint8Array(genesis_hash));
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKReadOnlyNetworkGraph NetworkGraph_read_only(const struct LDKNetworkGraph *NONNULL_PTR this_arg);
+       export function NetworkGraph_read_only(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetworkGraph_read_only(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_node_from_announcement(const struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKNodeAnnouncement *NONNULL_PTR msg);
+       export function NetworkGraph_update_node_from_announcement(this_arg: number, msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetworkGraph_update_node_from_announcement(this_arg, msg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_node_from_unsigned_announcement(const struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR msg);
+       export function NetworkGraph_update_node_from_unsigned_announcement(this_arg: number, msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetworkGraph_update_node_from_unsigned_announcement(this_arg, msg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_channel_from_announcement(const struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKChannelAnnouncement *NONNULL_PTR msg, struct LDKCOption_AccessZ chain_access);
+       export function NetworkGraph_update_channel_from_announcement(this_arg: number, msg: number, chain_access: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetworkGraph_update_channel_from_announcement(this_arg, msg, chain_access);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_channel_from_unsigned_announcement(const struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg, struct LDKCOption_AccessZ chain_access);
+       export function NetworkGraph_update_channel_from_unsigned_announcement(this_arg: number, msg: number, chain_access: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetworkGraph_update_channel_from_unsigned_announcement(this_arg, msg, chain_access);
+               return nativeResponseValue;
+       }
+       // void NetworkGraph_close_channel_from_update(const struct LDKNetworkGraph *NONNULL_PTR this_arg, uint64_t short_channel_id, bool is_permanent);
+       export function NetworkGraph_close_channel_from_update(this_arg: number, short_channel_id: number, is_permanent: boolean): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetworkGraph_close_channel_from_update(this_arg, short_channel_id, is_permanent);
+               // debug statements here
+       }
+       // void NetworkGraph_fail_node(const struct LDKNetworkGraph *NONNULL_PTR this_arg, struct LDKPublicKey _node_id, bool is_permanent);
+       export function NetworkGraph_fail_node(this_arg: number, _node_id: Uint8Array, is_permanent: boolean): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetworkGraph_fail_node(this_arg, encodeUint8Array(_node_id), is_permanent);
+               // debug statements here
+       }
+       // void NetworkGraph_remove_stale_channels_with_time(const struct LDKNetworkGraph *NONNULL_PTR this_arg, uint64_t current_time_unix);
+       export function NetworkGraph_remove_stale_channels_with_time(this_arg: number, current_time_unix: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetworkGraph_remove_stale_channels_with_time(this_arg, current_time_unix);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_channel(const struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKChannelUpdate *NONNULL_PTR msg);
+       export function NetworkGraph_update_channel(this_arg: number, msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetworkGraph_update_channel(this_arg, msg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_channel_unsigned(const struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKUnsignedChannelUpdate *NONNULL_PTR msg);
+       export function NetworkGraph_update_channel_unsigned(this_arg: number, msg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_NetworkGraph_update_channel_unsigned(this_arg, msg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKCOption_CVec_NetAddressZZ ReadOnlyNetworkGraph_get_addresses(const struct LDKReadOnlyNetworkGraph *NONNULL_PTR this_arg, struct LDKPublicKey pubkey);
+       export function ReadOnlyNetworkGraph_get_addresses(this_arg: number, pubkey: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ReadOnlyNetworkGraph_get_addresses(this_arg, encodeUint8Array(pubkey));
+               return nativeResponseValue;
+       }
+       // void RouteHop_free(struct LDKRouteHop this_obj);
+       export function RouteHop_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHop_free(this_obj);
+               // 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) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHop_get_pubkey(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void RouteHop_set_pubkey(struct LDKRouteHop *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function RouteHop_set_pubkey(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHop_set_pubkey(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKNodeFeatures RouteHop_get_node_features(const struct LDKRouteHop *NONNULL_PTR this_ptr);
+       export function RouteHop_get_node_features(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHop_get_node_features(this_ptr);
+               return nativeResponseValue;
+       }
+       // void RouteHop_set_node_features(struct LDKRouteHop *NONNULL_PTR this_ptr, struct LDKNodeFeatures val);
+       export function RouteHop_set_node_features(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHop_set_node_features(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t RouteHop_get_short_channel_id(const struct LDKRouteHop *NONNULL_PTR this_ptr);
+       export function RouteHop_get_short_channel_id(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHop_get_short_channel_id(this_ptr);
+               return nativeResponseValue;
+       }
+       // void RouteHop_set_short_channel_id(struct LDKRouteHop *NONNULL_PTR this_ptr, uint64_t val);
+       export function RouteHop_set_short_channel_id(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHop_set_short_channel_id(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKChannelFeatures RouteHop_get_channel_features(const struct LDKRouteHop *NONNULL_PTR this_ptr);
+       export function RouteHop_get_channel_features(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHop_get_channel_features(this_ptr);
+               return nativeResponseValue;
+       }
+       // void RouteHop_set_channel_features(struct LDKRouteHop *NONNULL_PTR this_ptr, struct LDKChannelFeatures val);
+       export function RouteHop_set_channel_features(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHop_set_channel_features(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t RouteHop_get_fee_msat(const struct LDKRouteHop *NONNULL_PTR this_ptr);
+       export function RouteHop_get_fee_msat(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHop_get_fee_msat(this_ptr);
+               return nativeResponseValue;
+       }
+       // void RouteHop_set_fee_msat(struct LDKRouteHop *NONNULL_PTR this_ptr, uint64_t val);
+       export function RouteHop_set_fee_msat(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHop_set_fee_msat(this_ptr, val);
+               // debug statements here
+       }
+       // uint32_t RouteHop_get_cltv_expiry_delta(const struct LDKRouteHop *NONNULL_PTR this_ptr);
+       export function RouteHop_get_cltv_expiry_delta(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHop_get_cltv_expiry_delta(this_ptr);
+               return nativeResponseValue;
+       }
+       // void RouteHop_set_cltv_expiry_delta(struct LDKRouteHop *NONNULL_PTR this_ptr, uint32_t val);
+       export function RouteHop_set_cltv_expiry_delta(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHop_set_cltv_expiry_delta(this_ptr, val);
+               // debug statements here
+       }
+       // 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);
+       export function RouteHop_new(pubkey_arg: Uint8Array, node_features_arg: number, short_channel_id_arg: number, channel_features_arg: number, fee_msat_arg: number, cltv_expiry_delta_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHop_new(encodeUint8Array(pubkey_arg), node_features_arg, short_channel_id_arg, channel_features_arg, fee_msat_arg, cltv_expiry_delta_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t RouteHop_clone_ptr(LDKRouteHop *NONNULL_PTR arg);
+       export function RouteHop_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHop_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // 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.TS_RouteHop_clone(orig);
+               return nativeResponseValue;
+       }
+       // uint64_t RouteHop_hash(const struct LDKRouteHop *NONNULL_PTR o);
+       export function RouteHop_hash(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHop_hash(o);
+               return nativeResponseValue;
+       }
+       // bool RouteHop_eq(const struct LDKRouteHop *NONNULL_PTR a, const struct LDKRouteHop *NONNULL_PTR b);
+       export function RouteHop_eq(a: number, b: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHop_eq(a, b);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z RouteHop_write(const struct LDKRouteHop *NONNULL_PTR obj);
+       export function RouteHop_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHop_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_RouteHopDecodeErrorZ RouteHop_read(struct LDKu8slice ser);
+       export function RouteHop_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHop_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // void Route_free(struct LDKRoute this_obj);
+       export function Route_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Route_free(this_obj);
+               // debug statements here
+       }
+       // struct LDKCVec_CVec_RouteHopZZ Route_get_paths(const struct LDKRoute *NONNULL_PTR this_ptr);
+       export function Route_get_paths(this_ptr: number): number[][] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Route_get_paths(this_ptr);
+               return nativeResponseValue;
+       }
+       // 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 {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Route_set_paths(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKPayee Route_get_payee(const struct LDKRoute *NONNULL_PTR this_ptr);
+       export function Route_get_payee(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Route_get_payee(this_ptr);
+               return nativeResponseValue;
+       }
+       // void Route_set_payee(struct LDKRoute *NONNULL_PTR this_ptr, struct LDKPayee val);
+       export function Route_set_payee(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Route_set_payee(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKRoute Route_new(struct LDKCVec_CVec_RouteHopZZ paths_arg, struct LDKPayee payee_arg);
+       export function Route_new(paths_arg: number[][], payee_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Route_new(paths_arg, payee_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t Route_clone_ptr(LDKRoute *NONNULL_PTR arg);
+       export function Route_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Route_clone_ptr(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.TS_Route_clone(orig);
+               return nativeResponseValue;
+       }
+       // uint64_t Route_hash(const struct LDKRoute *NONNULL_PTR o);
+       export function Route_hash(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Route_hash(o);
+               return nativeResponseValue;
+       }
+       // bool Route_eq(const struct LDKRoute *NONNULL_PTR a, const struct LDKRoute *NONNULL_PTR b);
+       export function Route_eq(a: number, b: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Route_eq(a, b);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES uint64_t Route_get_total_fees(const struct LDKRoute *NONNULL_PTR this_arg);
+       export function Route_get_total_fees(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Route_get_total_fees(this_arg);
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES uint64_t Route_get_total_amount(const struct LDKRoute *NONNULL_PTR this_arg);
+       export function Route_get_total_amount(this_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Route_get_total_amount(this_arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z Route_write(const struct LDKRoute *NONNULL_PTR obj);
+       export function Route_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Route_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_RouteDecodeErrorZ Route_read(struct LDKu8slice ser);
+       export function Route_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Route_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // void RouteParameters_free(struct LDKRouteParameters this_obj);
+       export function RouteParameters_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteParameters_free(this_obj);
+               // debug statements here
+       }
+       // struct LDKPayee RouteParameters_get_payee(const struct LDKRouteParameters *NONNULL_PTR this_ptr);
+       export function RouteParameters_get_payee(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteParameters_get_payee(this_ptr);
+               return nativeResponseValue;
+       }
+       // void RouteParameters_set_payee(struct LDKRouteParameters *NONNULL_PTR this_ptr, struct LDKPayee val);
+       export function RouteParameters_set_payee(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteParameters_set_payee(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t RouteParameters_get_final_value_msat(const struct LDKRouteParameters *NONNULL_PTR this_ptr);
+       export function RouteParameters_get_final_value_msat(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteParameters_get_final_value_msat(this_ptr);
+               return nativeResponseValue;
+       }
+       // void RouteParameters_set_final_value_msat(struct LDKRouteParameters *NONNULL_PTR this_ptr, uint64_t val);
+       export function RouteParameters_set_final_value_msat(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteParameters_set_final_value_msat(this_ptr, val);
+               // debug statements here
+       }
+       // uint32_t RouteParameters_get_final_cltv_expiry_delta(const struct LDKRouteParameters *NONNULL_PTR this_ptr);
+       export function RouteParameters_get_final_cltv_expiry_delta(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteParameters_get_final_cltv_expiry_delta(this_ptr);
+               return nativeResponseValue;
+       }
+       // void RouteParameters_set_final_cltv_expiry_delta(struct LDKRouteParameters *NONNULL_PTR this_ptr, uint32_t val);
+       export function RouteParameters_set_final_cltv_expiry_delta(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteParameters_set_final_cltv_expiry_delta(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKRouteParameters RouteParameters_new(struct LDKPayee payee_arg, uint64_t final_value_msat_arg, uint32_t final_cltv_expiry_delta_arg);
+       export function RouteParameters_new(payee_arg: number, final_value_msat_arg: number, final_cltv_expiry_delta_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteParameters_new(payee_arg, final_value_msat_arg, final_cltv_expiry_delta_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t RouteParameters_clone_ptr(LDKRouteParameters *NONNULL_PTR arg);
+       export function RouteParameters_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteParameters_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKRouteParameters RouteParameters_clone(const struct LDKRouteParameters *NONNULL_PTR orig);
+       export function RouteParameters_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteParameters_clone(orig);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z RouteParameters_write(const struct LDKRouteParameters *NONNULL_PTR obj);
+       export function RouteParameters_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteParameters_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_RouteParametersDecodeErrorZ RouteParameters_read(struct LDKu8slice ser);
+       export function RouteParameters_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteParameters_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // void Payee_free(struct LDKPayee this_obj);
+       export function Payee_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Payee_free(this_obj);
+               // debug statements here
+       }
+       // struct LDKPublicKey Payee_get_pubkey(const struct LDKPayee *NONNULL_PTR this_ptr);
+       export function Payee_get_pubkey(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Payee_get_pubkey(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void Payee_set_pubkey(struct LDKPayee *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function Payee_set_pubkey(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Payee_set_pubkey(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // struct LDKInvoiceFeatures Payee_get_features(const struct LDKPayee *NONNULL_PTR this_ptr);
+       export function Payee_get_features(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Payee_get_features(this_ptr);
+               return nativeResponseValue;
+       }
+       // void Payee_set_features(struct LDKPayee *NONNULL_PTR this_ptr, struct LDKInvoiceFeatures val);
+       export function Payee_set_features(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Payee_set_features(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKCVec_RouteHintZ Payee_get_route_hints(const struct LDKPayee *NONNULL_PTR this_ptr);
+       export function Payee_get_route_hints(this_ptr: number): number[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Payee_get_route_hints(this_ptr);
+               return nativeResponseValue;
+       }
+       // void Payee_set_route_hints(struct LDKPayee *NONNULL_PTR this_ptr, struct LDKCVec_RouteHintZ val);
+       export function Payee_set_route_hints(this_ptr: number, val: number[]): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Payee_set_route_hints(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKCOption_u64Z Payee_get_expiry_time(const struct LDKPayee *NONNULL_PTR this_ptr);
+       export function Payee_get_expiry_time(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Payee_get_expiry_time(this_ptr);
+               return nativeResponseValue;
+       }
+       // void Payee_set_expiry_time(struct LDKPayee *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
+       export function Payee_set_expiry_time(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Payee_set_expiry_time(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKPayee Payee_new(struct LDKPublicKey pubkey_arg, struct LDKInvoiceFeatures features_arg, struct LDKCVec_RouteHintZ route_hints_arg, struct LDKCOption_u64Z expiry_time_arg);
+       export function Payee_new(pubkey_arg: Uint8Array, features_arg: number, route_hints_arg: number[], expiry_time_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Payee_new(encodeUint8Array(pubkey_arg), features_arg, route_hints_arg, expiry_time_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t Payee_clone_ptr(LDKPayee *NONNULL_PTR arg);
+       export function Payee_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Payee_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKPayee Payee_clone(const struct LDKPayee *NONNULL_PTR orig);
+       export function Payee_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Payee_clone(orig);
+               return nativeResponseValue;
+       }
+       // uint64_t Payee_hash(const struct LDKPayee *NONNULL_PTR o);
+       export function Payee_hash(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Payee_hash(o);
+               return nativeResponseValue;
+       }
+       // bool Payee_eq(const struct LDKPayee *NONNULL_PTR a, const struct LDKPayee *NONNULL_PTR b);
+       export function Payee_eq(a: number, b: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Payee_eq(a, b);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z Payee_write(const struct LDKPayee *NONNULL_PTR obj);
+       export function Payee_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Payee_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_PayeeDecodeErrorZ Payee_read(struct LDKu8slice ser);
+       export function Payee_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Payee_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKPayee Payee_from_node_id(struct LDKPublicKey pubkey);
+       export function Payee_from_node_id(pubkey: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Payee_from_node_id(encodeUint8Array(pubkey));
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKPayee Payee_for_keysend(struct LDKPublicKey pubkey);
+       export function Payee_for_keysend(pubkey: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Payee_for_keysend(encodeUint8Array(pubkey));
+               return nativeResponseValue;
+       }
+       // void RouteHint_free(struct LDKRouteHint this_obj);
+       export function RouteHint_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHint_free(this_obj);
+               // debug statements here
+       }
+       // struct LDKCVec_RouteHintHopZ RouteHint_get_a(const struct LDKRouteHint *NONNULL_PTR this_ptr);
+       export function RouteHint_get_a(this_ptr: number): number[] {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHint_get_a(this_ptr);
+               return nativeResponseValue;
+       }
+       // void RouteHint_set_a(struct LDKRouteHint *NONNULL_PTR this_ptr, struct LDKCVec_RouteHintHopZ val);
+       export function RouteHint_set_a(this_ptr: number, val: number[]): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHint_set_a(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKRouteHint RouteHint_new(struct LDKCVec_RouteHintHopZ a_arg);
+       export function RouteHint_new(a_arg: number[]): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHint_new(a_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t RouteHint_clone_ptr(LDKRouteHint *NONNULL_PTR arg);
+       export function RouteHint_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHint_clone_ptr(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.TS_RouteHint_clone(orig);
+               return nativeResponseValue;
+       }
+       // uint64_t RouteHint_hash(const struct LDKRouteHint *NONNULL_PTR o);
+       export function RouteHint_hash(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHint_hash(o);
+               return nativeResponseValue;
+       }
+       // bool RouteHint_eq(const struct LDKRouteHint *NONNULL_PTR a, const struct LDKRouteHint *NONNULL_PTR b);
+       export function RouteHint_eq(a: number, b: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHint_eq(a, b);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z RouteHint_write(const struct LDKRouteHint *NONNULL_PTR obj);
+       export function RouteHint_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHint_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_RouteHintDecodeErrorZ RouteHint_read(struct LDKu8slice ser);
+       export function RouteHint_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHint_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // void RouteHintHop_free(struct LDKRouteHintHop this_obj);
+       export function RouteHintHop_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHintHop_free(this_obj);
+               // debug statements here
+       }
+       // struct LDKPublicKey RouteHintHop_get_src_node_id(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
+       export function RouteHintHop_get_src_node_id(this_ptr: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHintHop_get_src_node_id(this_ptr);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // void RouteHintHop_set_src_node_id(struct LDKRouteHintHop *NONNULL_PTR this_ptr, struct LDKPublicKey val);
+       export function RouteHintHop_set_src_node_id(this_ptr: number, val: Uint8Array): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHintHop_set_src_node_id(this_ptr, encodeUint8Array(val));
+               // debug statements here
+       }
+       // uint64_t RouteHintHop_get_short_channel_id(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
+       export function RouteHintHop_get_short_channel_id(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHintHop_get_short_channel_id(this_ptr);
+               return nativeResponseValue;
+       }
+       // void RouteHintHop_set_short_channel_id(struct LDKRouteHintHop *NONNULL_PTR this_ptr, uint64_t val);
+       export function RouteHintHop_set_short_channel_id(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHintHop_set_short_channel_id(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKRoutingFees RouteHintHop_get_fees(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
+       export function RouteHintHop_get_fees(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHintHop_get_fees(this_ptr);
+               return nativeResponseValue;
+       }
+       // void RouteHintHop_set_fees(struct LDKRouteHintHop *NONNULL_PTR this_ptr, struct LDKRoutingFees val);
+       export function RouteHintHop_set_fees(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHintHop_set_fees(this_ptr, val);
+               // debug statements here
+       }
+       // uint16_t RouteHintHop_get_cltv_expiry_delta(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
+       export function RouteHintHop_get_cltv_expiry_delta(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHintHop_get_cltv_expiry_delta(this_ptr);
+               return nativeResponseValue;
+       }
+       // void RouteHintHop_set_cltv_expiry_delta(struct LDKRouteHintHop *NONNULL_PTR this_ptr, uint16_t val);
+       export function RouteHintHop_set_cltv_expiry_delta(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHintHop_set_cltv_expiry_delta(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKCOption_u64Z RouteHintHop_get_htlc_minimum_msat(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
+       export function RouteHintHop_get_htlc_minimum_msat(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHintHop_get_htlc_minimum_msat(this_ptr);
+               return nativeResponseValue;
+       }
+       // void RouteHintHop_set_htlc_minimum_msat(struct LDKRouteHintHop *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
+       export function RouteHintHop_set_htlc_minimum_msat(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHintHop_set_htlc_minimum_msat(this_ptr, val);
+               // debug statements here
+       }
+       // struct LDKCOption_u64Z RouteHintHop_get_htlc_maximum_msat(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
+       export function RouteHintHop_get_htlc_maximum_msat(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHintHop_get_htlc_maximum_msat(this_ptr);
+               return nativeResponseValue;
+       }
+       // void RouteHintHop_set_htlc_maximum_msat(struct LDKRouteHintHop *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
+       export function RouteHintHop_set_htlc_maximum_msat(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHintHop_set_htlc_maximum_msat(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKRouteHintHop RouteHintHop_new(struct LDKPublicKey src_node_id_arg, uint64_t short_channel_id_arg, struct LDKRoutingFees fees_arg, uint16_t cltv_expiry_delta_arg, struct LDKCOption_u64Z htlc_minimum_msat_arg, struct LDKCOption_u64Z htlc_maximum_msat_arg);
+       export function RouteHintHop_new(src_node_id_arg: Uint8Array, short_channel_id_arg: number, fees_arg: number, cltv_expiry_delta_arg: number, htlc_minimum_msat_arg: number, htlc_maximum_msat_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHintHop_new(encodeUint8Array(src_node_id_arg), short_channel_id_arg, fees_arg, cltv_expiry_delta_arg, htlc_minimum_msat_arg, htlc_maximum_msat_arg);
+               return nativeResponseValue;
+       }
+       // uint64_t RouteHintHop_clone_ptr(LDKRouteHintHop *NONNULL_PTR arg);
+       export function RouteHintHop_clone_ptr(arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHintHop_clone_ptr(arg);
+               return nativeResponseValue;
+       }
+       // struct LDKRouteHintHop RouteHintHop_clone(const struct LDKRouteHintHop *NONNULL_PTR orig);
+       export function RouteHintHop_clone(orig: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHintHop_clone(orig);
+               return nativeResponseValue;
+       }
+       // uint64_t RouteHintHop_hash(const struct LDKRouteHintHop *NONNULL_PTR o);
+       export function RouteHintHop_hash(o: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHintHop_hash(o);
+               return nativeResponseValue;
+       }
+       // bool RouteHintHop_eq(const struct LDKRouteHintHop *NONNULL_PTR a, const struct LDKRouteHintHop *NONNULL_PTR b);
+       export function RouteHintHop_eq(a: number, b: number): boolean {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHintHop_eq(a, b);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z RouteHintHop_write(const struct LDKRouteHintHop *NONNULL_PTR obj);
+       export function RouteHintHop_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHintHop_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_RouteHintHopDecodeErrorZ RouteHintHop_read(struct LDKu8slice ser);
+       export function RouteHintHop_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_RouteHintHop_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // struct LDKCResult_RouteLightningErrorZ find_route(struct LDKPublicKey our_node_pubkey, const struct LDKRouteParameters *NONNULL_PTR params, const struct LDKNetworkGraph *NONNULL_PTR network, struct LDKCVec_ChannelDetailsZ *first_hops, struct LDKLogger logger, const struct LDKScore *NONNULL_PTR scorer);
+       export function find_route(our_node_pubkey: Uint8Array, params: number, network: number, first_hops: number[], logger: number, scorer: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_find_route(encodeUint8Array(our_node_pubkey), params, network, first_hops, logger, scorer);
+               return nativeResponseValue;
+       }
+       // void Score_free(struct LDKScore this_ptr);
+       export function Score_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_Score_free(this_ptr);
+               // debug statements here
+       }
+       // void LockableScore_free(struct LDKLockableScore this_ptr);
+       export function LockableScore_free(this_ptr: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_LockableScore_free(this_ptr);
+               // debug statements here
+       }
+       // void MultiThreadedLockableScore_free(struct LDKMultiThreadedLockableScore this_obj);
+       export function MultiThreadedLockableScore_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MultiThreadedLockableScore_free(this_obj);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKMultiThreadedLockableScore MultiThreadedLockableScore_new(struct LDKScore score);
+       export function MultiThreadedLockableScore_new(score: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_MultiThreadedLockableScore_new(score);
+               return nativeResponseValue;
+       }
+       // void ScoringParameters_free(struct LDKScoringParameters this_obj);
+       export function ScoringParameters_free(this_obj: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ScoringParameters_free(this_obj);
+               // debug statements here
+       }
+       // uint64_t ScoringParameters_get_base_penalty_msat(const struct LDKScoringParameters *NONNULL_PTR this_ptr);
+       export function ScoringParameters_get_base_penalty_msat(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ScoringParameters_get_base_penalty_msat(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ScoringParameters_set_base_penalty_msat(struct LDKScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
+       export function ScoringParameters_set_base_penalty_msat(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ScoringParameters_set_base_penalty_msat(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t ScoringParameters_get_failure_penalty_msat(const struct LDKScoringParameters *NONNULL_PTR this_ptr);
+       export function ScoringParameters_get_failure_penalty_msat(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ScoringParameters_get_failure_penalty_msat(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ScoringParameters_set_failure_penalty_msat(struct LDKScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
+       export function ScoringParameters_set_failure_penalty_msat(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ScoringParameters_set_failure_penalty_msat(this_ptr, val);
+               // debug statements here
+       }
+       // uint16_t ScoringParameters_get_overuse_penalty_start_1024th(const struct LDKScoringParameters *NONNULL_PTR this_ptr);
+       export function ScoringParameters_get_overuse_penalty_start_1024th(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ScoringParameters_get_overuse_penalty_start_1024th(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ScoringParameters_set_overuse_penalty_start_1024th(struct LDKScoringParameters *NONNULL_PTR this_ptr, uint16_t val);
+       export function ScoringParameters_set_overuse_penalty_start_1024th(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ScoringParameters_set_overuse_penalty_start_1024th(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t ScoringParameters_get_overuse_penalty_msat_per_1024th(const struct LDKScoringParameters *NONNULL_PTR this_ptr);
+       export function ScoringParameters_get_overuse_penalty_msat_per_1024th(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ScoringParameters_get_overuse_penalty_msat_per_1024th(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ScoringParameters_set_overuse_penalty_msat_per_1024th(struct LDKScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
+       export function ScoringParameters_set_overuse_penalty_msat_per_1024th(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ScoringParameters_set_overuse_penalty_msat_per_1024th(this_ptr, val);
+               // debug statements here
+       }
+       // uint64_t ScoringParameters_get_failure_penalty_half_life(const struct LDKScoringParameters *NONNULL_PTR this_ptr);
+       export function ScoringParameters_get_failure_penalty_half_life(this_ptr: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ScoringParameters_get_failure_penalty_half_life(this_ptr);
+               return nativeResponseValue;
+       }
+       // void ScoringParameters_set_failure_penalty_half_life(struct LDKScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
+       export function ScoringParameters_set_failure_penalty_half_life(this_ptr: number, val: number): void {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ScoringParameters_set_failure_penalty_half_life(this_ptr, val);
+               // debug statements here
+       }
+       // MUST_USE_RES struct LDKScoringParameters ScoringParameters_new(uint64_t base_penalty_msat_arg, uint64_t failure_penalty_msat_arg, uint16_t overuse_penalty_start_1024th_arg, uint64_t overuse_penalty_msat_per_1024th_arg, uint64_t failure_penalty_half_life_arg);
+       export function ScoringParameters_new(base_penalty_msat_arg: number, failure_penalty_msat_arg: number, overuse_penalty_start_1024th_arg: number, overuse_penalty_msat_per_1024th_arg: number, failure_penalty_half_life_arg: number): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ScoringParameters_new(base_penalty_msat_arg, failure_penalty_msat_arg, overuse_penalty_start_1024th_arg, overuse_penalty_msat_per_1024th_arg, failure_penalty_half_life_arg);
+               return nativeResponseValue;
+       }
+       // struct LDKCVec_u8Z ScoringParameters_write(const struct LDKScoringParameters *NONNULL_PTR obj);
+       export function ScoringParameters_write(obj: number): Uint8Array {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ScoringParameters_write(obj);
+               return decodeUint8Array(nativeResponseValue);
+       }
+       // struct LDKCResult_ScoringParametersDecodeErrorZ ScoringParameters_read(struct LDKu8slice ser);
+       export function ScoringParameters_read(ser: Uint8Array): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ScoringParameters_read(encodeUint8Array(ser));
+               return nativeResponseValue;
+       }
+       // MUST_USE_RES struct LDKScoringParameters ScoringParameters_default(void);
+       export function ScoringParameters_default(): number {
+               if(!isWasmInitialized) {
+                       throw new Error("initializeWasm() must be awaited first!");
+               }
+               const nativeResponseValue = wasm.TS_ScoringParameters_default();
+               return nativeResponseValue;
+       }
diff --git a/ts/bindings.ts b/ts/bindings.ts
deleted file mode 100644 (file)
index 7234850..0000000
+++ /dev/null
@@ -1,22994 +0,0 @@
-
-import * as fs from 'fs';
-const source = fs.readFileSync('./ldk.wasm');
-
-const memory = new WebAssembly.Memory({initial: 256});
-const wasmModule = new WebAssembly.Module(source);
-
-const imports: any = {};
-imports.env = {};
-
-imports.env.memoryBase = 0;
-imports.env.memory = memory;
-imports.env.tableBase = 0;
-imports.env.table = new WebAssembly.Table({initial: 4, element: 'anyfunc'});
-
-imports.env["abort"] = function () {
-    console.error("ABORT");
-};
-
-let wasm = null;
-let isWasmInitialized: boolean = false;
-
-
-// WASM CODEC
-
-const nextMultipleOfFour = (value: number) => {
-    return Math.ceil(value / 4) * 4;
-}
-
-const encodeUint8Array = (inputArray) => {
-       const cArrayPointer = wasm.TS_malloc(inputArray.length + 4);
-       const arrayLengthView = new Uint32Array(memory.buffer, cArrayPointer, 1);
-    arrayLengthView[0] = inputArray.length;
-       const arrayMemoryView = new Uint8Array(memory.buffer, cArrayPointer + 4, inputArray.length);
-       arrayMemoryView.set(inputArray);
-       return cArrayPointer;
-}
-
-const encodeUint32Array = (inputArray) => {
-       const cArrayPointer = wasm.TS_malloc((inputArray.length + 1) * 4);
-       const arrayMemoryView = new Uint32Array(memory.buffer, cArrayPointer, inputArray.length);
-       arrayMemoryView.set(inputArray, 1);
-    arrayMemoryView[0] = inputArray.length;
-       return cArrayPointer;
-}
-
-const getArrayLength = (arrayPointer) => {
-       const arraySizeViewer = new Uint32Array(
-               memory.buffer, // value
-               arrayPointer, // offset
-               1 // one int
-       );
-       return arraySizeViewer[0];
-}
-const decodeUint8Array = (arrayPointer, free = true) => {
-       const arraySize = getArrayLength(arrayPointer);
-       const actualArrayViewer = new Uint8Array(
-               memory.buffer, // value
-               arrayPointer + 4, // offset (ignoring length bytes)
-               arraySize // uint8 count
-       );
-       // Clone the contents, TODO: In the future we should wrap the Viewer in a class that
-       // will free the underlying memory when it becomes unreachable instead of copying here.
-       const actualArray = actualArrayViewer.slice(0, arraySize);
-       if (free) {
-               wasm.TS_free(arrayPointer);
-       }
-       return actualArray;
-}
-const decodeUint32Array = (arrayPointer, free = true) => {
-       const arraySize = getArrayLength(arrayPointer);
-       const actualArrayViewer = new Uint32Array(
-               memory.buffer, // value
-               arrayPointer + 4, // offset (ignoring length bytes)
-               arraySize // uint32 count
-       );
-       // Clone the contents, TODO: In the future we should wrap the Viewer in a class that
-       // will free the underlying memory when it becomes unreachable instead of copying here.
-       const actualArray = actualArrayViewer.slice(0, arraySize);
-       if (free) {
-               wasm.TS_free(arrayPointer);
-       }
-       return actualArray;
-}
-
-const encodeString = (string) => {
-    // make malloc count divisible by 4
-    const memoryNeed = nextMultipleOfFour(string.length + 1);
-    const stringPointer = wasm.TS_malloc(memoryNeed);
-    const stringMemoryView = new Uint8Array(
-        memory.buffer, // value
-        stringPointer, // offset
-        string.length + 1 // length
-    );
-    for (let i = 0; i < string.length; i++) {
-        stringMemoryView[i] = string.charCodeAt(i);
-    }
-    stringMemoryView[string.length] = 0;
-    return stringPointer;
-}
-
-const decodeString = (stringPointer, free = true) => {
-    const memoryView = new Uint8Array(memory.buffer, stringPointer);
-    let cursor = 0;
-    let result = '';
-
-    while (memoryView[cursor] !== 0) {
-        result += String.fromCharCode(memoryView[cursor]);
-        cursor++;
-    }
-
-    if (free) {
-        wasm.wasm_free(stringPointer);
-    }
-
-    return result;
-};
-
-export class VecOrSliceDef {
-    public dataptr: number;
-    public datalen: number;
-    public stride: number;
-    public constructor(dataptr: number, datalen: number, stride: number) {
-        this.dataptr = dataptr;
-        this.datalen = datalen;
-        this.stride = stride;
-    }
-}
-
-/*
-TODO: load WASM file
-static {
-    System.loadLibrary("lightningjni");
-    init(java.lang.Enum.class, VecOrSliceDef.class);
-    init_class_cache();
-}
-
-static native void init(java.lang.Class c, java.lang.Class slicedef);
-static native void init_class_cache();
-
-public static native boolean deref_bool(long ptr);
-public static native long deref_long(long ptr);
-public static native void free_heap_ptr(long ptr);
-public static native byte[] read_bytes(long ptr, long len);
-public static native byte[] get_u8_slice_bytes(long slice_ptr);
-public static native long bytes_to_u8_vec(byte[] bytes);
-public static native long new_txpointer_copy_data(byte[] txdata);
-public static native void txpointer_free(long ptr);
-public static native byte[] txpointer_get_buffer(long ptr);
-public static native long vec_slice_len(long vec);
-public static native long new_empty_slice_vec();
-*/
-
-       // struct LDKCVec_u8Z TxOut_get_script_pubkey (struct LDKTxOut* thing)
-       export function TxOut_get_script_pubkey(thing: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.TxOut_get_script_pubkey(thing);
-               return decodeArray(nativeResponseValue);
-       }
-       // uint64_t TxOut_get_value (struct LDKTxOut* thing)
-       export function TxOut_get_value(thing: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.TxOut_get_value(thing);
-               return nativeResponseValue;
-       }
-       public static native Uint8Array LDKCResult_SecretKeyErrorZ_get_ok(long arg);
-       public static native Secp256k1Error LDKCResult_SecretKeyErrorZ_get_err(long arg);
-       public static native Uint8Array LDKCResult_PublicKeyErrorZ_get_ok(long arg);
-       public static native Secp256k1Error LDKCResult_PublicKeyErrorZ_get_err(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 number LDKCResult_ChannelPublicKeysDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_ChannelPublicKeysDecodeErrorZ_get_err(long arg);
-       public static native number LDKCResult_TxCreationKeysErrorZ_get_ok(long arg);
-       public static native Secp256k1Error LDKCResult_TxCreationKeysErrorZ_get_err(long arg);
-       public static class LDKCOption_u32Z {
-               private LDKCOption_u32Z() {}
-               export class Some extends LDKCOption_u32Z {
-                       public number some;
-                       Some(number some) { this.some = some; }
-               }
-               export class None extends LDKCOption_u32Z {
-                       None() { }
-               }
-               static native void init();
-       }
-       static { LDKCOption_u32Z.init(); }
-       public static native LDKCOption_u32Z LDKCOption_u32Z_ref_from_ptr(long ptr);
-       public static native number LDKCResult_HTLCOutputInCommitmentDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_HTLCOutputInCommitmentDecodeErrorZ_get_err(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 number LDKCResult_ChannelTransactionParametersDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_ChannelTransactionParametersDecodeErrorZ_get_err(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 number LDKCResult_BuiltCommitmentTransactionDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_BuiltCommitmentTransactionDecodeErrorZ_get_err(long arg);
-       public static native number LDKCResult_TrustedClosingTransactionNoneZ_get_ok(long arg);
-       public static native void LDKCResult_TrustedClosingTransactionNoneZ_get_err(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 number LDKCResult_TrustedCommitmentTransactionNoneZ_get_ok(long arg);
-       public static native void LDKCResult_TrustedCommitmentTransactionNoneZ_get_err(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 number LDKCResult_ShutdownScriptDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_ShutdownScriptDecodeErrorZ_get_err(long arg);
-       public static native number LDKCResult_ShutdownScriptInvalidShutdownScriptZ_get_ok(long arg);
-       public static native number LDKCResult_ShutdownScriptInvalidShutdownScriptZ_get_err(long arg);
-       public static native void LDKCResult_NoneErrorZ_get_ok(long arg);
-       public static native IOError LDKCResult_NoneErrorZ_get_err(long arg);
-       public static native number LDKCResult_RouteHopDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_RouteHopDecodeErrorZ_get_err(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 number LDKCResult_RouteParametersDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_RouteParametersDecodeErrorZ_get_err(long arg);
-       public static class LDKCOption_u64Z {
-               private LDKCOption_u64Z() {}
-               export class Some extends LDKCOption_u64Z {
-                       public number some;
-                       Some(number some) { this.some = some; }
-               }
-               export class None extends LDKCOption_u64Z {
-                       None() { }
-               }
-               static native void init();
-       }
-       static { LDKCOption_u64Z.init(); }
-       public static native LDKCOption_u64Z LDKCOption_u64Z_ref_from_ptr(long ptr);
-       public static native number LDKCResult_PayeeDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_PayeeDecodeErrorZ_get_err(long arg);
-       public static native number LDKCResult_RouteHintDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_RouteHintDecodeErrorZ_get_err(long arg);
-       public static native number LDKCResult_RouteHintHopDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_RouteHintHopDecodeErrorZ_get_err(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 number LDKCResult_TxOutAccessErrorZ_get_ok(long arg);
-       public static native AccessError LDKCResult_TxOutAccessErrorZ_get_err(long arg);
-       // uintptr_t C2Tuple_usizeTransactionZ_get_a(LDKC2Tuple_usizeTransactionZ *NONNULL_PTR tuple);
-       export function C2Tuple_usizeTransactionZ_get_a(tuple: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_usizeTransactionZ_get_a(tuple);
-               return nativeResponseValue;
-       }
-       // struct LDKTransaction C2Tuple_usizeTransactionZ_get_b(LDKC2Tuple_usizeTransactionZ *NONNULL_PTR tuple);
-       export function C2Tuple_usizeTransactionZ_get_b(tuple: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_usizeTransactionZ_get_b(tuple);
-               return decodeArray(nativeResponseValue);
-       }
-       public static native void LDKCResult_NoneChannelMonitorUpdateErrZ_get_ok(long arg);
-       public static native ChannelMonitorUpdateErr LDKCResult_NoneChannelMonitorUpdateErrZ_get_err(long arg);
-       public static class LDKMonitorEvent {
-               private LDKMonitorEvent() {}
-               export class HTLCEvent extends LDKMonitorEvent {
-                       public number htlc_event;
-                       HTLCEvent(number htlc_event) { this.htlc_event = htlc_event; }
-               }
-               export class CommitmentTxConfirmed extends LDKMonitorEvent {
-                       public number commitment_tx_confirmed;
-                       CommitmentTxConfirmed(number commitment_tx_confirmed) { this.commitment_tx_confirmed = commitment_tx_confirmed; }
-               }
-               export class UpdateCompleted extends LDKMonitorEvent {
-                       public number funding_txo;
-                       public number monitor_update_id;
-                       UpdateCompleted(number funding_txo, number monitor_update_id) { this.funding_txo = funding_txo; this.monitor_update_id = monitor_update_id; }
-               }
-               export class UpdateFailed extends LDKMonitorEvent {
-                       public number update_failed;
-                       UpdateFailed(number update_failed) { this.update_failed = update_failed; }
-               }
-               static native void init();
-       }
-       static { LDKMonitorEvent.init(); }
-       public static native LDKMonitorEvent LDKMonitorEvent_ref_from_ptr(long ptr);
-       public static class LDKCOption_C2Tuple_usizeTransactionZZ {
-               private LDKCOption_C2Tuple_usizeTransactionZZ() {}
-               export class Some extends LDKCOption_C2Tuple_usizeTransactionZZ {
-                       public number some;
-                       Some(number some) { this.some = some; }
-               }
-               export class None extends LDKCOption_C2Tuple_usizeTransactionZZ {
-                       None() { }
-               }
-               static native void init();
-       }
-       static { LDKCOption_C2Tuple_usizeTransactionZZ.init(); }
-       public static native LDKCOption_C2Tuple_usizeTransactionZZ LDKCOption_C2Tuple_usizeTransactionZZ_ref_from_ptr(long ptr);
-       public static class LDKClosureReason {
-               private LDKClosureReason() {}
-               export class CounterpartyForceClosed extends LDKClosureReason {
-                       public String peer_msg;
-                       CounterpartyForceClosed(String peer_msg) { this.peer_msg = peer_msg; }
-               }
-               export class HolderForceClosed extends LDKClosureReason {
-                       HolderForceClosed() { }
-               }
-               export class CooperativeClosure extends LDKClosureReason {
-                       CooperativeClosure() { }
-               }
-               export class CommitmentTxConfirmed extends LDKClosureReason {
-                       CommitmentTxConfirmed() { }
-               }
-               export class FundingTimedOut extends LDKClosureReason {
-                       FundingTimedOut() { }
-               }
-               export class ProcessingError extends LDKClosureReason {
-                       public String err;
-                       ProcessingError(String err) { this.err = err; }
-               }
-               export class DisconnectedPeer extends LDKClosureReason {
-                       DisconnectedPeer() { }
-               }
-               export class OutdatedChannelManager extends LDKClosureReason {
-                       OutdatedChannelManager() { }
-               }
-               static native void init();
-       }
-       static { LDKClosureReason.init(); }
-       public static native LDKClosureReason LDKClosureReason_ref_from_ptr(long ptr);
-       public static class LDKCOption_ClosureReasonZ {
-               private LDKCOption_ClosureReasonZ() {}
-               export class Some extends LDKCOption_ClosureReasonZ {
-                       public number some;
-                       Some(number some) { this.some = some; }
-               }
-               export class None extends LDKCOption_ClosureReasonZ {
-                       None() { }
-               }
-               static native void init();
-       }
-       static { LDKCOption_ClosureReasonZ.init(); }
-       public static native LDKCOption_ClosureReasonZ LDKCOption_ClosureReasonZ_ref_from_ptr(long ptr);
-       public static native number LDKCResult_COption_ClosureReasonZDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_COption_ClosureReasonZDecodeErrorZ_get_err(long arg);
-       public static class LDKNetworkUpdate {
-               private LDKNetworkUpdate() {}
-               export class ChannelUpdateMessage extends LDKNetworkUpdate {
-                       public number msg;
-                       ChannelUpdateMessage(number msg) { this.msg = msg; }
-               }
-               export class ChannelClosed extends LDKNetworkUpdate {
-                       public number short_channel_id;
-                       public boolean is_permanent;
-                       ChannelClosed(number short_channel_id, boolean is_permanent) { this.short_channel_id = short_channel_id; this.is_permanent = is_permanent; }
-               }
-               export class NodeFailure extends LDKNetworkUpdate {
-                       public Uint8Array node_id;
-                       public boolean is_permanent;
-                       NodeFailure(Uint8Array node_id, boolean is_permanent) { this.node_id = node_id; this.is_permanent = is_permanent; }
-               }
-               static native void init();
-       }
-       static { LDKNetworkUpdate.init(); }
-       public static native LDKNetworkUpdate LDKNetworkUpdate_ref_from_ptr(long ptr);
-       public static class LDKCOption_NetworkUpdateZ {
-               private LDKCOption_NetworkUpdateZ() {}
-               export class Some extends LDKCOption_NetworkUpdateZ {
-                       public number some;
-                       Some(number some) { this.some = some; }
-               }
-               export class None extends LDKCOption_NetworkUpdateZ {
-                       None() { }
-               }
-               static native void init();
-       }
-       static { LDKCOption_NetworkUpdateZ.init(); }
-       public static native LDKCOption_NetworkUpdateZ LDKCOption_NetworkUpdateZ_ref_from_ptr(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 DelayedPaymentOutput extends LDKSpendableOutputDescriptor {
-                       public number delayed_payment_output;
-                       DelayedPaymentOutput(number delayed_payment_output) { this.delayed_payment_output = delayed_payment_output; }
-               }
-               export class StaticPaymentOutput extends LDKSpendableOutputDescriptor {
-                       public number static_payment_output;
-                       StaticPaymentOutput(number static_payment_output) { this.static_payment_output = static_payment_output; }
-               }
-               static native void init();
-       }
-       static { LDKSpendableOutputDescriptor.init(); }
-       public static native LDKSpendableOutputDescriptor LDKSpendableOutputDescriptor_ref_from_ptr(long ptr);
-       public static class LDKPaymentPurpose {
-               private LDKPaymentPurpose() {}
-               export class InvoicePayment extends LDKPaymentPurpose {
-                       public Uint8Array payment_preimage;
-                       public Uint8Array payment_secret;
-                       InvoicePayment(Uint8Array payment_preimage, Uint8Array payment_secret) { this.payment_preimage = payment_preimage; this.payment_secret = payment_secret; }
-               }
-               export class SpontaneousPayment extends LDKPaymentPurpose {
-                       public Uint8Array spontaneous_payment;
-                       SpontaneousPayment(Uint8Array spontaneous_payment) { this.spontaneous_payment = spontaneous_payment; }
-               }
-               static native void init();
-       }
-       static { LDKPaymentPurpose.init(); }
-       public static native LDKPaymentPurpose LDKPaymentPurpose_ref_from_ptr(long ptr);
-       public static class LDKEvent {
-               private LDKEvent() {}
-               export class FundingGenerationReady extends LDKEvent {
-                       public Uint8Array temporary_channel_id;
-                       public number channel_value_satoshis;
-                       public Uint8Array output_script;
-                       public number user_channel_id;
-                       FundingGenerationReady(Uint8Array temporary_channel_id, number channel_value_satoshis, Uint8Array output_script, number user_channel_id) { this.temporary_channel_id = temporary_channel_id; this.channel_value_satoshis = channel_value_satoshis; this.output_script = output_script; this.user_channel_id = user_channel_id; }
-               }
-               export class PaymentReceived extends LDKEvent {
-                       public Uint8Array payment_hash;
-                       public number amt;
-                       public number purpose;
-                       PaymentReceived(Uint8Array payment_hash, number amt, number purpose) { this.payment_hash = payment_hash; this.amt = amt; this.purpose = purpose; }
-               }
-               export class PaymentSent extends LDKEvent {
-                       public Uint8Array payment_id;
-                       public Uint8Array payment_preimage;
-                       public Uint8Array payment_hash;
-                       public number fee_paid_msat;
-                       PaymentSent(Uint8Array payment_id, Uint8Array payment_preimage, Uint8Array payment_hash, number fee_paid_msat) { this.payment_id = payment_id; this.payment_preimage = payment_preimage; this.payment_hash = payment_hash; this.fee_paid_msat = fee_paid_msat; }
-               }
-               export class PaymentPathFailed extends LDKEvent {
-                       public Uint8Array payment_id;
-                       public Uint8Array payment_hash;
-                       public boolean rejected_by_dest;
-                       public number network_update;
-                       public boolean all_paths_failed;
-                       public number[] path;
-                       public number short_channel_id;
-                       public number retry;
-                       PaymentPathFailed(Uint8Array payment_id, Uint8Array payment_hash, boolean rejected_by_dest, number network_update, boolean all_paths_failed, number[] path, number short_channel_id, number retry) { this.payment_id = payment_id; this.payment_hash = payment_hash; this.rejected_by_dest = rejected_by_dest; this.network_update = network_update; this.all_paths_failed = all_paths_failed; this.path = path; this.short_channel_id = short_channel_id; this.retry = retry; }
-               }
-               export class PaymentFailed extends LDKEvent {
-                       public Uint8Array payment_id;
-                       public Uint8Array payment_hash;
-                       PaymentFailed(Uint8Array payment_id, Uint8Array payment_hash) { this.payment_id = payment_id; this.payment_hash = payment_hash; }
-               }
-               export class PendingHTLCsForwardable extends LDKEvent {
-                       public number time_forwardable;
-                       PendingHTLCsForwardable(number time_forwardable) { this.time_forwardable = time_forwardable; }
-               }
-               export class SpendableOutputs extends LDKEvent {
-                       public number[] outputs;
-                       SpendableOutputs(number[] outputs) { this.outputs = outputs; }
-               }
-               export class PaymentForwarded extends LDKEvent {
-                       public number fee_earned_msat;
-                       public boolean claim_from_onchain_tx;
-                       PaymentForwarded(number fee_earned_msat, boolean claim_from_onchain_tx) { this.fee_earned_msat = fee_earned_msat; this.claim_from_onchain_tx = claim_from_onchain_tx; }
-               }
-               export class ChannelClosed extends LDKEvent {
-                       public Uint8Array channel_id;
-                       public number user_channel_id;
-                       public number reason;
-                       ChannelClosed(Uint8Array channel_id, number user_channel_id, number reason) { this.channel_id = channel_id; this.user_channel_id = user_channel_id; this.reason = reason; }
-               }
-               export class DiscardFunding extends LDKEvent {
-                       public Uint8Array channel_id;
-                       public Uint8Array transaction;
-                       DiscardFunding(Uint8Array channel_id, Uint8Array transaction) { this.channel_id = channel_id; this.transaction = transaction; }
-               }
-               export class PaymentPathSuccessful extends LDKEvent {
-                       public Uint8Array payment_id;
-                       public Uint8Array payment_hash;
-                       public number[] path;
-                       PaymentPathSuccessful(Uint8Array payment_id, Uint8Array payment_hash, number[] path) { this.payment_id = payment_id; this.payment_hash = payment_hash; this.path = path; }
-               }
-               static native void init();
-       }
-       static { LDKEvent.init(); }
-       public static native LDKEvent LDKEvent_ref_from_ptr(long ptr);
-       public static class LDKCOption_EventZ {
-               private LDKCOption_EventZ() {}
-               export class Some extends LDKCOption_EventZ {
-                       public number some;
-                       Some(number some) { this.some = some; }
-               }
-               export class None extends LDKCOption_EventZ {
-                       None() { }
-               }
-               static native void init();
-       }
-       static { LDKCOption_EventZ.init(); }
-       public static native LDKCOption_EventZ LDKCOption_EventZ_ref_from_ptr(long ptr);
-       public static native number LDKCResult_COption_EventZDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_COption_EventZDecodeErrorZ_get_err(long arg);
-       public static class LDKErrorAction {
-               private LDKErrorAction() {}
-               export class DisconnectPeer extends LDKErrorAction {
-                       public number msg;
-                       DisconnectPeer(number msg) { this.msg = msg; }
-               }
-               export class IgnoreError extends LDKErrorAction {
-                       IgnoreError() { }
-               }
-               export class IgnoreAndLog extends LDKErrorAction {
-                       public Level ignore_and_log;
-                       IgnoreAndLog(Level ignore_and_log) { this.ignore_and_log = ignore_and_log; }
-               }
-               export class IgnoreDuplicateGossip extends LDKErrorAction {
-                       IgnoreDuplicateGossip() { }
-               }
-               export class SendErrorMessage extends LDKErrorAction {
-                       public number msg;
-                       SendErrorMessage(number msg) { this.msg = msg; }
-               }
-               static native void init();
-       }
-       static { LDKErrorAction.init(); }
-       public static native LDKErrorAction LDKErrorAction_ref_from_ptr(long ptr);
-       public static class LDKMessageSendEvent {
-               private LDKMessageSendEvent() {}
-               export class SendAcceptChannel extends LDKMessageSendEvent {
-                       public Uint8Array node_id;
-                       public number msg;
-                       SendAcceptChannel(Uint8Array node_id, number msg) { this.node_id = node_id; this.msg = msg; }
-               }
-               export class SendOpenChannel extends LDKMessageSendEvent {
-                       public Uint8Array node_id;
-                       public number msg;
-                       SendOpenChannel(Uint8Array node_id, number msg) { this.node_id = node_id; this.msg = msg; }
-               }
-               export class SendFundingCreated extends LDKMessageSendEvent {
-                       public Uint8Array node_id;
-                       public number msg;
-                       SendFundingCreated(Uint8Array node_id, number msg) { this.node_id = node_id; this.msg = msg; }
-               }
-               export class SendFundingSigned extends LDKMessageSendEvent {
-                       public Uint8Array node_id;
-                       public number msg;
-                       SendFundingSigned(Uint8Array node_id, number msg) { this.node_id = node_id; this.msg = msg; }
-               }
-               export class SendFundingLocked extends LDKMessageSendEvent {
-                       public Uint8Array node_id;
-                       public number msg;
-                       SendFundingLocked(Uint8Array node_id, number msg) { this.node_id = node_id; this.msg = msg; }
-               }
-               export class SendAnnouncementSignatures extends LDKMessageSendEvent {
-                       public Uint8Array node_id;
-                       public number msg;
-                       SendAnnouncementSignatures(Uint8Array node_id, number msg) { this.node_id = node_id; this.msg = msg; }
-               }
-               export class UpdateHTLCs extends LDKMessageSendEvent {
-                       public Uint8Array node_id;
-                       public number updates;
-                       UpdateHTLCs(Uint8Array node_id, number updates) { this.node_id = node_id; this.updates = updates; }
-               }
-               export class SendRevokeAndACK extends LDKMessageSendEvent {
-                       public Uint8Array node_id;
-                       public number msg;
-                       SendRevokeAndACK(Uint8Array node_id, number msg) { this.node_id = node_id; this.msg = msg; }
-               }
-               export class SendClosingSigned extends LDKMessageSendEvent {
-                       public Uint8Array node_id;
-                       public number msg;
-                       SendClosingSigned(Uint8Array node_id, number msg) { this.node_id = node_id; this.msg = msg; }
-               }
-               export class SendShutdown extends LDKMessageSendEvent {
-                       public Uint8Array node_id;
-                       public number msg;
-                       SendShutdown(Uint8Array node_id, number msg) { this.node_id = node_id; this.msg = msg; }
-               }
-               export class SendChannelReestablish extends LDKMessageSendEvent {
-                       public Uint8Array node_id;
-                       public number msg;
-                       SendChannelReestablish(Uint8Array node_id, number msg) { this.node_id = node_id; this.msg = msg; }
-               }
-               export class BroadcastChannelAnnouncement extends LDKMessageSendEvent {
-                       public number msg;
-                       public number update_msg;
-                       BroadcastChannelAnnouncement(number msg, number update_msg) { this.msg = msg; this.update_msg = update_msg; }
-               }
-               export class BroadcastNodeAnnouncement extends LDKMessageSendEvent {
-                       public number msg;
-                       BroadcastNodeAnnouncement(number msg) { this.msg = msg; }
-               }
-               export class BroadcastChannelUpdate extends LDKMessageSendEvent {
-                       public number msg;
-                       BroadcastChannelUpdate(number msg) { this.msg = msg; }
-               }
-               export class SendChannelUpdate extends LDKMessageSendEvent {
-                       public Uint8Array node_id;
-                       public number msg;
-                       SendChannelUpdate(Uint8Array node_id, number msg) { this.node_id = node_id; this.msg = msg; }
-               }
-               export class HandleError extends LDKMessageSendEvent {
-                       public Uint8Array node_id;
-                       public number action;
-                       HandleError(Uint8Array node_id, number action) { this.node_id = node_id; this.action = action; }
-               }
-               export class SendChannelRangeQuery extends LDKMessageSendEvent {
-                       public Uint8Array node_id;
-                       public number msg;
-                       SendChannelRangeQuery(Uint8Array node_id, number msg) { this.node_id = node_id; this.msg = msg; }
-               }
-               export class SendShortIdsQuery extends LDKMessageSendEvent {
-                       public Uint8Array node_id;
-                       public number msg;
-                       SendShortIdsQuery(Uint8Array node_id, number msg) { this.node_id = node_id; this.msg = msg; }
-               }
-               export class SendReplyChannelRange extends LDKMessageSendEvent {
-                       public Uint8Array node_id;
-                       public number msg;
-                       SendReplyChannelRange(Uint8Array node_id, number msg) { this.node_id = node_id; this.msg = msg; }
-               }
-               static native void init();
-       }
-       static { LDKMessageSendEvent.init(); }
-       public static native LDKMessageSendEvent LDKMessageSendEvent_ref_from_ptr(long ptr);
-       public static native number LDKCResult_ScoringParametersDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_ScoringParametersDecodeErrorZ_get_err(long arg);
-       public static native number LDKCResult_ScorerDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_ScorerDecodeErrorZ_get_err(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 number LDKCResult_ChannelFeaturesDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_ChannelFeaturesDecodeErrorZ_get_err(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 number LDKCResult_InvoiceFeaturesDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_InvoiceFeaturesDecodeErrorZ_get_err(long arg);
-       public static native number LDKCResult_ChannelTypeFeaturesDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_ChannelTypeFeaturesDecodeErrorZ_get_err(long arg);
-       public static native number LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_err(long arg);
-       public static native number LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_err(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 void LDKCResult_NoneNoneZ_get_ok(long arg);
-       public static native void LDKCResult_NoneNoneZ_get_err(long arg);
-       // struct LDKSignature C2Tuple_SignatureCVec_SignatureZZ_get_a(LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR tuple);
-       export function C2Tuple_SignatureCVec_SignatureZZ_get_a(tuple: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_SignatureCVec_SignatureZZ_get_a(tuple);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCVec_SignatureZ C2Tuple_SignatureCVec_SignatureZZ_get_b(LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR tuple);
-       export function C2Tuple_SignatureCVec_SignatureZZ_get_b(tuple: number): Uint8Array[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_SignatureCVec_SignatureZZ_get_b(tuple);
-               return nativeResponseValue;
-       }
-       public static native number LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_ok(long arg);
-       public static native void LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_err(long arg);
-       public static native Uint8Array LDKCResult_SignatureNoneZ_get_ok(long arg);
-       public static native void LDKCResult_SignatureNoneZ_get_err(long arg);
-
-
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
-
-               export interface LDKBaseSign {
-                       get_per_commitment_point (idx: number): Uint8Array;
-                       release_commitment_secret (idx: number): Uint8Array;
-                       validate_holder_commitment (holder_tx: number): number;
-                       channel_keys_id (): Uint8Array;
-                       sign_counterparty_commitment (commitment_tx: number): number;
-                       validate_counterparty_revocation (idx: number, secret: Uint8Array): number;
-                       sign_holder_commitment_and_htlcs (commitment_tx: number): number;
-                       sign_justice_revoked_output (justice_tx: Uint8Array, input: number, amount: number, per_commitment_key: Uint8Array): number;
-                       sign_justice_revoked_htlc (justice_tx: Uint8Array, input: number, amount: number, per_commitment_key: Uint8Array, htlc: number): number;
-                       sign_counterparty_htlc_transaction (htlc_tx: Uint8Array, input: number, amount: number, per_commitment_point: Uint8Array, htlc: number): number;
-                       sign_closing_transaction (closing_tx: number): number;
-                       sign_channel_announcement (msg: number): number;
-                       ready_channel (channel_parameters: number): void;
-               }
-
-               export function LDKBaseSign_new(impl: LDKBaseSign, pubkeys: number): number {
-            throw new Error('unimplemented'); // TODO: bind to WASM
-        }
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
-
-
-       // LDKPublicKey BaseSign_get_per_commitment_point LDKBaseSign *NONNULL_PTR this_arg, uint64_t idx
-       export function BaseSign_get_per_commitment_point(this_arg: number, idx: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BaseSign_get_per_commitment_point(this_arg, idx);
-               return decodeArray(nativeResponseValue);
-       }
-       // LDKThirtyTwoBytes BaseSign_release_commitment_secret LDKBaseSign *NONNULL_PTR this_arg, uint64_t idx
-       export function BaseSign_release_commitment_secret(this_arg: number, idx: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BaseSign_release_commitment_secret(this_arg, idx);
-               return decodeArray(nativeResponseValue);
-       }
-       // LDKCResult_NoneNoneZ BaseSign_validate_holder_commitment LDKBaseSign *NONNULL_PTR this_arg, const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx
-       export function BaseSign_validate_holder_commitment(this_arg: number, holder_tx: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BaseSign_validate_holder_commitment(this_arg, holder_tx);
-               return nativeResponseValue;
-       }
-       // LDKThirtyTwoBytes BaseSign_channel_keys_id LDKBaseSign *NONNULL_PTR this_arg
-       export function BaseSign_channel_keys_id(this_arg: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BaseSign_channel_keys_id(this_arg);
-               return decodeArray(nativeResponseValue);
-       }
-       // LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ BaseSign_sign_counterparty_commitment LDKBaseSign *NONNULL_PTR this_arg, const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx
-       export function BaseSign_sign_counterparty_commitment(this_arg: number, commitment_tx: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BaseSign_sign_counterparty_commitment(this_arg, commitment_tx);
-               return nativeResponseValue;
-       }
-       // LDKCResult_NoneNoneZ BaseSign_validate_counterparty_revocation LDKBaseSign *NONNULL_PTR this_arg, uint64_t idx, const uint8_t (*secret)[32]
-       export function BaseSign_validate_counterparty_revocation(this_arg: number, idx: number, secret: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BaseSign_validate_counterparty_revocation(this_arg, idx, encodeArray(secret));
-               return nativeResponseValue;
-       }
-       // LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ BaseSign_sign_holder_commitment_and_htlcs LDKBaseSign *NONNULL_PTR this_arg, const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx
-       export function BaseSign_sign_holder_commitment_and_htlcs(this_arg: number, commitment_tx: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BaseSign_sign_holder_commitment_and_htlcs(this_arg, commitment_tx);
-               return nativeResponseValue;
-       }
-       // LDKCResult_SignatureNoneZ BaseSign_sign_justice_revoked_output LDKBaseSign *NONNULL_PTR this_arg, struct LDKTransaction justice_tx, uintptr_t input, uint64_t amount, const uint8_t (*per_commitment_key)[32]
-       export function BaseSign_sign_justice_revoked_output(this_arg: number, justice_tx: Uint8Array, input: number, amount: number, per_commitment_key: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BaseSign_sign_justice_revoked_output(this_arg, encodeArray(justice_tx), input, amount, encodeArray(per_commitment_key));
-               return nativeResponseValue;
-       }
-       // LDKCResult_SignatureNoneZ BaseSign_sign_justice_revoked_htlc LDKBaseSign *NONNULL_PTR this_arg, struct LDKTransaction justice_tx, uintptr_t input, uint64_t amount, const uint8_t (*per_commitment_key)[32], const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc
-       export function BaseSign_sign_justice_revoked_htlc(this_arg: number, justice_tx: Uint8Array, input: number, amount: number, per_commitment_key: Uint8Array, htlc: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BaseSign_sign_justice_revoked_htlc(this_arg, encodeArray(justice_tx), input, amount, encodeArray(per_commitment_key), htlc);
-               return nativeResponseValue;
-       }
-       // LDKCResult_SignatureNoneZ BaseSign_sign_counterparty_htlc_transaction LDKBaseSign *NONNULL_PTR this_arg, struct LDKTransaction htlc_tx, uintptr_t input, uint64_t amount, struct LDKPublicKey per_commitment_point, const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc
-       export function BaseSign_sign_counterparty_htlc_transaction(this_arg: number, htlc_tx: Uint8Array, input: number, amount: number, per_commitment_point: Uint8Array, htlc: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BaseSign_sign_counterparty_htlc_transaction(this_arg, encodeArray(htlc_tx), input, amount, encodeArray(per_commitment_point), htlc);
-               return nativeResponseValue;
-       }
-       // LDKCResult_SignatureNoneZ BaseSign_sign_closing_transaction LDKBaseSign *NONNULL_PTR this_arg, const struct LDKClosingTransaction *NONNULL_PTR closing_tx
-       export function BaseSign_sign_closing_transaction(this_arg: number, closing_tx: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BaseSign_sign_closing_transaction(this_arg, closing_tx);
-               return nativeResponseValue;
-       }
-       // LDKCResult_SignatureNoneZ BaseSign_sign_channel_announcement LDKBaseSign *NONNULL_PTR this_arg, const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg
-       export function BaseSign_sign_channel_announcement(this_arg: number, msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BaseSign_sign_channel_announcement(this_arg, msg);
-               return nativeResponseValue;
-       }
-       // void BaseSign_ready_channel LDKBaseSign *NONNULL_PTR this_arg, const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters
-       export function BaseSign_ready_channel(this_arg: number, channel_parameters: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BaseSign_ready_channel(this_arg, channel_parameters);
-               // debug statements here
-       }
-       // LDKChannelPublicKeys BaseSign_get_pubkeys LDKBaseSign *NONNULL_PTR this_arg
-       export function BaseSign_get_pubkeys(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BaseSign_get_pubkeys(this_arg);
-               return nativeResponseValue;
-       }
-
-
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
-
-               export interface LDKSign {
-                       write (): Uint8Array;
-               }
-
-               export function LDKSign_new(impl: LDKSign, BaseSign: LDKBaseSign, pubkeys: number): number {
-            throw new Error('unimplemented'); // TODO: bind to WASM
-        }
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
-
-
-       // LDKCVec_u8Z Sign_write LDKSign *NONNULL_PTR this_arg
-       export function Sign_write(this_arg: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Sign_write(this_arg);
-               return decodeArray(nativeResponseValue);
-       }
-       public static native number LDKCResult_SignDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_SignDecodeErrorZ_get_err(long arg);
-       public static native Uint8Array LDKCResult_RecoverableSignatureNoneZ_get_ok(long arg);
-       public static native void LDKCResult_RecoverableSignatureNoneZ_get_err(long arg);
-       public static native Uint8Array[] LDKCResult_CVec_CVec_u8ZZNoneZ_get_ok(long arg);
-       public static native void LDKCResult_CVec_CVec_u8ZZNoneZ_get_err(long arg);
-       public static native number LDKCResult_InMemorySignerDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_InMemorySignerDecodeErrorZ_get_err(long arg);
-       public static native Uint8Array LDKCResult_TransactionNoneZ_get_ok(long arg);
-       public static native void LDKCResult_TransactionNoneZ_get_err(long arg);
-       // struct LDKThirtyTwoBytes C2Tuple_BlockHashChannelMonitorZ_get_a(LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR tuple);
-       export function C2Tuple_BlockHashChannelMonitorZ_get_a(tuple: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_BlockHashChannelMonitorZ_get_a(tuple);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKChannelMonitor C2Tuple_BlockHashChannelMonitorZ_get_b(LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR tuple);
-       export function C2Tuple_BlockHashChannelMonitorZ_get_b(tuple: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_BlockHashChannelMonitorZ_get_b(tuple);
-               return nativeResponseValue;
-       }
-       public static native number[] LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_get_ok(long arg);
-       public static native IOError LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_get_err(long arg);
-       public static class LDKCOption_u16Z {
-               private LDKCOption_u16Z() {}
-               export class Some extends LDKCOption_u16Z {
-                       public number some;
-                       Some(number some) { this.some = some; }
-               }
-               export class None extends LDKCOption_u16Z {
-                       None() { }
-               }
-               static native void init();
-       }
-       static { LDKCOption_u16Z.init(); }
-       public static native LDKCOption_u16Z LDKCOption_u16Z_ref_from_ptr(long ptr);
-       public static class LDKAPIError {
-               private LDKAPIError() {}
-               export class APIMisuseError extends LDKAPIError {
-                       public String err;
-                       APIMisuseError(String err) { this.err = err; }
-               }
-               export class FeeRateTooHigh extends LDKAPIError {
-                       public String err;
-                       public number feerate;
-                       FeeRateTooHigh(String err, number feerate) { this.err = err; this.feerate = feerate; }
-               }
-               export class RouteError extends LDKAPIError {
-                       public String err;
-                       RouteError(String err) { this.err = err; }
-               }
-               export class ChannelUnavailable extends LDKAPIError {
-                       public String err;
-                       ChannelUnavailable(String err) { this.err = err; }
-               }
-               export class MonitorUpdateFailed extends LDKAPIError {
-                       MonitorUpdateFailed() { }
-               }
-               export class IncompatibleShutdownScript extends LDKAPIError {
-                       public number script;
-                       IncompatibleShutdownScript(number script) { this.script = script; }
-               }
-               static native void init();
-       }
-       static { LDKAPIError.init(); }
-       public static native LDKAPIError LDKAPIError_ref_from_ptr(long ptr);
-       public static native void LDKCResult_NoneAPIErrorZ_get_ok(long arg);
-       public static native number LDKCResult_NoneAPIErrorZ_get_err(long arg);
-       public static native Uint8Array LDKCResult__u832APIErrorZ_get_ok(long arg);
-       public static native number LDKCResult__u832APIErrorZ_get_err(long arg);
-       public static class LDKPaymentSendFailure {
-               private LDKPaymentSendFailure() {}
-               export class ParameterError extends LDKPaymentSendFailure {
-                       public number parameter_error;
-                       ParameterError(number parameter_error) { this.parameter_error = parameter_error; }
-               }
-               export class PathParameterError extends LDKPaymentSendFailure {
-                       public number[] path_parameter_error;
-                       PathParameterError(number[] path_parameter_error) { this.path_parameter_error = path_parameter_error; }
-               }
-               export class AllFailedRetrySafe extends LDKPaymentSendFailure {
-                       public number[] all_failed_retry_safe;
-                       AllFailedRetrySafe(number[] all_failed_retry_safe) { this.all_failed_retry_safe = all_failed_retry_safe; }
-               }
-               export class PartialFailure extends LDKPaymentSendFailure {
-                       public number[] results;
-                       public number failed_paths_retry;
-                       public Uint8Array payment_id;
-                       PartialFailure(number[] results, number failed_paths_retry, Uint8Array payment_id) { this.results = results; this.failed_paths_retry = failed_paths_retry; this.payment_id = payment_id; }
-               }
-               static native void init();
-       }
-       static { LDKPaymentSendFailure.init(); }
-       public static native LDKPaymentSendFailure LDKPaymentSendFailure_ref_from_ptr(long ptr);
-       public static native Uint8Array LDKCResult_PaymentIdPaymentSendFailureZ_get_ok(long arg);
-       public static native number LDKCResult_PaymentIdPaymentSendFailureZ_get_err(long arg);
-       public static native void LDKCResult_NonePaymentSendFailureZ_get_ok(long arg);
-       public static native number LDKCResult_NonePaymentSendFailureZ_get_err(long arg);
-       // struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentIdZ_get_a(LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR tuple);
-       export function C2Tuple_PaymentHashPaymentIdZ_get_a(tuple: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_PaymentHashPaymentIdZ_get_a(tuple);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentIdZ_get_b(LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR tuple);
-       export function C2Tuple_PaymentHashPaymentIdZ_get_b(tuple: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_PaymentHashPaymentIdZ_get_b(tuple);
-               return decodeArray(nativeResponseValue);
-       }
-       public static native number LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_ok(long arg);
-       public static native number LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_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 onion_v2;
-                       OnionV2(Uint8Array onion_v2) { this.onion_v2 = onion_v2; }
-               }
-               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);
-       // struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentSecretZ_get_a(LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR tuple);
-       export function C2Tuple_PaymentHashPaymentSecretZ_get_a(tuple: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_PaymentHashPaymentSecretZ_get_a(tuple);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentSecretZ_get_b(LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR tuple);
-       export function C2Tuple_PaymentHashPaymentSecretZ_get_b(tuple: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_PaymentHashPaymentSecretZ_get_b(tuple);
-               return decodeArray(nativeResponseValue);
-       }
-       public static native number LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_get_ok(long arg);
-       public static native void LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_get_err(long arg);
-       public static native number LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_ok(long arg);
-       public static native number LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_err(long arg);
-       public static native Uint8Array LDKCResult_PaymentSecretNoneZ_get_ok(long arg);
-       public static native void LDKCResult_PaymentSecretNoneZ_get_err(long arg);
-       public static native Uint8Array LDKCResult_PaymentSecretAPIErrorZ_get_ok(long arg);
-       public static native number LDKCResult_PaymentSecretAPIErrorZ_get_err(long arg);
-       public static native Uint8Array LDKCResult_PaymentPreimageAPIErrorZ_get_ok(long arg);
-       public static native number LDKCResult_PaymentPreimageAPIErrorZ_get_err(long arg);
-
-
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
-
-               export interface LDKWatch {
-                       watch_channel (funding_txo: number, monitor: number): number;
-                       update_channel (funding_txo: number, update: number): number;
-                       release_pending_monitor_events (): number[];
-               }
-
-               export function LDKWatch_new(impl: LDKWatch): number {
-            throw new Error('unimplemented'); // TODO: bind to WASM
-        }
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
-
-
-       // LDKCResult_NoneChannelMonitorUpdateErrZ Watch_watch_channel LDKWatch *NONNULL_PTR this_arg, struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor
-       export function Watch_watch_channel(this_arg: number, funding_txo: number, monitor: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Watch_watch_channel(this_arg, funding_txo, monitor);
-               return nativeResponseValue;
-       }
-       // LDKCResult_NoneChannelMonitorUpdateErrZ Watch_update_channel LDKWatch *NONNULL_PTR this_arg, struct LDKOutPoint funding_txo, struct LDKChannelMonitorUpdate update
-       export function Watch_update_channel(this_arg: number, funding_txo: number, update: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Watch_update_channel(this_arg, funding_txo, update);
-               return nativeResponseValue;
-       }
-       // LDKCVec_MonitorEventZ Watch_release_pending_monitor_events LDKWatch *NONNULL_PTR this_arg
-       export function Watch_release_pending_monitor_events(this_arg: number): number[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Watch_release_pending_monitor_events(this_arg);
-               return nativeResponseValue;
-       }
-
-
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
-
-               export interface LDKBroadcasterInterface {
-                       broadcast_transaction (tx: Uint8Array): void;
-               }
-
-               export function LDKBroadcasterInterface_new(impl: LDKBroadcasterInterface): number {
-            throw new Error('unimplemented'); // TODO: bind to WASM
-        }
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
-
-
-       // void BroadcasterInterface_broadcast_transaction LDKBroadcasterInterface *NONNULL_PTR this_arg, struct LDKTransaction tx
-       export function BroadcasterInterface_broadcast_transaction(this_arg: number, tx: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BroadcasterInterface_broadcast_transaction(this_arg, encodeArray(tx));
-               // debug statements here
-       }
-
-
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
-
-               export interface LDKKeysInterface {
-                       get_node_secret (): Uint8Array;
-                       get_destination_script (): Uint8Array;
-                       get_shutdown_scriptpubkey (): number;
-                       get_channel_signer (inbound: boolean, channel_value_satoshis: number): number;
-                       get_secure_random_bytes (): Uint8Array;
-                       read_chan_signer (reader: Uint8Array): number;
-                       sign_invoice (invoice_preimage: Uint8Array): number;
-                       get_inbound_payment_key_material (): Uint8Array;
-               }
-
-               export function LDKKeysInterface_new(impl: LDKKeysInterface): number {
-            throw new Error('unimplemented'); // TODO: bind to WASM
-        }
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
-
-
-       // LDKSecretKey KeysInterface_get_node_secret LDKKeysInterface *NONNULL_PTR this_arg
-       export function KeysInterface_get_node_secret(this_arg: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.KeysInterface_get_node_secret(this_arg);
-               return decodeArray(nativeResponseValue);
-       }
-       // LDKCVec_u8Z KeysInterface_get_destination_script LDKKeysInterface *NONNULL_PTR this_arg
-       export function KeysInterface_get_destination_script(this_arg: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.KeysInterface_get_destination_script(this_arg);
-               return decodeArray(nativeResponseValue);
-       }
-       // LDKShutdownScript KeysInterface_get_shutdown_scriptpubkey LDKKeysInterface *NONNULL_PTR this_arg
-       export function KeysInterface_get_shutdown_scriptpubkey(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.KeysInterface_get_shutdown_scriptpubkey(this_arg);
-               return nativeResponseValue;
-       }
-       // LDKSign KeysInterface_get_channel_signer LDKKeysInterface *NONNULL_PTR this_arg, bool inbound, uint64_t channel_value_satoshis
-       export function KeysInterface_get_channel_signer(this_arg: number, inbound: boolean, channel_value_satoshis: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.KeysInterface_get_channel_signer(this_arg, inbound, channel_value_satoshis);
-               return nativeResponseValue;
-       }
-       // LDKThirtyTwoBytes KeysInterface_get_secure_random_bytes LDKKeysInterface *NONNULL_PTR this_arg
-       export function KeysInterface_get_secure_random_bytes(this_arg: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.KeysInterface_get_secure_random_bytes(this_arg);
-               return decodeArray(nativeResponseValue);
-       }
-       // LDKCResult_SignDecodeErrorZ KeysInterface_read_chan_signer LDKKeysInterface *NONNULL_PTR 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!");
-               }
-               const nativeResponseValue = wasm.KeysInterface_read_chan_signer(this_arg, encodeArray(reader));
-               return nativeResponseValue;
-       }
-       // LDKCResult_RecoverableSignatureNoneZ KeysInterface_sign_invoice LDKKeysInterface *NONNULL_PTR this_arg, struct LDKCVec_u8Z invoice_preimage
-       export function KeysInterface_sign_invoice(this_arg: number, invoice_preimage: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.KeysInterface_sign_invoice(this_arg, encodeArray(invoice_preimage));
-               return nativeResponseValue;
-       }
-       // LDKThirtyTwoBytes KeysInterface_get_inbound_payment_key_material LDKKeysInterface *NONNULL_PTR this_arg
-       export function KeysInterface_get_inbound_payment_key_material(this_arg: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.KeysInterface_get_inbound_payment_key_material(this_arg);
-               return decodeArray(nativeResponseValue);
-       }
-
-
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
-
-               export interface LDKFeeEstimator {
-                       get_est_sat_per_1000_weight (confirmation_target: ConfirmationTarget): number;
-               }
-
-               export function LDKFeeEstimator_new(impl: LDKFeeEstimator): number {
-            throw new Error('unimplemented'); // TODO: bind to WASM
-        }
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
-
-
-       // uint32_t FeeEstimator_get_est_sat_per_1000_weight LDKFeeEstimator *NONNULL_PTR this_arg, enum LDKConfirmationTarget confirmation_target
-       export function FeeEstimator_get_est_sat_per_1000_weight(this_arg: number, confirmation_target: ConfirmationTarget): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FeeEstimator_get_est_sat_per_1000_weight(this_arg, confirmation_target);
-               return nativeResponseValue;
-       }
-
-
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
-
-               export interface LDKLogger {
-                       log (record: number): void;
-               }
-
-               export function LDKLogger_new(impl: LDKLogger): number {
-            throw new Error('unimplemented'); // TODO: bind to WASM
-        }
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
-
-
-       // struct LDKThirtyTwoBytes C2Tuple_BlockHashChannelManagerZ_get_a(LDKC2Tuple_BlockHashChannelManagerZ *NONNULL_PTR tuple);
-       export function C2Tuple_BlockHashChannelManagerZ_get_a(tuple: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_BlockHashChannelManagerZ_get_a(tuple);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKChannelManager *C2Tuple_BlockHashChannelManagerZ_get_b(LDKC2Tuple_BlockHashChannelManagerZ *NONNULL_PTR tuple);
-       export function C2Tuple_BlockHashChannelManagerZ_get_b(tuple: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_BlockHashChannelManagerZ_get_b(tuple);
-               return nativeResponseValue;
-       }
-       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 number LDKCResult_ChannelConfigDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_ChannelConfigDecodeErrorZ_get_err(long arg);
-       public static native number LDKCResult_OutPointDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_OutPointDecodeErrorZ_get_err(long arg);
-
-
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
-
-               export interface LDKType {
-                       type_id (): number;
-                       debug_str (): String;
-                       write (): Uint8Array;
-               }
-
-               export function LDKType_new(impl: LDKType): number {
-            throw new Error('unimplemented'); // TODO: bind to WASM
-        }
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
-
-
-       // uint16_t Type_type_id LDKType *NONNULL_PTR this_arg
-       export function Type_type_id(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Type_type_id(this_arg);
-               return nativeResponseValue;
-       }
-       // LDKStr Type_debug_str LDKType *NONNULL_PTR this_arg
-       export function Type_debug_str(this_arg: number): String {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Type_debug_str(this_arg);
-               return nativeResponseValue;
-       }
-       // LDKCVec_u8Z Type_write LDKType *NONNULL_PTR this_arg
-       export function Type_write(this_arg: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Type_write(this_arg);
-               return decodeArray(nativeResponseValue);
-       }
-       public static class LDKCOption_TypeZ {
-               private LDKCOption_TypeZ() {}
-               export class Some extends LDKCOption_TypeZ {
-                       public number some;
-                       Some(number some) { this.some = some; }
-               }
-               export class None extends LDKCOption_TypeZ {
-                       None() { }
-               }
-               static native void init();
-       }
-       static { LDKCOption_TypeZ.init(); }
-       public static native LDKCOption_TypeZ LDKCOption_TypeZ_ref_from_ptr(long ptr);
-       public static native number LDKCResult_COption_TypeZDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_COption_TypeZDecodeErrorZ_get_err(long arg);
-       public static class LDKPaymentError {
-               private LDKPaymentError() {}
-               export class Invoice extends LDKPaymentError {
-                       public String invoice;
-                       Invoice(String invoice) { this.invoice = invoice; }
-               }
-               export class Routing extends LDKPaymentError {
-                       public number routing;
-                       Routing(number routing) { this.routing = routing; }
-               }
-               export class Sending extends LDKPaymentError {
-                       public number sending;
-                       Sending(number sending) { this.sending = sending; }
-               }
-               static native void init();
-       }
-       static { LDKPaymentError.init(); }
-       public static native LDKPaymentError LDKPaymentError_ref_from_ptr(long ptr);
-       public static native Uint8Array LDKCResult_PaymentIdPaymentErrorZ_get_ok(long arg);
-       public static native number LDKCResult_PaymentIdPaymentErrorZ_get_err(long arg);
-       public static native SiPrefix LDKCResult_SiPrefixNoneZ_get_ok(long arg);
-       public static native void LDKCResult_SiPrefixNoneZ_get_err(long arg);
-       public static native number LDKCResult_InvoiceNoneZ_get_ok(long arg);
-       public static native void LDKCResult_InvoiceNoneZ_get_err(long arg);
-       public static native number LDKCResult_SignedRawInvoiceNoneZ_get_ok(long arg);
-       public static native void LDKCResult_SignedRawInvoiceNoneZ_get_err(long arg);
-       // struct LDKRawInvoice C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_a(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR tuple);
-       export function C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_a(tuple: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_a(tuple);
-               return nativeResponseValue;
-       }
-       // struct LDKThirtyTwoBytes C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_b(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR tuple);
-       export function C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_b(tuple: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_b(tuple);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKInvoiceSignature C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_c(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR tuple);
-       export function C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_c(tuple: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_c(tuple);
-               return nativeResponseValue;
-       }
-       public static native number LDKCResult_PayeePubKeyErrorZ_get_ok(long arg);
-       public static native Secp256k1Error LDKCResult_PayeePubKeyErrorZ_get_err(long arg);
-       public static native number LDKCResult_PositiveTimestampCreationErrorZ_get_ok(long arg);
-       public static native CreationError LDKCResult_PositiveTimestampCreationErrorZ_get_err(long arg);
-       public static native void LDKCResult_NoneSemanticErrorZ_get_ok(long arg);
-       public static native SemanticError LDKCResult_NoneSemanticErrorZ_get_err(long arg);
-       public static native number LDKCResult_InvoiceSemanticErrorZ_get_ok(long arg);
-       public static native SemanticError LDKCResult_InvoiceSemanticErrorZ_get_err(long arg);
-       public static native number LDKCResult_DescriptionCreationErrorZ_get_ok(long arg);
-       public static native CreationError LDKCResult_DescriptionCreationErrorZ_get_err(long arg);
-       public static native number LDKCResult_ExpiryTimeCreationErrorZ_get_ok(long arg);
-       public static native CreationError LDKCResult_ExpiryTimeCreationErrorZ_get_err(long arg);
-       public static native number LDKCResult_PrivateRouteCreationErrorZ_get_ok(long arg);
-       public static native CreationError LDKCResult_PrivateRouteCreationErrorZ_get_err(long arg);
-       public static native String LDKCResult_StringErrorZ_get_ok(long arg);
-       public static native Secp256k1Error LDKCResult_StringErrorZ_get_err(long arg);
-       public static native number LDKCResult_ChannelMonitorUpdateDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_ChannelMonitorUpdateDecodeErrorZ_get_err(long arg);
-       public static class LDKCOption_MonitorEventZ {
-               private LDKCOption_MonitorEventZ() {}
-               export class Some extends LDKCOption_MonitorEventZ {
-                       public number some;
-                       Some(number some) { this.some = some; }
-               }
-               export class None extends LDKCOption_MonitorEventZ {
-                       None() { }
-               }
-               static native void init();
-       }
-       static { LDKCOption_MonitorEventZ.init(); }
-       public static native LDKCOption_MonitorEventZ LDKCOption_MonitorEventZ_ref_from_ptr(long ptr);
-       public static native number LDKCResult_COption_MonitorEventZDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_COption_MonitorEventZDecodeErrorZ_get_err(long arg);
-       public static native number LDKCResult_HTLCUpdateDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_HTLCUpdateDecodeErrorZ_get_err(long arg);
-       // struct LDKOutPoint C2Tuple_OutPointScriptZ_get_a(LDKC2Tuple_OutPointScriptZ *NONNULL_PTR tuple);
-       export function C2Tuple_OutPointScriptZ_get_a(tuple: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_OutPointScriptZ_get_a(tuple);
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z C2Tuple_OutPointScriptZ_get_b(LDKC2Tuple_OutPointScriptZ *NONNULL_PTR tuple);
-       export function C2Tuple_OutPointScriptZ_get_b(tuple: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_OutPointScriptZ_get_b(tuple);
-               return decodeArray(nativeResponseValue);
-       }
-       // uint32_t C2Tuple_u32ScriptZ_get_a(LDKC2Tuple_u32ScriptZ *NONNULL_PTR tuple);
-       export function C2Tuple_u32ScriptZ_get_a(tuple: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_u32ScriptZ_get_a(tuple);
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z C2Tuple_u32ScriptZ_get_b(LDKC2Tuple_u32ScriptZ *NONNULL_PTR tuple);
-       export function C2Tuple_u32ScriptZ_get_b(tuple: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_u32ScriptZ_get_b(tuple);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKThirtyTwoBytes C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_a(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR tuple);
-       export function C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_a(tuple: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_a(tuple);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCVec_C2Tuple_u32ScriptZZ C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_b(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR tuple);
-       export function C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_b(tuple: number): number[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_b(tuple);
-               return nativeResponseValue;
-       }
-       // uint32_t C2Tuple_u32TxOutZ_get_a(LDKC2Tuple_u32TxOutZ *NONNULL_PTR tuple);
-       export function C2Tuple_u32TxOutZ_get_a(tuple: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_u32TxOutZ_get_a(tuple);
-               return nativeResponseValue;
-       }
-       // struct LDKTxOut C2Tuple_u32TxOutZ_get_b(LDKC2Tuple_u32TxOutZ *NONNULL_PTR tuple);
-       export function C2Tuple_u32TxOutZ_get_b(tuple: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_u32TxOutZ_get_b(tuple);
-               return nativeResponseValue;
-       }
-       // struct LDKThirtyTwoBytes C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_a(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR tuple);
-       export function C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_a(tuple: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_a(tuple);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCVec_C2Tuple_u32TxOutZZ C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_b(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR tuple);
-       export function C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_b(tuple: number): number[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_b(tuple);
-               return nativeResponseValue;
-       }
-       public static class LDKBalance {
-               private LDKBalance() {}
-               export class ClaimableOnChannelClose extends LDKBalance {
-                       public number claimable_amount_satoshis;
-                       ClaimableOnChannelClose(number claimable_amount_satoshis) { this.claimable_amount_satoshis = claimable_amount_satoshis; }
-               }
-               export class ClaimableAwaitingConfirmations extends LDKBalance {
-                       public number claimable_amount_satoshis;
-                       public number confirmation_height;
-                       ClaimableAwaitingConfirmations(number claimable_amount_satoshis, number confirmation_height) { this.claimable_amount_satoshis = claimable_amount_satoshis; this.confirmation_height = confirmation_height; }
-               }
-               export class ContentiousClaimable extends LDKBalance {
-                       public number claimable_amount_satoshis;
-                       public number timeout_height;
-                       ContentiousClaimable(number claimable_amount_satoshis, number timeout_height) { this.claimable_amount_satoshis = claimable_amount_satoshis; this.timeout_height = timeout_height; }
-               }
-               export class MaybeClaimableHTLCAwaitingTimeout extends LDKBalance {
-                       public number claimable_amount_satoshis;
-                       public number claimable_height;
-                       MaybeClaimableHTLCAwaitingTimeout(number claimable_amount_satoshis, number claimable_height) { this.claimable_amount_satoshis = claimable_amount_satoshis; this.claimable_height = claimable_height; }
-               }
-               static native void init();
-       }
-       static { LDKBalance.init(); }
-       public static native LDKBalance LDKBalance_ref_from_ptr(long ptr);
-       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 void LDKCResult_NoneLightningErrorZ_get_ok(long arg);
-       public static native number LDKCResult_NoneLightningErrorZ_get_err(long arg);
-       // struct LDKPublicKey C2Tuple_PublicKeyTypeZ_get_a(LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR tuple);
-       export function C2Tuple_PublicKeyTypeZ_get_a(tuple: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_PublicKeyTypeZ_get_a(tuple);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKType C2Tuple_PublicKeyTypeZ_get_b(LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR tuple);
-       export function C2Tuple_PublicKeyTypeZ_get_b(tuple: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_PublicKeyTypeZ_get_b(tuple);
-               return nativeResponseValue;
-       }
-       public static native boolean LDKCResult_boolLightningErrorZ_get_ok(long arg);
-       public static native number LDKCResult_boolLightningErrorZ_get_err(long arg);
-       // struct LDKChannelAnnouncement C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR tuple);
-       export function C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(tuple: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(tuple);
-               return nativeResponseValue;
-       }
-       // struct LDKChannelUpdate C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR tuple);
-       export function C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(tuple: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(tuple);
-               return nativeResponseValue;
-       }
-       // struct LDKChannelUpdate C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR tuple);
-       export function C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(tuple: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(tuple);
-               return nativeResponseValue;
-       }
-       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 void LDKCResult_NonePeerHandleErrorZ_get_ok(long arg);
-       public static native number LDKCResult_NonePeerHandleErrorZ_get_err(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 number LDKCResult_NodeIdDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_NodeIdDecodeErrorZ_get_err(long arg);
-       public static native number LDKCResult_COption_NetworkUpdateZDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_COption_NetworkUpdateZDecodeErrorZ_get_err(long arg);
-
-
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
-
-               export interface LDKAccess {
-                       get_utxo (genesis_hash: Uint8Array, short_channel_id: number): number;
-               }
-
-               export function LDKAccess_new(impl: LDKAccess): number {
-            throw new Error('unimplemented'); // TODO: bind to WASM
-        }
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
-
-
-       // LDKCResult_TxOutAccessErrorZ Access_get_utxo LDKAccess *NONNULL_PTR this_arg, const uint8_t (*genesis_hash)[32], uint64_t short_channel_id
-       export function Access_get_utxo(this_arg: number, genesis_hash: Uint8Array, short_channel_id: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Access_get_utxo(this_arg, encodeArray(genesis_hash), short_channel_id);
-               return nativeResponseValue;
-       }
-       public static class LDKCOption_AccessZ {
-               private LDKCOption_AccessZ() {}
-               export class Some extends LDKCOption_AccessZ {
-                       public number some;
-                       Some(number some) { this.some = some; }
-               }
-               export class None extends LDKCOption_AccessZ {
-                       None() { }
-               }
-               static native void init();
-       }
-       static { LDKCOption_AccessZ.init(); }
-       public static native LDKCOption_AccessZ LDKCOption_AccessZ_ref_from_ptr(long ptr);
-       public static native number LDKCResult_DirectionalChannelInfoDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_DirectionalChannelInfoDecodeErrorZ_get_err(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 number LDKCResult_RoutingFeesDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_RoutingFeesDecodeErrorZ_get_err(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 number LDKCResult_NodeInfoDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_NodeInfoDecodeErrorZ_get_err(long arg);
-       public static native number LDKCResult_NetworkGraphDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_NetworkGraphDecodeErrorZ_get_err(long arg);
-       public static class LDKCOption_CVec_NetAddressZZ {
-               private LDKCOption_CVec_NetAddressZZ() {}
-               export class Some extends LDKCOption_CVec_NetAddressZZ {
-                       public number[] some;
-                       Some(number[] some) { this.some = some; }
-               }
-               export class None extends LDKCOption_CVec_NetAddressZZ {
-                       None() { }
-               }
-               static native void init();
-       }
-       static { LDKCOption_CVec_NetAddressZZ.init(); }
-       public static native LDKCOption_CVec_NetAddressZZ LDKCOption_CVec_NetAddressZZ_ref_from_ptr(long ptr);
-       public static native number LDKCResult_NetAddressDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_NetAddressDecodeErrorZ_get_err(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 number LDKCResult_AnnouncementSignaturesDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_AnnouncementSignaturesDecodeErrorZ_get_err(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 number LDKCResult_ClosingSignedDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_ClosingSignedDecodeErrorZ_get_err(long arg);
-       public static native number LDKCResult_ClosingSignedFeeRangeDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_ClosingSignedFeeRangeDecodeErrorZ_get_err(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 number LDKCResult_FundingCreatedDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_FundingCreatedDecodeErrorZ_get_err(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 number LDKCResult_FundingLockedDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_FundingLockedDecodeErrorZ_get_err(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 number LDKCResult_OpenChannelDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_OpenChannelDecodeErrorZ_get_err(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 number LDKCResult_ShutdownDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_ShutdownDecodeErrorZ_get_err(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 number LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ_get_err(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 number LDKCResult_UpdateFulfillHTLCDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_UpdateFulfillHTLCDecodeErrorZ_get_err(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 number LDKCResult_PingDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_PingDecodeErrorZ_get_err(long arg);
-       public static native number LDKCResult_PongDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_PongDecodeErrorZ_get_err(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 number LDKCResult_ChannelAnnouncementDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_ChannelAnnouncementDecodeErrorZ_get_err(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 number LDKCResult_ChannelUpdateDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_ChannelUpdateDecodeErrorZ_get_err(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 number LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ_get_err(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 number LDKCResult_QueryShortChannelIdsDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_QueryShortChannelIdsDecodeErrorZ_get_err(long arg);
-       public static native number LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ_get_err(long arg);
-       public static native number LDKCResult_QueryChannelRangeDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_QueryChannelRangeDecodeErrorZ_get_err(long arg);
-       public static native number LDKCResult_ReplyChannelRangeDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_ReplyChannelRangeDecodeErrorZ_get_err(long arg);
-       public static native number LDKCResult_GossipTimestampFilterDecodeErrorZ_get_ok(long arg);
-       public static native number LDKCResult_GossipTimestampFilterDecodeErrorZ_get_err(long arg);
-       public static class LDKSignOrCreationError {
-               private LDKSignOrCreationError() {}
-               export class SignError extends LDKSignOrCreationError {
-                       SignError() { }
-               }
-               export class CreationError extends LDKSignOrCreationError {
-                       public CreationError creation_error;
-                       CreationError(CreationError creation_error) { this.creation_error = creation_error; }
-               }
-               static native void init();
-       }
-       static { LDKSignOrCreationError.init(); }
-       public static native LDKSignOrCreationError LDKSignOrCreationError_ref_from_ptr(long ptr);
-       public static native number LDKCResult_InvoiceSignOrCreationErrorZ_get_ok(long arg);
-       public static native number LDKCResult_InvoiceSignOrCreationErrorZ_get_err(long arg);
-
-
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
-
-               export interface LDKFilter {
-                       register_tx (txid: Uint8Array, script_pubkey: Uint8Array): void;
-                       register_output (output: number): number;
-               }
-
-               export function LDKFilter_new(impl: LDKFilter): number {
-            throw new Error('unimplemented'); // TODO: bind to WASM
-        }
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
-
-
-       // void Filter_register_tx LDKFilter *NONNULL_PTR this_arg, const uint8_t (*txid)[32], struct LDKu8slice script_pubkey
-       export function Filter_register_tx(this_arg: number, txid: Uint8Array, script_pubkey: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Filter_register_tx(this_arg, encodeArray(txid), encodeArray(script_pubkey));
-               // debug statements here
-       }
-       // LDKCOption_C2Tuple_usizeTransactionZZ Filter_register_output LDKFilter *NONNULL_PTR this_arg, struct LDKWatchedOutput output
-       export function Filter_register_output(this_arg: number, output: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Filter_register_output(this_arg, output);
-               return nativeResponseValue;
-       }
-       public static class LDKCOption_FilterZ {
-               private LDKCOption_FilterZ() {}
-               export class Some extends LDKCOption_FilterZ {
-                       public number some;
-                       Some(number some) { this.some = some; }
-               }
-               export class None extends LDKCOption_FilterZ {
-                       None() { }
-               }
-               static native void init();
-       }
-       static { LDKCOption_FilterZ.init(); }
-       public static native LDKCOption_FilterZ LDKCOption_FilterZ_ref_from_ptr(long ptr);
-       public static native number LDKCResult_LockedChannelMonitorNoneZ_get_ok(long arg);
-       public static native void LDKCResult_LockedChannelMonitorNoneZ_get_err(long arg);
-
-
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
-
-               export interface LDKMessageSendEventsProvider {
-                       get_and_clear_pending_msg_events (): number[];
-               }
-
-               export function LDKMessageSendEventsProvider_new(impl: LDKMessageSendEventsProvider): number {
-            throw new Error('unimplemented'); // TODO: bind to WASM
-        }
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
-
-
-       // LDKCVec_MessageSendEventZ MessageSendEventsProvider_get_and_clear_pending_msg_events LDKMessageSendEventsProvider *NONNULL_PTR this_arg
-       export function MessageSendEventsProvider_get_and_clear_pending_msg_events(this_arg: number): number[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageSendEventsProvider_get_and_clear_pending_msg_events(this_arg);
-               return nativeResponseValue;
-       }
-
-
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
-
-               export interface LDKEventHandler {
-                       handle_event (event: number): void;
-               }
-
-               export function LDKEventHandler_new(impl: LDKEventHandler): number {
-            throw new Error('unimplemented'); // TODO: bind to WASM
-        }
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
-
-
-       // void EventHandler_handle_event LDKEventHandler *NONNULL_PTR this_arg, const struct LDKEvent *NONNULL_PTR event
-       export function EventHandler_handle_event(this_arg: number, event: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.EventHandler_handle_event(this_arg, event);
-               // debug statements here
-       }
-
-
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
-
-               export interface LDKEventsProvider {
-                       process_pending_events (handler: number): void;
-               }
-
-               export function LDKEventsProvider_new(impl: LDKEventsProvider): number {
-            throw new Error('unimplemented'); // TODO: bind to WASM
-        }
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
-
-
-       // void EventsProvider_process_pending_events LDKEventsProvider *NONNULL_PTR this_arg, struct LDKEventHandler handler
-       export function EventsProvider_process_pending_events(this_arg: number, handler: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.EventsProvider_process_pending_events(this_arg, handler);
-               // debug statements here
-       }
-
-
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
-
-               export interface LDKListen {
-                       block_connected (block: Uint8Array, height: number): void;
-                       block_disconnected (header: Uint8Array, height: number): void;
-               }
-
-               export function LDKListen_new(impl: LDKListen): number {
-            throw new Error('unimplemented'); // TODO: bind to WASM
-        }
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
-
-
-       // void Listen_block_connected LDKListen *NONNULL_PTR this_arg, struct LDKu8slice block, uint32_t height
-       export function Listen_block_connected(this_arg: number, block: Uint8Array, height: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Listen_block_connected(this_arg, encodeArray(block), height);
-               // debug statements here
-       }
-       // void Listen_block_disconnected LDKListen *NONNULL_PTR this_arg, const uint8_t (*header)[80], uint32_t height
-       export function Listen_block_disconnected(this_arg: number, header: Uint8Array, height: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Listen_block_disconnected(this_arg, encodeArray(header), height);
-               // debug statements here
-       }
-
-
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
-
-               export interface LDKConfirm {
-                       transactions_confirmed (header: Uint8Array, txdata: number[], height: number): void;
-                       transaction_unconfirmed (txid: Uint8Array): void;
-                       best_block_updated (header: Uint8Array, height: number): void;
-                       get_relevant_txids (): Uint8Array[];
-               }
-
-               export function LDKConfirm_new(impl: LDKConfirm): number {
-            throw new Error('unimplemented'); // TODO: bind to WASM
-        }
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
-
-
-       // void Confirm_transactions_confirmed LDKConfirm *NONNULL_PTR this_arg, const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height
-       export function Confirm_transactions_confirmed(this_arg: number, header: Uint8Array, txdata: number[], height: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Confirm_transactions_confirmed(this_arg, encodeArray(header), txdata, height);
-               // debug statements here
-       }
-       // void Confirm_transaction_unconfirmed LDKConfirm *NONNULL_PTR this_arg, const uint8_t (*txid)[32]
-       export function Confirm_transaction_unconfirmed(this_arg: number, txid: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Confirm_transaction_unconfirmed(this_arg, encodeArray(txid));
-               // debug statements here
-       }
-       // void Confirm_best_block_updated LDKConfirm *NONNULL_PTR this_arg, const uint8_t (*header)[80], uint32_t height
-       export function Confirm_best_block_updated(this_arg: number, header: Uint8Array, height: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Confirm_best_block_updated(this_arg, encodeArray(header), height);
-               // debug statements here
-       }
-       // LDKCVec_TxidZ Confirm_get_relevant_txids LDKConfirm *NONNULL_PTR this_arg
-       export function Confirm_get_relevant_txids(this_arg: number): Uint8Array[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Confirm_get_relevant_txids(this_arg);
-               return nativeResponseValue;
-       }
-
-
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
-
-               export interface LDKPersist {
-                       persist_new_channel (channel_id: number, data: number, update_id: number): number;
-                       update_persisted_channel (channel_id: number, update: number, data: number, update_id: number): number;
-               }
-
-               export function LDKPersist_new(impl: LDKPersist): number {
-            throw new Error('unimplemented'); // TODO: bind to WASM
-        }
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
-
-
-       // LDKCResult_NoneChannelMonitorUpdateErrZ Persist_persist_new_channel LDKPersist *NONNULL_PTR this_arg, struct LDKOutPoint channel_id, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id
-       export function Persist_persist_new_channel(this_arg: number, channel_id: number, data: number, update_id: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Persist_persist_new_channel(this_arg, channel_id, data, update_id);
-               return nativeResponseValue;
-       }
-       // LDKCResult_NoneChannelMonitorUpdateErrZ Persist_update_persisted_channel LDKPersist *NONNULL_PTR this_arg, struct LDKOutPoint channel_id, const struct LDKChannelMonitorUpdate *NONNULL_PTR update, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id
-       export function Persist_update_persisted_channel(this_arg: number, channel_id: number, update: number, data: number, update_id: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Persist_update_persisted_channel(this_arg, channel_id, update, data, update_id);
-               return nativeResponseValue;
-       }
-
-
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
-
-               export interface LDKChannelMessageHandler {
-                       handle_open_channel (their_node_id: Uint8Array, their_features: number, msg: number): void;
-                       handle_accept_channel (their_node_id: Uint8Array, their_features: number, msg: number): void;
-                       handle_funding_created (their_node_id: Uint8Array, msg: number): void;
-                       handle_funding_signed (their_node_id: Uint8Array, msg: number): void;
-                       handle_funding_locked (their_node_id: Uint8Array, msg: number): void;
-                       handle_shutdown (their_node_id: Uint8Array, their_features: number, msg: number): void;
-                       handle_closing_signed (their_node_id: Uint8Array, msg: number): void;
-                       handle_update_add_htlc (their_node_id: Uint8Array, msg: number): void;
-                       handle_update_fulfill_htlc (their_node_id: Uint8Array, msg: number): void;
-                       handle_update_fail_htlc (their_node_id: Uint8Array, msg: number): void;
-                       handle_update_fail_malformed_htlc (their_node_id: Uint8Array, msg: number): void;
-                       handle_commitment_signed (their_node_id: Uint8Array, msg: number): void;
-                       handle_revoke_and_ack (their_node_id: Uint8Array, msg: number): void;
-                       handle_update_fee (their_node_id: Uint8Array, msg: number): void;
-                       handle_announcement_signatures (their_node_id: Uint8Array, msg: number): void;
-                       peer_disconnected (their_node_id: Uint8Array, no_connection_possible: boolean): void;
-                       peer_connected (their_node_id: Uint8Array, msg: number): void;
-                       handle_channel_reestablish (their_node_id: Uint8Array, msg: number): void;
-                       handle_channel_update (their_node_id: Uint8Array, msg: number): void;
-                       handle_error (their_node_id: Uint8Array, msg: number): void;
-               }
-
-               export function LDKChannelMessageHandler_new(impl: LDKChannelMessageHandler, MessageSendEventsProvider: LDKMessageSendEventsProvider): number {
-            throw new Error('unimplemented'); // TODO: bind to WASM
-        }
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
-
-
-       // void ChannelMessageHandler_handle_open_channel LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKOpenChannel *NONNULL_PTR msg
-       export function ChannelMessageHandler_handle_open_channel(this_arg: number, their_node_id: Uint8Array, their_features: number, msg: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMessageHandler_handle_open_channel(this_arg, encodeArray(their_node_id), their_features, msg);
-               // debug statements here
-       }
-       // void ChannelMessageHandler_handle_accept_channel LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKAcceptChannel *NONNULL_PTR msg
-       export function ChannelMessageHandler_handle_accept_channel(this_arg: number, their_node_id: Uint8Array, their_features: number, msg: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMessageHandler_handle_accept_channel(this_arg, encodeArray(their_node_id), their_features, msg);
-               // debug statements here
-       }
-       // void ChannelMessageHandler_handle_funding_created LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg
-       export function ChannelMessageHandler_handle_funding_created(this_arg: number, their_node_id: Uint8Array, msg: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMessageHandler_handle_funding_created(this_arg, encodeArray(their_node_id), msg);
-               // debug statements here
-       }
-       // void ChannelMessageHandler_handle_funding_signed LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg
-       export function ChannelMessageHandler_handle_funding_signed(this_arg: number, their_node_id: Uint8Array, msg: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMessageHandler_handle_funding_signed(this_arg, encodeArray(their_node_id), msg);
-               // debug statements here
-       }
-       // void ChannelMessageHandler_handle_funding_locked LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKFundingLocked *NONNULL_PTR msg
-       export function ChannelMessageHandler_handle_funding_locked(this_arg: number, their_node_id: Uint8Array, msg: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMessageHandler_handle_funding_locked(this_arg, encodeArray(their_node_id), msg);
-               // debug statements here
-       }
-       // void ChannelMessageHandler_handle_shutdown LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKInitFeatures *NONNULL_PTR their_features, const struct LDKShutdown *NONNULL_PTR msg
-       export function ChannelMessageHandler_handle_shutdown(this_arg: number, their_node_id: Uint8Array, their_features: number, msg: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMessageHandler_handle_shutdown(this_arg, encodeArray(their_node_id), their_features, msg);
-               // debug statements here
-       }
-       // void ChannelMessageHandler_handle_closing_signed LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg
-       export function ChannelMessageHandler_handle_closing_signed(this_arg: number, their_node_id: Uint8Array, msg: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMessageHandler_handle_closing_signed(this_arg, encodeArray(their_node_id), msg);
-               // debug statements here
-       }
-       // void ChannelMessageHandler_handle_update_add_htlc LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg
-       export function ChannelMessageHandler_handle_update_add_htlc(this_arg: number, their_node_id: Uint8Array, msg: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMessageHandler_handle_update_add_htlc(this_arg, encodeArray(their_node_id), msg);
-               // debug statements here
-       }
-       // void ChannelMessageHandler_handle_update_fulfill_htlc LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg
-       export function ChannelMessageHandler_handle_update_fulfill_htlc(this_arg: number, their_node_id: Uint8Array, msg: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMessageHandler_handle_update_fulfill_htlc(this_arg, encodeArray(their_node_id), msg);
-               // debug statements here
-       }
-       // void ChannelMessageHandler_handle_update_fail_htlc LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg
-       export function ChannelMessageHandler_handle_update_fail_htlc(this_arg: number, their_node_id: Uint8Array, msg: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMessageHandler_handle_update_fail_htlc(this_arg, encodeArray(their_node_id), msg);
-               // debug statements here
-       }
-       // void ChannelMessageHandler_handle_update_fail_malformed_htlc LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg
-       export function ChannelMessageHandler_handle_update_fail_malformed_htlc(this_arg: number, their_node_id: Uint8Array, msg: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMessageHandler_handle_update_fail_malformed_htlc(this_arg, encodeArray(their_node_id), msg);
-               // debug statements here
-       }
-       // void ChannelMessageHandler_handle_commitment_signed LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg
-       export function ChannelMessageHandler_handle_commitment_signed(this_arg: number, their_node_id: Uint8Array, msg: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMessageHandler_handle_commitment_signed(this_arg, encodeArray(their_node_id), msg);
-               // debug statements here
-       }
-       // void ChannelMessageHandler_handle_revoke_and_ack LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg
-       export function ChannelMessageHandler_handle_revoke_and_ack(this_arg: number, their_node_id: Uint8Array, msg: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMessageHandler_handle_revoke_and_ack(this_arg, encodeArray(their_node_id), msg);
-               // debug statements here
-       }
-       // void ChannelMessageHandler_handle_update_fee LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg
-       export function ChannelMessageHandler_handle_update_fee(this_arg: number, their_node_id: Uint8Array, msg: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMessageHandler_handle_update_fee(this_arg, encodeArray(their_node_id), msg);
-               // debug statements here
-       }
-       // void ChannelMessageHandler_handle_announcement_signatures LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg
-       export function ChannelMessageHandler_handle_announcement_signatures(this_arg: number, their_node_id: Uint8Array, msg: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMessageHandler_handle_announcement_signatures(this_arg, encodeArray(their_node_id), msg);
-               // debug statements here
-       }
-       // void ChannelMessageHandler_peer_disconnected LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, bool no_connection_possible
-       export function ChannelMessageHandler_peer_disconnected(this_arg: number, their_node_id: Uint8Array, no_connection_possible: boolean): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMessageHandler_peer_disconnected(this_arg, encodeArray(their_node_id), no_connection_possible);
-               // debug statements here
-       }
-       // void ChannelMessageHandler_peer_connected LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg
-       export function ChannelMessageHandler_peer_connected(this_arg: number, their_node_id: Uint8Array, msg: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMessageHandler_peer_connected(this_arg, encodeArray(their_node_id), msg);
-               // debug statements here
-       }
-       // void ChannelMessageHandler_handle_channel_reestablish LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg
-       export function ChannelMessageHandler_handle_channel_reestablish(this_arg: number, their_node_id: Uint8Array, msg: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMessageHandler_handle_channel_reestablish(this_arg, encodeArray(their_node_id), msg);
-               // debug statements here
-       }
-       // void ChannelMessageHandler_handle_channel_update LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg
-       export function ChannelMessageHandler_handle_channel_update(this_arg: number, their_node_id: Uint8Array, msg: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMessageHandler_handle_channel_update(this_arg, encodeArray(their_node_id), msg);
-               // debug statements here
-       }
-       // void ChannelMessageHandler_handle_error LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg
-       export function ChannelMessageHandler_handle_error(this_arg: number, their_node_id: Uint8Array, msg: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMessageHandler_handle_error(this_arg, encodeArray(their_node_id), msg);
-               // debug statements here
-       }
-
-
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
-
-               export interface LDKRoutingMessageHandler {
-                       handle_node_announcement (msg: number): number;
-                       handle_channel_announcement (msg: number): number;
-                       handle_channel_update (msg: number): number;
-                       get_next_channel_announcements (starting_point: number, batch_amount: number): number[];
-                       get_next_node_announcements (starting_point: Uint8Array, batch_amount: number): number[];
-                       sync_routing_table (their_node_id: Uint8Array, init: number): void;
-                       handle_reply_channel_range (their_node_id: Uint8Array, msg: number): number;
-                       handle_reply_short_channel_ids_end (their_node_id: Uint8Array, msg: number): number;
-                       handle_query_channel_range (their_node_id: Uint8Array, msg: number): number;
-                       handle_query_short_channel_ids (their_node_id: Uint8Array, msg: number): number;
-               }
-
-               export function LDKRoutingMessageHandler_new(impl: LDKRoutingMessageHandler, MessageSendEventsProvider: LDKMessageSendEventsProvider): number {
-            throw new Error('unimplemented'); // TODO: bind to WASM
-        }
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
-
-
-       // LDKCResult_boolLightningErrorZ RoutingMessageHandler_handle_node_announcement LDKRoutingMessageHandler *NONNULL_PTR this_arg, const struct LDKNodeAnnouncement *NONNULL_PTR msg
-       export function RoutingMessageHandler_handle_node_announcement(this_arg: number, msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RoutingMessageHandler_handle_node_announcement(this_arg, msg);
-               return nativeResponseValue;
-       }
-       // LDKCResult_boolLightningErrorZ RoutingMessageHandler_handle_channel_announcement LDKRoutingMessageHandler *NONNULL_PTR this_arg, const struct LDKChannelAnnouncement *NONNULL_PTR msg
-       export function RoutingMessageHandler_handle_channel_announcement(this_arg: number, msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RoutingMessageHandler_handle_channel_announcement(this_arg, msg);
-               return nativeResponseValue;
-       }
-       // LDKCResult_boolLightningErrorZ RoutingMessageHandler_handle_channel_update LDKRoutingMessageHandler *NONNULL_PTR this_arg, const struct LDKChannelUpdate *NONNULL_PTR msg
-       export function RoutingMessageHandler_handle_channel_update(this_arg: number, msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RoutingMessageHandler_handle_channel_update(this_arg, msg);
-               return nativeResponseValue;
-       }
-       // LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ RoutingMessageHandler_get_next_channel_announcements LDKRoutingMessageHandler *NONNULL_PTR this_arg, uint64_t starting_point, uint8_t batch_amount
-       export function RoutingMessageHandler_get_next_channel_announcements(this_arg: number, starting_point: number, batch_amount: number): number[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RoutingMessageHandler_get_next_channel_announcements(this_arg, starting_point, batch_amount);
-               return nativeResponseValue;
-       }
-       // LDKCVec_NodeAnnouncementZ RoutingMessageHandler_get_next_node_announcements LDKRoutingMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey starting_point, uint8_t batch_amount
-       export function RoutingMessageHandler_get_next_node_announcements(this_arg: number, starting_point: Uint8Array, batch_amount: number): number[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RoutingMessageHandler_get_next_node_announcements(this_arg, encodeArray(starting_point), batch_amount);
-               return nativeResponseValue;
-       }
-       // void RoutingMessageHandler_sync_routing_table LDKRoutingMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init
-       export function RoutingMessageHandler_sync_routing_table(this_arg: number, their_node_id: Uint8Array, init: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RoutingMessageHandler_sync_routing_table(this_arg, encodeArray(their_node_id), init);
-               // debug statements here
-       }
-       // LDKCResult_NoneLightningErrorZ RoutingMessageHandler_handle_reply_channel_range LDKRoutingMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg
-       export function RoutingMessageHandler_handle_reply_channel_range(this_arg: number, their_node_id: Uint8Array, msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RoutingMessageHandler_handle_reply_channel_range(this_arg, encodeArray(their_node_id), msg);
-               return nativeResponseValue;
-       }
-       // LDKCResult_NoneLightningErrorZ RoutingMessageHandler_handle_reply_short_channel_ids_end LDKRoutingMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg
-       export function RoutingMessageHandler_handle_reply_short_channel_ids_end(this_arg: number, their_node_id: Uint8Array, msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RoutingMessageHandler_handle_reply_short_channel_ids_end(this_arg, encodeArray(their_node_id), msg);
-               return nativeResponseValue;
-       }
-       // LDKCResult_NoneLightningErrorZ RoutingMessageHandler_handle_query_channel_range LDKRoutingMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg
-       export function RoutingMessageHandler_handle_query_channel_range(this_arg: number, their_node_id: Uint8Array, msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RoutingMessageHandler_handle_query_channel_range(this_arg, encodeArray(their_node_id), msg);
-               return nativeResponseValue;
-       }
-       // LDKCResult_NoneLightningErrorZ RoutingMessageHandler_handle_query_short_channel_ids LDKRoutingMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg
-       export function RoutingMessageHandler_handle_query_short_channel_ids(this_arg: number, their_node_id: Uint8Array, msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RoutingMessageHandler_handle_query_short_channel_ids(this_arg, encodeArray(their_node_id), msg);
-               return nativeResponseValue;
-       }
-
-
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
-
-               export interface LDKCustomMessageReader {
-                       read (message_type: number, buffer: Uint8Array): number;
-               }
-
-               export function LDKCustomMessageReader_new(impl: LDKCustomMessageReader): number {
-            throw new Error('unimplemented'); // TODO: bind to WASM
-        }
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
-
-
-       // LDKCResult_COption_TypeZDecodeErrorZ CustomMessageReader_read LDKCustomMessageReader *NONNULL_PTR this_arg, uint16_t message_type, struct LDKu8slice buffer
-       export function CustomMessageReader_read(this_arg: number, message_type: number, buffer: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CustomMessageReader_read(this_arg, message_type, encodeArray(buffer));
-               return nativeResponseValue;
-       }
-
-
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
-
-               export interface LDKCustomMessageHandler {
-                       handle_custom_message (msg: number, sender_node_id: Uint8Array): number;
-                       get_and_clear_pending_msg (): number[];
-               }
-
-               export function LDKCustomMessageHandler_new(impl: LDKCustomMessageHandler, CustomMessageReader: LDKCustomMessageReader): number {
-            throw new Error('unimplemented'); // TODO: bind to WASM
-        }
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
-
-
-       // LDKCResult_NoneLightningErrorZ CustomMessageHandler_handle_custom_message LDKCustomMessageHandler *NONNULL_PTR this_arg, struct LDKType msg, struct LDKPublicKey sender_node_id
-       export function CustomMessageHandler_handle_custom_message(this_arg: number, msg: number, sender_node_id: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CustomMessageHandler_handle_custom_message(this_arg, msg, encodeArray(sender_node_id));
-               return nativeResponseValue;
-       }
-       // LDKCVec_C2Tuple_PublicKeyTypeZZ CustomMessageHandler_get_and_clear_pending_msg LDKCustomMessageHandler *NONNULL_PTR this_arg
-       export function CustomMessageHandler_get_and_clear_pending_msg(this_arg: number): number[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CustomMessageHandler_get_and_clear_pending_msg(this_arg);
-               return nativeResponseValue;
-       }
-
-
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
-
-               export interface LDKSocketDescriptor {
-                       send_data (data: Uint8Array, resume_read: boolean): number;
-                       disconnect_socket (): void;
-                       eq (other_arg: number): boolean;
-                       hash (): number;
-               }
-
-               export function LDKSocketDescriptor_new(impl: LDKSocketDescriptor): number {
-            throw new Error('unimplemented'); // TODO: bind to WASM
-        }
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
-
-
-       // uintptr_t SocketDescriptor_send_data LDKSocketDescriptor *NONNULL_PTR this_arg, struct LDKu8slice data, bool resume_read
-       export function SocketDescriptor_send_data(this_arg: number, data: Uint8Array, resume_read: boolean): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SocketDescriptor_send_data(this_arg, encodeArray(data), resume_read);
-               return nativeResponseValue;
-       }
-       // void SocketDescriptor_disconnect_socket LDKSocketDescriptor *NONNULL_PTR this_arg
-       export function SocketDescriptor_disconnect_socket(this_arg: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SocketDescriptor_disconnect_socket(this_arg);
-               // debug statements here
-       }
-       // uint64_t SocketDescriptor_hash LDKSocketDescriptor *NONNULL_PTR this_arg
-       export function SocketDescriptor_hash(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SocketDescriptor_hash(this_arg);
-               return nativeResponseValue;
-       }
-
-
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
-
-               export interface LDKScore {
-                       channel_penalty_msat (short_channel_id: number, send_amt_msat: number, channel_capacity_msat: number, source: number, target: number): number;
-                       payment_path_failed (path: number[], short_channel_id: number): void;
-                       payment_path_successful (path: number[]): void;
-                       write (): Uint8Array;
-               }
-
-               export function LDKScore_new(impl: LDKScore): number {
-            throw new Error('unimplemented'); // TODO: bind to WASM
-        }
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
-
-
-       // uint64_t Score_channel_penalty_msat LDKScore *NONNULL_PTR this_arg, uint64_t short_channel_id, uint64_t send_amt_msat, struct LDKCOption_u64Z channel_capacity_msat, const struct LDKNodeId *NONNULL_PTR source, const struct LDKNodeId *NONNULL_PTR target
-       export function Score_channel_penalty_msat(this_arg: number, short_channel_id: number, send_amt_msat: number, channel_capacity_msat: number, source: number, target: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Score_channel_penalty_msat(this_arg, short_channel_id, send_amt_msat, channel_capacity_msat, source, target);
-               return nativeResponseValue;
-       }
-       // void Score_payment_path_failed LDKScore *NONNULL_PTR this_arg, struct LDKCVec_RouteHopZ path, uint64_t short_channel_id
-       export function Score_payment_path_failed(this_arg: number, path: number[], short_channel_id: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Score_payment_path_failed(this_arg, path, short_channel_id);
-               // debug statements here
-       }
-       // void Score_payment_path_successful LDKScore *NONNULL_PTR this_arg, struct LDKCVec_RouteHopZ path
-       export function Score_payment_path_successful(this_arg: number, path: number[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Score_payment_path_successful(this_arg, path);
-               // debug statements here
-       }
-       // LDKCVec_u8Z Score_write LDKScore *NONNULL_PTR this_arg
-       export function Score_write(this_arg: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Score_write(this_arg);
-               return decodeArray(nativeResponseValue);
-       }
-
-
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
-
-               export interface LDKLockableScore {
-                       lock (): number;
-               }
-
-               export function LDKLockableScore_new(impl: LDKLockableScore): number {
-            throw new Error('unimplemented'); // TODO: bind to WASM
-        }
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
-
-
-       // LDKScore LockableScore_lock LDKLockableScore *NONNULL_PTR this_arg
-       export function LockableScore_lock(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.LockableScore_lock(this_arg);
-               return nativeResponseValue;
-       }
-
-
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
-
-               export interface LDKChannelManagerPersister {
-                       persist_manager (channel_manager: number): number;
-               }
-
-               export function LDKChannelManagerPersister_new(impl: LDKChannelManagerPersister): number {
-            throw new Error('unimplemented'); // TODO: bind to WASM
-        }
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
-
-
-       // LDKCResult_NoneErrorZ ChannelManagerPersister_persist_manager LDKChannelManagerPersister *NONNULL_PTR this_arg, const struct LDKChannelManager *NONNULL_PTR channel_manager
-       export function ChannelManagerPersister_persist_manager(this_arg: number, channel_manager: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManagerPersister_persist_manager(this_arg, channel_manager);
-               return nativeResponseValue;
-       }
-       public static class LDKFallback {
-               private LDKFallback() {}
-               export class SegWitProgram extends LDKFallback {
-                       public number version;
-                       public Uint8Array program;
-                       SegWitProgram(number version, Uint8Array program) { this.version = version; this.program = program; }
-               }
-               export class PubKeyHash extends LDKFallback {
-                       public Uint8Array pub_key_hash;
-                       PubKeyHash(Uint8Array pub_key_hash) { this.pub_key_hash = pub_key_hash; }
-               }
-               export class ScriptHash extends LDKFallback {
-                       public Uint8Array script_hash;
-                       ScriptHash(Uint8Array script_hash) { this.script_hash = script_hash; }
-               }
-               static native void init();
-       }
-       static { LDKFallback.init(); }
-       public static native LDKFallback LDKFallback_ref_from_ptr(long ptr);
-
-
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
-
-               export interface LDKPayer {
-                       node_id (): Uint8Array;
-                       first_hops (): number[];
-                       send_payment (route: number, payment_hash: Uint8Array, payment_secret: Uint8Array): number;
-                       send_spontaneous_payment (route: number, payment_preimage: Uint8Array): number;
-                       retry_payment (route: number, payment_id: Uint8Array): number;
-                       abandon_payment (payment_id: Uint8Array): void;
-               }
-
-               export function LDKPayer_new(impl: LDKPayer): number {
-            throw new Error('unimplemented'); // TODO: bind to WASM
-        }
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
-
-
-       // LDKPublicKey Payer_node_id LDKPayer *NONNULL_PTR this_arg
-       export function Payer_node_id(this_arg: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Payer_node_id(this_arg);
-               return decodeArray(nativeResponseValue);
-       }
-       // LDKCVec_ChannelDetailsZ Payer_first_hops LDKPayer *NONNULL_PTR this_arg
-       export function Payer_first_hops(this_arg: number): number[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Payer_first_hops(this_arg);
-               return nativeResponseValue;
-       }
-       // LDKCResult_PaymentIdPaymentSendFailureZ Payer_send_payment LDKPayer *NONNULL_PTR this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret
-       export function Payer_send_payment(this_arg: number, route: number, payment_hash: Uint8Array, payment_secret: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Payer_send_payment(this_arg, route, encodeArray(payment_hash), encodeArray(payment_secret));
-               return nativeResponseValue;
-       }
-       // LDKCResult_PaymentIdPaymentSendFailureZ Payer_send_spontaneous_payment LDKPayer *NONNULL_PTR this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_preimage
-       export function Payer_send_spontaneous_payment(this_arg: number, route: number, payment_preimage: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Payer_send_spontaneous_payment(this_arg, route, encodeArray(payment_preimage));
-               return nativeResponseValue;
-       }
-       // LDKCResult_NonePaymentSendFailureZ Payer_retry_payment LDKPayer *NONNULL_PTR this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_id
-       export function Payer_retry_payment(this_arg: number, route: number, payment_id: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Payer_retry_payment(this_arg, route, encodeArray(payment_id));
-               return nativeResponseValue;
-       }
-       // void Payer_abandon_payment LDKPayer *NONNULL_PTR this_arg, struct LDKThirtyTwoBytes payment_id
-       export function Payer_abandon_payment(this_arg: number, payment_id: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Payer_abandon_payment(this_arg, encodeArray(payment_id));
-               // debug statements here
-       }
-
-
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START
-
-               export interface LDKRouter {
-                       find_route (payer: Uint8Array, params: number, payment_hash: Uint8Array, first_hops: number[], scorer: number): number;
-               }
-
-               export function LDKRouter_new(impl: LDKRouter): number {
-            throw new Error('unimplemented'); // TODO: bind to WASM
-        }
-
-// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: END
-
-
-       // LDKCResult_RouteLightningErrorZ Router_find_route LDKRouter *NONNULL_PTR this_arg, struct LDKPublicKey payer, const struct LDKRouteParameters *NONNULL_PTR params, const uint8_t (*payment_hash)[32], struct LDKCVec_ChannelDetailsZ *first_hops, const struct LDKScore *NONNULL_PTR scorer
-       export function Router_find_route(this_arg: number, payer: Uint8Array, params: number, payment_hash: Uint8Array, first_hops: number[], scorer: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Router_find_route(this_arg, encodeArray(payer), params, encodeArray(payment_hash), first_hops, scorer);
-               return nativeResponseValue;
-       }
-       // struct LDKStr _ldk_get_compiled_version(void);
-       export function _ldk_get_compiled_version(): String {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm._ldk_get_compiled_version();
-               return nativeResponseValue;
-       }
-       // struct LDKStr _ldk_c_bindings_get_compiled_version(void);
-       export function _ldk_c_bindings_get_compiled_version(): String {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm._ldk_c_bindings_get_compiled_version();
-               return nativeResponseValue;
-       }
-       // void Transaction_free(struct LDKTransaction _res);
-       export function Transaction_free(_res: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Transaction_free(encodeArray(_res));
-               // debug statements here
-       }
-       // struct LDKTxOut TxOut_new(struct LDKCVec_u8Z script_pubkey, uint64_t value);
-       export function TxOut_new(script_pubkey: Uint8Array, value: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.TxOut_new(encodeArray(script_pubkey), value);
-               return nativeResponseValue;
-       }
-       // void TxOut_free(struct LDKTxOut _res);
-       export function TxOut_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.TxOut_free(_res);
-               // debug statements here
-       }
-       // uint64_t TxOut_clone_ptr(LDKTxOut *NONNULL_PTR arg);
-       export function TxOut_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.TxOut_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKTxOut TxOut_clone(const struct LDKTxOut *NONNULL_PTR orig);
-       export function TxOut_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.TxOut_clone(orig);
-               return nativeResponseValue;
-       }
-       // void Str_free(struct LDKStr _res);
-       export function Str_free(_res: String): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Str_free(_res);
-               // debug statements here
-       }
-       // 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.CResult_SecretKeyErrorZ_ok(encodeArray(o));
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_SecretKeyErrorZ CResult_SecretKeyErrorZ_err(enum LDKSecp256k1Error e);
-       export function CResult_SecretKeyErrorZ_err(e: Secp256k1Error): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_SecretKeyErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_SecretKeyErrorZ_is_ok(const struct LDKCResult_SecretKeyErrorZ *NONNULL_PTR o);
-       export function CResult_SecretKeyErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_SecretKeyErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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.CResult_SecretKeyErrorZ_free(_res);
-               // debug statements here
-       }
-       // 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.CResult_PublicKeyErrorZ_ok(encodeArray(o));
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_err(enum LDKSecp256k1Error e);
-       export function CResult_PublicKeyErrorZ_err(e: Secp256k1Error): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PublicKeyErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_PublicKeyErrorZ_is_ok(const struct LDKCResult_PublicKeyErrorZ *NONNULL_PTR o);
-       export function CResult_PublicKeyErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PublicKeyErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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.CResult_PublicKeyErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_PublicKeyErrorZ_clone_ptr(LDKCResult_PublicKeyErrorZ *NONNULL_PTR arg);
-       export function CResult_PublicKeyErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PublicKeyErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_clone(const struct LDKCResult_PublicKeyErrorZ *NONNULL_PTR orig);
-       export function CResult_PublicKeyErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PublicKeyErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_TxCreationKeysDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_TxCreationKeysDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_TxCreationKeysDecodeErrorZ_is_ok(const struct LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_TxCreationKeysDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_TxCreationKeysDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_TxCreationKeysDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_TxCreationKeysDecodeErrorZ_clone_ptr(LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_TxCreationKeysDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_TxCreationKeysDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_TxCreationKeysDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_ChannelPublicKeysDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_ChannelPublicKeysDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_ChannelPublicKeysDecodeErrorZ_is_ok(const struct LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_ChannelPublicKeysDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ChannelPublicKeysDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_ChannelPublicKeysDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_ChannelPublicKeysDecodeErrorZ_clone_ptr(LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_ChannelPublicKeysDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ChannelPublicKeysDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_ChannelPublicKeysDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_TxCreationKeysErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_err(enum LDKSecp256k1Error e);
-       export function CResult_TxCreationKeysErrorZ_err(e: Secp256k1Error): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_TxCreationKeysErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_TxCreationKeysErrorZ_is_ok(const struct LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR o);
-       export function CResult_TxCreationKeysErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_TxCreationKeysErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_TxCreationKeysErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_TxCreationKeysErrorZ_clone_ptr(LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR arg);
-       export function CResult_TxCreationKeysErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_TxCreationKeysErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_clone(const struct LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR orig);
-       export function CResult_TxCreationKeysErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_TxCreationKeysErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCOption_u32Z COption_u32Z_some(uint32_t o);
-       export function COption_u32Z_some(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_u32Z_some(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCOption_u32Z COption_u32Z_none(void);
-       export function COption_u32Z_none(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_u32Z_none();
-               return nativeResponseValue;
-       }
-       // void COption_u32Z_free(struct LDKCOption_u32Z _res);
-       export function COption_u32Z_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_u32Z_free(_res);
-               // debug statements here
-       }
-       // uint64_t COption_u32Z_clone_ptr(LDKCOption_u32Z *NONNULL_PTR arg);
-       export function COption_u32Z_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_u32Z_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCOption_u32Z COption_u32Z_clone(const struct LDKCOption_u32Z *NONNULL_PTR orig);
-       export function COption_u32Z_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_u32Z_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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.CResult_HTLCOutputInCommitmentDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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.CResult_HTLCOutputInCommitmentDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_HTLCOutputInCommitmentDecodeErrorZ_is_ok(const struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_HTLCOutputInCommitmentDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_HTLCOutputInCommitmentDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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.CResult_HTLCOutputInCommitmentDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_HTLCOutputInCommitmentDecodeErrorZ_clone_ptr(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_HTLCOutputInCommitmentDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_HTLCOutputInCommitmentDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.CResult_HTLCOutputInCommitmentDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // enum LDKCOption_NoneZ COption_NoneZ_some(void);
-       export function COption_NoneZ_some(): COption_NoneZ {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_NoneZ_some();
-               return nativeResponseValue;
-       }
-       // enum LDKCOption_NoneZ COption_NoneZ_none(void);
-       export function COption_NoneZ_none(): COption_NoneZ {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_NoneZ_none();
-               return nativeResponseValue;
-       }
-       // void COption_NoneZ_free(enum LDKCOption_NoneZ _res);
-       export function COption_NoneZ_free(_res: COption_NoneZ): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_NoneZ_free(_res);
-               // debug statements here
-       }
-       // 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.CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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.CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_is_ok(const struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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.CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone_ptr(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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.CResult_ChannelTransactionParametersDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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.CResult_ChannelTransactionParametersDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_ChannelTransactionParametersDecodeErrorZ_is_ok(const struct LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_ChannelTransactionParametersDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ChannelTransactionParametersDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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.CResult_ChannelTransactionParametersDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_ChannelTransactionParametersDecodeErrorZ_clone_ptr(LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_ChannelTransactionParametersDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ChannelTransactionParametersDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.CResult_ChannelTransactionParametersDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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.CVec_SignatureZ_free(_res);
-               // debug statements here
-       }
-       // 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_HolderCommitmentTransactionDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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.CResult_HolderCommitmentTransactionDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_HolderCommitmentTransactionDecodeErrorZ_is_ok(const struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_HolderCommitmentTransactionDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_HolderCommitmentTransactionDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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.CResult_HolderCommitmentTransactionDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_HolderCommitmentTransactionDecodeErrorZ_clone_ptr(LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_HolderCommitmentTransactionDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_HolderCommitmentTransactionDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.CResult_HolderCommitmentTransactionDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_BuiltCommitmentTransactionDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_BuiltCommitmentTransactionDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_BuiltCommitmentTransactionDecodeErrorZ_is_ok(const struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_BuiltCommitmentTransactionDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_BuiltCommitmentTransactionDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_BuiltCommitmentTransactionDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_BuiltCommitmentTransactionDecodeErrorZ_clone_ptr(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_BuiltCommitmentTransactionDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_BuiltCommitmentTransactionDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_BuiltCommitmentTransactionDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_TrustedClosingTransactionNoneZ CResult_TrustedClosingTransactionNoneZ_ok(struct LDKTrustedClosingTransaction o);
-       export function CResult_TrustedClosingTransactionNoneZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_TrustedClosingTransactionNoneZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_TrustedClosingTransactionNoneZ CResult_TrustedClosingTransactionNoneZ_err(void);
-       export function CResult_TrustedClosingTransactionNoneZ_err(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_TrustedClosingTransactionNoneZ_err();
-               return nativeResponseValue;
-       }
-       // bool CResult_TrustedClosingTransactionNoneZ_is_ok(const struct LDKCResult_TrustedClosingTransactionNoneZ *NONNULL_PTR o);
-       export function CResult_TrustedClosingTransactionNoneZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_TrustedClosingTransactionNoneZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_TrustedClosingTransactionNoneZ_free(struct LDKCResult_TrustedClosingTransactionNoneZ _res);
-       export function CResult_TrustedClosingTransactionNoneZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_TrustedClosingTransactionNoneZ_free(_res);
-               // debug statements here
-       }
-       // 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.CResult_CommitmentTransactionDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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.CResult_CommitmentTransactionDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_CommitmentTransactionDecodeErrorZ_is_ok(const struct LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_CommitmentTransactionDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_CommitmentTransactionDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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.CResult_CommitmentTransactionDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_CommitmentTransactionDecodeErrorZ_clone_ptr(LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_CommitmentTransactionDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_CommitmentTransactionDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.CResult_CommitmentTransactionDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_TrustedCommitmentTransactionNoneZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_TrustedCommitmentTransactionNoneZ_err();
-               return nativeResponseValue;
-       }
-       // bool CResult_TrustedCommitmentTransactionNoneZ_is_ok(const struct LDKCResult_TrustedCommitmentTransactionNoneZ *NONNULL_PTR o);
-       export function CResult_TrustedCommitmentTransactionNoneZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_TrustedCommitmentTransactionNoneZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_TrustedCommitmentTransactionNoneZ_free(_res);
-               // debug statements here
-       }
-       // 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_CVec_SignatureZNoneZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_CVec_SignatureZNoneZ_err();
-               return nativeResponseValue;
-       }
-       // bool CResult_CVec_SignatureZNoneZ_is_ok(const struct LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR o);
-       export function CResult_CVec_SignatureZNoneZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_CVec_SignatureZNoneZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_CVec_SignatureZNoneZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_CVec_SignatureZNoneZ_clone_ptr(LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR arg);
-       export function CResult_CVec_SignatureZNoneZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_CVec_SignatureZNoneZ_clone_ptr(arg);
-               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 {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_CVec_SignatureZNoneZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_ShutdownScriptDecodeErrorZ CResult_ShutdownScriptDecodeErrorZ_ok(struct LDKShutdownScript o);
-       export function CResult_ShutdownScriptDecodeErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ShutdownScriptDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_ShutdownScriptDecodeErrorZ CResult_ShutdownScriptDecodeErrorZ_err(struct LDKDecodeError e);
-       export function CResult_ShutdownScriptDecodeErrorZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ShutdownScriptDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_ShutdownScriptDecodeErrorZ_is_ok(const struct LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_ShutdownScriptDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ShutdownScriptDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_ShutdownScriptDecodeErrorZ_free(struct LDKCResult_ShutdownScriptDecodeErrorZ _res);
-       export function CResult_ShutdownScriptDecodeErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ShutdownScriptDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_ShutdownScriptDecodeErrorZ_clone_ptr(LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_ShutdownScriptDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ShutdownScriptDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_ShutdownScriptDecodeErrorZ CResult_ShutdownScriptDecodeErrorZ_clone(const struct LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR orig);
-       export function CResult_ShutdownScriptDecodeErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ShutdownScriptDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ CResult_ShutdownScriptInvalidShutdownScriptZ_ok(struct LDKShutdownScript o);
-       export function CResult_ShutdownScriptInvalidShutdownScriptZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ShutdownScriptInvalidShutdownScriptZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ CResult_ShutdownScriptInvalidShutdownScriptZ_err(struct LDKInvalidShutdownScript e);
-       export function CResult_ShutdownScriptInvalidShutdownScriptZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ShutdownScriptInvalidShutdownScriptZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_ShutdownScriptInvalidShutdownScriptZ_is_ok(const struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR o);
-       export function CResult_ShutdownScriptInvalidShutdownScriptZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ShutdownScriptInvalidShutdownScriptZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_ShutdownScriptInvalidShutdownScriptZ_free(struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ _res);
-       export function CResult_ShutdownScriptInvalidShutdownScriptZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ShutdownScriptInvalidShutdownScriptZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_ShutdownScriptInvalidShutdownScriptZ_clone_ptr(LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR arg);
-       export function CResult_ShutdownScriptInvalidShutdownScriptZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ShutdownScriptInvalidShutdownScriptZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ CResult_ShutdownScriptInvalidShutdownScriptZ_clone(const struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR orig);
-       export function CResult_ShutdownScriptInvalidShutdownScriptZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ShutdownScriptInvalidShutdownScriptZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_NoneErrorZ CResult_NoneErrorZ_ok(void);
-       export function CResult_NoneErrorZ_ok(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NoneErrorZ_ok();
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_NoneErrorZ CResult_NoneErrorZ_err(enum LDKIOError e);
-       export function CResult_NoneErrorZ_err(e: IOError): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NoneErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_NoneErrorZ_is_ok(const struct LDKCResult_NoneErrorZ *NONNULL_PTR o);
-       export function CResult_NoneErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NoneErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_NoneErrorZ_free(struct LDKCResult_NoneErrorZ _res);
-       export function CResult_NoneErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NoneErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_NoneErrorZ_clone_ptr(LDKCResult_NoneErrorZ *NONNULL_PTR arg);
-       export function CResult_NoneErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NoneErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_NoneErrorZ CResult_NoneErrorZ_clone(const struct LDKCResult_NoneErrorZ *NONNULL_PTR orig);
-       export function CResult_NoneErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NoneErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_RouteHopDecodeErrorZ CResult_RouteHopDecodeErrorZ_ok(struct LDKRouteHop o);
-       export function CResult_RouteHopDecodeErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RouteHopDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_RouteHopDecodeErrorZ CResult_RouteHopDecodeErrorZ_err(struct LDKDecodeError e);
-       export function CResult_RouteHopDecodeErrorZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RouteHopDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_RouteHopDecodeErrorZ_is_ok(const struct LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_RouteHopDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RouteHopDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_RouteHopDecodeErrorZ_free(struct LDKCResult_RouteHopDecodeErrorZ _res);
-       export function CResult_RouteHopDecodeErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RouteHopDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_RouteHopDecodeErrorZ_clone_ptr(LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_RouteHopDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RouteHopDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_RouteHopDecodeErrorZ CResult_RouteHopDecodeErrorZ_clone(const struct LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR orig);
-       export function CResult_RouteHopDecodeErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RouteHopDecodeErrorZ_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;
-       }
-       // bool CResult_RouteDecodeErrorZ_is_ok(const struct LDKCResult_RouteDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_RouteDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RouteDecodeErrorZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_RouteDecodeErrorZ_clone_ptr(LDKCResult_RouteDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_RouteDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RouteDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.CResult_RouteDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_RouteParametersDecodeErrorZ CResult_RouteParametersDecodeErrorZ_ok(struct LDKRouteParameters o);
-       export function CResult_RouteParametersDecodeErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RouteParametersDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_RouteParametersDecodeErrorZ CResult_RouteParametersDecodeErrorZ_err(struct LDKDecodeError e);
-       export function CResult_RouteParametersDecodeErrorZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RouteParametersDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_RouteParametersDecodeErrorZ_is_ok(const struct LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_RouteParametersDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RouteParametersDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_RouteParametersDecodeErrorZ_free(struct LDKCResult_RouteParametersDecodeErrorZ _res);
-       export function CResult_RouteParametersDecodeErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RouteParametersDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_RouteParametersDecodeErrorZ_clone_ptr(LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_RouteParametersDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RouteParametersDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_RouteParametersDecodeErrorZ CResult_RouteParametersDecodeErrorZ_clone(const struct LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR orig);
-       export function CResult_RouteParametersDecodeErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RouteParametersDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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.CVec_RouteHintZ_free(_res);
-               // debug statements here
-       }
-       // struct LDKCOption_u64Z COption_u64Z_some(uint64_t o);
-       export function COption_u64Z_some(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_u64Z_some(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCOption_u64Z COption_u64Z_none(void);
-       export function COption_u64Z_none(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_u64Z_none();
-               return nativeResponseValue;
-       }
-       // void COption_u64Z_free(struct LDKCOption_u64Z _res);
-       export function COption_u64Z_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_u64Z_free(_res);
-               // debug statements here
-       }
-       // uint64_t COption_u64Z_clone_ptr(LDKCOption_u64Z *NONNULL_PTR arg);
-       export function COption_u64Z_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_u64Z_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCOption_u64Z COption_u64Z_clone(const struct LDKCOption_u64Z *NONNULL_PTR orig);
-       export function COption_u64Z_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_u64Z_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_PayeeDecodeErrorZ CResult_PayeeDecodeErrorZ_ok(struct LDKPayee o);
-       export function CResult_PayeeDecodeErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PayeeDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_PayeeDecodeErrorZ CResult_PayeeDecodeErrorZ_err(struct LDKDecodeError e);
-       export function CResult_PayeeDecodeErrorZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PayeeDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_PayeeDecodeErrorZ_is_ok(const struct LDKCResult_PayeeDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_PayeeDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PayeeDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_PayeeDecodeErrorZ_free(struct LDKCResult_PayeeDecodeErrorZ _res);
-       export function CResult_PayeeDecodeErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PayeeDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_PayeeDecodeErrorZ_clone_ptr(LDKCResult_PayeeDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_PayeeDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PayeeDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_PayeeDecodeErrorZ CResult_PayeeDecodeErrorZ_clone(const struct LDKCResult_PayeeDecodeErrorZ *NONNULL_PTR orig);
-       export function CResult_PayeeDecodeErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PayeeDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // void CVec_RouteHintHopZ_free(struct LDKCVec_RouteHintHopZ _res);
-       export function CVec_RouteHintHopZ_free(_res: number[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CVec_RouteHintHopZ_free(_res);
-               // debug statements here
-       }
-       // struct LDKCResult_RouteHintDecodeErrorZ CResult_RouteHintDecodeErrorZ_ok(struct LDKRouteHint o);
-       export function CResult_RouteHintDecodeErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RouteHintDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_RouteHintDecodeErrorZ CResult_RouteHintDecodeErrorZ_err(struct LDKDecodeError e);
-       export function CResult_RouteHintDecodeErrorZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RouteHintDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_RouteHintDecodeErrorZ_is_ok(const struct LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_RouteHintDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RouteHintDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_RouteHintDecodeErrorZ_free(struct LDKCResult_RouteHintDecodeErrorZ _res);
-       export function CResult_RouteHintDecodeErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RouteHintDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_RouteHintDecodeErrorZ_clone_ptr(LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_RouteHintDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RouteHintDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_RouteHintDecodeErrorZ CResult_RouteHintDecodeErrorZ_clone(const struct LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR orig);
-       export function CResult_RouteHintDecodeErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RouteHintDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_RouteHintHopDecodeErrorZ CResult_RouteHintHopDecodeErrorZ_ok(struct LDKRouteHintHop o);
-       export function CResult_RouteHintHopDecodeErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RouteHintHopDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_RouteHintHopDecodeErrorZ CResult_RouteHintHopDecodeErrorZ_err(struct LDKDecodeError e);
-       export function CResult_RouteHintHopDecodeErrorZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RouteHintHopDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_RouteHintHopDecodeErrorZ_is_ok(const struct LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_RouteHintHopDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RouteHintHopDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_RouteHintHopDecodeErrorZ_free(struct LDKCResult_RouteHintHopDecodeErrorZ _res);
-       export function CResult_RouteHintHopDecodeErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RouteHintHopDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_RouteHintHopDecodeErrorZ_clone_ptr(LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_RouteHintHopDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RouteHintHopDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_RouteHintHopDecodeErrorZ CResult_RouteHintHopDecodeErrorZ_clone(const struct LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR orig);
-       export function CResult_RouteHintHopDecodeErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RouteHintHopDecodeErrorZ_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_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.CResult_RouteLightningErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_RouteLightningErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_RouteLightningErrorZ_is_ok(const struct LDKCResult_RouteLightningErrorZ *NONNULL_PTR o);
-       export function CResult_RouteLightningErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RouteLightningErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_RouteLightningErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_RouteLightningErrorZ_clone_ptr(LDKCResult_RouteLightningErrorZ *NONNULL_PTR arg);
-       export function CResult_RouteLightningErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RouteLightningErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_RouteLightningErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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: AccessError): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_TxOutAccessErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_TxOutAccessErrorZ_is_ok(const struct LDKCResult_TxOutAccessErrorZ *NONNULL_PTR o);
-       export function CResult_TxOutAccessErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_TxOutAccessErrorZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_TxOutAccessErrorZ_clone_ptr(LDKCResult_TxOutAccessErrorZ *NONNULL_PTR arg);
-       export function CResult_TxOutAccessErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_TxOutAccessErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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;
-       }
-       // uint64_t C2Tuple_usizeTransactionZ_clone_ptr(LDKC2Tuple_usizeTransactionZ *NONNULL_PTR arg);
-       export function C2Tuple_usizeTransactionZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_usizeTransactionZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKC2Tuple_usizeTransactionZ C2Tuple_usizeTransactionZ_clone(const struct LDKC2Tuple_usizeTransactionZ *NONNULL_PTR orig);
-       export function C2Tuple_usizeTransactionZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_usizeTransactionZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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
-       }
-       // void CVec_TxidZ_free(struct LDKCVec_TxidZ _res);
-       export function CVec_TxidZ_free(_res: Uint8Array[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CVec_TxidZ_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: ChannelMonitorUpdateErr): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NoneChannelMonitorUpdateErrZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_NoneChannelMonitorUpdateErrZ_is_ok(const struct LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR o);
-       export function CResult_NoneChannelMonitorUpdateErrZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NoneChannelMonitorUpdateErrZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_NoneChannelMonitorUpdateErrZ_clone_ptr(LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR arg);
-       export function CResult_NoneChannelMonitorUpdateErrZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NoneChannelMonitorUpdateErrZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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
-       }
-       // struct LDKCOption_C2Tuple_usizeTransactionZZ COption_C2Tuple_usizeTransactionZZ_some(struct LDKC2Tuple_usizeTransactionZ o);
-       export function COption_C2Tuple_usizeTransactionZZ_some(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_C2Tuple_usizeTransactionZZ_some(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCOption_C2Tuple_usizeTransactionZZ COption_C2Tuple_usizeTransactionZZ_none(void);
-       export function COption_C2Tuple_usizeTransactionZZ_none(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_C2Tuple_usizeTransactionZZ_none();
-               return nativeResponseValue;
-       }
-       // void COption_C2Tuple_usizeTransactionZZ_free(struct LDKCOption_C2Tuple_usizeTransactionZZ _res);
-       export function COption_C2Tuple_usizeTransactionZZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_C2Tuple_usizeTransactionZZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t COption_C2Tuple_usizeTransactionZZ_clone_ptr(LDKCOption_C2Tuple_usizeTransactionZZ *NONNULL_PTR arg);
-       export function COption_C2Tuple_usizeTransactionZZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_C2Tuple_usizeTransactionZZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCOption_C2Tuple_usizeTransactionZZ COption_C2Tuple_usizeTransactionZZ_clone(const struct LDKCOption_C2Tuple_usizeTransactionZZ *NONNULL_PTR orig);
-       export function COption_C2Tuple_usizeTransactionZZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_C2Tuple_usizeTransactionZZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCOption_ClosureReasonZ COption_ClosureReasonZ_some(struct LDKClosureReason o);
-       export function COption_ClosureReasonZ_some(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_ClosureReasonZ_some(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCOption_ClosureReasonZ COption_ClosureReasonZ_none(void);
-       export function COption_ClosureReasonZ_none(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_ClosureReasonZ_none();
-               return nativeResponseValue;
-       }
-       // void COption_ClosureReasonZ_free(struct LDKCOption_ClosureReasonZ _res);
-       export function COption_ClosureReasonZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_ClosureReasonZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t COption_ClosureReasonZ_clone_ptr(LDKCOption_ClosureReasonZ *NONNULL_PTR arg);
-       export function COption_ClosureReasonZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_ClosureReasonZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCOption_ClosureReasonZ COption_ClosureReasonZ_clone(const struct LDKCOption_ClosureReasonZ *NONNULL_PTR orig);
-       export function COption_ClosureReasonZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_ClosureReasonZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_COption_ClosureReasonZDecodeErrorZ CResult_COption_ClosureReasonZDecodeErrorZ_ok(struct LDKCOption_ClosureReasonZ o);
-       export function CResult_COption_ClosureReasonZDecodeErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_ClosureReasonZDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_COption_ClosureReasonZDecodeErrorZ CResult_COption_ClosureReasonZDecodeErrorZ_err(struct LDKDecodeError e);
-       export function CResult_COption_ClosureReasonZDecodeErrorZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_ClosureReasonZDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_COption_ClosureReasonZDecodeErrorZ_is_ok(const struct LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_COption_ClosureReasonZDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_ClosureReasonZDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_COption_ClosureReasonZDecodeErrorZ_free(struct LDKCResult_COption_ClosureReasonZDecodeErrorZ _res);
-       export function CResult_COption_ClosureReasonZDecodeErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_ClosureReasonZDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_COption_ClosureReasonZDecodeErrorZ_clone_ptr(LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_COption_ClosureReasonZDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_ClosureReasonZDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_COption_ClosureReasonZDecodeErrorZ CResult_COption_ClosureReasonZDecodeErrorZ_clone(const struct LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR orig);
-       export function CResult_COption_ClosureReasonZDecodeErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_ClosureReasonZDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCOption_NetworkUpdateZ COption_NetworkUpdateZ_some(struct LDKNetworkUpdate o);
-       export function COption_NetworkUpdateZ_some(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_NetworkUpdateZ_some(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCOption_NetworkUpdateZ COption_NetworkUpdateZ_none(void);
-       export function COption_NetworkUpdateZ_none(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_NetworkUpdateZ_none();
-               return nativeResponseValue;
-       }
-       // void COption_NetworkUpdateZ_free(struct LDKCOption_NetworkUpdateZ _res);
-       export function COption_NetworkUpdateZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_NetworkUpdateZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t COption_NetworkUpdateZ_clone_ptr(LDKCOption_NetworkUpdateZ *NONNULL_PTR arg);
-       export function COption_NetworkUpdateZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_NetworkUpdateZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCOption_NetworkUpdateZ COption_NetworkUpdateZ_clone(const struct LDKCOption_NetworkUpdateZ *NONNULL_PTR orig);
-       export function COption_NetworkUpdateZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_NetworkUpdateZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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 LDKCOption_EventZ COption_EventZ_some(struct LDKEvent o);
-       export function COption_EventZ_some(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_EventZ_some(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCOption_EventZ COption_EventZ_none(void);
-       export function COption_EventZ_none(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_EventZ_none();
-               return nativeResponseValue;
-       }
-       // void COption_EventZ_free(struct LDKCOption_EventZ _res);
-       export function COption_EventZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_EventZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t COption_EventZ_clone_ptr(LDKCOption_EventZ *NONNULL_PTR arg);
-       export function COption_EventZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_EventZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCOption_EventZ COption_EventZ_clone(const struct LDKCOption_EventZ *NONNULL_PTR orig);
-       export function COption_EventZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_EventZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_COption_EventZDecodeErrorZ CResult_COption_EventZDecodeErrorZ_ok(struct LDKCOption_EventZ o);
-       export function CResult_COption_EventZDecodeErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_EventZDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_COption_EventZDecodeErrorZ CResult_COption_EventZDecodeErrorZ_err(struct LDKDecodeError e);
-       export function CResult_COption_EventZDecodeErrorZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_EventZDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_COption_EventZDecodeErrorZ_is_ok(const struct LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_COption_EventZDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_EventZDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_COption_EventZDecodeErrorZ_free(struct LDKCResult_COption_EventZDecodeErrorZ _res);
-       export function CResult_COption_EventZDecodeErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_EventZDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_COption_EventZDecodeErrorZ_clone_ptr(LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_COption_EventZDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_EventZDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_COption_EventZDecodeErrorZ CResult_COption_EventZDecodeErrorZ_clone(const struct LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR orig);
-       export function CResult_COption_EventZDecodeErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_EventZDecodeErrorZ_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_ScoringParametersDecodeErrorZ CResult_ScoringParametersDecodeErrorZ_ok(struct LDKScoringParameters o);
-       export function CResult_ScoringParametersDecodeErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ScoringParametersDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_ScoringParametersDecodeErrorZ CResult_ScoringParametersDecodeErrorZ_err(struct LDKDecodeError e);
-       export function CResult_ScoringParametersDecodeErrorZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ScoringParametersDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_ScoringParametersDecodeErrorZ_is_ok(const struct LDKCResult_ScoringParametersDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_ScoringParametersDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ScoringParametersDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_ScoringParametersDecodeErrorZ_free(struct LDKCResult_ScoringParametersDecodeErrorZ _res);
-       export function CResult_ScoringParametersDecodeErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ScoringParametersDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // struct LDKCResult_ScorerDecodeErrorZ CResult_ScorerDecodeErrorZ_ok(struct LDKScorer o);
-       export function CResult_ScorerDecodeErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ScorerDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_ScorerDecodeErrorZ CResult_ScorerDecodeErrorZ_err(struct LDKDecodeError e);
-       export function CResult_ScorerDecodeErrorZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ScorerDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_ScorerDecodeErrorZ_is_ok(const struct LDKCResult_ScorerDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_ScorerDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ScorerDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_ScorerDecodeErrorZ_free(struct LDKCResult_ScorerDecodeErrorZ _res);
-       export function CResult_ScorerDecodeErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ScorerDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // 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_InitFeaturesDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_InitFeaturesDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_InitFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_InitFeaturesDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_InitFeaturesDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InitFeaturesDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_InitFeaturesDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // 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_ChannelFeaturesDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_ChannelFeaturesDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_ChannelFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_ChannelFeaturesDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_ChannelFeaturesDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ChannelFeaturesDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_ChannelFeaturesDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // 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.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;
-       }
-       // bool CResult_NodeFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_NodeFeaturesDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_NodeFeaturesDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NodeFeaturesDecodeErrorZ_is_ok(o);
-               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_InvoiceFeaturesDecodeErrorZ CResult_InvoiceFeaturesDecodeErrorZ_ok(struct LDKInvoiceFeatures o);
-       export function CResult_InvoiceFeaturesDecodeErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InvoiceFeaturesDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_InvoiceFeaturesDecodeErrorZ CResult_InvoiceFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
-       export function CResult_InvoiceFeaturesDecodeErrorZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InvoiceFeaturesDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_InvoiceFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_InvoiceFeaturesDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_InvoiceFeaturesDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InvoiceFeaturesDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_InvoiceFeaturesDecodeErrorZ_free(struct LDKCResult_InvoiceFeaturesDecodeErrorZ _res);
-       export function CResult_InvoiceFeaturesDecodeErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InvoiceFeaturesDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ CResult_ChannelTypeFeaturesDecodeErrorZ_ok(struct LDKChannelTypeFeatures o);
-       export function CResult_ChannelTypeFeaturesDecodeErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ChannelTypeFeaturesDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ CResult_ChannelTypeFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
-       export function CResult_ChannelTypeFeaturesDecodeErrorZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ChannelTypeFeaturesDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_ChannelTypeFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_ChannelTypeFeaturesDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ChannelTypeFeaturesDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_ChannelTypeFeaturesDecodeErrorZ_free(struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ _res);
-       export function CResult_ChannelTypeFeaturesDecodeErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ChannelTypeFeaturesDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_ok(struct LDKDelayedPaymentOutputDescriptor o);
-       export function CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_err(struct LDKDecodeError e);
-       export function CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_is_ok(const struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ _res);
-       export function CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone_ptr(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR orig);
-       export function CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ CResult_StaticPaymentOutputDescriptorDecodeErrorZ_ok(struct LDKStaticPaymentOutputDescriptor o);
-       export function CResult_StaticPaymentOutputDescriptorDecodeErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_StaticPaymentOutputDescriptorDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ CResult_StaticPaymentOutputDescriptorDecodeErrorZ_err(struct LDKDecodeError e);
-       export function CResult_StaticPaymentOutputDescriptorDecodeErrorZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_StaticPaymentOutputDescriptorDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_StaticPaymentOutputDescriptorDecodeErrorZ_is_ok(const struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_StaticPaymentOutputDescriptorDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_StaticPaymentOutputDescriptorDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ _res);
-       export function CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone_ptr(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR orig);
-       export function CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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;
-       }
-       // bool CResult_SpendableOutputDescriptorDecodeErrorZ_is_ok(const struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_SpendableOutputDescriptorDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_SpendableOutputDescriptorDecodeErrorZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_SpendableOutputDescriptorDecodeErrorZ_clone_ptr(LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_SpendableOutputDescriptorDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_SpendableOutputDescriptorDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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 LDKCResult_NoneNoneZ CResult_NoneNoneZ_ok(void);
-       export function CResult_NoneNoneZ_ok(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NoneNoneZ_ok();
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_NoneNoneZ CResult_NoneNoneZ_err(void);
-       export function CResult_NoneNoneZ_err(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NoneNoneZ_err();
-               return nativeResponseValue;
-       }
-       // bool CResult_NoneNoneZ_is_ok(const struct LDKCResult_NoneNoneZ *NONNULL_PTR o);
-       export function CResult_NoneNoneZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NoneNoneZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_NoneNoneZ_free(struct LDKCResult_NoneNoneZ _res);
-       export function CResult_NoneNoneZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NoneNoneZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_NoneNoneZ_clone_ptr(LDKCResult_NoneNoneZ *NONNULL_PTR arg);
-       export function CResult_NoneNoneZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NoneNoneZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_NoneNoneZ CResult_NoneNoneZ_clone(const struct LDKCResult_NoneNoneZ *NONNULL_PTR orig);
-       export function CResult_NoneNoneZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NoneNoneZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // uint64_t C2Tuple_SignatureCVec_SignatureZZ_clone_ptr(LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR arg);
-       export function C2Tuple_SignatureCVec_SignatureZZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_SignatureCVec_SignatureZZ_clone_ptr(arg);
-               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;
-       }
-       // bool CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_is_ok(const struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR o);
-       export function CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone_ptr(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR arg);
-       export function CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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;
-       }
-       // bool CResult_SignatureNoneZ_is_ok(const struct LDKCResult_SignatureNoneZ *NONNULL_PTR o);
-       export function CResult_SignatureNoneZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_SignatureNoneZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_SignatureNoneZ_clone_ptr(LDKCResult_SignatureNoneZ *NONNULL_PTR arg);
-       export function CResult_SignatureNoneZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_SignatureNoneZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_SignDecodeErrorZ CResult_SignDecodeErrorZ_ok(struct LDKSign o);
-       export function CResult_SignDecodeErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_SignDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_err(struct LDKDecodeError e);
-       export function CResult_SignDecodeErrorZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_SignDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_SignDecodeErrorZ_is_ok(const struct LDKCResult_SignDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_SignDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_SignDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_SignDecodeErrorZ_free(struct LDKCResult_SignDecodeErrorZ _res);
-       export function CResult_SignDecodeErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_SignDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_SignDecodeErrorZ_clone_ptr(LDKCResult_SignDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_SignDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_SignDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_clone(const struct LDKCResult_SignDecodeErrorZ *NONNULL_PTR orig);
-       export function CResult_SignDecodeErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_SignDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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.CVec_u8Z_free(encodeArray(_res));
-               // debug statements here
-       }
-       // struct LDKCResult_RecoverableSignatureNoneZ CResult_RecoverableSignatureNoneZ_ok(struct LDKRecoverableSignature o);
-       export function CResult_RecoverableSignatureNoneZ_ok(arg: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RecoverableSignatureNoneZ_ok(encodeArray(arg));
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_RecoverableSignatureNoneZ CResult_RecoverableSignatureNoneZ_err(void);
-       export function CResult_RecoverableSignatureNoneZ_err(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RecoverableSignatureNoneZ_err();
-               return nativeResponseValue;
-       }
-       // bool CResult_RecoverableSignatureNoneZ_is_ok(const struct LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR o);
-       export function CResult_RecoverableSignatureNoneZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RecoverableSignatureNoneZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_RecoverableSignatureNoneZ_free(struct LDKCResult_RecoverableSignatureNoneZ _res);
-       export function CResult_RecoverableSignatureNoneZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RecoverableSignatureNoneZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_RecoverableSignatureNoneZ_clone_ptr(LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR arg);
-       export function CResult_RecoverableSignatureNoneZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RecoverableSignatureNoneZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_RecoverableSignatureNoneZ CResult_RecoverableSignatureNoneZ_clone(const struct LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR orig);
-       export function CResult_RecoverableSignatureNoneZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RecoverableSignatureNoneZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // void CVec_CVec_u8ZZ_free(struct LDKCVec_CVec_u8ZZ _res);
-       export function CVec_CVec_u8ZZ_free(_res: Uint8Array[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CVec_CVec_u8ZZ_free(_res);
-               // debug statements here
-       }
-       // struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_ok(struct LDKCVec_CVec_u8ZZ o);
-       export function CResult_CVec_CVec_u8ZZNoneZ_ok(o: Uint8Array[]): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_CVec_CVec_u8ZZNoneZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_err(void);
-       export function CResult_CVec_CVec_u8ZZNoneZ_err(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_CVec_CVec_u8ZZNoneZ_err();
-               return nativeResponseValue;
-       }
-       // bool CResult_CVec_CVec_u8ZZNoneZ_is_ok(const struct LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR o);
-       export function CResult_CVec_CVec_u8ZZNoneZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_CVec_CVec_u8ZZNoneZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_CVec_CVec_u8ZZNoneZ_free(struct LDKCResult_CVec_CVec_u8ZZNoneZ _res);
-       export function CResult_CVec_CVec_u8ZZNoneZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_CVec_CVec_u8ZZNoneZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_CVec_CVec_u8ZZNoneZ_clone_ptr(LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR arg);
-       export function CResult_CVec_CVec_u8ZZNoneZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_CVec_CVec_u8ZZNoneZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_clone(const struct LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR orig);
-       export function CResult_CVec_CVec_u8ZZNoneZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_CVec_CVec_u8ZZNoneZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_ok(struct LDKInMemorySigner o);
-       export function CResult_InMemorySignerDecodeErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InMemorySignerDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_err(struct LDKDecodeError e);
-       export function CResult_InMemorySignerDecodeErrorZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InMemorySignerDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_InMemorySignerDecodeErrorZ_is_ok(const struct LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_InMemorySignerDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InMemorySignerDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_InMemorySignerDecodeErrorZ_free(struct LDKCResult_InMemorySignerDecodeErrorZ _res);
-       export function CResult_InMemorySignerDecodeErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InMemorySignerDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_InMemorySignerDecodeErrorZ_clone_ptr(LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_InMemorySignerDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InMemorySignerDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_clone(const struct LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR orig);
-       export function CResult_InMemorySignerDecodeErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InMemorySignerDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // void CVec_TxOutZ_free(struct LDKCVec_TxOutZ _res);
-       export function CVec_TxOutZ_free(_res: number[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CVec_TxOutZ_free(_res);
-               // debug statements here
-       }
-       // struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_ok(struct LDKTransaction o);
-       export function CResult_TransactionNoneZ_ok(o: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_TransactionNoneZ_ok(encodeArray(o));
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_err(void);
-       export function CResult_TransactionNoneZ_err(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_TransactionNoneZ_err();
-               return nativeResponseValue;
-       }
-       // bool CResult_TransactionNoneZ_is_ok(const struct LDKCResult_TransactionNoneZ *NONNULL_PTR o);
-       export function CResult_TransactionNoneZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_TransactionNoneZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_TransactionNoneZ_free(struct LDKCResult_TransactionNoneZ _res);
-       export function CResult_TransactionNoneZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_TransactionNoneZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_TransactionNoneZ_clone_ptr(LDKCResult_TransactionNoneZ *NONNULL_PTR arg);
-       export function CResult_TransactionNoneZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_TransactionNoneZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_clone(const struct LDKCResult_TransactionNoneZ *NONNULL_PTR orig);
-       export function CResult_TransactionNoneZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_TransactionNoneZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // uint64_t C2Tuple_BlockHashChannelMonitorZ_clone_ptr(LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR arg);
-       export function C2Tuple_BlockHashChannelMonitorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_BlockHashChannelMonitorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKC2Tuple_BlockHashChannelMonitorZ C2Tuple_BlockHashChannelMonitorZ_clone(const struct LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR orig);
-       export function C2Tuple_BlockHashChannelMonitorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_BlockHashChannelMonitorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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
-       }
-       // void CVec_C2Tuple_BlockHashChannelMonitorZZ_free(struct LDKCVec_C2Tuple_BlockHashChannelMonitorZZ _res);
-       export function CVec_C2Tuple_BlockHashChannelMonitorZZ_free(_res: number[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CVec_C2Tuple_BlockHashChannelMonitorZZ_free(_res);
-               // debug statements here
-       }
-       // struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_ok(struct LDKCVec_C2Tuple_BlockHashChannelMonitorZZ o);
-       export function CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_ok(o: number[]): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_err(enum LDKIOError e);
-       export function CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_err(e: IOError): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_is_ok(const struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ *NONNULL_PTR o);
-       export function CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ _res);
-       export function CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_clone_ptr(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ *NONNULL_PTR arg);
-       export function CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_clone(const struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ *NONNULL_PTR orig);
-       export function CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCOption_u16Z COption_u16Z_some(uint16_t o);
-       export function COption_u16Z_some(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_u16Z_some(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCOption_u16Z COption_u16Z_none(void);
-       export function COption_u16Z_none(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_u16Z_none();
-               return nativeResponseValue;
-       }
-       // void COption_u16Z_free(struct LDKCOption_u16Z _res);
-       export function COption_u16Z_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_u16Z_free(_res);
-               // debug statements here
-       }
-       // uint64_t COption_u16Z_clone_ptr(LDKCOption_u16Z *NONNULL_PTR arg);
-       export function COption_u16Z_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_u16Z_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCOption_u16Z COption_u16Z_clone(const struct LDKCOption_u16Z *NONNULL_PTR orig);
-       export function COption_u16Z_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_u16Z_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;
-       }
-       // bool CResult_NoneAPIErrorZ_is_ok(const struct LDKCResult_NoneAPIErrorZ *NONNULL_PTR o);
-       export function CResult_NoneAPIErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NoneAPIErrorZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_NoneAPIErrorZ_clone_ptr(LDKCResult_NoneAPIErrorZ *NONNULL_PTR arg);
-       export function CResult_NoneAPIErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NoneAPIErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_CResult_NoneAPIErrorZZ_free(struct LDKCVec_CResult_NoneAPIErrorZZ _res);
-       export function CVec_CResult_NoneAPIErrorZZ_free(_res: number[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CVec_CResult_NoneAPIErrorZZ_free(_res);
-               // debug statements here
-       }
-       // void CVec_APIErrorZ_free(struct LDKCVec_APIErrorZ _res);
-       export function CVec_APIErrorZ_free(_res: number[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CVec_APIErrorZ_free(_res);
-               // debug statements here
-       }
-       // struct LDKCResult__u832APIErrorZ CResult__u832APIErrorZ_ok(struct LDKThirtyTwoBytes o);
-       export function CResult__u832APIErrorZ_ok(o: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult__u832APIErrorZ_ok(encodeArray(o));
-               return nativeResponseValue;
-       }
-       // struct LDKCResult__u832APIErrorZ CResult__u832APIErrorZ_err(struct LDKAPIError e);
-       export function CResult__u832APIErrorZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult__u832APIErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult__u832APIErrorZ_is_ok(const struct LDKCResult__u832APIErrorZ *NONNULL_PTR o);
-       export function CResult__u832APIErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult__u832APIErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult__u832APIErrorZ_free(struct LDKCResult__u832APIErrorZ _res);
-       export function CResult__u832APIErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult__u832APIErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult__u832APIErrorZ_clone_ptr(LDKCResult__u832APIErrorZ *NONNULL_PTR arg);
-       export function CResult__u832APIErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult__u832APIErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult__u832APIErrorZ CResult__u832APIErrorZ_clone(const struct LDKCResult__u832APIErrorZ *NONNULL_PTR orig);
-       export function CResult__u832APIErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult__u832APIErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_PaymentIdPaymentSendFailureZ CResult_PaymentIdPaymentSendFailureZ_ok(struct LDKThirtyTwoBytes o);
-       export function CResult_PaymentIdPaymentSendFailureZ_ok(o: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentIdPaymentSendFailureZ_ok(encodeArray(o));
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_PaymentIdPaymentSendFailureZ CResult_PaymentIdPaymentSendFailureZ_err(struct LDKPaymentSendFailure e);
-       export function CResult_PaymentIdPaymentSendFailureZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentIdPaymentSendFailureZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_PaymentIdPaymentSendFailureZ_is_ok(const struct LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR o);
-       export function CResult_PaymentIdPaymentSendFailureZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentIdPaymentSendFailureZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_PaymentIdPaymentSendFailureZ_free(struct LDKCResult_PaymentIdPaymentSendFailureZ _res);
-       export function CResult_PaymentIdPaymentSendFailureZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentIdPaymentSendFailureZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_PaymentIdPaymentSendFailureZ_clone_ptr(LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR arg);
-       export function CResult_PaymentIdPaymentSendFailureZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentIdPaymentSendFailureZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_PaymentIdPaymentSendFailureZ CResult_PaymentIdPaymentSendFailureZ_clone(const struct LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR orig);
-       export function CResult_PaymentIdPaymentSendFailureZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentIdPaymentSendFailureZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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;
-       }
-       // bool CResult_NonePaymentSendFailureZ_is_ok(const struct LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR o);
-       export function CResult_NonePaymentSendFailureZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NonePaymentSendFailureZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_NonePaymentSendFailureZ_clone_ptr(LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR arg);
-       export function CResult_NonePaymentSendFailureZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NonePaymentSendFailureZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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;
-       }
-       // uint64_t C2Tuple_PaymentHashPaymentIdZ_clone_ptr(LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR arg);
-       export function C2Tuple_PaymentHashPaymentIdZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_PaymentHashPaymentIdZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKC2Tuple_PaymentHashPaymentIdZ C2Tuple_PaymentHashPaymentIdZ_clone(const struct LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR orig);
-       export function C2Tuple_PaymentHashPaymentIdZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_PaymentHashPaymentIdZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKC2Tuple_PaymentHashPaymentIdZ C2Tuple_PaymentHashPaymentIdZ_new(struct LDKThirtyTwoBytes a, struct LDKThirtyTwoBytes b);
-       export function C2Tuple_PaymentHashPaymentIdZ_new(a: Uint8Array, b: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_PaymentHashPaymentIdZ_new(encodeArray(a), encodeArray(b));
-               return nativeResponseValue;
-       }
-       // void C2Tuple_PaymentHashPaymentIdZ_free(struct LDKC2Tuple_PaymentHashPaymentIdZ _res);
-       export function C2Tuple_PaymentHashPaymentIdZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_PaymentHashPaymentIdZ_free(_res);
-               // debug statements here
-       }
-       // struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_ok(struct LDKC2Tuple_PaymentHashPaymentIdZ o);
-       export function CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_err(struct LDKPaymentSendFailure e);
-       export function CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_is_ok(const struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR o);
-       export function CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ _res);
-       export function CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone_ptr(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR arg);
-       export function CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone(const struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR orig);
-       export function CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // void CVec_NetAddressZ_free(struct LDKCVec_NetAddressZ _res);
-       export function CVec_NetAddressZ_free(_res: number[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CVec_NetAddressZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t C2Tuple_PaymentHashPaymentSecretZ_clone_ptr(LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR arg);
-       export function C2Tuple_PaymentHashPaymentSecretZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_PaymentHashPaymentSecretZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKC2Tuple_PaymentHashPaymentSecretZ C2Tuple_PaymentHashPaymentSecretZ_clone(const struct LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR orig);
-       export function C2Tuple_PaymentHashPaymentSecretZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_PaymentHashPaymentSecretZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKC2Tuple_PaymentHashPaymentSecretZ C2Tuple_PaymentHashPaymentSecretZ_new(struct LDKThirtyTwoBytes a, struct LDKThirtyTwoBytes b);
-       export function C2Tuple_PaymentHashPaymentSecretZ_new(a: Uint8Array, b: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_PaymentHashPaymentSecretZ_new(encodeArray(a), encodeArray(b));
-               return nativeResponseValue;
-       }
-       // void C2Tuple_PaymentHashPaymentSecretZ_free(struct LDKC2Tuple_PaymentHashPaymentSecretZ _res);
-       export function C2Tuple_PaymentHashPaymentSecretZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_PaymentHashPaymentSecretZ_free(_res);
-               // debug statements here
-       }
-       // struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_ok(struct LDKC2Tuple_PaymentHashPaymentSecretZ o);
-       export function CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_err(void);
-       export function CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_err(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_err();
-               return nativeResponseValue;
-       }
-       // bool CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_is_ok(const struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *NONNULL_PTR o);
-       export function CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ _res);
-       export function CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone_ptr(LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *NONNULL_PTR arg);
-       export function CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone(const struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *NONNULL_PTR orig);
-       export function CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_ok(struct LDKC2Tuple_PaymentHashPaymentSecretZ o);
-       export function CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_err(struct LDKAPIError e);
-       export function CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_is_ok(const struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *NONNULL_PTR o);
-       export function CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ _res);
-       export function CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone_ptr(LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *NONNULL_PTR arg);
-       export function CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone(const struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *NONNULL_PTR orig);
-       export function CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_PaymentSecretNoneZ CResult_PaymentSecretNoneZ_ok(struct LDKThirtyTwoBytes o);
-       export function CResult_PaymentSecretNoneZ_ok(o: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentSecretNoneZ_ok(encodeArray(o));
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_PaymentSecretNoneZ CResult_PaymentSecretNoneZ_err(void);
-       export function CResult_PaymentSecretNoneZ_err(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentSecretNoneZ_err();
-               return nativeResponseValue;
-       }
-       // bool CResult_PaymentSecretNoneZ_is_ok(const struct LDKCResult_PaymentSecretNoneZ *NONNULL_PTR o);
-       export function CResult_PaymentSecretNoneZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentSecretNoneZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_PaymentSecretNoneZ_free(struct LDKCResult_PaymentSecretNoneZ _res);
-       export function CResult_PaymentSecretNoneZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentSecretNoneZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_PaymentSecretNoneZ_clone_ptr(LDKCResult_PaymentSecretNoneZ *NONNULL_PTR arg);
-       export function CResult_PaymentSecretNoneZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentSecretNoneZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_PaymentSecretNoneZ CResult_PaymentSecretNoneZ_clone(const struct LDKCResult_PaymentSecretNoneZ *NONNULL_PTR orig);
-       export function CResult_PaymentSecretNoneZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentSecretNoneZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_PaymentSecretAPIErrorZ CResult_PaymentSecretAPIErrorZ_ok(struct LDKThirtyTwoBytes o);
-       export function CResult_PaymentSecretAPIErrorZ_ok(o: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentSecretAPIErrorZ_ok(encodeArray(o));
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_PaymentSecretAPIErrorZ CResult_PaymentSecretAPIErrorZ_err(struct LDKAPIError e);
-       export function CResult_PaymentSecretAPIErrorZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentSecretAPIErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_PaymentSecretAPIErrorZ_is_ok(const struct LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR o);
-       export function CResult_PaymentSecretAPIErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentSecretAPIErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_PaymentSecretAPIErrorZ_free(struct LDKCResult_PaymentSecretAPIErrorZ _res);
-       export function CResult_PaymentSecretAPIErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentSecretAPIErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_PaymentSecretAPIErrorZ_clone_ptr(LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR arg);
-       export function CResult_PaymentSecretAPIErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentSecretAPIErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_PaymentSecretAPIErrorZ CResult_PaymentSecretAPIErrorZ_clone(const struct LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR orig);
-       export function CResult_PaymentSecretAPIErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentSecretAPIErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_PaymentPreimageAPIErrorZ CResult_PaymentPreimageAPIErrorZ_ok(struct LDKThirtyTwoBytes o);
-       export function CResult_PaymentPreimageAPIErrorZ_ok(o: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentPreimageAPIErrorZ_ok(encodeArray(o));
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_PaymentPreimageAPIErrorZ CResult_PaymentPreimageAPIErrorZ_err(struct LDKAPIError e);
-       export function CResult_PaymentPreimageAPIErrorZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentPreimageAPIErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_PaymentPreimageAPIErrorZ_is_ok(const struct LDKCResult_PaymentPreimageAPIErrorZ *NONNULL_PTR o);
-       export function CResult_PaymentPreimageAPIErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentPreimageAPIErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_PaymentPreimageAPIErrorZ_free(struct LDKCResult_PaymentPreimageAPIErrorZ _res);
-       export function CResult_PaymentPreimageAPIErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentPreimageAPIErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_PaymentPreimageAPIErrorZ_clone_ptr(LDKCResult_PaymentPreimageAPIErrorZ *NONNULL_PTR arg);
-       export function CResult_PaymentPreimageAPIErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentPreimageAPIErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_PaymentPreimageAPIErrorZ CResult_PaymentPreimageAPIErrorZ_clone(const struct LDKCResult_PaymentPreimageAPIErrorZ *NONNULL_PTR orig);
-       export function CResult_PaymentPreimageAPIErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentPreimageAPIErrorZ_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;
-       }
-       // bool CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_is_ok(const struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_is_ok(o);
-               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 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_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;
-       }
-       // bool CResult_ChannelConfigDecodeErrorZ_is_ok(const struct LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_ChannelConfigDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ChannelConfigDecodeErrorZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_ChannelConfigDecodeErrorZ_clone_ptr(LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_ChannelConfigDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ChannelConfigDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_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;
-       }
-       // bool CResult_OutPointDecodeErrorZ_is_ok(const struct LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_OutPointDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_OutPointDecodeErrorZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_OutPointDecodeErrorZ_clone_ptr(LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_OutPointDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_OutPointDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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 LDKCOption_TypeZ COption_TypeZ_some(struct LDKType o);
-       export function COption_TypeZ_some(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_TypeZ_some(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCOption_TypeZ COption_TypeZ_none(void);
-       export function COption_TypeZ_none(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_TypeZ_none();
-               return nativeResponseValue;
-       }
-       // void COption_TypeZ_free(struct LDKCOption_TypeZ _res);
-       export function COption_TypeZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_TypeZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t COption_TypeZ_clone_ptr(LDKCOption_TypeZ *NONNULL_PTR arg);
-       export function COption_TypeZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_TypeZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCOption_TypeZ COption_TypeZ_clone(const struct LDKCOption_TypeZ *NONNULL_PTR orig);
-       export function COption_TypeZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_TypeZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_COption_TypeZDecodeErrorZ CResult_COption_TypeZDecodeErrorZ_ok(struct LDKCOption_TypeZ o);
-       export function CResult_COption_TypeZDecodeErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_TypeZDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_COption_TypeZDecodeErrorZ CResult_COption_TypeZDecodeErrorZ_err(struct LDKDecodeError e);
-       export function CResult_COption_TypeZDecodeErrorZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_TypeZDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_COption_TypeZDecodeErrorZ_is_ok(const struct LDKCResult_COption_TypeZDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_COption_TypeZDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_TypeZDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_COption_TypeZDecodeErrorZ_free(struct LDKCResult_COption_TypeZDecodeErrorZ _res);
-       export function CResult_COption_TypeZDecodeErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_TypeZDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_COption_TypeZDecodeErrorZ_clone_ptr(LDKCResult_COption_TypeZDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_COption_TypeZDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_TypeZDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_COption_TypeZDecodeErrorZ CResult_COption_TypeZDecodeErrorZ_clone(const struct LDKCResult_COption_TypeZDecodeErrorZ *NONNULL_PTR orig);
-       export function CResult_COption_TypeZDecodeErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_TypeZDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_PaymentIdPaymentErrorZ CResult_PaymentIdPaymentErrorZ_ok(struct LDKThirtyTwoBytes o);
-       export function CResult_PaymentIdPaymentErrorZ_ok(o: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentIdPaymentErrorZ_ok(encodeArray(o));
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_PaymentIdPaymentErrorZ CResult_PaymentIdPaymentErrorZ_err(struct LDKPaymentError e);
-       export function CResult_PaymentIdPaymentErrorZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentIdPaymentErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_PaymentIdPaymentErrorZ_is_ok(const struct LDKCResult_PaymentIdPaymentErrorZ *NONNULL_PTR o);
-       export function CResult_PaymentIdPaymentErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentIdPaymentErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_PaymentIdPaymentErrorZ_free(struct LDKCResult_PaymentIdPaymentErrorZ _res);
-       export function CResult_PaymentIdPaymentErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentIdPaymentErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_PaymentIdPaymentErrorZ_clone_ptr(LDKCResult_PaymentIdPaymentErrorZ *NONNULL_PTR arg);
-       export function CResult_PaymentIdPaymentErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentIdPaymentErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_PaymentIdPaymentErrorZ CResult_PaymentIdPaymentErrorZ_clone(const struct LDKCResult_PaymentIdPaymentErrorZ *NONNULL_PTR orig);
-       export function CResult_PaymentIdPaymentErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PaymentIdPaymentErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_SiPrefixNoneZ CResult_SiPrefixNoneZ_ok(enum LDKSiPrefix o);
-       export function CResult_SiPrefixNoneZ_ok(o: SiPrefix): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_SiPrefixNoneZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_SiPrefixNoneZ CResult_SiPrefixNoneZ_err(void);
-       export function CResult_SiPrefixNoneZ_err(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_SiPrefixNoneZ_err();
-               return nativeResponseValue;
-       }
-       // bool CResult_SiPrefixNoneZ_is_ok(const struct LDKCResult_SiPrefixNoneZ *NONNULL_PTR o);
-       export function CResult_SiPrefixNoneZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_SiPrefixNoneZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_SiPrefixNoneZ_free(struct LDKCResult_SiPrefixNoneZ _res);
-       export function CResult_SiPrefixNoneZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_SiPrefixNoneZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_SiPrefixNoneZ_clone_ptr(LDKCResult_SiPrefixNoneZ *NONNULL_PTR arg);
-       export function CResult_SiPrefixNoneZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_SiPrefixNoneZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_SiPrefixNoneZ CResult_SiPrefixNoneZ_clone(const struct LDKCResult_SiPrefixNoneZ *NONNULL_PTR orig);
-       export function CResult_SiPrefixNoneZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_SiPrefixNoneZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_InvoiceNoneZ CResult_InvoiceNoneZ_ok(struct LDKInvoice o);
-       export function CResult_InvoiceNoneZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InvoiceNoneZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_InvoiceNoneZ CResult_InvoiceNoneZ_err(void);
-       export function CResult_InvoiceNoneZ_err(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InvoiceNoneZ_err();
-               return nativeResponseValue;
-       }
-       // bool CResult_InvoiceNoneZ_is_ok(const struct LDKCResult_InvoiceNoneZ *NONNULL_PTR o);
-       export function CResult_InvoiceNoneZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InvoiceNoneZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_InvoiceNoneZ_free(struct LDKCResult_InvoiceNoneZ _res);
-       export function CResult_InvoiceNoneZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InvoiceNoneZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_InvoiceNoneZ_clone_ptr(LDKCResult_InvoiceNoneZ *NONNULL_PTR arg);
-       export function CResult_InvoiceNoneZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InvoiceNoneZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_InvoiceNoneZ CResult_InvoiceNoneZ_clone(const struct LDKCResult_InvoiceNoneZ *NONNULL_PTR orig);
-       export function CResult_InvoiceNoneZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InvoiceNoneZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_SignedRawInvoiceNoneZ CResult_SignedRawInvoiceNoneZ_ok(struct LDKSignedRawInvoice o);
-       export function CResult_SignedRawInvoiceNoneZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_SignedRawInvoiceNoneZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_SignedRawInvoiceNoneZ CResult_SignedRawInvoiceNoneZ_err(void);
-       export function CResult_SignedRawInvoiceNoneZ_err(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_SignedRawInvoiceNoneZ_err();
-               return nativeResponseValue;
-       }
-       // bool CResult_SignedRawInvoiceNoneZ_is_ok(const struct LDKCResult_SignedRawInvoiceNoneZ *NONNULL_PTR o);
-       export function CResult_SignedRawInvoiceNoneZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_SignedRawInvoiceNoneZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_SignedRawInvoiceNoneZ_free(struct LDKCResult_SignedRawInvoiceNoneZ _res);
-       export function CResult_SignedRawInvoiceNoneZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_SignedRawInvoiceNoneZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_SignedRawInvoiceNoneZ_clone_ptr(LDKCResult_SignedRawInvoiceNoneZ *NONNULL_PTR arg);
-       export function CResult_SignedRawInvoiceNoneZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_SignedRawInvoiceNoneZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_SignedRawInvoiceNoneZ CResult_SignedRawInvoiceNoneZ_clone(const struct LDKCResult_SignedRawInvoiceNoneZ *NONNULL_PTR orig);
-       export function CResult_SignedRawInvoiceNoneZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_SignedRawInvoiceNoneZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // uint64_t C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone_ptr(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR arg);
-       export function C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone(const struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR orig);
-       export function C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ C3Tuple_RawInvoice_u832InvoiceSignatureZ_new(struct LDKRawInvoice a, struct LDKThirtyTwoBytes b, struct LDKInvoiceSignature c);
-       export function C3Tuple_RawInvoice_u832InvoiceSignatureZ_new(a: number, b: Uint8Array, c: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C3Tuple_RawInvoice_u832InvoiceSignatureZ_new(a, encodeArray(b), c);
-               return nativeResponseValue;
-       }
-       // void C3Tuple_RawInvoice_u832InvoiceSignatureZ_free(struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ _res);
-       export function C3Tuple_RawInvoice_u832InvoiceSignatureZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C3Tuple_RawInvoice_u832InvoiceSignatureZ_free(_res);
-               // debug statements here
-       }
-       // struct LDKCResult_PayeePubKeyErrorZ CResult_PayeePubKeyErrorZ_ok(struct LDKPayeePubKey o);
-       export function CResult_PayeePubKeyErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PayeePubKeyErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_PayeePubKeyErrorZ CResult_PayeePubKeyErrorZ_err(enum LDKSecp256k1Error e);
-       export function CResult_PayeePubKeyErrorZ_err(e: Secp256k1Error): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PayeePubKeyErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_PayeePubKeyErrorZ_is_ok(const struct LDKCResult_PayeePubKeyErrorZ *NONNULL_PTR o);
-       export function CResult_PayeePubKeyErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PayeePubKeyErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_PayeePubKeyErrorZ_free(struct LDKCResult_PayeePubKeyErrorZ _res);
-       export function CResult_PayeePubKeyErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PayeePubKeyErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_PayeePubKeyErrorZ_clone_ptr(LDKCResult_PayeePubKeyErrorZ *NONNULL_PTR arg);
-       export function CResult_PayeePubKeyErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PayeePubKeyErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_PayeePubKeyErrorZ CResult_PayeePubKeyErrorZ_clone(const struct LDKCResult_PayeePubKeyErrorZ *NONNULL_PTR orig);
-       export function CResult_PayeePubKeyErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PayeePubKeyErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // void CVec_PrivateRouteZ_free(struct LDKCVec_PrivateRouteZ _res);
-       export function CVec_PrivateRouteZ_free(_res: number[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CVec_PrivateRouteZ_free(_res);
-               // debug statements here
-       }
-       // struct LDKCResult_PositiveTimestampCreationErrorZ CResult_PositiveTimestampCreationErrorZ_ok(struct LDKPositiveTimestamp o);
-       export function CResult_PositiveTimestampCreationErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PositiveTimestampCreationErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_PositiveTimestampCreationErrorZ CResult_PositiveTimestampCreationErrorZ_err(enum LDKCreationError e);
-       export function CResult_PositiveTimestampCreationErrorZ_err(e: CreationError): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PositiveTimestampCreationErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_PositiveTimestampCreationErrorZ_is_ok(const struct LDKCResult_PositiveTimestampCreationErrorZ *NONNULL_PTR o);
-       export function CResult_PositiveTimestampCreationErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PositiveTimestampCreationErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_PositiveTimestampCreationErrorZ_free(struct LDKCResult_PositiveTimestampCreationErrorZ _res);
-       export function CResult_PositiveTimestampCreationErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PositiveTimestampCreationErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_PositiveTimestampCreationErrorZ_clone_ptr(LDKCResult_PositiveTimestampCreationErrorZ *NONNULL_PTR arg);
-       export function CResult_PositiveTimestampCreationErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PositiveTimestampCreationErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_PositiveTimestampCreationErrorZ CResult_PositiveTimestampCreationErrorZ_clone(const struct LDKCResult_PositiveTimestampCreationErrorZ *NONNULL_PTR orig);
-       export function CResult_PositiveTimestampCreationErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PositiveTimestampCreationErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_NoneSemanticErrorZ CResult_NoneSemanticErrorZ_ok(void);
-       export function CResult_NoneSemanticErrorZ_ok(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NoneSemanticErrorZ_ok();
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_NoneSemanticErrorZ CResult_NoneSemanticErrorZ_err(enum LDKSemanticError e);
-       export function CResult_NoneSemanticErrorZ_err(e: SemanticError): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NoneSemanticErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_NoneSemanticErrorZ_is_ok(const struct LDKCResult_NoneSemanticErrorZ *NONNULL_PTR o);
-       export function CResult_NoneSemanticErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NoneSemanticErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_NoneSemanticErrorZ_free(struct LDKCResult_NoneSemanticErrorZ _res);
-       export function CResult_NoneSemanticErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NoneSemanticErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_NoneSemanticErrorZ_clone_ptr(LDKCResult_NoneSemanticErrorZ *NONNULL_PTR arg);
-       export function CResult_NoneSemanticErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NoneSemanticErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_NoneSemanticErrorZ CResult_NoneSemanticErrorZ_clone(const struct LDKCResult_NoneSemanticErrorZ *NONNULL_PTR orig);
-       export function CResult_NoneSemanticErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NoneSemanticErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_InvoiceSemanticErrorZ CResult_InvoiceSemanticErrorZ_ok(struct LDKInvoice o);
-       export function CResult_InvoiceSemanticErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InvoiceSemanticErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_InvoiceSemanticErrorZ CResult_InvoiceSemanticErrorZ_err(enum LDKSemanticError e);
-       export function CResult_InvoiceSemanticErrorZ_err(e: SemanticError): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InvoiceSemanticErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_InvoiceSemanticErrorZ_is_ok(const struct LDKCResult_InvoiceSemanticErrorZ *NONNULL_PTR o);
-       export function CResult_InvoiceSemanticErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InvoiceSemanticErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_InvoiceSemanticErrorZ_free(struct LDKCResult_InvoiceSemanticErrorZ _res);
-       export function CResult_InvoiceSemanticErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InvoiceSemanticErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_InvoiceSemanticErrorZ_clone_ptr(LDKCResult_InvoiceSemanticErrorZ *NONNULL_PTR arg);
-       export function CResult_InvoiceSemanticErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InvoiceSemanticErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_InvoiceSemanticErrorZ CResult_InvoiceSemanticErrorZ_clone(const struct LDKCResult_InvoiceSemanticErrorZ *NONNULL_PTR orig);
-       export function CResult_InvoiceSemanticErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InvoiceSemanticErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_DescriptionCreationErrorZ CResult_DescriptionCreationErrorZ_ok(struct LDKDescription o);
-       export function CResult_DescriptionCreationErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_DescriptionCreationErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_DescriptionCreationErrorZ CResult_DescriptionCreationErrorZ_err(enum LDKCreationError e);
-       export function CResult_DescriptionCreationErrorZ_err(e: CreationError): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_DescriptionCreationErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_DescriptionCreationErrorZ_is_ok(const struct LDKCResult_DescriptionCreationErrorZ *NONNULL_PTR o);
-       export function CResult_DescriptionCreationErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_DescriptionCreationErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_DescriptionCreationErrorZ_free(struct LDKCResult_DescriptionCreationErrorZ _res);
-       export function CResult_DescriptionCreationErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_DescriptionCreationErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_DescriptionCreationErrorZ_clone_ptr(LDKCResult_DescriptionCreationErrorZ *NONNULL_PTR arg);
-       export function CResult_DescriptionCreationErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_DescriptionCreationErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_DescriptionCreationErrorZ CResult_DescriptionCreationErrorZ_clone(const struct LDKCResult_DescriptionCreationErrorZ *NONNULL_PTR orig);
-       export function CResult_DescriptionCreationErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_DescriptionCreationErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_ExpiryTimeCreationErrorZ CResult_ExpiryTimeCreationErrorZ_ok(struct LDKExpiryTime o);
-       export function CResult_ExpiryTimeCreationErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ExpiryTimeCreationErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_ExpiryTimeCreationErrorZ CResult_ExpiryTimeCreationErrorZ_err(enum LDKCreationError e);
-       export function CResult_ExpiryTimeCreationErrorZ_err(e: CreationError): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ExpiryTimeCreationErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_ExpiryTimeCreationErrorZ_is_ok(const struct LDKCResult_ExpiryTimeCreationErrorZ *NONNULL_PTR o);
-       export function CResult_ExpiryTimeCreationErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ExpiryTimeCreationErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_ExpiryTimeCreationErrorZ_free(struct LDKCResult_ExpiryTimeCreationErrorZ _res);
-       export function CResult_ExpiryTimeCreationErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ExpiryTimeCreationErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_ExpiryTimeCreationErrorZ_clone_ptr(LDKCResult_ExpiryTimeCreationErrorZ *NONNULL_PTR arg);
-       export function CResult_ExpiryTimeCreationErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ExpiryTimeCreationErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_ExpiryTimeCreationErrorZ CResult_ExpiryTimeCreationErrorZ_clone(const struct LDKCResult_ExpiryTimeCreationErrorZ *NONNULL_PTR orig);
-       export function CResult_ExpiryTimeCreationErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ExpiryTimeCreationErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_PrivateRouteCreationErrorZ CResult_PrivateRouteCreationErrorZ_ok(struct LDKPrivateRoute o);
-       export function CResult_PrivateRouteCreationErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PrivateRouteCreationErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_PrivateRouteCreationErrorZ CResult_PrivateRouteCreationErrorZ_err(enum LDKCreationError e);
-       export function CResult_PrivateRouteCreationErrorZ_err(e: CreationError): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PrivateRouteCreationErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_PrivateRouteCreationErrorZ_is_ok(const struct LDKCResult_PrivateRouteCreationErrorZ *NONNULL_PTR o);
-       export function CResult_PrivateRouteCreationErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PrivateRouteCreationErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_PrivateRouteCreationErrorZ_free(struct LDKCResult_PrivateRouteCreationErrorZ _res);
-       export function CResult_PrivateRouteCreationErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PrivateRouteCreationErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_PrivateRouteCreationErrorZ_clone_ptr(LDKCResult_PrivateRouteCreationErrorZ *NONNULL_PTR arg);
-       export function CResult_PrivateRouteCreationErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PrivateRouteCreationErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_PrivateRouteCreationErrorZ CResult_PrivateRouteCreationErrorZ_clone(const struct LDKCResult_PrivateRouteCreationErrorZ *NONNULL_PTR orig);
-       export function CResult_PrivateRouteCreationErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PrivateRouteCreationErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_StringErrorZ CResult_StringErrorZ_ok(struct LDKStr o);
-       export function CResult_StringErrorZ_ok(o: String): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_StringErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_StringErrorZ CResult_StringErrorZ_err(enum LDKSecp256k1Error e);
-       export function CResult_StringErrorZ_err(e: Secp256k1Error): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_StringErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_StringErrorZ_is_ok(const struct LDKCResult_StringErrorZ *NONNULL_PTR o);
-       export function CResult_StringErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_StringErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_StringErrorZ_free(struct LDKCResult_StringErrorZ _res);
-       export function CResult_StringErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_StringErrorZ_free(_res);
-               // debug statements here
-       }
-       // 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;
-       }
-       // bool CResult_ChannelMonitorUpdateDecodeErrorZ_is_ok(const struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_ChannelMonitorUpdateDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ChannelMonitorUpdateDecodeErrorZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_ChannelMonitorUpdateDecodeErrorZ_clone_ptr(LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_ChannelMonitorUpdateDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ChannelMonitorUpdateDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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 LDKCOption_MonitorEventZ COption_MonitorEventZ_some(struct LDKMonitorEvent o);
-       export function COption_MonitorEventZ_some(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_MonitorEventZ_some(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCOption_MonitorEventZ COption_MonitorEventZ_none(void);
-       export function COption_MonitorEventZ_none(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_MonitorEventZ_none();
-               return nativeResponseValue;
-       }
-       // void COption_MonitorEventZ_free(struct LDKCOption_MonitorEventZ _res);
-       export function COption_MonitorEventZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_MonitorEventZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t COption_MonitorEventZ_clone_ptr(LDKCOption_MonitorEventZ *NONNULL_PTR arg);
-       export function COption_MonitorEventZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_MonitorEventZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCOption_MonitorEventZ COption_MonitorEventZ_clone(const struct LDKCOption_MonitorEventZ *NONNULL_PTR orig);
-       export function COption_MonitorEventZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_MonitorEventZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_COption_MonitorEventZDecodeErrorZ CResult_COption_MonitorEventZDecodeErrorZ_ok(struct LDKCOption_MonitorEventZ o);
-       export function CResult_COption_MonitorEventZDecodeErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_MonitorEventZDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_COption_MonitorEventZDecodeErrorZ CResult_COption_MonitorEventZDecodeErrorZ_err(struct LDKDecodeError e);
-       export function CResult_COption_MonitorEventZDecodeErrorZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_MonitorEventZDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_COption_MonitorEventZDecodeErrorZ_is_ok(const struct LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_COption_MonitorEventZDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_MonitorEventZDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_COption_MonitorEventZDecodeErrorZ_free(struct LDKCResult_COption_MonitorEventZDecodeErrorZ _res);
-       export function CResult_COption_MonitorEventZDecodeErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_MonitorEventZDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_COption_MonitorEventZDecodeErrorZ_clone_ptr(LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_COption_MonitorEventZDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_MonitorEventZDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_COption_MonitorEventZDecodeErrorZ CResult_COption_MonitorEventZDecodeErrorZ_clone(const struct LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR orig);
-       export function CResult_COption_MonitorEventZDecodeErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_MonitorEventZDecodeErrorZ_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;
-       }
-       // bool CResult_HTLCUpdateDecodeErrorZ_is_ok(const struct LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_HTLCUpdateDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_HTLCUpdateDecodeErrorZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_HTLCUpdateDecodeErrorZ_clone_ptr(LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_HTLCUpdateDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_HTLCUpdateDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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;
-       }
-       // uint64_t C2Tuple_OutPointScriptZ_clone_ptr(LDKC2Tuple_OutPointScriptZ *NONNULL_PTR arg);
-       export function C2Tuple_OutPointScriptZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_OutPointScriptZ_clone_ptr(arg);
-               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
-       }
-       // uint64_t C2Tuple_u32ScriptZ_clone_ptr(LDKC2Tuple_u32ScriptZ *NONNULL_PTR arg);
-       export function C2Tuple_u32ScriptZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_u32ScriptZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKC2Tuple_u32ScriptZ C2Tuple_u32ScriptZ_clone(const struct LDKC2Tuple_u32ScriptZ *NONNULL_PTR orig);
-       export function C2Tuple_u32ScriptZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_u32ScriptZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKC2Tuple_u32ScriptZ C2Tuple_u32ScriptZ_new(uint32_t a, struct LDKCVec_u8Z b);
-       export function C2Tuple_u32ScriptZ_new(a: number, b: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_u32ScriptZ_new(a, encodeArray(b));
-               return nativeResponseValue;
-       }
-       // void C2Tuple_u32ScriptZ_free(struct LDKC2Tuple_u32ScriptZ _res);
-       export function C2Tuple_u32ScriptZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_u32ScriptZ_free(_res);
-               // debug statements here
-       }
-       // void CVec_C2Tuple_u32ScriptZZ_free(struct LDKCVec_C2Tuple_u32ScriptZZ _res);
-       export function CVec_C2Tuple_u32ScriptZZ_free(_res: number[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CVec_C2Tuple_u32ScriptZZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone_ptr(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR arg);
-       export function C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone(const struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR orig);
-       export function C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_new(struct LDKThirtyTwoBytes a, struct LDKCVec_C2Tuple_u32ScriptZZ b);
-       export function C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_new(a: Uint8Array, b: number[]): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_new(encodeArray(a), b);
-               return nativeResponseValue;
-       }
-       // void C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ _res);
-       export function C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(_res);
-               // debug statements here
-       }
-       // void CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ _res);
-       export function CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(_res: number[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_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
-       }
-       // 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
-       }
-       // uint64_t C2Tuple_u32TxOutZ_clone_ptr(LDKC2Tuple_u32TxOutZ *NONNULL_PTR arg);
-       export function C2Tuple_u32TxOutZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_u32TxOutZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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
-       }
-       // uint64_t C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone_ptr(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR arg);
-       export function C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone(const struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR orig);
-       export function C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_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 {
-               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
-       }
-       // void CVec_BalanceZ_free(struct LDKCVec_BalanceZ _res);
-       export function CVec_BalanceZ_free(_res: number[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CVec_BalanceZ_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;
-       }
-       // bool CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_is_ok(const struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_is_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
-       }
-       // uint64_t CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone_ptr(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone(const struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *NONNULL_PTR orig);
-       export function CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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;
-       }
-       // bool CResult_NoneLightningErrorZ_is_ok(const struct LDKCResult_NoneLightningErrorZ *NONNULL_PTR o);
-       export function CResult_NoneLightningErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NoneLightningErrorZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_NoneLightningErrorZ_clone_ptr(LDKCResult_NoneLightningErrorZ *NONNULL_PTR arg);
-       export function CResult_NoneLightningErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NoneLightningErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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;
-       }
-       // uint64_t C2Tuple_PublicKeyTypeZ_clone_ptr(LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR arg);
-       export function C2Tuple_PublicKeyTypeZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_PublicKeyTypeZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKC2Tuple_PublicKeyTypeZ C2Tuple_PublicKeyTypeZ_clone(const struct LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR orig);
-       export function C2Tuple_PublicKeyTypeZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_PublicKeyTypeZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKC2Tuple_PublicKeyTypeZ C2Tuple_PublicKeyTypeZ_new(struct LDKPublicKey a, struct LDKType b);
-       export function C2Tuple_PublicKeyTypeZ_new(a: Uint8Array, b: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_PublicKeyTypeZ_new(encodeArray(a), b);
-               return nativeResponseValue;
-       }
-       // void C2Tuple_PublicKeyTypeZ_free(struct LDKC2Tuple_PublicKeyTypeZ _res);
-       export function C2Tuple_PublicKeyTypeZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_PublicKeyTypeZ_free(_res);
-               // debug statements here
-       }
-       // void CVec_C2Tuple_PublicKeyTypeZZ_free(struct LDKCVec_C2Tuple_PublicKeyTypeZZ _res);
-       export function CVec_C2Tuple_PublicKeyTypeZZ_free(_res: number[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CVec_C2Tuple_PublicKeyTypeZZ_free(_res);
-               // debug statements here
-       }
-       // 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;
-       }
-       // bool CResult_boolLightningErrorZ_is_ok(const struct LDKCResult_boolLightningErrorZ *NONNULL_PTR o);
-       export function CResult_boolLightningErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_boolLightningErrorZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_boolLightningErrorZ_clone_ptr(LDKCResult_boolLightningErrorZ *NONNULL_PTR arg);
-       export function CResult_boolLightningErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_boolLightningErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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;
-       }
-       // uint64_t C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone_ptr(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR arg);
-       export function C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone_ptr(arg);
-               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
-       }
-       // 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.CVec_PublicKeyZ_free(_res);
-               // debug statements here
-       }
-       // 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_CVec_u8ZPeerHandleErrorZ_ok(encodeArray(o));
-               return nativeResponseValue;
-       }
-       // 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_CVec_u8ZPeerHandleErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_CVec_u8ZPeerHandleErrorZ_is_ok(const struct LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR o);
-       export function CResult_CVec_u8ZPeerHandleErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_CVec_u8ZPeerHandleErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_CVec_u8ZPeerHandleErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_CVec_u8ZPeerHandleErrorZ_clone_ptr(LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR arg);
-       export function CResult_CVec_u8ZPeerHandleErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_CVec_u8ZPeerHandleErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_CVec_u8ZPeerHandleErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_NonePeerHandleErrorZ_ok();
-               return nativeResponseValue;
-       }
-       // 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_NonePeerHandleErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_NonePeerHandleErrorZ_is_ok(const struct LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR o);
-       export function CResult_NonePeerHandleErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NonePeerHandleErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_NonePeerHandleErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_NonePeerHandleErrorZ_clone_ptr(LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR arg);
-       export function CResult_NonePeerHandleErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NonePeerHandleErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_NonePeerHandleErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_boolPeerHandleErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_boolPeerHandleErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_boolPeerHandleErrorZ_is_ok(const struct LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR o);
-       export function CResult_boolPeerHandleErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_boolPeerHandleErrorZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_boolPeerHandleErrorZ_clone_ptr(LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR arg);
-       export function CResult_boolPeerHandleErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_boolPeerHandleErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_boolPeerHandleErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_NodeIdDecodeErrorZ CResult_NodeIdDecodeErrorZ_ok(struct LDKNodeId o);
-       export function CResult_NodeIdDecodeErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NodeIdDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_NodeIdDecodeErrorZ CResult_NodeIdDecodeErrorZ_err(struct LDKDecodeError e);
-       export function CResult_NodeIdDecodeErrorZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NodeIdDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_NodeIdDecodeErrorZ_is_ok(const struct LDKCResult_NodeIdDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_NodeIdDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NodeIdDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_NodeIdDecodeErrorZ_free(struct LDKCResult_NodeIdDecodeErrorZ _res);
-       export function CResult_NodeIdDecodeErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NodeIdDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_NodeIdDecodeErrorZ_clone_ptr(LDKCResult_NodeIdDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_NodeIdDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NodeIdDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_NodeIdDecodeErrorZ CResult_NodeIdDecodeErrorZ_clone(const struct LDKCResult_NodeIdDecodeErrorZ *NONNULL_PTR orig);
-       export function CResult_NodeIdDecodeErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NodeIdDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ CResult_COption_NetworkUpdateZDecodeErrorZ_ok(struct LDKCOption_NetworkUpdateZ o);
-       export function CResult_COption_NetworkUpdateZDecodeErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_NetworkUpdateZDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ CResult_COption_NetworkUpdateZDecodeErrorZ_err(struct LDKDecodeError e);
-       export function CResult_COption_NetworkUpdateZDecodeErrorZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_NetworkUpdateZDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_COption_NetworkUpdateZDecodeErrorZ_is_ok(const struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_COption_NetworkUpdateZDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_NetworkUpdateZDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_COption_NetworkUpdateZDecodeErrorZ_free(struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ _res);
-       export function CResult_COption_NetworkUpdateZDecodeErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_NetworkUpdateZDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_COption_NetworkUpdateZDecodeErrorZ_clone_ptr(LDKCResult_COption_NetworkUpdateZDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_COption_NetworkUpdateZDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_NetworkUpdateZDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ CResult_COption_NetworkUpdateZDecodeErrorZ_clone(const struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ *NONNULL_PTR orig);
-       export function CResult_COption_NetworkUpdateZDecodeErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_COption_NetworkUpdateZDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCOption_AccessZ COption_AccessZ_some(struct LDKAccess o);
-       export function COption_AccessZ_some(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_AccessZ_some(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCOption_AccessZ COption_AccessZ_none(void);
-       export function COption_AccessZ_none(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_AccessZ_none();
-               return nativeResponseValue;
-       }
-       // void COption_AccessZ_free(struct LDKCOption_AccessZ _res);
-       export function COption_AccessZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_AccessZ_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;
-       }
-       // bool CResult_DirectionalChannelInfoDecodeErrorZ_is_ok(const struct LDKCResult_DirectionalChannelInfoDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_DirectionalChannelInfoDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_DirectionalChannelInfoDecodeErrorZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_DirectionalChannelInfoDecodeErrorZ_clone_ptr(LDKCResult_DirectionalChannelInfoDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_DirectionalChannelInfoDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_DirectionalChannelInfoDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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;
-       }
-       // bool CResult_ChannelInfoDecodeErrorZ_is_ok(const struct LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_ChannelInfoDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ChannelInfoDecodeErrorZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_ChannelInfoDecodeErrorZ_clone_ptr(LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_ChannelInfoDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ChannelInfoDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_clone(const struct LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR orig);
-       export function CResult_ChannelInfoDecodeErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ChannelInfoDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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;
-       }
-       // bool CResult_RoutingFeesDecodeErrorZ_is_ok(const struct LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_RoutingFeesDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RoutingFeesDecodeErrorZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_RoutingFeesDecodeErrorZ_clone_ptr(LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_RoutingFeesDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RoutingFeesDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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;
-       }
-       // 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;
-       }
-       // bool CResult_NodeAnnouncementInfoDecodeErrorZ_is_ok(const struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_NodeAnnouncementInfoDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NodeAnnouncementInfoDecodeErrorZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_NodeAnnouncementInfoDecodeErrorZ_clone_ptr(LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_NodeAnnouncementInfoDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NodeAnnouncementInfoDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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;
-       }
-       // bool CResult_NodeInfoDecodeErrorZ_is_ok(const struct LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_NodeInfoDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NodeInfoDecodeErrorZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_NodeInfoDecodeErrorZ_clone_ptr(LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_NodeInfoDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NodeInfoDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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;
-       }
-       // bool CResult_NetworkGraphDecodeErrorZ_is_ok(const struct LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_NetworkGraphDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NetworkGraphDecodeErrorZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_NetworkGraphDecodeErrorZ_clone_ptr(LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_NetworkGraphDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NetworkGraphDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_clone(const struct LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR orig);
-       export function CResult_NetworkGraphDecodeErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NetworkGraphDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCOption_CVec_NetAddressZZ COption_CVec_NetAddressZZ_some(struct LDKCVec_NetAddressZ o);
-       export function COption_CVec_NetAddressZZ_some(o: number[]): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_CVec_NetAddressZZ_some(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCOption_CVec_NetAddressZZ COption_CVec_NetAddressZZ_none(void);
-       export function COption_CVec_NetAddressZZ_none(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_CVec_NetAddressZZ_none();
-               return nativeResponseValue;
-       }
-       // void COption_CVec_NetAddressZZ_free(struct LDKCOption_CVec_NetAddressZZ _res);
-       export function COption_CVec_NetAddressZZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_CVec_NetAddressZZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t COption_CVec_NetAddressZZ_clone_ptr(LDKCOption_CVec_NetAddressZZ *NONNULL_PTR arg);
-       export function COption_CVec_NetAddressZZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_CVec_NetAddressZZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCOption_CVec_NetAddressZZ COption_CVec_NetAddressZZ_clone(const struct LDKCOption_CVec_NetAddressZZ *NONNULL_PTR orig);
-       export function COption_CVec_NetAddressZZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_CVec_NetAddressZZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_NetAddressDecodeErrorZ CResult_NetAddressDecodeErrorZ_ok(struct LDKNetAddress o);
-       export function CResult_NetAddressDecodeErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NetAddressDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_NetAddressDecodeErrorZ CResult_NetAddressDecodeErrorZ_err(struct LDKDecodeError e);
-       export function CResult_NetAddressDecodeErrorZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NetAddressDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_NetAddressDecodeErrorZ_is_ok(const struct LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_NetAddressDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NetAddressDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_NetAddressDecodeErrorZ_free(struct LDKCResult_NetAddressDecodeErrorZ _res);
-       export function CResult_NetAddressDecodeErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NetAddressDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_NetAddressDecodeErrorZ_clone_ptr(LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_NetAddressDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NetAddressDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_NetAddressDecodeErrorZ CResult_NetAddressDecodeErrorZ_clone(const struct LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR orig);
-       export function CResult_NetAddressDecodeErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NetAddressDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // void CVec_UpdateAddHTLCZ_free(struct LDKCVec_UpdateAddHTLCZ _res);
-       export function CVec_UpdateAddHTLCZ_free(_res: number[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CVec_UpdateAddHTLCZ_free(_res);
-               // debug statements here
-       }
-       // void CVec_UpdateFulfillHTLCZ_free(struct LDKCVec_UpdateFulfillHTLCZ _res);
-       export function CVec_UpdateFulfillHTLCZ_free(_res: number[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CVec_UpdateFulfillHTLCZ_free(_res);
-               // debug statements here
-       }
-       // void CVec_UpdateFailHTLCZ_free(struct LDKCVec_UpdateFailHTLCZ _res);
-       export function CVec_UpdateFailHTLCZ_free(_res: number[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CVec_UpdateFailHTLCZ_free(_res);
-               // debug statements here
-       }
-       // void CVec_UpdateFailMalformedHTLCZ_free(struct LDKCVec_UpdateFailMalformedHTLCZ _res);
-       export function CVec_UpdateFailMalformedHTLCZ_free(_res: number[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CVec_UpdateFailMalformedHTLCZ_free(_res);
-               // debug statements here
-       }
-       // 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_AcceptChannelDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_AcceptChannelDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_AcceptChannelDecodeErrorZ_is_ok(const struct LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_AcceptChannelDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_AcceptChannelDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_AcceptChannelDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_AcceptChannelDecodeErrorZ_clone_ptr(LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_AcceptChannelDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_AcceptChannelDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_AcceptChannelDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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.CResult_AnnouncementSignaturesDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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.CResult_AnnouncementSignaturesDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_AnnouncementSignaturesDecodeErrorZ_is_ok(const struct LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_AnnouncementSignaturesDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_AnnouncementSignaturesDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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.CResult_AnnouncementSignaturesDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_AnnouncementSignaturesDecodeErrorZ_clone_ptr(LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_AnnouncementSignaturesDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_AnnouncementSignaturesDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.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;
-       }
-       // bool CResult_ChannelReestablishDecodeErrorZ_is_ok(const struct LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_ChannelReestablishDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ChannelReestablishDecodeErrorZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_ChannelReestablishDecodeErrorZ_clone_ptr(LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_ChannelReestablishDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ChannelReestablishDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_ChannelReestablishDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_ClosingSignedDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_ClosingSignedDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_ClosingSignedDecodeErrorZ_is_ok(const struct LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_ClosingSignedDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ClosingSignedDecodeErrorZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_ClosingSignedDecodeErrorZ_clone_ptr(LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_ClosingSignedDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ClosingSignedDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_ClosingSignedDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ CResult_ClosingSignedFeeRangeDecodeErrorZ_ok(struct LDKClosingSignedFeeRange o);
-       export function CResult_ClosingSignedFeeRangeDecodeErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ClosingSignedFeeRangeDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ CResult_ClosingSignedFeeRangeDecodeErrorZ_err(struct LDKDecodeError e);
-       export function CResult_ClosingSignedFeeRangeDecodeErrorZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ClosingSignedFeeRangeDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_ClosingSignedFeeRangeDecodeErrorZ_is_ok(const struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_ClosingSignedFeeRangeDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ClosingSignedFeeRangeDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_ClosingSignedFeeRangeDecodeErrorZ_free(struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ _res);
-       export function CResult_ClosingSignedFeeRangeDecodeErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ClosingSignedFeeRangeDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_ClosingSignedFeeRangeDecodeErrorZ_clone_ptr(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_ClosingSignedFeeRangeDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ClosingSignedFeeRangeDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ CResult_ClosingSignedFeeRangeDecodeErrorZ_clone(const struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR orig);
-       export function CResult_ClosingSignedFeeRangeDecodeErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ClosingSignedFeeRangeDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_CommitmentSignedDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_CommitmentSignedDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_CommitmentSignedDecodeErrorZ_is_ok(const struct LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_CommitmentSignedDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_CommitmentSignedDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_CommitmentSignedDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_CommitmentSignedDecodeErrorZ_clone_ptr(LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_CommitmentSignedDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_CommitmentSignedDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_CommitmentSignedDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_FundingCreatedDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_FundingCreatedDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_FundingCreatedDecodeErrorZ_is_ok(const struct LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_FundingCreatedDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_FundingCreatedDecodeErrorZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_FundingCreatedDecodeErrorZ_clone_ptr(LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_FundingCreatedDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_FundingCreatedDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_FundingCreatedDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_FundingSignedDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_FundingSignedDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_FundingSignedDecodeErrorZ_is_ok(const struct LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_FundingSignedDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_FundingSignedDecodeErrorZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_FundingSignedDecodeErrorZ_clone_ptr(LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_FundingSignedDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_FundingSignedDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_FundingSignedDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_FundingLockedDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_FundingLockedDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_FundingLockedDecodeErrorZ_is_ok(const struct LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_FundingLockedDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_FundingLockedDecodeErrorZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_FundingLockedDecodeErrorZ_clone_ptr(LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_FundingLockedDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_FundingLockedDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_FundingLockedDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_InitDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_InitDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_InitDecodeErrorZ_is_ok(const struct LDKCResult_InitDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_InitDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InitDecodeErrorZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_InitDecodeErrorZ_clone_ptr(LDKCResult_InitDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_InitDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InitDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_InitDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_OpenChannelDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_OpenChannelDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_OpenChannelDecodeErrorZ_is_ok(const struct LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_OpenChannelDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_OpenChannelDecodeErrorZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_OpenChannelDecodeErrorZ_clone_ptr(LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_OpenChannelDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_OpenChannelDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_OpenChannelDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_RevokeAndACKDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_RevokeAndACKDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_RevokeAndACKDecodeErrorZ_is_ok(const struct LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_RevokeAndACKDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RevokeAndACKDecodeErrorZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_RevokeAndACKDecodeErrorZ_clone_ptr(LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_RevokeAndACKDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_RevokeAndACKDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_RevokeAndACKDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_ShutdownDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_ShutdownDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_ShutdownDecodeErrorZ_is_ok(const struct LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_ShutdownDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ShutdownDecodeErrorZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_ShutdownDecodeErrorZ_clone_ptr(LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_ShutdownDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ShutdownDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_ShutdownDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_UpdateFailHTLCDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_UpdateFailHTLCDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_UpdateFailHTLCDecodeErrorZ_is_ok(const struct LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_UpdateFailHTLCDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_UpdateFailHTLCDecodeErrorZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_UpdateFailHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_UpdateFailHTLCDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_UpdateFailHTLCDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_UpdateFailHTLCDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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;
-       }
-       // bool CResult_UpdateFailMalformedHTLCDecodeErrorZ_is_ok(const struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_UpdateFailMalformedHTLCDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_UpdateFailMalformedHTLCDecodeErrorZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_UpdateFailMalformedHTLCDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_UpdateFeeDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_UpdateFeeDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_UpdateFeeDecodeErrorZ_is_ok(const struct LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_UpdateFeeDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_UpdateFeeDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_UpdateFeeDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_UpdateFeeDecodeErrorZ_clone_ptr(LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_UpdateFeeDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_UpdateFeeDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_UpdateFeeDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_UpdateFulfillHTLCDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_UpdateFulfillHTLCDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_UpdateFulfillHTLCDecodeErrorZ_is_ok(const struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_UpdateFulfillHTLCDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_UpdateFulfillHTLCDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_UpdateFulfillHTLCDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_UpdateFulfillHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_UpdateFulfillHTLCDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_UpdateFulfillHTLCDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_UpdateFulfillHTLCDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_UpdateAddHTLCDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_UpdateAddHTLCDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_UpdateAddHTLCDecodeErrorZ_is_ok(const struct LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_UpdateAddHTLCDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_UpdateAddHTLCDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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.CResult_UpdateAddHTLCDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_UpdateAddHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_UpdateAddHTLCDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_UpdateAddHTLCDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.CResult_UpdateAddHTLCDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_PingDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_PingDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_PingDecodeErrorZ_is_ok(const struct LDKCResult_PingDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_PingDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PingDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_PingDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_PingDecodeErrorZ_clone_ptr(LDKCResult_PingDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_PingDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PingDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_PingDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_PongDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_PongDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_PongDecodeErrorZ_is_ok(const struct LDKCResult_PongDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_PongDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PongDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_PongDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_PongDecodeErrorZ_clone_ptr(LDKCResult_PongDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_PongDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_PongDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_PongDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_UnsignedChannelAnnouncementDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_UnsignedChannelAnnouncementDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_UnsignedChannelAnnouncementDecodeErrorZ_is_ok(const struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_UnsignedChannelAnnouncementDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_UnsignedChannelAnnouncementDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_UnsignedChannelAnnouncementDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_UnsignedChannelAnnouncementDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_ChannelAnnouncementDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_ChannelAnnouncementDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_ChannelAnnouncementDecodeErrorZ_is_ok(const struct LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_ChannelAnnouncementDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ChannelAnnouncementDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_ChannelAnnouncementDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_ChannelAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_ChannelAnnouncementDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ChannelAnnouncementDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_UnsignedChannelUpdateDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_UnsignedChannelUpdateDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_UnsignedChannelUpdateDecodeErrorZ_is_ok(const struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_UnsignedChannelUpdateDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_UnsignedChannelUpdateDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_UnsignedChannelUpdateDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_UnsignedChannelUpdateDecodeErrorZ_clone_ptr(LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_UnsignedChannelUpdateDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_UnsignedChannelUpdateDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_ChannelUpdateDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_ChannelUpdateDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_ChannelUpdateDecodeErrorZ_is_ok(const struct LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_ChannelUpdateDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ChannelUpdateDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_ChannelUpdateDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_ChannelUpdateDecodeErrorZ_clone_ptr(LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_ChannelUpdateDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ChannelUpdateDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_ChannelUpdateDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_ErrorMessageDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_ErrorMessageDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_ErrorMessageDecodeErrorZ_is_ok(const struct LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_ErrorMessageDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ErrorMessageDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_ErrorMessageDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_ErrorMessageDecodeErrorZ_clone_ptr(LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_ErrorMessageDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ErrorMessageDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_ErrorMessageDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_UnsignedNodeAnnouncementDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_UnsignedNodeAnnouncementDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_UnsignedNodeAnnouncementDecodeErrorZ_is_ok(const struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_UnsignedNodeAnnouncementDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_UnsignedNodeAnnouncementDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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.CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_NodeAnnouncementDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_NodeAnnouncementDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_NodeAnnouncementDecodeErrorZ_is_ok(const struct LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_NodeAnnouncementDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NodeAnnouncementDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_NodeAnnouncementDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_NodeAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_NodeAnnouncementDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_NodeAnnouncementDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.CResult_NodeAnnouncementDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_QueryShortChannelIdsDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_QueryShortChannelIdsDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_QueryShortChannelIdsDecodeErrorZ_is_ok(const struct LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_QueryShortChannelIdsDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_QueryShortChannelIdsDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_QueryShortChannelIdsDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_QueryShortChannelIdsDecodeErrorZ_clone_ptr(LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_QueryShortChannelIdsDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_QueryShortChannelIdsDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_QueryShortChannelIdsDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_ReplyShortChannelIdsEndDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_ReplyShortChannelIdsEndDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_ReplyShortChannelIdsEndDecodeErrorZ_is_ok(const struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_ReplyShortChannelIdsEndDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ReplyShortChannelIdsEndDecodeErrorZ_is_ok(o);
-               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
-       }
-       // uint64_t CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone_ptr(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_ReplyShortChannelIdsEndDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_QueryChannelRangeDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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;
-       }
-       // bool CResult_QueryChannelRangeDecodeErrorZ_is_ok(const struct LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_QueryChannelRangeDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_QueryChannelRangeDecodeErrorZ_is_ok(o);
-               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_QueryChannelRangeDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_QueryChannelRangeDecodeErrorZ_clone_ptr(LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_QueryChannelRangeDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_QueryChannelRangeDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_QueryChannelRangeDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_ReplyChannelRangeDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_ReplyChannelRangeDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_ReplyChannelRangeDecodeErrorZ_is_ok(const struct LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_ReplyChannelRangeDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ReplyChannelRangeDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_ReplyChannelRangeDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_ReplyChannelRangeDecodeErrorZ_clone_ptr(LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_ReplyChannelRangeDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_ReplyChannelRangeDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_ReplyChannelRangeDecodeErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // 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_GossipTimestampFilterDecodeErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_GossipTimestampFilterDecodeErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_GossipTimestampFilterDecodeErrorZ_is_ok(const struct LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR o);
-       export function CResult_GossipTimestampFilterDecodeErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_GossipTimestampFilterDecodeErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // 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_GossipTimestampFilterDecodeErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_GossipTimestampFilterDecodeErrorZ_clone_ptr(LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR arg);
-       export function CResult_GossipTimestampFilterDecodeErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_GossipTimestampFilterDecodeErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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;
-       }
-       // struct LDKCResult_InvoiceSignOrCreationErrorZ CResult_InvoiceSignOrCreationErrorZ_ok(struct LDKInvoice o);
-       export function CResult_InvoiceSignOrCreationErrorZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InvoiceSignOrCreationErrorZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_InvoiceSignOrCreationErrorZ CResult_InvoiceSignOrCreationErrorZ_err(struct LDKSignOrCreationError e);
-       export function CResult_InvoiceSignOrCreationErrorZ_err(e: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InvoiceSignOrCreationErrorZ_err(e);
-               return nativeResponseValue;
-       }
-       // bool CResult_InvoiceSignOrCreationErrorZ_is_ok(const struct LDKCResult_InvoiceSignOrCreationErrorZ *NONNULL_PTR o);
-       export function CResult_InvoiceSignOrCreationErrorZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InvoiceSignOrCreationErrorZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_InvoiceSignOrCreationErrorZ_free(struct LDKCResult_InvoiceSignOrCreationErrorZ _res);
-       export function CResult_InvoiceSignOrCreationErrorZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InvoiceSignOrCreationErrorZ_free(_res);
-               // debug statements here
-       }
-       // uint64_t CResult_InvoiceSignOrCreationErrorZ_clone_ptr(LDKCResult_InvoiceSignOrCreationErrorZ *NONNULL_PTR arg);
-       export function CResult_InvoiceSignOrCreationErrorZ_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InvoiceSignOrCreationErrorZ_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_InvoiceSignOrCreationErrorZ CResult_InvoiceSignOrCreationErrorZ_clone(const struct LDKCResult_InvoiceSignOrCreationErrorZ *NONNULL_PTR orig);
-       export function CResult_InvoiceSignOrCreationErrorZ_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_InvoiceSignOrCreationErrorZ_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCOption_FilterZ COption_FilterZ_some(struct LDKFilter o);
-       export function COption_FilterZ_some(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_FilterZ_some(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCOption_FilterZ COption_FilterZ_none(void);
-       export function COption_FilterZ_none(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_FilterZ_none();
-               return nativeResponseValue;
-       }
-       // void COption_FilterZ_free(struct LDKCOption_FilterZ _res);
-       export function COption_FilterZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.COption_FilterZ_free(_res);
-               // debug statements here
-       }
-       // struct LDKCResult_LockedChannelMonitorNoneZ CResult_LockedChannelMonitorNoneZ_ok(struct LDKLockedChannelMonitor o);
-       export function CResult_LockedChannelMonitorNoneZ_ok(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_LockedChannelMonitorNoneZ_ok(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_LockedChannelMonitorNoneZ CResult_LockedChannelMonitorNoneZ_err(void);
-       export function CResult_LockedChannelMonitorNoneZ_err(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_LockedChannelMonitorNoneZ_err();
-               return nativeResponseValue;
-       }
-       // bool CResult_LockedChannelMonitorNoneZ_is_ok(const struct LDKCResult_LockedChannelMonitorNoneZ *NONNULL_PTR o);
-       export function CResult_LockedChannelMonitorNoneZ_is_ok(o: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_LockedChannelMonitorNoneZ_is_ok(o);
-               return nativeResponseValue;
-       }
-       // void CResult_LockedChannelMonitorNoneZ_free(struct LDKCResult_LockedChannelMonitorNoneZ _res);
-       export function CResult_LockedChannelMonitorNoneZ_free(_res: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CResult_LockedChannelMonitorNoneZ_free(_res);
-               // debug statements here
-       }
-       // void CVec_OutPointZ_free(struct LDKCVec_OutPointZ _res);
-       export function CVec_OutPointZ_free(_res: number[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CVec_OutPointZ_free(_res);
-               // debug statements here
-       }
-       // void PaymentPurpose_free(struct LDKPaymentPurpose this_ptr);
-       export function PaymentPurpose_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PaymentPurpose_free(this_ptr);
-               // debug statements here
-       }
-       // uint64_t PaymentPurpose_clone_ptr(LDKPaymentPurpose *NONNULL_PTR arg);
-       export function PaymentPurpose_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PaymentPurpose_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKPaymentPurpose PaymentPurpose_clone(const struct LDKPaymentPurpose *NONNULL_PTR orig);
-       export function PaymentPurpose_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PaymentPurpose_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKPaymentPurpose PaymentPurpose_invoice_payment(struct LDKThirtyTwoBytes payment_preimage, struct LDKThirtyTwoBytes payment_secret);
-       export function PaymentPurpose_invoice_payment(payment_preimage: Uint8Array, payment_secret: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PaymentPurpose_invoice_payment(encodeArray(payment_preimage), encodeArray(payment_secret));
-               return nativeResponseValue;
-       }
-       // struct LDKPaymentPurpose PaymentPurpose_spontaneous_payment(struct LDKThirtyTwoBytes a);
-       export function PaymentPurpose_spontaneous_payment(a: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PaymentPurpose_spontaneous_payment(encodeArray(a));
-               return nativeResponseValue;
-       }
-       // void ClosureReason_free(struct LDKClosureReason this_ptr);
-       export function ClosureReason_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosureReason_free(this_ptr);
-               // debug statements here
-       }
-       // uint64_t ClosureReason_clone_ptr(LDKClosureReason *NONNULL_PTR arg);
-       export function ClosureReason_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosureReason_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKClosureReason ClosureReason_clone(const struct LDKClosureReason *NONNULL_PTR orig);
-       export function ClosureReason_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosureReason_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKClosureReason ClosureReason_counterparty_force_closed(struct LDKStr peer_msg);
-       export function ClosureReason_counterparty_force_closed(peer_msg: String): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosureReason_counterparty_force_closed(peer_msg);
-               return nativeResponseValue;
-       }
-       // struct LDKClosureReason ClosureReason_holder_force_closed(void);
-       export function ClosureReason_holder_force_closed(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosureReason_holder_force_closed();
-               return nativeResponseValue;
-       }
-       // struct LDKClosureReason ClosureReason_cooperative_closure(void);
-       export function ClosureReason_cooperative_closure(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosureReason_cooperative_closure();
-               return nativeResponseValue;
-       }
-       // struct LDKClosureReason ClosureReason_commitment_tx_confirmed(void);
-       export function ClosureReason_commitment_tx_confirmed(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosureReason_commitment_tx_confirmed();
-               return nativeResponseValue;
-       }
-       // struct LDKClosureReason ClosureReason_funding_timed_out(void);
-       export function ClosureReason_funding_timed_out(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosureReason_funding_timed_out();
-               return nativeResponseValue;
-       }
-       // struct LDKClosureReason ClosureReason_processing_error(struct LDKStr err);
-       export function ClosureReason_processing_error(err: String): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosureReason_processing_error(err);
-               return nativeResponseValue;
-       }
-       // struct LDKClosureReason ClosureReason_disconnected_peer(void);
-       export function ClosureReason_disconnected_peer(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosureReason_disconnected_peer();
-               return nativeResponseValue;
-       }
-       // struct LDKClosureReason ClosureReason_outdated_channel_manager(void);
-       export function ClosureReason_outdated_channel_manager(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosureReason_outdated_channel_manager();
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z ClosureReason_write(const struct LDKClosureReason *NONNULL_PTR obj);
-       export function ClosureReason_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosureReason_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_COption_ClosureReasonZDecodeErrorZ ClosureReason_read(struct LDKu8slice ser);
-       export function ClosureReason_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosureReason_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // void Event_free(struct LDKEvent this_ptr);
-       export function Event_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Event_free(this_ptr);
-               // debug statements here
-       }
-       // uint64_t Event_clone_ptr(LDKEvent *NONNULL_PTR arg);
-       export function Event_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Event_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKEvent Event_clone(const struct LDKEvent *NONNULL_PTR orig);
-       export function Event_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Event_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKEvent Event_funding_generation_ready(struct LDKThirtyTwoBytes temporary_channel_id, uint64_t channel_value_satoshis, struct LDKCVec_u8Z output_script, uint64_t user_channel_id);
-       export function Event_funding_generation_ready(temporary_channel_id: Uint8Array, channel_value_satoshis: number, output_script: Uint8Array, user_channel_id: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Event_funding_generation_ready(encodeArray(temporary_channel_id), channel_value_satoshis, encodeArray(output_script), user_channel_id);
-               return nativeResponseValue;
-       }
-       // struct LDKEvent Event_payment_received(struct LDKThirtyTwoBytes payment_hash, uint64_t amt, struct LDKPaymentPurpose purpose);
-       export function Event_payment_received(payment_hash: Uint8Array, amt: number, purpose: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Event_payment_received(encodeArray(payment_hash), amt, purpose);
-               return nativeResponseValue;
-       }
-       // struct LDKEvent Event_payment_sent(struct LDKThirtyTwoBytes payment_id, struct LDKThirtyTwoBytes payment_preimage, struct LDKThirtyTwoBytes payment_hash, struct LDKCOption_u64Z fee_paid_msat);
-       export function Event_payment_sent(payment_id: Uint8Array, payment_preimage: Uint8Array, payment_hash: Uint8Array, fee_paid_msat: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Event_payment_sent(encodeArray(payment_id), encodeArray(payment_preimage), encodeArray(payment_hash), fee_paid_msat);
-               return nativeResponseValue;
-       }
-       // struct LDKEvent Event_payment_path_failed(struct LDKThirtyTwoBytes payment_id, struct LDKThirtyTwoBytes payment_hash, bool rejected_by_dest, struct LDKCOption_NetworkUpdateZ network_update, bool all_paths_failed, struct LDKCVec_RouteHopZ path, struct LDKCOption_u64Z short_channel_id, struct LDKRouteParameters retry);
-       export function Event_payment_path_failed(payment_id: Uint8Array, payment_hash: Uint8Array, rejected_by_dest: boolean, network_update: number, all_paths_failed: boolean, path: number[], short_channel_id: number, retry: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Event_payment_path_failed(encodeArray(payment_id), encodeArray(payment_hash), rejected_by_dest, network_update, all_paths_failed, path, short_channel_id, retry);
-               return nativeResponseValue;
-       }
-       // struct LDKEvent Event_payment_failed(struct LDKThirtyTwoBytes payment_id, struct LDKThirtyTwoBytes payment_hash);
-       export function Event_payment_failed(payment_id: Uint8Array, payment_hash: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Event_payment_failed(encodeArray(payment_id), encodeArray(payment_hash));
-               return nativeResponseValue;
-       }
-       // struct LDKEvent Event_pending_htlcs_forwardable(uint64_t time_forwardable);
-       export function Event_pending_htlcs_forwardable(time_forwardable: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Event_pending_htlcs_forwardable(time_forwardable);
-               return nativeResponseValue;
-       }
-       // struct LDKEvent Event_spendable_outputs(struct LDKCVec_SpendableOutputDescriptorZ outputs);
-       export function Event_spendable_outputs(outputs: number[]): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Event_spendable_outputs(outputs);
-               return nativeResponseValue;
-       }
-       // struct LDKEvent Event_payment_forwarded(struct LDKCOption_u64Z fee_earned_msat, bool claim_from_onchain_tx);
-       export function Event_payment_forwarded(fee_earned_msat: number, claim_from_onchain_tx: boolean): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Event_payment_forwarded(fee_earned_msat, claim_from_onchain_tx);
-               return nativeResponseValue;
-       }
-       // struct LDKEvent Event_channel_closed(struct LDKThirtyTwoBytes channel_id, uint64_t user_channel_id, struct LDKClosureReason reason);
-       export function Event_channel_closed(channel_id: Uint8Array, user_channel_id: number, reason: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Event_channel_closed(encodeArray(channel_id), user_channel_id, reason);
-               return nativeResponseValue;
-       }
-       // struct LDKEvent Event_discard_funding(struct LDKThirtyTwoBytes channel_id, struct LDKTransaction transaction);
-       export function Event_discard_funding(channel_id: Uint8Array, transaction: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Event_discard_funding(encodeArray(channel_id), encodeArray(transaction));
-               return nativeResponseValue;
-       }
-       // struct LDKEvent Event_payment_path_successful(struct LDKThirtyTwoBytes payment_id, struct LDKThirtyTwoBytes payment_hash, struct LDKCVec_RouteHopZ path);
-       export function Event_payment_path_successful(payment_id: Uint8Array, payment_hash: Uint8Array, path: number[]): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Event_payment_path_successful(encodeArray(payment_id), encodeArray(payment_hash), path);
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z Event_write(const struct LDKEvent *NONNULL_PTR obj);
-       export function Event_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Event_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_COption_EventZDecodeErrorZ Event_read(struct LDKu8slice ser);
-       export function Event_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Event_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // void MessageSendEvent_free(struct LDKMessageSendEvent this_ptr);
-       export function MessageSendEvent_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageSendEvent_free(this_ptr);
-               // debug statements here
-       }
-       // uint64_t MessageSendEvent_clone_ptr(LDKMessageSendEvent *NONNULL_PTR arg);
-       export function MessageSendEvent_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageSendEvent_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKMessageSendEvent MessageSendEvent_clone(const struct LDKMessageSendEvent *NONNULL_PTR orig);
-       export function MessageSendEvent_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageSendEvent_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKMessageSendEvent MessageSendEvent_send_accept_channel(struct LDKPublicKey node_id, struct LDKAcceptChannel msg);
-       export function MessageSendEvent_send_accept_channel(node_id: Uint8Array, msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageSendEvent_send_accept_channel(encodeArray(node_id), msg);
-               return nativeResponseValue;
-       }
-       // struct LDKMessageSendEvent MessageSendEvent_send_open_channel(struct LDKPublicKey node_id, struct LDKOpenChannel msg);
-       export function MessageSendEvent_send_open_channel(node_id: Uint8Array, msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageSendEvent_send_open_channel(encodeArray(node_id), msg);
-               return nativeResponseValue;
-       }
-       // struct LDKMessageSendEvent MessageSendEvent_send_funding_created(struct LDKPublicKey node_id, struct LDKFundingCreated msg);
-       export function MessageSendEvent_send_funding_created(node_id: Uint8Array, msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageSendEvent_send_funding_created(encodeArray(node_id), msg);
-               return nativeResponseValue;
-       }
-       // struct LDKMessageSendEvent MessageSendEvent_send_funding_signed(struct LDKPublicKey node_id, struct LDKFundingSigned msg);
-       export function MessageSendEvent_send_funding_signed(node_id: Uint8Array, msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageSendEvent_send_funding_signed(encodeArray(node_id), msg);
-               return nativeResponseValue;
-       }
-       // struct LDKMessageSendEvent MessageSendEvent_send_funding_locked(struct LDKPublicKey node_id, struct LDKFundingLocked msg);
-       export function MessageSendEvent_send_funding_locked(node_id: Uint8Array, msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageSendEvent_send_funding_locked(encodeArray(node_id), msg);
-               return nativeResponseValue;
-       }
-       // struct LDKMessageSendEvent MessageSendEvent_send_announcement_signatures(struct LDKPublicKey node_id, struct LDKAnnouncementSignatures msg);
-       export function MessageSendEvent_send_announcement_signatures(node_id: Uint8Array, msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageSendEvent_send_announcement_signatures(encodeArray(node_id), msg);
-               return nativeResponseValue;
-       }
-       // struct LDKMessageSendEvent MessageSendEvent_update_htlcs(struct LDKPublicKey node_id, struct LDKCommitmentUpdate updates);
-       export function MessageSendEvent_update_htlcs(node_id: Uint8Array, updates: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageSendEvent_update_htlcs(encodeArray(node_id), updates);
-               return nativeResponseValue;
-       }
-       // struct LDKMessageSendEvent MessageSendEvent_send_revoke_and_ack(struct LDKPublicKey node_id, struct LDKRevokeAndACK msg);
-       export function MessageSendEvent_send_revoke_and_ack(node_id: Uint8Array, msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageSendEvent_send_revoke_and_ack(encodeArray(node_id), msg);
-               return nativeResponseValue;
-       }
-       // struct LDKMessageSendEvent MessageSendEvent_send_closing_signed(struct LDKPublicKey node_id, struct LDKClosingSigned msg);
-       export function MessageSendEvent_send_closing_signed(node_id: Uint8Array, msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageSendEvent_send_closing_signed(encodeArray(node_id), msg);
-               return nativeResponseValue;
-       }
-       // struct LDKMessageSendEvent MessageSendEvent_send_shutdown(struct LDKPublicKey node_id, struct LDKShutdown msg);
-       export function MessageSendEvent_send_shutdown(node_id: Uint8Array, msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageSendEvent_send_shutdown(encodeArray(node_id), msg);
-               return nativeResponseValue;
-       }
-       // struct LDKMessageSendEvent MessageSendEvent_send_channel_reestablish(struct LDKPublicKey node_id, struct LDKChannelReestablish msg);
-       export function MessageSendEvent_send_channel_reestablish(node_id: Uint8Array, msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageSendEvent_send_channel_reestablish(encodeArray(node_id), msg);
-               return nativeResponseValue;
-       }
-       // struct LDKMessageSendEvent MessageSendEvent_broadcast_channel_announcement(struct LDKChannelAnnouncement msg, struct LDKChannelUpdate update_msg);
-       export function MessageSendEvent_broadcast_channel_announcement(msg: number, update_msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageSendEvent_broadcast_channel_announcement(msg, update_msg);
-               return nativeResponseValue;
-       }
-       // struct LDKMessageSendEvent MessageSendEvent_broadcast_node_announcement(struct LDKNodeAnnouncement msg);
-       export function MessageSendEvent_broadcast_node_announcement(msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageSendEvent_broadcast_node_announcement(msg);
-               return nativeResponseValue;
-       }
-       // struct LDKMessageSendEvent MessageSendEvent_broadcast_channel_update(struct LDKChannelUpdate msg);
-       export function MessageSendEvent_broadcast_channel_update(msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageSendEvent_broadcast_channel_update(msg);
-               return nativeResponseValue;
-       }
-       // struct LDKMessageSendEvent MessageSendEvent_send_channel_update(struct LDKPublicKey node_id, struct LDKChannelUpdate msg);
-       export function MessageSendEvent_send_channel_update(node_id: Uint8Array, msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageSendEvent_send_channel_update(encodeArray(node_id), msg);
-               return nativeResponseValue;
-       }
-       // struct LDKMessageSendEvent MessageSendEvent_handle_error(struct LDKPublicKey node_id, struct LDKErrorAction action);
-       export function MessageSendEvent_handle_error(node_id: Uint8Array, action: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageSendEvent_handle_error(encodeArray(node_id), action);
-               return nativeResponseValue;
-       }
-       // struct LDKMessageSendEvent MessageSendEvent_send_channel_range_query(struct LDKPublicKey node_id, struct LDKQueryChannelRange msg);
-       export function MessageSendEvent_send_channel_range_query(node_id: Uint8Array, msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageSendEvent_send_channel_range_query(encodeArray(node_id), msg);
-               return nativeResponseValue;
-       }
-       // struct LDKMessageSendEvent MessageSendEvent_send_short_ids_query(struct LDKPublicKey node_id, struct LDKQueryShortChannelIds msg);
-       export function MessageSendEvent_send_short_ids_query(node_id: Uint8Array, msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageSendEvent_send_short_ids_query(encodeArray(node_id), msg);
-               return nativeResponseValue;
-       }
-       // struct LDKMessageSendEvent MessageSendEvent_send_reply_channel_range(struct LDKPublicKey node_id, struct LDKReplyChannelRange msg);
-       export function MessageSendEvent_send_reply_channel_range(node_id: Uint8Array, msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageSendEvent_send_reply_channel_range(encodeArray(node_id), msg);
-               return nativeResponseValue;
-       }
-       // void MessageSendEventsProvider_free(struct LDKMessageSendEventsProvider this_ptr);
-       export function MessageSendEventsProvider_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageSendEventsProvider_free(this_ptr);
-               // debug statements here
-       }
-       // void EventsProvider_free(struct LDKEventsProvider this_ptr);
-       export function EventsProvider_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.EventsProvider_free(this_ptr);
-               // debug statements here
-       }
-       // void EventHandler_free(struct LDKEventHandler this_ptr);
-       export function EventHandler_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.EventHandler_free(this_ptr);
-               // debug statements here
-       }
-       // void APIError_free(struct LDKAPIError this_ptr);
-       export function APIError_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.APIError_free(this_ptr);
-               // debug statements here
-       }
-       // uint64_t APIError_clone_ptr(LDKAPIError *NONNULL_PTR arg);
-       export function APIError_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.APIError_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKAPIError APIError_clone(const struct LDKAPIError *NONNULL_PTR orig);
-       export function APIError_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.APIError_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKAPIError APIError_apimisuse_error(struct LDKStr err);
-       export function APIError_apimisuse_error(err: String): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.APIError_apimisuse_error(err);
-               return nativeResponseValue;
-       }
-       // struct LDKAPIError APIError_fee_rate_too_high(struct LDKStr err, uint32_t feerate);
-       export function APIError_fee_rate_too_high(err: String, feerate: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.APIError_fee_rate_too_high(err, feerate);
-               return nativeResponseValue;
-       }
-       // struct LDKAPIError APIError_route_error(struct LDKStr err);
-       export function APIError_route_error(err: String): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.APIError_route_error(err);
-               return nativeResponseValue;
-       }
-       // struct LDKAPIError APIError_channel_unavailable(struct LDKStr err);
-       export function APIError_channel_unavailable(err: String): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.APIError_channel_unavailable(err);
-               return nativeResponseValue;
-       }
-       // struct LDKAPIError APIError_monitor_update_failed(void);
-       export function APIError_monitor_update_failed(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.APIError_monitor_update_failed();
-               return nativeResponseValue;
-       }
-       // struct LDKAPIError APIError_incompatible_shutdown_script(struct LDKShutdownScript script);
-       export function APIError_incompatible_shutdown_script(script: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.APIError_incompatible_shutdown_script(script);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_StringErrorZ sign(struct LDKu8slice msg, const uint8_t (*sk)[32]);
-       export function sign(msg: Uint8Array, sk: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.sign(encodeArray(msg), encodeArray(sk));
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_PublicKeyErrorZ recover_pk(struct LDKu8slice msg, struct LDKStr sig);
-       export function recover_pk(msg: Uint8Array, sig: String): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.recover_pk(encodeArray(msg), sig);
-               return nativeResponseValue;
-       }
-       // bool verify(struct LDKu8slice msg, struct LDKStr sig, struct LDKPublicKey pk);
-       export function verify(msg: Uint8Array, sig: String, pk: Uint8Array): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.verify(encodeArray(msg), sig, encodeArray(pk));
-               return nativeResponseValue;
-       }
-       // enum LDKLevel Level_clone(const enum LDKLevel *NONNULL_PTR orig);
-       export function Level_clone(orig: number): Level {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Level_clone(orig);
-               return nativeResponseValue;
-       }
-       // enum LDKLevel Level_gossip(void);
-       export function Level_gossip(): Level {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Level_gossip();
-               return nativeResponseValue;
-       }
-       // enum LDKLevel Level_trace(void);
-       export function Level_trace(): Level {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Level_trace();
-               return nativeResponseValue;
-       }
-       // enum LDKLevel Level_debug(void);
-       export function Level_debug(): Level {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Level_debug();
-               return nativeResponseValue;
-       }
-       // enum LDKLevel Level_info(void);
-       export function Level_info(): Level {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Level_info();
-               return nativeResponseValue;
-       }
-       // enum LDKLevel Level_warn(void);
-       export function Level_warn(): Level {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Level_warn();
-               return nativeResponseValue;
-       }
-       // enum LDKLevel Level_error(void);
-       export function Level_error(): Level {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Level_error();
-               return nativeResponseValue;
-       }
-       // bool Level_eq(const enum LDKLevel *NONNULL_PTR a, const enum LDKLevel *NONNULL_PTR b);
-       export function Level_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Level_eq(a, b);
-               return nativeResponseValue;
-       }
-       // uint64_t Level_hash(const enum LDKLevel *NONNULL_PTR o);
-       export function Level_hash(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Level_hash(o);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES enum LDKLevel Level_max(void);
-       export function Level_max(): Level {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Level_max();
-               return nativeResponseValue;
-       }
-       // void Record_free(struct LDKRecord this_obj);
-       export function Record_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Record_free(this_obj);
-               // debug statements here
-       }
-       // enum LDKLevel Record_get_level(const struct LDKRecord *NONNULL_PTR this_ptr);
-       export function Record_get_level(this_ptr: number): Level {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Record_get_level(this_ptr);
-               return nativeResponseValue;
-       }
-       // void Record_set_level(struct LDKRecord *NONNULL_PTR this_ptr, enum LDKLevel val);
-       export function Record_set_level(this_ptr: number, val: Level): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Record_set_level(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKStr Record_get_args(const struct LDKRecord *NONNULL_PTR this_ptr);
-       export function Record_get_args(this_ptr: number): String {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Record_get_args(this_ptr);
-               return nativeResponseValue;
-       }
-       // void Record_set_args(struct LDKRecord *NONNULL_PTR this_ptr, struct LDKStr val);
-       export function Record_set_args(this_ptr: number, val: String): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Record_set_args(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKStr Record_get_module_path(const struct LDKRecord *NONNULL_PTR this_ptr);
-       export function Record_get_module_path(this_ptr: number): String {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Record_get_module_path(this_ptr);
-               return nativeResponseValue;
-       }
-       // void Record_set_module_path(struct LDKRecord *NONNULL_PTR this_ptr, struct LDKStr val);
-       export function Record_set_module_path(this_ptr: number, val: String): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Record_set_module_path(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKStr Record_get_file(const struct LDKRecord *NONNULL_PTR this_ptr);
-       export function Record_get_file(this_ptr: number): String {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Record_get_file(this_ptr);
-               return nativeResponseValue;
-       }
-       // void Record_set_file(struct LDKRecord *NONNULL_PTR this_ptr, struct LDKStr val);
-       export function Record_set_file(this_ptr: number, val: String): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Record_set_file(this_ptr, val);
-               // debug statements here
-       }
-       // uint32_t Record_get_line(const struct LDKRecord *NONNULL_PTR this_ptr);
-       export function Record_get_line(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Record_get_line(this_ptr);
-               return nativeResponseValue;
-       }
-       // void Record_set_line(struct LDKRecord *NONNULL_PTR this_ptr, uint32_t val);
-       export function Record_set_line(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Record_set_line(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t Record_clone_ptr(LDKRecord *NONNULL_PTR arg);
-       export function Record_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Record_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKRecord Record_clone(const struct LDKRecord *NONNULL_PTR orig);
-       export function Record_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Record_clone(orig);
-               return nativeResponseValue;
-       }
-       // void Logger_free(struct LDKLogger this_ptr);
-       export function Logger_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Logger_free(this_ptr);
-               // debug statements here
-       }
-       // void ChannelHandshakeConfig_free(struct LDKChannelHandshakeConfig this_obj);
-       export function ChannelHandshakeConfig_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelHandshakeConfig_free(this_obj);
-               // debug statements here
-       }
-       // 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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelHandshakeConfig_get_minimum_depth(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelHandshakeConfig_set_minimum_depth(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint32_t val);
-       export function ChannelHandshakeConfig_set_minimum_depth(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelHandshakeConfig_set_minimum_depth(this_ptr, val);
-               // debug statements here
-       }
-       // uint16_t ChannelHandshakeConfig_get_our_to_self_delay(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
-       export function ChannelHandshakeConfig_get_our_to_self_delay(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelHandshakeConfig_get_our_to_self_delay(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelHandshakeConfig_set_our_to_self_delay(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint16_t val);
-       export function ChannelHandshakeConfig_set_our_to_self_delay(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelHandshakeConfig_set_our_to_self_delay(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t ChannelHandshakeConfig_get_our_htlc_minimum_msat(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
-       export function ChannelHandshakeConfig_get_our_htlc_minimum_msat(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelHandshakeConfig_get_our_htlc_minimum_msat(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelHandshakeConfig_set_our_htlc_minimum_msat(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint64_t val);
-       export function ChannelHandshakeConfig_set_our_htlc_minimum_msat(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelHandshakeConfig_set_our_htlc_minimum_msat(this_ptr, val);
-               // debug statements here
-       }
-       // 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);
-       export function ChannelHandshakeConfig_new(minimum_depth_arg: number, our_to_self_delay_arg: number, our_htlc_minimum_msat_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelHandshakeConfig_new(minimum_depth_arg, our_to_self_delay_arg, our_htlc_minimum_msat_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t ChannelHandshakeConfig_clone_ptr(LDKChannelHandshakeConfig *NONNULL_PTR arg);
-       export function ChannelHandshakeConfig_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelHandshakeConfig_clone_ptr(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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelHandshakeConfig_default();
-               return nativeResponseValue;
-       }
-       // void ChannelHandshakeLimits_free(struct LDKChannelHandshakeLimits this_obj);
-       export function ChannelHandshakeLimits_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelHandshakeLimits_free(this_obj);
-               // debug statements here
-       }
-       // 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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelHandshakeLimits_get_min_funding_satoshis(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelHandshakeLimits_set_min_funding_satoshis(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
-       export function ChannelHandshakeLimits_set_min_funding_satoshis(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelHandshakeLimits_set_min_funding_satoshis(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t ChannelHandshakeLimits_get_max_htlc_minimum_msat(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
-       export function ChannelHandshakeLimits_get_max_htlc_minimum_msat(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelHandshakeLimits_get_max_htlc_minimum_msat(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelHandshakeLimits_set_max_htlc_minimum_msat(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
-       export function ChannelHandshakeLimits_set_max_htlc_minimum_msat(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelHandshakeLimits_set_max_htlc_minimum_msat(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t ChannelHandshakeLimits_get_min_max_htlc_value_in_flight_msat(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
-       export function ChannelHandshakeLimits_get_min_max_htlc_value_in_flight_msat(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelHandshakeLimits_get_min_max_htlc_value_in_flight_msat(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelHandshakeLimits_set_min_max_htlc_value_in_flight_msat(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
-       export function ChannelHandshakeLimits_set_min_max_htlc_value_in_flight_msat(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelHandshakeLimits_set_min_max_htlc_value_in_flight_msat(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t ChannelHandshakeLimits_get_max_channel_reserve_satoshis(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
-       export function ChannelHandshakeLimits_get_max_channel_reserve_satoshis(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelHandshakeLimits_get_max_channel_reserve_satoshis(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelHandshakeLimits_set_max_channel_reserve_satoshis(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
-       export function ChannelHandshakeLimits_set_max_channel_reserve_satoshis(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelHandshakeLimits_set_max_channel_reserve_satoshis(this_ptr, val);
-               // debug statements here
-       }
-       // uint16_t ChannelHandshakeLimits_get_min_max_accepted_htlcs(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
-       export function ChannelHandshakeLimits_get_min_max_accepted_htlcs(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelHandshakeLimits_get_min_max_accepted_htlcs(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelHandshakeLimits_set_min_max_accepted_htlcs(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint16_t val);
-       export function ChannelHandshakeLimits_set_min_max_accepted_htlcs(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelHandshakeLimits_set_min_max_accepted_htlcs(this_ptr, val);
-               // debug statements here
-       }
-       // uint32_t ChannelHandshakeLimits_get_max_minimum_depth(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
-       export function ChannelHandshakeLimits_get_max_minimum_depth(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelHandshakeLimits_get_max_minimum_depth(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelHandshakeLimits_set_max_minimum_depth(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint32_t val);
-       export function ChannelHandshakeLimits_set_max_minimum_depth(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelHandshakeLimits_set_max_minimum_depth(this_ptr, val);
-               // debug statements here
-       }
-       // bool ChannelHandshakeLimits_get_force_announced_channel_preference(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
-       export function ChannelHandshakeLimits_get_force_announced_channel_preference(this_ptr: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelHandshakeLimits_get_force_announced_channel_preference(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelHandshakeLimits_set_force_announced_channel_preference(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, bool val);
-       export function ChannelHandshakeLimits_set_force_announced_channel_preference(this_ptr: number, val: boolean): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelHandshakeLimits_set_force_announced_channel_preference(this_ptr, val);
-               // debug statements here
-       }
-       // uint16_t ChannelHandshakeLimits_get_their_to_self_delay(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
-       export function ChannelHandshakeLimits_get_their_to_self_delay(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelHandshakeLimits_get_their_to_self_delay(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelHandshakeLimits_set_their_to_self_delay(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint16_t val);
-       export function ChannelHandshakeLimits_set_their_to_self_delay(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelHandshakeLimits_set_their_to_self_delay(this_ptr, val);
-               // debug statements here
-       }
-       // 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, uint32_t max_minimum_depth_arg, bool force_announced_channel_preference_arg, uint16_t their_to_self_delay_arg);
-       export function ChannelHandshakeLimits_new(min_funding_satoshis_arg: number, max_htlc_minimum_msat_arg: number, min_max_htlc_value_in_flight_msat_arg: number, max_channel_reserve_satoshis_arg: number, min_max_accepted_htlcs_arg: number, max_minimum_depth_arg: number, force_announced_channel_preference_arg: boolean, their_to_self_delay_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               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, max_minimum_depth_arg, force_announced_channel_preference_arg, their_to_self_delay_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t ChannelHandshakeLimits_clone_ptr(LDKChannelHandshakeLimits *NONNULL_PTR arg);
-       export function ChannelHandshakeLimits_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelHandshakeLimits_clone_ptr(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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelHandshakeLimits_default();
-               return nativeResponseValue;
-       }
-       // void ChannelConfig_free(struct LDKChannelConfig this_obj);
-       export function ChannelConfig_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelConfig_free(this_obj);
-               // debug statements here
-       }
-       // uint32_t ChannelConfig_get_forwarding_fee_proportional_millionths(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
-       export function ChannelConfig_get_forwarding_fee_proportional_millionths(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelConfig_get_forwarding_fee_proportional_millionths(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelConfig_set_forwarding_fee_proportional_millionths(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint32_t val);
-       export function ChannelConfig_set_forwarding_fee_proportional_millionths(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelConfig_set_forwarding_fee_proportional_millionths(this_ptr, val);
-               // debug statements here
-       }
-       // uint32_t ChannelConfig_get_forwarding_fee_base_msat(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
-       export function ChannelConfig_get_forwarding_fee_base_msat(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelConfig_get_forwarding_fee_base_msat(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelConfig_set_forwarding_fee_base_msat(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint32_t val);
-       export function ChannelConfig_set_forwarding_fee_base_msat(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelConfig_set_forwarding_fee_base_msat(this_ptr, val);
-               // debug statements here
-       }
-       // uint16_t ChannelConfig_get_cltv_expiry_delta(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
-       export function ChannelConfig_get_cltv_expiry_delta(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelConfig_get_cltv_expiry_delta(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelConfig_set_cltv_expiry_delta(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint16_t val);
-       export function ChannelConfig_set_cltv_expiry_delta(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelConfig_set_cltv_expiry_delta(this_ptr, val);
-               // debug statements here
-       }
-       // bool ChannelConfig_get_announced_channel(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
-       export function ChannelConfig_get_announced_channel(this_ptr: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelConfig_get_announced_channel(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelConfig_set_announced_channel(struct LDKChannelConfig *NONNULL_PTR this_ptr, bool val);
-       export function ChannelConfig_set_announced_channel(this_ptr: number, val: boolean): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelConfig_set_announced_channel(this_ptr, val);
-               // debug statements here
-       }
-       // bool ChannelConfig_get_commit_upfront_shutdown_pubkey(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
-       export function ChannelConfig_get_commit_upfront_shutdown_pubkey(this_ptr: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelConfig_get_commit_upfront_shutdown_pubkey(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelConfig_set_commit_upfront_shutdown_pubkey(struct LDKChannelConfig *NONNULL_PTR this_ptr, bool val);
-       export function ChannelConfig_set_commit_upfront_shutdown_pubkey(this_ptr: number, val: boolean): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelConfig_set_commit_upfront_shutdown_pubkey(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t ChannelConfig_get_max_dust_htlc_exposure_msat(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
-       export function ChannelConfig_get_max_dust_htlc_exposure_msat(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelConfig_get_max_dust_htlc_exposure_msat(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelConfig_set_max_dust_htlc_exposure_msat(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint64_t val);
-       export function ChannelConfig_set_max_dust_htlc_exposure_msat(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelConfig_set_max_dust_htlc_exposure_msat(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t ChannelConfig_get_force_close_avoidance_max_fee_satoshis(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
-       export function ChannelConfig_get_force_close_avoidance_max_fee_satoshis(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelConfig_get_force_close_avoidance_max_fee_satoshis(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelConfig_set_force_close_avoidance_max_fee_satoshis(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint64_t val);
-       export function ChannelConfig_set_force_close_avoidance_max_fee_satoshis(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelConfig_set_force_close_avoidance_max_fee_satoshis(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKChannelConfig ChannelConfig_new(uint32_t forwarding_fee_proportional_millionths_arg, uint32_t forwarding_fee_base_msat_arg, uint16_t cltv_expiry_delta_arg, bool announced_channel_arg, bool commit_upfront_shutdown_pubkey_arg, uint64_t max_dust_htlc_exposure_msat_arg, uint64_t force_close_avoidance_max_fee_satoshis_arg);
-       export function ChannelConfig_new(forwarding_fee_proportional_millionths_arg: number, forwarding_fee_base_msat_arg: number, cltv_expiry_delta_arg: number, announced_channel_arg: boolean, commit_upfront_shutdown_pubkey_arg: boolean, max_dust_htlc_exposure_msat_arg: number, force_close_avoidance_max_fee_satoshis_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelConfig_new(forwarding_fee_proportional_millionths_arg, forwarding_fee_base_msat_arg, cltv_expiry_delta_arg, announced_channel_arg, commit_upfront_shutdown_pubkey_arg, max_dust_htlc_exposure_msat_arg, force_close_avoidance_max_fee_satoshis_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t ChannelConfig_clone_ptr(LDKChannelConfig *NONNULL_PTR arg);
-       export function ChannelConfig_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelConfig_clone_ptr(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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelConfig_default();
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z ChannelConfig_write(const struct LDKChannelConfig *NONNULL_PTR obj);
-       export function ChannelConfig_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelConfig_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.ChannelConfig_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // void UserConfig_free(struct LDKUserConfig this_obj);
-       export function UserConfig_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UserConfig_free(this_obj);
-               // debug statements here
-       }
-       // 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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UserConfig_get_own_channel_config(this_ptr);
-               return nativeResponseValue;
-       }
-       // void UserConfig_set_own_channel_config(struct LDKUserConfig *NONNULL_PTR this_ptr, struct LDKChannelHandshakeConfig val);
-       export function UserConfig_set_own_channel_config(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UserConfig_set_own_channel_config(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKChannelHandshakeLimits UserConfig_get_peer_channel_config_limits(const struct LDKUserConfig *NONNULL_PTR this_ptr);
-       export function UserConfig_get_peer_channel_config_limits(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UserConfig_get_peer_channel_config_limits(this_ptr);
-               return nativeResponseValue;
-       }
-       // void UserConfig_set_peer_channel_config_limits(struct LDKUserConfig *NONNULL_PTR this_ptr, struct LDKChannelHandshakeLimits val);
-       export function UserConfig_set_peer_channel_config_limits(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UserConfig_set_peer_channel_config_limits(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKChannelConfig UserConfig_get_channel_options(const struct LDKUserConfig *NONNULL_PTR this_ptr);
-       export function UserConfig_get_channel_options(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UserConfig_get_channel_options(this_ptr);
-               return nativeResponseValue;
-       }
-       // void UserConfig_set_channel_options(struct LDKUserConfig *NONNULL_PTR this_ptr, struct LDKChannelConfig val);
-       export function UserConfig_set_channel_options(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UserConfig_set_channel_options(this_ptr, val);
-               // debug statements here
-       }
-       // bool UserConfig_get_accept_forwards_to_priv_channels(const struct LDKUserConfig *NONNULL_PTR this_ptr);
-       export function UserConfig_get_accept_forwards_to_priv_channels(this_ptr: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UserConfig_get_accept_forwards_to_priv_channels(this_ptr);
-               return nativeResponseValue;
-       }
-       // void UserConfig_set_accept_forwards_to_priv_channels(struct LDKUserConfig *NONNULL_PTR this_ptr, bool val);
-       export function UserConfig_set_accept_forwards_to_priv_channels(this_ptr: number, val: boolean): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UserConfig_set_accept_forwards_to_priv_channels(this_ptr, val);
-               // debug statements here
-       }
-       // bool UserConfig_get_accept_inbound_channels(const struct LDKUserConfig *NONNULL_PTR this_ptr);
-       export function UserConfig_get_accept_inbound_channels(this_ptr: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UserConfig_get_accept_inbound_channels(this_ptr);
-               return nativeResponseValue;
-       }
-       // void UserConfig_set_accept_inbound_channels(struct LDKUserConfig *NONNULL_PTR this_ptr, bool val);
-       export function UserConfig_set_accept_inbound_channels(this_ptr: number, val: boolean): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UserConfig_set_accept_inbound_channels(this_ptr, val);
-               // debug statements here
-       }
-       // 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, bool accept_forwards_to_priv_channels_arg, bool accept_inbound_channels_arg);
-       export function UserConfig_new(own_channel_config_arg: number, peer_channel_config_limits_arg: number, channel_options_arg: number, accept_forwards_to_priv_channels_arg: boolean, accept_inbound_channels_arg: boolean): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UserConfig_new(own_channel_config_arg, peer_channel_config_limits_arg, channel_options_arg, accept_forwards_to_priv_channels_arg, accept_inbound_channels_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t UserConfig_clone_ptr(LDKUserConfig *NONNULL_PTR arg);
-       export function UserConfig_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UserConfig_clone_ptr(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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UserConfig_default();
-               return nativeResponseValue;
-       }
-       // void BestBlock_free(struct LDKBestBlock this_obj);
-       export function BestBlock_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BestBlock_free(this_obj);
-               // debug statements here
-       }
-       // uint64_t BestBlock_clone_ptr(LDKBestBlock *NONNULL_PTR arg);
-       export function BestBlock_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BestBlock_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKBestBlock BestBlock_clone(const struct LDKBestBlock *NONNULL_PTR orig);
-       export function BestBlock_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BestBlock_clone(orig);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKBestBlock BestBlock_from_genesis(enum LDKNetwork network);
-       export function BestBlock_from_genesis(network: Network): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BestBlock_from_genesis(network);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKBestBlock BestBlock_new(struct LDKThirtyTwoBytes block_hash, uint32_t height);
-       export function BestBlock_new(block_hash: Uint8Array, height: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BestBlock_new(encodeArray(block_hash), height);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKThirtyTwoBytes BestBlock_block_hash(const struct LDKBestBlock *NONNULL_PTR this_arg);
-       export function BestBlock_block_hash(this_arg: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BestBlock_block_hash(this_arg);
-               return decodeArray(nativeResponseValue);
-       }
-       // MUST_USE_RES uint32_t BestBlock_height(const struct LDKBestBlock *NONNULL_PTR this_arg);
-       export function BestBlock_height(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BestBlock_height(this_arg);
-               return nativeResponseValue;
-       }
-       // enum LDKAccessError AccessError_clone(const enum LDKAccessError *NONNULL_PTR orig);
-       export function AccessError_clone(orig: number): AccessError {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AccessError_clone(orig);
-               return nativeResponseValue;
-       }
-       // enum LDKAccessError AccessError_unknown_chain(void);
-       export function AccessError_unknown_chain(): AccessError {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AccessError_unknown_chain();
-               return nativeResponseValue;
-       }
-       // enum LDKAccessError AccessError_unknown_tx(void);
-       export function AccessError_unknown_tx(): AccessError {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AccessError_unknown_tx();
-               return nativeResponseValue;
-       }
-       // void Access_free(struct LDKAccess this_ptr);
-       export function Access_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Access_free(this_ptr);
-               // debug statements here
-       }
-       // void Listen_free(struct LDKListen this_ptr);
-       export function Listen_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Listen_free(this_ptr);
-               // debug statements here
-       }
-       // void Confirm_free(struct LDKConfirm this_ptr);
-       export function Confirm_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Confirm_free(this_ptr);
-               // debug statements here
-       }
-       // enum LDKChannelMonitorUpdateErr ChannelMonitorUpdateErr_clone(const enum LDKChannelMonitorUpdateErr *NONNULL_PTR orig);
-       export function ChannelMonitorUpdateErr_clone(orig: number): ChannelMonitorUpdateErr {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMonitorUpdateErr_clone(orig);
-               return nativeResponseValue;
-       }
-       // enum LDKChannelMonitorUpdateErr ChannelMonitorUpdateErr_temporary_failure(void);
-       export function ChannelMonitorUpdateErr_temporary_failure(): ChannelMonitorUpdateErr {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMonitorUpdateErr_temporary_failure();
-               return nativeResponseValue;
-       }
-       // enum LDKChannelMonitorUpdateErr ChannelMonitorUpdateErr_permanent_failure(void);
-       export function ChannelMonitorUpdateErr_permanent_failure(): ChannelMonitorUpdateErr {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMonitorUpdateErr_permanent_failure();
-               return nativeResponseValue;
-       }
-       // void Watch_free(struct LDKWatch this_ptr);
-       export function Watch_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Watch_free(this_ptr);
-               // debug statements here
-       }
-       // void Filter_free(struct LDKFilter this_ptr);
-       export function Filter_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Filter_free(this_ptr);
-               // debug statements here
-       }
-       // void WatchedOutput_free(struct LDKWatchedOutput this_obj);
-       export function WatchedOutput_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.WatchedOutput_free(this_obj);
-               // debug statements here
-       }
-       // struct LDKThirtyTwoBytes WatchedOutput_get_block_hash(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
-       export function WatchedOutput_get_block_hash(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.WatchedOutput_get_block_hash(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void WatchedOutput_set_block_hash(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function WatchedOutput_set_block_hash(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.WatchedOutput_set_block_hash(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKOutPoint WatchedOutput_get_outpoint(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
-       export function WatchedOutput_get_outpoint(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.WatchedOutput_get_outpoint(this_ptr);
-               return nativeResponseValue;
-       }
-       // void WatchedOutput_set_outpoint(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKOutPoint val);
-       export function WatchedOutput_set_outpoint(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.WatchedOutput_set_outpoint(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKu8slice WatchedOutput_get_script_pubkey(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
-       export function WatchedOutput_get_script_pubkey(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.WatchedOutput_get_script_pubkey(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void WatchedOutput_set_script_pubkey(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
-       export function WatchedOutput_set_script_pubkey(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.WatchedOutput_set_script_pubkey(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKWatchedOutput WatchedOutput_new(struct LDKThirtyTwoBytes block_hash_arg, struct LDKOutPoint outpoint_arg, struct LDKCVec_u8Z script_pubkey_arg);
-       export function WatchedOutput_new(block_hash_arg: Uint8Array, outpoint_arg: number, script_pubkey_arg: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.WatchedOutput_new(encodeArray(block_hash_arg), outpoint_arg, encodeArray(script_pubkey_arg));
-               return nativeResponseValue;
-       }
-       // uint64_t WatchedOutput_clone_ptr(LDKWatchedOutput *NONNULL_PTR arg);
-       export function WatchedOutput_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.WatchedOutput_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKWatchedOutput WatchedOutput_clone(const struct LDKWatchedOutput *NONNULL_PTR orig);
-       export function WatchedOutput_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.WatchedOutput_clone(orig);
-               return nativeResponseValue;
-       }
-       // uint64_t WatchedOutput_hash(const struct LDKWatchedOutput *NONNULL_PTR o);
-       export function WatchedOutput_hash(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.WatchedOutput_hash(o);
-               return nativeResponseValue;
-       }
-       // void BroadcasterInterface_free(struct LDKBroadcasterInterface this_ptr);
-       export function BroadcasterInterface_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BroadcasterInterface_free(this_ptr);
-               // debug statements here
-       }
-       // enum LDKConfirmationTarget ConfirmationTarget_clone(const enum LDKConfirmationTarget *NONNULL_PTR orig);
-       export function ConfirmationTarget_clone(orig: number): ConfirmationTarget {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ConfirmationTarget_clone(orig);
-               return nativeResponseValue;
-       }
-       // enum LDKConfirmationTarget ConfirmationTarget_background(void);
-       export function ConfirmationTarget_background(): ConfirmationTarget {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ConfirmationTarget_background();
-               return nativeResponseValue;
-       }
-       // enum LDKConfirmationTarget ConfirmationTarget_normal(void);
-       export function ConfirmationTarget_normal(): ConfirmationTarget {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ConfirmationTarget_normal();
-               return nativeResponseValue;
-       }
-       // enum LDKConfirmationTarget ConfirmationTarget_high_priority(void);
-       export function ConfirmationTarget_high_priority(): ConfirmationTarget {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ConfirmationTarget_high_priority();
-               return nativeResponseValue;
-       }
-       // bool ConfirmationTarget_eq(const enum LDKConfirmationTarget *NONNULL_PTR a, const enum LDKConfirmationTarget *NONNULL_PTR b);
-       export function ConfirmationTarget_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ConfirmationTarget_eq(a, b);
-               return nativeResponseValue;
-       }
-       // void FeeEstimator_free(struct LDKFeeEstimator this_ptr);
-       export function FeeEstimator_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FeeEstimator_free(this_ptr);
-               // debug statements here
-       }
-       // void MonitorUpdateId_free(struct LDKMonitorUpdateId this_obj);
-       export function MonitorUpdateId_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MonitorUpdateId_free(this_obj);
-               // debug statements here
-       }
-       // uint64_t MonitorUpdateId_clone_ptr(LDKMonitorUpdateId *NONNULL_PTR arg);
-       export function MonitorUpdateId_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MonitorUpdateId_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKMonitorUpdateId MonitorUpdateId_clone(const struct LDKMonitorUpdateId *NONNULL_PTR orig);
-       export function MonitorUpdateId_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MonitorUpdateId_clone(orig);
-               return nativeResponseValue;
-       }
-       // uint64_t MonitorUpdateId_hash(const struct LDKMonitorUpdateId *NONNULL_PTR o);
-       export function MonitorUpdateId_hash(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MonitorUpdateId_hash(o);
-               return nativeResponseValue;
-       }
-       // bool MonitorUpdateId_eq(const struct LDKMonitorUpdateId *NONNULL_PTR a, const struct LDKMonitorUpdateId *NONNULL_PTR b);
-       export function MonitorUpdateId_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MonitorUpdateId_eq(a, b);
-               return nativeResponseValue;
-       }
-       // void Persist_free(struct LDKPersist this_ptr);
-       export function Persist_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Persist_free(this_ptr);
-               // debug statements here
-       }
-       // void LockedChannelMonitor_free(struct LDKLockedChannelMonitor this_obj);
-       export function LockedChannelMonitor_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.LockedChannelMonitor_free(this_obj);
-               // debug statements here
-       }
-       // void ChainMonitor_free(struct LDKChainMonitor this_obj);
-       export function ChainMonitor_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChainMonitor_free(this_obj);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKChainMonitor ChainMonitor_new(struct LDKCOption_FilterZ chain_source, struct LDKBroadcasterInterface broadcaster, struct LDKLogger logger, struct LDKFeeEstimator feeest, struct LDKPersist persister);
-       export function ChainMonitor_new(chain_source: number, broadcaster: number, logger: number, feeest: number, persister: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChainMonitor_new(chain_source, broadcaster, logger, feeest, persister);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCVec_BalanceZ ChainMonitor_get_claimable_balances(const struct LDKChainMonitor *NONNULL_PTR this_arg, struct LDKCVec_ChannelDetailsZ ignored_channels);
-       export function ChainMonitor_get_claimable_balances(this_arg: number, ignored_channels: number[]): number[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChainMonitor_get_claimable_balances(this_arg, ignored_channels);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_LockedChannelMonitorNoneZ ChainMonitor_get_monitor(const struct LDKChainMonitor *NONNULL_PTR this_arg, struct LDKOutPoint funding_txo);
-       export function ChainMonitor_get_monitor(this_arg: number, funding_txo: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChainMonitor_get_monitor(this_arg, funding_txo);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCVec_OutPointZ ChainMonitor_list_monitors(const struct LDKChainMonitor *NONNULL_PTR this_arg);
-       export function ChainMonitor_list_monitors(this_arg: number): number[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChainMonitor_list_monitors(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChainMonitor_channel_monitor_updated(const struct LDKChainMonitor *NONNULL_PTR this_arg, struct LDKOutPoint funding_txo, struct LDKMonitorUpdateId completed_update_id);
-       export function ChainMonitor_channel_monitor_updated(this_arg: number, funding_txo: number, completed_update_id: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChainMonitor_channel_monitor_updated(this_arg, funding_txo, completed_update_id);
-               return nativeResponseValue;
-       }
-       // struct LDKListen ChainMonitor_as_Listen(const struct LDKChainMonitor *NONNULL_PTR this_arg);
-       export function ChainMonitor_as_Listen(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChainMonitor_as_Listen(this_arg);
-               return nativeResponseValue;
-       }
-       // struct LDKConfirm ChainMonitor_as_Confirm(const struct LDKChainMonitor *NONNULL_PTR this_arg);
-       export function ChainMonitor_as_Confirm(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChainMonitor_as_Confirm(this_arg);
-               return nativeResponseValue;
-       }
-       // struct LDKWatch ChainMonitor_as_Watch(const struct LDKChainMonitor *NONNULL_PTR this_arg);
-       export function ChainMonitor_as_Watch(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChainMonitor_as_Watch(this_arg);
-               return nativeResponseValue;
-       }
-       // struct LDKEventsProvider ChainMonitor_as_EventsProvider(const struct LDKChainMonitor *NONNULL_PTR this_arg);
-       export function ChainMonitor_as_EventsProvider(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChainMonitor_as_EventsProvider(this_arg);
-               return nativeResponseValue;
-       }
-       // void ChannelMonitorUpdate_free(struct LDKChannelMonitorUpdate this_obj);
-       export function ChannelMonitorUpdate_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMonitorUpdate_free(this_obj);
-               // debug statements here
-       }
-       // 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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMonitorUpdate_get_update_id(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelMonitorUpdate_set_update_id(struct LDKChannelMonitorUpdate *NONNULL_PTR this_ptr, uint64_t val);
-       export function ChannelMonitorUpdate_set_update_id(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMonitorUpdate_set_update_id(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t ChannelMonitorUpdate_clone_ptr(LDKChannelMonitorUpdate *NONNULL_PTR arg);
-       export function ChannelMonitorUpdate_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMonitorUpdate_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMonitorUpdate_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ ChannelMonitorUpdate_read(struct LDKu8slice ser);
-       export function ChannelMonitorUpdate_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMonitorUpdate_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // void MonitorEvent_free(struct LDKMonitorEvent this_ptr);
-       export function MonitorEvent_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MonitorEvent_free(this_ptr);
-               // debug statements here
-       }
-       // uint64_t MonitorEvent_clone_ptr(LDKMonitorEvent *NONNULL_PTR arg);
-       export function MonitorEvent_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MonitorEvent_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKMonitorEvent MonitorEvent_clone(const struct LDKMonitorEvent *NONNULL_PTR orig);
-       export function MonitorEvent_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MonitorEvent_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKMonitorEvent MonitorEvent_htlcevent(struct LDKHTLCUpdate a);
-       export function MonitorEvent_htlcevent(a: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MonitorEvent_htlcevent(a);
-               return nativeResponseValue;
-       }
-       // struct LDKMonitorEvent MonitorEvent_commitment_tx_confirmed(struct LDKOutPoint a);
-       export function MonitorEvent_commitment_tx_confirmed(a: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MonitorEvent_commitment_tx_confirmed(a);
-               return nativeResponseValue;
-       }
-       // struct LDKMonitorEvent MonitorEvent_update_completed(struct LDKOutPoint funding_txo, uint64_t monitor_update_id);
-       export function MonitorEvent_update_completed(funding_txo: number, monitor_update_id: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MonitorEvent_update_completed(funding_txo, monitor_update_id);
-               return nativeResponseValue;
-       }
-       // struct LDKMonitorEvent MonitorEvent_update_failed(struct LDKOutPoint a);
-       export function MonitorEvent_update_failed(a: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MonitorEvent_update_failed(a);
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z MonitorEvent_write(const struct LDKMonitorEvent *NONNULL_PTR obj);
-       export function MonitorEvent_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MonitorEvent_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_COption_MonitorEventZDecodeErrorZ MonitorEvent_read(struct LDKu8slice ser);
-       export function MonitorEvent_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MonitorEvent_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // void HTLCUpdate_free(struct LDKHTLCUpdate this_obj);
-       export function HTLCUpdate_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.HTLCUpdate_free(this_obj);
-               // debug statements here
-       }
-       // uint64_t HTLCUpdate_clone_ptr(LDKHTLCUpdate *NONNULL_PTR arg);
-       export function HTLCUpdate_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.HTLCUpdate_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKHTLCUpdate HTLCUpdate_clone(const struct LDKHTLCUpdate *NONNULL_PTR orig);
-       export function HTLCUpdate_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.HTLCUpdate_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z HTLCUpdate_write(const struct LDKHTLCUpdate *NONNULL_PTR obj);
-       export function HTLCUpdate_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.HTLCUpdate_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.HTLCUpdate_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // void Balance_free(struct LDKBalance this_ptr);
-       export function Balance_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Balance_free(this_ptr);
-               // debug statements here
-       }
-       // uint64_t Balance_clone_ptr(LDKBalance *NONNULL_PTR arg);
-       export function Balance_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Balance_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKBalance Balance_clone(const struct LDKBalance *NONNULL_PTR orig);
-       export function Balance_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Balance_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKBalance Balance_claimable_on_channel_close(uint64_t claimable_amount_satoshis);
-       export function Balance_claimable_on_channel_close(claimable_amount_satoshis: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Balance_claimable_on_channel_close(claimable_amount_satoshis);
-               return nativeResponseValue;
-       }
-       // struct LDKBalance Balance_claimable_awaiting_confirmations(uint64_t claimable_amount_satoshis, uint32_t confirmation_height);
-       export function Balance_claimable_awaiting_confirmations(claimable_amount_satoshis: number, confirmation_height: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Balance_claimable_awaiting_confirmations(claimable_amount_satoshis, confirmation_height);
-               return nativeResponseValue;
-       }
-       // struct LDKBalance Balance_contentious_claimable(uint64_t claimable_amount_satoshis, uint32_t timeout_height);
-       export function Balance_contentious_claimable(claimable_amount_satoshis: number, timeout_height: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Balance_contentious_claimable(claimable_amount_satoshis, timeout_height);
-               return nativeResponseValue;
-       }
-       // struct LDKBalance Balance_maybe_claimable_htlcawaiting_timeout(uint64_t claimable_amount_satoshis, uint32_t claimable_height);
-       export function Balance_maybe_claimable_htlcawaiting_timeout(claimable_amount_satoshis: number, claimable_height: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Balance_maybe_claimable_htlcawaiting_timeout(claimable_amount_satoshis, claimable_height);
-               return nativeResponseValue;
-       }
-       // bool Balance_eq(const struct LDKBalance *NONNULL_PTR a, const struct LDKBalance *NONNULL_PTR b);
-       export function Balance_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Balance_eq(a, b);
-               return nativeResponseValue;
-       }
-       // void ChannelMonitor_free(struct LDKChannelMonitor this_obj);
-       export function ChannelMonitor_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMonitor_free(this_obj);
-               // debug statements here
-       }
-       // uint64_t ChannelMonitor_clone_ptr(LDKChannelMonitor *NONNULL_PTR arg);
-       export function ChannelMonitor_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMonitor_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKChannelMonitor ChannelMonitor_clone(const struct LDKChannelMonitor *NONNULL_PTR orig);
-       export function ChannelMonitor_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMonitor_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z ChannelMonitor_write(const struct LDKChannelMonitor *NONNULL_PTR obj);
-       export function ChannelMonitor_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMonitor_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // MUST_USE_RES struct LDKCResult_NoneNoneZ ChannelMonitor_update_monitor(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const struct LDKChannelMonitorUpdate *NONNULL_PTR updates, const struct LDKBroadcasterInterface *NONNULL_PTR broadcaster, const struct LDKFeeEstimator *NONNULL_PTR fee_estimator, const struct LDKLogger *NONNULL_PTR logger);
-       export function ChannelMonitor_update_monitor(this_arg: number, updates: number, broadcaster: number, fee_estimator: number, logger: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMonitor_update_monitor(this_arg, updates, broadcaster, fee_estimator, logger);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES uint64_t ChannelMonitor_get_latest_update_id(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
-       export function ChannelMonitor_get_latest_update_id(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMonitor_get_latest_update_id(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKC2Tuple_OutPointScriptZ ChannelMonitor_get_funding_txo(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
-       export function ChannelMonitor_get_funding_txo(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMonitor_get_funding_txo(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ ChannelMonitor_get_outputs_to_watch(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
-       export function ChannelMonitor_get_outputs_to_watch(this_arg: number): number[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMonitor_get_outputs_to_watch(this_arg);
-               return nativeResponseValue;
-       }
-       // void ChannelMonitor_load_outputs_to_watch(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const struct LDKFilter *NONNULL_PTR filter);
-       export function ChannelMonitor_load_outputs_to_watch(this_arg: number, filter: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMonitor_load_outputs_to_watch(this_arg, filter);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKCVec_MonitorEventZ ChannelMonitor_get_and_clear_pending_monitor_events(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
-       export function ChannelMonitor_get_and_clear_pending_monitor_events(this_arg: number): number[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMonitor_get_and_clear_pending_monitor_events(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCVec_EventZ ChannelMonitor_get_and_clear_pending_events(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
-       export function ChannelMonitor_get_and_clear_pending_events(this_arg: number): number[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMonitor_get_and_clear_pending_events(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCVec_TransactionZ ChannelMonitor_get_latest_holder_commitment_txn(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const struct LDKLogger *NONNULL_PTR logger);
-       export function ChannelMonitor_get_latest_holder_commitment_txn(this_arg: number, logger: number): Uint8Array[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMonitor_get_latest_holder_commitment_txn(this_arg, logger);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ChannelMonitor_block_connected(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height, struct LDKBroadcasterInterface broadcaster, struct LDKFeeEstimator fee_estimator, struct LDKLogger logger);
-       export function ChannelMonitor_block_connected(this_arg: number, header: Uint8Array, txdata: number[], height: number, broadcaster: number, fee_estimator: number, logger: number): number[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMonitor_block_connected(this_arg, encodeArray(header), txdata, height, broadcaster, fee_estimator, logger);
-               return nativeResponseValue;
-       }
-       // void ChannelMonitor_block_disconnected(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const uint8_t (*header)[80], uint32_t height, struct LDKBroadcasterInterface broadcaster, struct LDKFeeEstimator fee_estimator, struct LDKLogger logger);
-       export function ChannelMonitor_block_disconnected(this_arg: number, header: Uint8Array, height: number, broadcaster: number, fee_estimator: number, logger: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMonitor_block_disconnected(this_arg, encodeArray(header), height, broadcaster, fee_estimator, logger);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ChannelMonitor_transactions_confirmed(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height, struct LDKBroadcasterInterface broadcaster, struct LDKFeeEstimator fee_estimator, struct LDKLogger logger);
-       export function ChannelMonitor_transactions_confirmed(this_arg: number, header: Uint8Array, txdata: number[], height: number, broadcaster: number, fee_estimator: number, logger: number): number[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMonitor_transactions_confirmed(this_arg, encodeArray(header), txdata, height, broadcaster, fee_estimator, logger);
-               return nativeResponseValue;
-       }
-       // void ChannelMonitor_transaction_unconfirmed(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const uint8_t (*txid)[32], struct LDKBroadcasterInterface broadcaster, struct LDKFeeEstimator fee_estimator, struct LDKLogger logger);
-       export function ChannelMonitor_transaction_unconfirmed(this_arg: number, txid: Uint8Array, broadcaster: number, fee_estimator: number, logger: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMonitor_transaction_unconfirmed(this_arg, encodeArray(txid), broadcaster, fee_estimator, logger);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ChannelMonitor_best_block_updated(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const uint8_t (*header)[80], uint32_t height, struct LDKBroadcasterInterface broadcaster, struct LDKFeeEstimator fee_estimator, struct LDKLogger logger);
-       export function ChannelMonitor_best_block_updated(this_arg: number, header: Uint8Array, height: number, broadcaster: number, fee_estimator: number, logger: number): number[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMonitor_best_block_updated(this_arg, encodeArray(header), height, broadcaster, fee_estimator, logger);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCVec_TxidZ ChannelMonitor_get_relevant_txids(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
-       export function ChannelMonitor_get_relevant_txids(this_arg: number): Uint8Array[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMonitor_get_relevant_txids(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKBestBlock ChannelMonitor_current_best_block(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
-       export function ChannelMonitor_current_best_block(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMonitor_current_best_block(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCVec_BalanceZ ChannelMonitor_get_claimable_balances(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
-       export function ChannelMonitor_get_claimable_balances(this_arg: number): number[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMonitor_get_claimable_balances(this_arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ C2Tuple_BlockHashChannelMonitorZ_read(struct LDKu8slice ser, const struct LDKKeysInterface *NONNULL_PTR arg);
-       export function C2Tuple_BlockHashChannelMonitorZ_read(ser: Uint8Array, arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_BlockHashChannelMonitorZ_read(encodeArray(ser), arg);
-               return nativeResponseValue;
-       }
-       // void OutPoint_free(struct LDKOutPoint this_obj);
-       export function OutPoint_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OutPoint_free(this_obj);
-               // debug statements here
-       }
-       // 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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OutPoint_get_txid(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void OutPoint_set_txid(struct LDKOutPoint *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function OutPoint_set_txid(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OutPoint_set_txid(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // uint16_t OutPoint_get_index(const struct LDKOutPoint *NONNULL_PTR this_ptr);
-       export function OutPoint_get_index(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OutPoint_get_index(this_ptr);
-               return nativeResponseValue;
-       }
-       // void OutPoint_set_index(struct LDKOutPoint *NONNULL_PTR this_ptr, uint16_t val);
-       export function OutPoint_set_index(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OutPoint_set_index(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKOutPoint OutPoint_new(struct LDKThirtyTwoBytes txid_arg, uint16_t index_arg);
-       export function OutPoint_new(txid_arg: Uint8Array, index_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OutPoint_new(encodeArray(txid_arg), index_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t OutPoint_clone_ptr(LDKOutPoint *NONNULL_PTR arg);
-       export function OutPoint_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OutPoint_clone_ptr(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;
-       }
-       // bool OutPoint_eq(const struct LDKOutPoint *NONNULL_PTR a, const struct LDKOutPoint *NONNULL_PTR b);
-       export function OutPoint_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OutPoint_eq(a, b);
-               return nativeResponseValue;
-       }
-       // uint64_t OutPoint_hash(const struct LDKOutPoint *NONNULL_PTR o);
-       export function OutPoint_hash(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OutPoint_hash(o);
-               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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OutPoint_to_channel_id(this_arg);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCVec_u8Z OutPoint_write(const struct LDKOutPoint *NONNULL_PTR obj);
-       export function OutPoint_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OutPoint_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.OutPoint_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // void DelayedPaymentOutputDescriptor_free(struct LDKDelayedPaymentOutputDescriptor this_obj);
-       export function DelayedPaymentOutputDescriptor_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DelayedPaymentOutputDescriptor_free(this_obj);
-               // debug statements here
-       }
-       // struct LDKOutPoint DelayedPaymentOutputDescriptor_get_outpoint(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
-       export function DelayedPaymentOutputDescriptor_get_outpoint(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DelayedPaymentOutputDescriptor_get_outpoint(this_ptr);
-               return nativeResponseValue;
-       }
-       // void DelayedPaymentOutputDescriptor_set_outpoint(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKOutPoint val);
-       export function DelayedPaymentOutputDescriptor_set_outpoint(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DelayedPaymentOutputDescriptor_set_outpoint(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKPublicKey DelayedPaymentOutputDescriptor_get_per_commitment_point(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
-       export function DelayedPaymentOutputDescriptor_get_per_commitment_point(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DelayedPaymentOutputDescriptor_get_per_commitment_point(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void DelayedPaymentOutputDescriptor_set_per_commitment_point(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function DelayedPaymentOutputDescriptor_set_per_commitment_point(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DelayedPaymentOutputDescriptor_set_per_commitment_point(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // uint16_t DelayedPaymentOutputDescriptor_get_to_self_delay(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
-       export function DelayedPaymentOutputDescriptor_get_to_self_delay(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DelayedPaymentOutputDescriptor_get_to_self_delay(this_ptr);
-               return nativeResponseValue;
-       }
-       // void DelayedPaymentOutputDescriptor_set_to_self_delay(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, uint16_t val);
-       export function DelayedPaymentOutputDescriptor_set_to_self_delay(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DelayedPaymentOutputDescriptor_set_to_self_delay(this_ptr, val);
-               // debug statements here
-       }
-       // void DelayedPaymentOutputDescriptor_set_output(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKTxOut val);
-       export function DelayedPaymentOutputDescriptor_set_output(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DelayedPaymentOutputDescriptor_set_output(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKPublicKey DelayedPaymentOutputDescriptor_get_revocation_pubkey(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
-       export function DelayedPaymentOutputDescriptor_get_revocation_pubkey(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DelayedPaymentOutputDescriptor_get_revocation_pubkey(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void DelayedPaymentOutputDescriptor_set_revocation_pubkey(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function DelayedPaymentOutputDescriptor_set_revocation_pubkey(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DelayedPaymentOutputDescriptor_set_revocation_pubkey(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // const uint8_t (*DelayedPaymentOutputDescriptor_get_channel_keys_id(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr))[32];
-       export function DelayedPaymentOutputDescriptor_get_channel_keys_id(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DelayedPaymentOutputDescriptor_get_channel_keys_id(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void DelayedPaymentOutputDescriptor_set_channel_keys_id(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function DelayedPaymentOutputDescriptor_set_channel_keys_id(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DelayedPaymentOutputDescriptor_set_channel_keys_id(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // uint64_t DelayedPaymentOutputDescriptor_get_channel_value_satoshis(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
-       export function DelayedPaymentOutputDescriptor_get_channel_value_satoshis(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DelayedPaymentOutputDescriptor_get_channel_value_satoshis(this_ptr);
-               return nativeResponseValue;
-       }
-       // void DelayedPaymentOutputDescriptor_set_channel_value_satoshis(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, uint64_t val);
-       export function DelayedPaymentOutputDescriptor_set_channel_value_satoshis(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DelayedPaymentOutputDescriptor_set_channel_value_satoshis(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKDelayedPaymentOutputDescriptor DelayedPaymentOutputDescriptor_new(struct LDKOutPoint outpoint_arg, struct LDKPublicKey per_commitment_point_arg, uint16_t to_self_delay_arg, struct LDKTxOut output_arg, struct LDKPublicKey revocation_pubkey_arg, struct LDKThirtyTwoBytes channel_keys_id_arg, uint64_t channel_value_satoshis_arg);
-       export function DelayedPaymentOutputDescriptor_new(outpoint_arg: number, per_commitment_point_arg: Uint8Array, to_self_delay_arg: number, output_arg: number, revocation_pubkey_arg: Uint8Array, channel_keys_id_arg: Uint8Array, channel_value_satoshis_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DelayedPaymentOutputDescriptor_new(outpoint_arg, encodeArray(per_commitment_point_arg), to_self_delay_arg, output_arg, encodeArray(revocation_pubkey_arg), encodeArray(channel_keys_id_arg), channel_value_satoshis_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t DelayedPaymentOutputDescriptor_clone_ptr(LDKDelayedPaymentOutputDescriptor *NONNULL_PTR arg);
-       export function DelayedPaymentOutputDescriptor_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DelayedPaymentOutputDescriptor_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKDelayedPaymentOutputDescriptor DelayedPaymentOutputDescriptor_clone(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR orig);
-       export function DelayedPaymentOutputDescriptor_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DelayedPaymentOutputDescriptor_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z DelayedPaymentOutputDescriptor_write(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR obj);
-       export function DelayedPaymentOutputDescriptor_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DelayedPaymentOutputDescriptor_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ DelayedPaymentOutputDescriptor_read(struct LDKu8slice ser);
-       export function DelayedPaymentOutputDescriptor_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DelayedPaymentOutputDescriptor_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // void StaticPaymentOutputDescriptor_free(struct LDKStaticPaymentOutputDescriptor this_obj);
-       export function StaticPaymentOutputDescriptor_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.StaticPaymentOutputDescriptor_free(this_obj);
-               // debug statements here
-       }
-       // struct LDKOutPoint StaticPaymentOutputDescriptor_get_outpoint(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr);
-       export function StaticPaymentOutputDescriptor_get_outpoint(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.StaticPaymentOutputDescriptor_get_outpoint(this_ptr);
-               return nativeResponseValue;
-       }
-       // void StaticPaymentOutputDescriptor_set_outpoint(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKOutPoint val);
-       export function StaticPaymentOutputDescriptor_set_outpoint(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.StaticPaymentOutputDescriptor_set_outpoint(this_ptr, val);
-               // debug statements here
-       }
-       // void StaticPaymentOutputDescriptor_set_output(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKTxOut val);
-       export function StaticPaymentOutputDescriptor_set_output(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.StaticPaymentOutputDescriptor_set_output(this_ptr, val);
-               // debug statements here
-       }
-       // const uint8_t (*StaticPaymentOutputDescriptor_get_channel_keys_id(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr))[32];
-       export function StaticPaymentOutputDescriptor_get_channel_keys_id(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.StaticPaymentOutputDescriptor_get_channel_keys_id(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void StaticPaymentOutputDescriptor_set_channel_keys_id(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function StaticPaymentOutputDescriptor_set_channel_keys_id(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.StaticPaymentOutputDescriptor_set_channel_keys_id(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // uint64_t StaticPaymentOutputDescriptor_get_channel_value_satoshis(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr);
-       export function StaticPaymentOutputDescriptor_get_channel_value_satoshis(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.StaticPaymentOutputDescriptor_get_channel_value_satoshis(this_ptr);
-               return nativeResponseValue;
-       }
-       // void StaticPaymentOutputDescriptor_set_channel_value_satoshis(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, uint64_t val);
-       export function StaticPaymentOutputDescriptor_set_channel_value_satoshis(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.StaticPaymentOutputDescriptor_set_channel_value_satoshis(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKStaticPaymentOutputDescriptor StaticPaymentOutputDescriptor_new(struct LDKOutPoint outpoint_arg, struct LDKTxOut output_arg, struct LDKThirtyTwoBytes channel_keys_id_arg, uint64_t channel_value_satoshis_arg);
-       export function StaticPaymentOutputDescriptor_new(outpoint_arg: number, output_arg: number, channel_keys_id_arg: Uint8Array, channel_value_satoshis_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.StaticPaymentOutputDescriptor_new(outpoint_arg, output_arg, encodeArray(channel_keys_id_arg), channel_value_satoshis_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t StaticPaymentOutputDescriptor_clone_ptr(LDKStaticPaymentOutputDescriptor *NONNULL_PTR arg);
-       export function StaticPaymentOutputDescriptor_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.StaticPaymentOutputDescriptor_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKStaticPaymentOutputDescriptor StaticPaymentOutputDescriptor_clone(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR orig);
-       export function StaticPaymentOutputDescriptor_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.StaticPaymentOutputDescriptor_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z StaticPaymentOutputDescriptor_write(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR obj);
-       export function StaticPaymentOutputDescriptor_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.StaticPaymentOutputDescriptor_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ StaticPaymentOutputDescriptor_read(struct LDKu8slice ser);
-       export function StaticPaymentOutputDescriptor_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.StaticPaymentOutputDescriptor_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // void SpendableOutputDescriptor_free(struct LDKSpendableOutputDescriptor this_ptr);
-       export function SpendableOutputDescriptor_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SpendableOutputDescriptor_free(this_ptr);
-               // debug statements here
-       }
-       // uint64_t SpendableOutputDescriptor_clone_ptr(LDKSpendableOutputDescriptor *NONNULL_PTR arg);
-       export function SpendableOutputDescriptor_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SpendableOutputDescriptor_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_clone(const struct LDKSpendableOutputDescriptor *NONNULL_PTR orig);
-       export function SpendableOutputDescriptor_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SpendableOutputDescriptor_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_static_output(struct LDKOutPoint outpoint, struct LDKTxOut output);
-       export function SpendableOutputDescriptor_static_output(outpoint: number, output: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SpendableOutputDescriptor_static_output(outpoint, output);
-               return nativeResponseValue;
-       }
-       // struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_delayed_payment_output(struct LDKDelayedPaymentOutputDescriptor a);
-       export function SpendableOutputDescriptor_delayed_payment_output(a: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SpendableOutputDescriptor_delayed_payment_output(a);
-               return nativeResponseValue;
-       }
-       // struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_static_payment_output(struct LDKStaticPaymentOutputDescriptor a);
-       export function SpendableOutputDescriptor_static_payment_output(a: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SpendableOutputDescriptor_static_payment_output(a);
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z SpendableOutputDescriptor_write(const struct LDKSpendableOutputDescriptor *NONNULL_PTR obj);
-       export function SpendableOutputDescriptor_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SpendableOutputDescriptor_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ SpendableOutputDescriptor_read(struct LDKu8slice ser);
-       export function SpendableOutputDescriptor_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SpendableOutputDescriptor_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // void BaseSign_free(struct LDKBaseSign this_ptr);
-       export function BaseSign_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BaseSign_free(this_ptr);
-               // debug statements here
-       }
-       // uint64_t Sign_clone_ptr(LDKSign *NONNULL_PTR arg);
-       export function Sign_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Sign_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKSign Sign_clone(const struct LDKSign *NONNULL_PTR orig);
-       export function Sign_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Sign_clone(orig);
-               return nativeResponseValue;
-       }
-       // void Sign_free(struct LDKSign this_ptr);
-       export function Sign_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Sign_free(this_ptr);
-               // debug statements here
-       }
-       // void KeysInterface_free(struct LDKKeysInterface this_ptr);
-       export function KeysInterface_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.KeysInterface_free(this_ptr);
-               // debug statements here
-       }
-       // void InMemorySigner_free(struct LDKInMemorySigner this_obj);
-       export function InMemorySigner_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InMemorySigner_free(this_obj);
-               // debug statements here
-       }
-       // const uint8_t (*InMemorySigner_get_funding_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
-       export function InMemorySigner_get_funding_key(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InMemorySigner_get_funding_key(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void InMemorySigner_set_funding_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
-       export function InMemorySigner_set_funding_key(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InMemorySigner_set_funding_key(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // const uint8_t (*InMemorySigner_get_revocation_base_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
-       export function InMemorySigner_get_revocation_base_key(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InMemorySigner_get_revocation_base_key(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void InMemorySigner_set_revocation_base_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
-       export function InMemorySigner_set_revocation_base_key(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InMemorySigner_set_revocation_base_key(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // const uint8_t (*InMemorySigner_get_payment_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
-       export function InMemorySigner_get_payment_key(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InMemorySigner_get_payment_key(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void InMemorySigner_set_payment_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
-       export function InMemorySigner_set_payment_key(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InMemorySigner_set_payment_key(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // const uint8_t (*InMemorySigner_get_delayed_payment_base_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
-       export function InMemorySigner_get_delayed_payment_base_key(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InMemorySigner_get_delayed_payment_base_key(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void InMemorySigner_set_delayed_payment_base_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
-       export function InMemorySigner_set_delayed_payment_base_key(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InMemorySigner_set_delayed_payment_base_key(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // const uint8_t (*InMemorySigner_get_htlc_base_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
-       export function InMemorySigner_get_htlc_base_key(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InMemorySigner_get_htlc_base_key(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void InMemorySigner_set_htlc_base_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
-       export function InMemorySigner_set_htlc_base_key(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InMemorySigner_set_htlc_base_key(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // const uint8_t (*InMemorySigner_get_commitment_seed(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
-       export function InMemorySigner_get_commitment_seed(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InMemorySigner_get_commitment_seed(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void InMemorySigner_set_commitment_seed(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function InMemorySigner_set_commitment_seed(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InMemorySigner_set_commitment_seed(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // uint64_t InMemorySigner_clone_ptr(LDKInMemorySigner *NONNULL_PTR arg);
-       export function InMemorySigner_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InMemorySigner_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKInMemorySigner InMemorySigner_clone(const struct LDKInMemorySigner *NONNULL_PTR orig);
-       export function InMemorySigner_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InMemorySigner_clone(orig);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKInMemorySigner InMemorySigner_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 LDKThirtyTwoBytes channel_keys_id);
-       export function InMemorySigner_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, channel_keys_id: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InMemorySigner_new(encodeArray(funding_key), encodeArray(revocation_base_key), encodeArray(payment_key), encodeArray(delayed_payment_base_key), encodeArray(htlc_base_key), encodeArray(commitment_seed), channel_value_satoshis, encodeArray(channel_keys_id));
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKChannelPublicKeys InMemorySigner_counterparty_pubkeys(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
-       export function InMemorySigner_counterparty_pubkeys(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InMemorySigner_counterparty_pubkeys(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES uint16_t InMemorySigner_counterparty_selected_contest_delay(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
-       export function InMemorySigner_counterparty_selected_contest_delay(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InMemorySigner_counterparty_selected_contest_delay(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES uint16_t InMemorySigner_holder_selected_contest_delay(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
-       export function InMemorySigner_holder_selected_contest_delay(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InMemorySigner_holder_selected_contest_delay(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES bool InMemorySigner_is_outbound(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
-       export function InMemorySigner_is_outbound(this_arg: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InMemorySigner_is_outbound(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKOutPoint InMemorySigner_funding_outpoint(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
-       export function InMemorySigner_funding_outpoint(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InMemorySigner_funding_outpoint(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKChannelTransactionParameters InMemorySigner_get_channel_parameters(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
-       export function InMemorySigner_get_channel_parameters(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InMemorySigner_get_channel_parameters(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES bool InMemorySigner_opt_anchors(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
-       export function InMemorySigner_opt_anchors(this_arg: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InMemorySigner_opt_anchors(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_CVec_CVec_u8ZZNoneZ InMemorySigner_sign_counterparty_payment_input(const struct LDKInMemorySigner *NONNULL_PTR this_arg, struct LDKTransaction spend_tx, uintptr_t input_idx, const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR descriptor);
-       export function InMemorySigner_sign_counterparty_payment_input(this_arg: number, spend_tx: Uint8Array, input_idx: number, descriptor: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InMemorySigner_sign_counterparty_payment_input(this_arg, encodeArray(spend_tx), input_idx, descriptor);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_CVec_CVec_u8ZZNoneZ InMemorySigner_sign_dynamic_p2wsh_input(const struct LDKInMemorySigner *NONNULL_PTR this_arg, struct LDKTransaction spend_tx, uintptr_t input_idx, const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR descriptor);
-       export function InMemorySigner_sign_dynamic_p2wsh_input(this_arg: number, spend_tx: Uint8Array, input_idx: number, descriptor: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InMemorySigner_sign_dynamic_p2wsh_input(this_arg, encodeArray(spend_tx), input_idx, descriptor);
-               return nativeResponseValue;
-       }
-       // struct LDKBaseSign InMemorySigner_as_BaseSign(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
-       export function InMemorySigner_as_BaseSign(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InMemorySigner_as_BaseSign(this_arg);
-               return nativeResponseValue;
-       }
-       // struct LDKSign InMemorySigner_as_Sign(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
-       export function InMemorySigner_as_Sign(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InMemorySigner_as_Sign(this_arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z InMemorySigner_write(const struct LDKInMemorySigner *NONNULL_PTR obj);
-       export function InMemorySigner_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InMemorySigner_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_InMemorySignerDecodeErrorZ InMemorySigner_read(struct LDKu8slice ser);
-       export function InMemorySigner_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InMemorySigner_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // void KeysManager_free(struct LDKKeysManager this_obj);
-       export function KeysManager_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.KeysManager_free(this_obj);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKKeysManager KeysManager_new(const uint8_t (*seed)[32], uint64_t starting_time_secs, uint32_t starting_time_nanos);
-       export function KeysManager_new(seed: Uint8Array, starting_time_secs: number, starting_time_nanos: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.KeysManager_new(encodeArray(seed), starting_time_secs, starting_time_nanos);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKInMemorySigner KeysManager_derive_channel_keys(const struct LDKKeysManager *NONNULL_PTR this_arg, uint64_t channel_value_satoshis, const uint8_t (*params)[32]);
-       export function KeysManager_derive_channel_keys(this_arg: number, channel_value_satoshis: number, params: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.KeysManager_derive_channel_keys(this_arg, channel_value_satoshis, encodeArray(params));
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_TransactionNoneZ KeysManager_spend_spendable_outputs(const struct LDKKeysManager *NONNULL_PTR this_arg, struct LDKCVec_SpendableOutputDescriptorZ descriptors, struct LDKCVec_TxOutZ outputs, struct LDKCVec_u8Z change_destination_script, uint32_t feerate_sat_per_1000_weight);
-       export function KeysManager_spend_spendable_outputs(this_arg: number, descriptors: number[], outputs: number[], change_destination_script: Uint8Array, feerate_sat_per_1000_weight: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.KeysManager_spend_spendable_outputs(this_arg, descriptors, outputs, encodeArray(change_destination_script), feerate_sat_per_1000_weight);
-               return nativeResponseValue;
-       }
-       // struct LDKKeysInterface KeysManager_as_KeysInterface(const struct LDKKeysManager *NONNULL_PTR this_arg);
-       export function KeysManager_as_KeysInterface(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.KeysManager_as_KeysInterface(this_arg);
-               return nativeResponseValue;
-       }
-       // void ChannelManager_free(struct LDKChannelManager this_obj);
-       export function ChannelManager_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_free(this_obj);
-               // debug statements here
-       }
-       // void ChainParameters_free(struct LDKChainParameters this_obj);
-       export function ChainParameters_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChainParameters_free(this_obj);
-               // debug statements here
-       }
-       // enum LDKNetwork ChainParameters_get_network(const struct LDKChainParameters *NONNULL_PTR this_ptr);
-       export function ChainParameters_get_network(this_ptr: number): Network {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChainParameters_get_network(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChainParameters_set_network(struct LDKChainParameters *NONNULL_PTR this_ptr, enum LDKNetwork val);
-       export function ChainParameters_set_network(this_ptr: number, val: Network): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChainParameters_set_network(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKBestBlock ChainParameters_get_best_block(const struct LDKChainParameters *NONNULL_PTR this_ptr);
-       export function ChainParameters_get_best_block(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChainParameters_get_best_block(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChainParameters_set_best_block(struct LDKChainParameters *NONNULL_PTR this_ptr, struct LDKBestBlock val);
-       export function ChainParameters_set_best_block(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChainParameters_set_best_block(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKChainParameters ChainParameters_new(enum LDKNetwork network_arg, struct LDKBestBlock best_block_arg);
-       export function ChainParameters_new(network_arg: Network, best_block_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChainParameters_new(network_arg, best_block_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t ChainParameters_clone_ptr(LDKChainParameters *NONNULL_PTR arg);
-       export function ChainParameters_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChainParameters_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKChainParameters ChainParameters_clone(const struct LDKChainParameters *NONNULL_PTR orig);
-       export function ChainParameters_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChainParameters_clone(orig);
-               return nativeResponseValue;
-       }
-       // void CounterpartyForwardingInfo_free(struct LDKCounterpartyForwardingInfo this_obj);
-       export function CounterpartyForwardingInfo_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CounterpartyForwardingInfo_free(this_obj);
-               // debug statements here
-       }
-       // uint32_t CounterpartyForwardingInfo_get_fee_base_msat(const struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr);
-       export function CounterpartyForwardingInfo_get_fee_base_msat(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CounterpartyForwardingInfo_get_fee_base_msat(this_ptr);
-               return nativeResponseValue;
-       }
-       // void CounterpartyForwardingInfo_set_fee_base_msat(struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr, uint32_t val);
-       export function CounterpartyForwardingInfo_set_fee_base_msat(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CounterpartyForwardingInfo_set_fee_base_msat(this_ptr, val);
-               // debug statements here
-       }
-       // uint32_t CounterpartyForwardingInfo_get_fee_proportional_millionths(const struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr);
-       export function CounterpartyForwardingInfo_get_fee_proportional_millionths(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CounterpartyForwardingInfo_get_fee_proportional_millionths(this_ptr);
-               return nativeResponseValue;
-       }
-       // void CounterpartyForwardingInfo_set_fee_proportional_millionths(struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr, uint32_t val);
-       export function CounterpartyForwardingInfo_set_fee_proportional_millionths(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CounterpartyForwardingInfo_set_fee_proportional_millionths(this_ptr, val);
-               // debug statements here
-       }
-       // uint16_t CounterpartyForwardingInfo_get_cltv_expiry_delta(const struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr);
-       export function CounterpartyForwardingInfo_get_cltv_expiry_delta(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CounterpartyForwardingInfo_get_cltv_expiry_delta(this_ptr);
-               return nativeResponseValue;
-       }
-       // void CounterpartyForwardingInfo_set_cltv_expiry_delta(struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr, uint16_t val);
-       export function CounterpartyForwardingInfo_set_cltv_expiry_delta(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CounterpartyForwardingInfo_set_cltv_expiry_delta(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKCounterpartyForwardingInfo CounterpartyForwardingInfo_new(uint32_t fee_base_msat_arg, uint32_t fee_proportional_millionths_arg, uint16_t cltv_expiry_delta_arg);
-       export function CounterpartyForwardingInfo_new(fee_base_msat_arg: number, fee_proportional_millionths_arg: number, cltv_expiry_delta_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CounterpartyForwardingInfo_new(fee_base_msat_arg, fee_proportional_millionths_arg, cltv_expiry_delta_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t CounterpartyForwardingInfo_clone_ptr(LDKCounterpartyForwardingInfo *NONNULL_PTR arg);
-       export function CounterpartyForwardingInfo_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CounterpartyForwardingInfo_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCounterpartyForwardingInfo CounterpartyForwardingInfo_clone(const struct LDKCounterpartyForwardingInfo *NONNULL_PTR orig);
-       export function CounterpartyForwardingInfo_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CounterpartyForwardingInfo_clone(orig);
-               return nativeResponseValue;
-       }
-       // void ChannelCounterparty_free(struct LDKChannelCounterparty this_obj);
-       export function ChannelCounterparty_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelCounterparty_free(this_obj);
-               // debug statements here
-       }
-       // struct LDKPublicKey ChannelCounterparty_get_node_id(const struct LDKChannelCounterparty *NONNULL_PTR this_ptr);
-       export function ChannelCounterparty_get_node_id(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelCounterparty_get_node_id(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void ChannelCounterparty_set_node_id(struct LDKChannelCounterparty *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function ChannelCounterparty_set_node_id(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelCounterparty_set_node_id(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKInitFeatures ChannelCounterparty_get_features(const struct LDKChannelCounterparty *NONNULL_PTR this_ptr);
-       export function ChannelCounterparty_get_features(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelCounterparty_get_features(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelCounterparty_set_features(struct LDKChannelCounterparty *NONNULL_PTR this_ptr, struct LDKInitFeatures val);
-       export function ChannelCounterparty_set_features(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelCounterparty_set_features(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t ChannelCounterparty_get_unspendable_punishment_reserve(const struct LDKChannelCounterparty *NONNULL_PTR this_ptr);
-       export function ChannelCounterparty_get_unspendable_punishment_reserve(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelCounterparty_get_unspendable_punishment_reserve(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelCounterparty_set_unspendable_punishment_reserve(struct LDKChannelCounterparty *NONNULL_PTR this_ptr, uint64_t val);
-       export function ChannelCounterparty_set_unspendable_punishment_reserve(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelCounterparty_set_unspendable_punishment_reserve(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKCounterpartyForwardingInfo ChannelCounterparty_get_forwarding_info(const struct LDKChannelCounterparty *NONNULL_PTR this_ptr);
-       export function ChannelCounterparty_get_forwarding_info(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelCounterparty_get_forwarding_info(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelCounterparty_set_forwarding_info(struct LDKChannelCounterparty *NONNULL_PTR this_ptr, struct LDKCounterpartyForwardingInfo val);
-       export function ChannelCounterparty_set_forwarding_info(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelCounterparty_set_forwarding_info(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKChannelCounterparty ChannelCounterparty_new(struct LDKPublicKey node_id_arg, struct LDKInitFeatures features_arg, uint64_t unspendable_punishment_reserve_arg, struct LDKCounterpartyForwardingInfo forwarding_info_arg);
-       export function ChannelCounterparty_new(node_id_arg: Uint8Array, features_arg: number, unspendable_punishment_reserve_arg: number, forwarding_info_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelCounterparty_new(encodeArray(node_id_arg), features_arg, unspendable_punishment_reserve_arg, forwarding_info_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t ChannelCounterparty_clone_ptr(LDKChannelCounterparty *NONNULL_PTR arg);
-       export function ChannelCounterparty_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelCounterparty_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKChannelCounterparty ChannelCounterparty_clone(const struct LDKChannelCounterparty *NONNULL_PTR orig);
-       export function ChannelCounterparty_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelCounterparty_clone(orig);
-               return nativeResponseValue;
-       }
-       // void ChannelDetails_free(struct LDKChannelDetails this_obj);
-       export function ChannelDetails_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_free(this_obj);
-               // debug statements here
-       }
-       // 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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_get_channel_id(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void ChannelDetails_set_channel_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function ChannelDetails_set_channel_id(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_set_channel_id(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKChannelCounterparty ChannelDetails_get_counterparty(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
-       export function ChannelDetails_get_counterparty(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_get_counterparty(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelDetails_set_counterparty(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKChannelCounterparty val);
-       export function ChannelDetails_set_counterparty(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_set_counterparty(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKOutPoint ChannelDetails_get_funding_txo(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
-       export function ChannelDetails_get_funding_txo(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_get_funding_txo(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelDetails_set_funding_txo(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKOutPoint val);
-       export function ChannelDetails_set_funding_txo(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_set_funding_txo(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKCOption_u64Z ChannelDetails_get_short_channel_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
-       export function ChannelDetails_get_short_channel_id(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_get_short_channel_id(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelDetails_set_short_channel_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
-       export function ChannelDetails_set_short_channel_id(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_set_short_channel_id(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t ChannelDetails_get_channel_value_satoshis(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
-       export function ChannelDetails_get_channel_value_satoshis(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_get_channel_value_satoshis(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelDetails_set_channel_value_satoshis(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
-       export function ChannelDetails_set_channel_value_satoshis(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_set_channel_value_satoshis(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKCOption_u64Z ChannelDetails_get_unspendable_punishment_reserve(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
-       export function ChannelDetails_get_unspendable_punishment_reserve(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_get_unspendable_punishment_reserve(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelDetails_set_unspendable_punishment_reserve(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
-       export function ChannelDetails_set_unspendable_punishment_reserve(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_set_unspendable_punishment_reserve(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t ChannelDetails_get_user_channel_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
-       export function ChannelDetails_get_user_channel_id(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_get_user_channel_id(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelDetails_set_user_channel_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
-       export function ChannelDetails_set_user_channel_id(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_set_user_channel_id(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t ChannelDetails_get_balance_msat(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
-       export function ChannelDetails_get_balance_msat(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_get_balance_msat(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelDetails_set_balance_msat(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
-       export function ChannelDetails_set_balance_msat(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_set_balance_msat(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t ChannelDetails_get_outbound_capacity_msat(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
-       export function ChannelDetails_get_outbound_capacity_msat(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_get_outbound_capacity_msat(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelDetails_set_outbound_capacity_msat(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
-       export function ChannelDetails_set_outbound_capacity_msat(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_set_outbound_capacity_msat(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t ChannelDetails_get_inbound_capacity_msat(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
-       export function ChannelDetails_get_inbound_capacity_msat(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_get_inbound_capacity_msat(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelDetails_set_inbound_capacity_msat(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
-       export function ChannelDetails_set_inbound_capacity_msat(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_set_inbound_capacity_msat(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKCOption_u32Z ChannelDetails_get_confirmations_required(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
-       export function ChannelDetails_get_confirmations_required(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_get_confirmations_required(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelDetails_set_confirmations_required(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u32Z val);
-       export function ChannelDetails_set_confirmations_required(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_set_confirmations_required(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKCOption_u16Z ChannelDetails_get_force_close_spend_delay(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
-       export function ChannelDetails_get_force_close_spend_delay(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_get_force_close_spend_delay(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelDetails_set_force_close_spend_delay(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u16Z val);
-       export function ChannelDetails_set_force_close_spend_delay(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_set_force_close_spend_delay(this_ptr, val);
-               // debug statements here
-       }
-       // bool ChannelDetails_get_is_outbound(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
-       export function ChannelDetails_get_is_outbound(this_ptr: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_get_is_outbound(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelDetails_set_is_outbound(struct LDKChannelDetails *NONNULL_PTR this_ptr, bool val);
-       export function ChannelDetails_set_is_outbound(this_ptr: number, val: boolean): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_set_is_outbound(this_ptr, val);
-               // debug statements here
-       }
-       // bool ChannelDetails_get_is_funding_locked(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
-       export function ChannelDetails_get_is_funding_locked(this_ptr: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_get_is_funding_locked(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelDetails_set_is_funding_locked(struct LDKChannelDetails *NONNULL_PTR this_ptr, bool val);
-       export function ChannelDetails_set_is_funding_locked(this_ptr: number, val: boolean): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_set_is_funding_locked(this_ptr, val);
-               // debug statements here
-       }
-       // bool ChannelDetails_get_is_usable(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
-       export function ChannelDetails_get_is_usable(this_ptr: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_get_is_usable(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelDetails_set_is_usable(struct LDKChannelDetails *NONNULL_PTR this_ptr, bool val);
-       export function ChannelDetails_set_is_usable(this_ptr: number, val: boolean): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_set_is_usable(this_ptr, val);
-               // debug statements here
-       }
-       // bool ChannelDetails_get_is_public(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
-       export function ChannelDetails_get_is_public(this_ptr: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_get_is_public(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelDetails_set_is_public(struct LDKChannelDetails *NONNULL_PTR this_ptr, bool val);
-       export function ChannelDetails_set_is_public(this_ptr: number, val: boolean): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_set_is_public(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKChannelDetails ChannelDetails_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKChannelCounterparty counterparty_arg, struct LDKOutPoint funding_txo_arg, struct LDKCOption_u64Z short_channel_id_arg, uint64_t channel_value_satoshis_arg, struct LDKCOption_u64Z unspendable_punishment_reserve_arg, uint64_t user_channel_id_arg, uint64_t balance_msat_arg, uint64_t outbound_capacity_msat_arg, uint64_t inbound_capacity_msat_arg, struct LDKCOption_u32Z confirmations_required_arg, struct LDKCOption_u16Z force_close_spend_delay_arg, bool is_outbound_arg, bool is_funding_locked_arg, bool is_usable_arg, bool is_public_arg);
-       export function ChannelDetails_new(channel_id_arg: Uint8Array, counterparty_arg: number, funding_txo_arg: number, short_channel_id_arg: number, channel_value_satoshis_arg: number, unspendable_punishment_reserve_arg: number, user_channel_id_arg: number, balance_msat_arg: number, outbound_capacity_msat_arg: number, inbound_capacity_msat_arg: number, confirmations_required_arg: number, force_close_spend_delay_arg: number, is_outbound_arg: boolean, is_funding_locked_arg: boolean, is_usable_arg: boolean, is_public_arg: boolean): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_new(encodeArray(channel_id_arg), counterparty_arg, funding_txo_arg, short_channel_id_arg, channel_value_satoshis_arg, unspendable_punishment_reserve_arg, user_channel_id_arg, balance_msat_arg, outbound_capacity_msat_arg, inbound_capacity_msat_arg, confirmations_required_arg, force_close_spend_delay_arg, is_outbound_arg, is_funding_locked_arg, is_usable_arg, is_public_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t ChannelDetails_clone_ptr(LDKChannelDetails *NONNULL_PTR arg);
-       export function ChannelDetails_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelDetails_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PaymentSendFailure_free(this_ptr);
-               // debug statements here
-       }
-       // uint64_t PaymentSendFailure_clone_ptr(LDKPaymentSendFailure *NONNULL_PTR arg);
-       export function PaymentSendFailure_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PaymentSendFailure_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKPaymentSendFailure PaymentSendFailure_clone(const struct LDKPaymentSendFailure *NONNULL_PTR orig);
-       export function PaymentSendFailure_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PaymentSendFailure_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKPaymentSendFailure PaymentSendFailure_parameter_error(struct LDKAPIError a);
-       export function PaymentSendFailure_parameter_error(a: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PaymentSendFailure_parameter_error(a);
-               return nativeResponseValue;
-       }
-       // struct LDKPaymentSendFailure PaymentSendFailure_path_parameter_error(struct LDKCVec_CResult_NoneAPIErrorZZ a);
-       export function PaymentSendFailure_path_parameter_error(a: number[]): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PaymentSendFailure_path_parameter_error(a);
-               return nativeResponseValue;
-       }
-       // struct LDKPaymentSendFailure PaymentSendFailure_all_failed_retry_safe(struct LDKCVec_APIErrorZ a);
-       export function PaymentSendFailure_all_failed_retry_safe(a: number[]): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PaymentSendFailure_all_failed_retry_safe(a);
-               return nativeResponseValue;
-       }
-       // struct LDKPaymentSendFailure PaymentSendFailure_partial_failure(struct LDKCVec_CResult_NoneAPIErrorZZ results, struct LDKRouteParameters failed_paths_retry, struct LDKThirtyTwoBytes payment_id);
-       export function PaymentSendFailure_partial_failure(results: number[], failed_paths_retry: number, payment_id: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PaymentSendFailure_partial_failure(results, failed_paths_retry, encodeArray(payment_id));
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKChannelManager ChannelManager_new(struct LDKFeeEstimator fee_est, struct LDKWatch chain_monitor, struct LDKBroadcasterInterface tx_broadcaster, struct LDKLogger logger, struct LDKKeysInterface keys_manager, struct LDKUserConfig config, struct LDKChainParameters params);
-       export function ChannelManager_new(fee_est: number, chain_monitor: number, tx_broadcaster: number, logger: number, keys_manager: number, config: number, params: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_new(fee_est, chain_monitor, tx_broadcaster, logger, keys_manager, config, params);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKUserConfig ChannelManager_get_current_default_configuration(const struct LDKChannelManager *NONNULL_PTR this_arg);
-       export function ChannelManager_get_current_default_configuration(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_get_current_default_configuration(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult__u832APIErrorZ ChannelManager_create_channel(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKPublicKey their_network_key, uint64_t channel_value_satoshis, uint64_t push_msat, uint64_t user_channel_id, struct LDKUserConfig override_config);
-       export function ChannelManager_create_channel(this_arg: number, their_network_key: Uint8Array, channel_value_satoshis: number, push_msat: number, user_channel_id: number, override_config: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_create_channel(this_arg, encodeArray(their_network_key), channel_value_satoshis, push_msat, user_channel_id, override_config);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCVec_ChannelDetailsZ ChannelManager_list_channels(const struct LDKChannelManager *NONNULL_PTR this_arg);
-       export function ChannelManager_list_channels(this_arg: number): number[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_list_channels(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCVec_ChannelDetailsZ ChannelManager_list_usable_channels(const struct LDKChannelManager *NONNULL_PTR this_arg);
-       export function ChannelManager_list_usable_channels(this_arg: number): number[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_list_usable_channels(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_close_channel(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*channel_id)[32]);
-       export function ChannelManager_close_channel(this_arg: number, channel_id: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_close_channel(this_arg, encodeArray(channel_id));
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_close_channel_with_target_feerate(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*channel_id)[32], uint32_t target_feerate_sats_per_1000_weight);
-       export function ChannelManager_close_channel_with_target_feerate(this_arg: number, channel_id: Uint8Array, target_feerate_sats_per_1000_weight: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_close_channel_with_target_feerate(this_arg, encodeArray(channel_id), target_feerate_sats_per_1000_weight);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_force_close_channel(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*channel_id)[32]);
-       export function ChannelManager_force_close_channel(this_arg: number, channel_id: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_force_close_channel(this_arg, encodeArray(channel_id));
-               return nativeResponseValue;
-       }
-       // void ChannelManager_force_close_all_channels(const struct LDKChannelManager *NONNULL_PTR this_arg);
-       export function ChannelManager_force_close_all_channels(this_arg: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_force_close_all_channels(this_arg);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKCResult_PaymentIdPaymentSendFailureZ ChannelManager_send_payment(const struct LDKChannelManager *NONNULL_PTR this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret);
-       export function ChannelManager_send_payment(this_arg: number, route: number, payment_hash: Uint8Array, payment_secret: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_send_payment(this_arg, route, encodeArray(payment_hash), encodeArray(payment_secret));
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_NonePaymentSendFailureZ ChannelManager_retry_payment(const struct LDKChannelManager *NONNULL_PTR this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_id);
-       export function ChannelManager_retry_payment(this_arg: number, route: number, payment_id: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_retry_payment(this_arg, route, encodeArray(payment_id));
-               return nativeResponseValue;
-       }
-       // void ChannelManager_abandon_payment(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThirtyTwoBytes payment_id);
-       export function ChannelManager_abandon_payment(this_arg: number, payment_id: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_abandon_payment(this_arg, encodeArray(payment_id));
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ ChannelManager_send_spontaneous_payment(const struct LDKChannelManager *NONNULL_PTR this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_preimage);
-       export function ChannelManager_send_spontaneous_payment(this_arg: number, route: number, payment_preimage: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_send_spontaneous_payment(this_arg, route, encodeArray(payment_preimage));
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_funding_transaction_generated(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*temporary_channel_id)[32], struct LDKTransaction funding_transaction);
-       export function ChannelManager_funding_transaction_generated(this_arg: number, temporary_channel_id: Uint8Array, funding_transaction: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_funding_transaction_generated(this_arg, encodeArray(temporary_channel_id), encodeArray(funding_transaction));
-               return nativeResponseValue;
-       }
-       // void ChannelManager_broadcast_node_announcement(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThreeBytes rgb, struct LDKThirtyTwoBytes alias, struct LDKCVec_NetAddressZ addresses);
-       export function ChannelManager_broadcast_node_announcement(this_arg: number, rgb: Uint8Array, alias: Uint8Array, addresses: number[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_broadcast_node_announcement(this_arg, encodeArray(rgb), encodeArray(alias), addresses);
-               // debug statements here
-       }
-       // void ChannelManager_process_pending_htlc_forwards(const struct LDKChannelManager *NONNULL_PTR this_arg);
-       export function ChannelManager_process_pending_htlc_forwards(this_arg: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_process_pending_htlc_forwards(this_arg);
-               // debug statements here
-       }
-       // void ChannelManager_timer_tick_occurred(const struct LDKChannelManager *NONNULL_PTR this_arg);
-       export function ChannelManager_timer_tick_occurred(this_arg: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_timer_tick_occurred(this_arg);
-               // debug statements here
-       }
-       // MUST_USE_RES bool ChannelManager_fail_htlc_backwards(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*payment_hash)[32]);
-       export function ChannelManager_fail_htlc_backwards(this_arg: number, payment_hash: Uint8Array): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_fail_htlc_backwards(this_arg, encodeArray(payment_hash));
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES bool ChannelManager_claim_funds(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThirtyTwoBytes payment_preimage);
-       export function ChannelManager_claim_funds(this_arg: number, payment_preimage: Uint8Array): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_claim_funds(this_arg, encodeArray(payment_preimage));
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKPublicKey ChannelManager_get_our_node_id(const struct LDKChannelManager *NONNULL_PTR this_arg);
-       export function ChannelManager_get_our_node_id(this_arg: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_get_our_node_id(this_arg);
-               return decodeArray(nativeResponseValue);
-       }
-       // MUST_USE_RES struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ ChannelManager_create_inbound_payment(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKCOption_u64Z min_value_msat, uint32_t invoice_expiry_delta_secs);
-       export function ChannelManager_create_inbound_payment(this_arg: number, min_value_msat: number, invoice_expiry_delta_secs: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_create_inbound_payment(this_arg, min_value_msat, invoice_expiry_delta_secs);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ ChannelManager_create_inbound_payment_legacy(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKCOption_u64Z min_value_msat, uint32_t invoice_expiry_delta_secs);
-       export function ChannelManager_create_inbound_payment_legacy(this_arg: number, min_value_msat: number, invoice_expiry_delta_secs: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_create_inbound_payment_legacy(this_arg, min_value_msat, invoice_expiry_delta_secs);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_PaymentSecretNoneZ ChannelManager_create_inbound_payment_for_hash(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThirtyTwoBytes payment_hash, struct LDKCOption_u64Z min_value_msat, uint32_t invoice_expiry_delta_secs);
-       export function ChannelManager_create_inbound_payment_for_hash(this_arg: number, payment_hash: Uint8Array, min_value_msat: number, invoice_expiry_delta_secs: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_create_inbound_payment_for_hash(this_arg, encodeArray(payment_hash), min_value_msat, invoice_expiry_delta_secs);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_PaymentSecretAPIErrorZ ChannelManager_create_inbound_payment_for_hash_legacy(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThirtyTwoBytes payment_hash, struct LDKCOption_u64Z min_value_msat, uint32_t invoice_expiry_delta_secs);
-       export function ChannelManager_create_inbound_payment_for_hash_legacy(this_arg: number, payment_hash: Uint8Array, min_value_msat: number, invoice_expiry_delta_secs: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_create_inbound_payment_for_hash_legacy(this_arg, encodeArray(payment_hash), min_value_msat, invoice_expiry_delta_secs);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_PaymentPreimageAPIErrorZ ChannelManager_get_payment_preimage(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret);
-       export function ChannelManager_get_payment_preimage(this_arg: number, payment_hash: Uint8Array, payment_secret: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_get_payment_preimage(this_arg, encodeArray(payment_hash), encodeArray(payment_secret));
-               return nativeResponseValue;
-       }
-       // struct LDKMessageSendEventsProvider ChannelManager_as_MessageSendEventsProvider(const struct LDKChannelManager *NONNULL_PTR this_arg);
-       export function ChannelManager_as_MessageSendEventsProvider(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_as_MessageSendEventsProvider(this_arg);
-               return nativeResponseValue;
-       }
-       // struct LDKEventsProvider ChannelManager_as_EventsProvider(const struct LDKChannelManager *NONNULL_PTR this_arg);
-       export function ChannelManager_as_EventsProvider(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_as_EventsProvider(this_arg);
-               return nativeResponseValue;
-       }
-       // struct LDKListen ChannelManager_as_Listen(const struct LDKChannelManager *NONNULL_PTR this_arg);
-       export function ChannelManager_as_Listen(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_as_Listen(this_arg);
-               return nativeResponseValue;
-       }
-       // struct LDKConfirm ChannelManager_as_Confirm(const struct LDKChannelManager *NONNULL_PTR this_arg);
-       export function ChannelManager_as_Confirm(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_as_Confirm(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES bool ChannelManager_await_persistable_update_timeout(const struct LDKChannelManager *NONNULL_PTR this_arg, uint64_t max_wait);
-       export function ChannelManager_await_persistable_update_timeout(this_arg: number, max_wait: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_await_persistable_update_timeout(this_arg, max_wait);
-               return nativeResponseValue;
-       }
-       // void ChannelManager_await_persistable_update(const struct LDKChannelManager *NONNULL_PTR this_arg);
-       export function ChannelManager_await_persistable_update(this_arg: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_await_persistable_update(this_arg);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKBestBlock ChannelManager_current_best_block(const struct LDKChannelManager *NONNULL_PTR this_arg);
-       export function ChannelManager_current_best_block(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_current_best_block(this_arg);
-               return nativeResponseValue;
-       }
-       // struct LDKChannelMessageHandler ChannelManager_as_ChannelMessageHandler(const struct LDKChannelManager *NONNULL_PTR this_arg);
-       export function ChannelManager_as_ChannelMessageHandler(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_as_ChannelMessageHandler(this_arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z ChannelManager_write(const struct LDKChannelManager *NONNULL_PTR obj);
-       export function ChannelManager_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // void ChannelManagerReadArgs_free(struct LDKChannelManagerReadArgs this_obj);
-       export function ChannelManagerReadArgs_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManagerReadArgs_free(this_obj);
-               // debug statements here
-       }
-       // const struct LDKKeysInterface *ChannelManagerReadArgs_get_keys_manager(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
-       export function ChannelManagerReadArgs_get_keys_manager(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManagerReadArgs_get_keys_manager(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelManagerReadArgs_set_keys_manager(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKKeysInterface val);
-       export function ChannelManagerReadArgs_set_keys_manager(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManagerReadArgs_set_keys_manager(this_ptr, val);
-               // debug statements here
-       }
-       // const struct LDKFeeEstimator *ChannelManagerReadArgs_get_fee_estimator(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
-       export function ChannelManagerReadArgs_get_fee_estimator(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManagerReadArgs_get_fee_estimator(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelManagerReadArgs_set_fee_estimator(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKFeeEstimator val);
-       export function ChannelManagerReadArgs_set_fee_estimator(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManagerReadArgs_set_fee_estimator(this_ptr, val);
-               // debug statements here
-       }
-       // const struct LDKWatch *ChannelManagerReadArgs_get_chain_monitor(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
-       export function ChannelManagerReadArgs_get_chain_monitor(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManagerReadArgs_get_chain_monitor(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelManagerReadArgs_set_chain_monitor(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKWatch val);
-       export function ChannelManagerReadArgs_set_chain_monitor(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManagerReadArgs_set_chain_monitor(this_ptr, val);
-               // debug statements here
-       }
-       // const struct LDKBroadcasterInterface *ChannelManagerReadArgs_get_tx_broadcaster(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
-       export function ChannelManagerReadArgs_get_tx_broadcaster(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManagerReadArgs_get_tx_broadcaster(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelManagerReadArgs_set_tx_broadcaster(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKBroadcasterInterface val);
-       export function ChannelManagerReadArgs_set_tx_broadcaster(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManagerReadArgs_set_tx_broadcaster(this_ptr, val);
-               // debug statements here
-       }
-       // const struct LDKLogger *ChannelManagerReadArgs_get_logger(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
-       export function ChannelManagerReadArgs_get_logger(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManagerReadArgs_get_logger(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelManagerReadArgs_set_logger(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKLogger val);
-       export function ChannelManagerReadArgs_set_logger(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManagerReadArgs_set_logger(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKUserConfig ChannelManagerReadArgs_get_default_config(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
-       export function ChannelManagerReadArgs_get_default_config(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManagerReadArgs_get_default_config(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelManagerReadArgs_set_default_config(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKUserConfig val);
-       export function ChannelManagerReadArgs_set_default_config(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManagerReadArgs_set_default_config(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKChannelManagerReadArgs ChannelManagerReadArgs_new(struct LDKKeysInterface keys_manager, struct LDKFeeEstimator fee_estimator, struct LDKWatch chain_monitor, struct LDKBroadcasterInterface tx_broadcaster, struct LDKLogger logger, struct LDKUserConfig default_config, struct LDKCVec_ChannelMonitorZ channel_monitors);
-       export function ChannelManagerReadArgs_new(keys_manager: number, fee_estimator: number, chain_monitor: number, tx_broadcaster: number, logger: number, default_config: number, channel_monitors: number[]): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManagerReadArgs_new(keys_manager, fee_estimator, chain_monitor, tx_broadcaster, logger, default_config, channel_monitors);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ C2Tuple_BlockHashChannelManagerZ_read(struct LDKu8slice ser, struct LDKChannelManagerReadArgs arg);
-       export function C2Tuple_BlockHashChannelManagerZ_read(ser: Uint8Array, arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.C2Tuple_BlockHashChannelManagerZ_read(encodeArray(ser), arg);
-               return nativeResponseValue;
-       }
-       // void DecodeError_free(struct LDKDecodeError this_obj);
-       export function DecodeError_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DecodeError_free(this_obj);
-               // debug statements here
-       }
-       // uint64_t DecodeError_clone_ptr(LDKDecodeError *NONNULL_PTR arg);
-       export function DecodeError_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DecodeError_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKDecodeError DecodeError_clone(const struct LDKDecodeError *NONNULL_PTR orig);
-       export function DecodeError_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DecodeError_clone(orig);
-               return nativeResponseValue;
-       }
-       // void Init_free(struct LDKInit this_obj);
-       export function Init_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Init_free(this_obj);
-               // debug statements here
-       }
-       // struct LDKInitFeatures Init_get_features(const struct LDKInit *NONNULL_PTR this_ptr);
-       export function Init_get_features(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Init_get_features(this_ptr);
-               return nativeResponseValue;
-       }
-       // void Init_set_features(struct LDKInit *NONNULL_PTR this_ptr, struct LDKInitFeatures val);
-       export function Init_set_features(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Init_set_features(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKInit Init_new(struct LDKInitFeatures features_arg);
-       export function Init_new(features_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Init_new(features_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t Init_clone_ptr(LDKInit *NONNULL_PTR arg);
-       export function Init_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Init_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKInit Init_clone(const struct LDKInit *NONNULL_PTR orig);
-       export function Init_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Init_clone(orig);
-               return nativeResponseValue;
-       }
-       // void ErrorMessage_free(struct LDKErrorMessage this_obj);
-       export function ErrorMessage_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ErrorMessage_free(this_obj);
-               // debug statements here
-       }
-       // 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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ErrorMessage_get_channel_id(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void ErrorMessage_set_channel_id(struct LDKErrorMessage *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function ErrorMessage_set_channel_id(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ErrorMessage_set_channel_id(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKStr ErrorMessage_get_data(const struct LDKErrorMessage *NONNULL_PTR this_ptr);
-       export function ErrorMessage_get_data(this_ptr: number): String {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ErrorMessage_get_data(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ErrorMessage_set_data(struct LDKErrorMessage *NONNULL_PTR this_ptr, struct LDKStr val);
-       export function ErrorMessage_set_data(this_ptr: number, val: String): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ErrorMessage_set_data(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKErrorMessage ErrorMessage_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKStr data_arg);
-       export function ErrorMessage_new(channel_id_arg: Uint8Array, data_arg: String): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ErrorMessage_new(encodeArray(channel_id_arg), data_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t ErrorMessage_clone_ptr(LDKErrorMessage *NONNULL_PTR arg);
-       export function ErrorMessage_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ErrorMessage_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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;
-       }
-       // void Ping_free(struct LDKPing this_obj);
-       export function Ping_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Ping_free(this_obj);
-               // debug statements here
-       }
-       // uint16_t Ping_get_ponglen(const struct LDKPing *NONNULL_PTR this_ptr);
-       export function Ping_get_ponglen(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Ping_get_ponglen(this_ptr);
-               return nativeResponseValue;
-       }
-       // void Ping_set_ponglen(struct LDKPing *NONNULL_PTR this_ptr, uint16_t val);
-       export function Ping_set_ponglen(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Ping_set_ponglen(this_ptr, val);
-               // debug statements here
-       }
-       // uint16_t Ping_get_byteslen(const struct LDKPing *NONNULL_PTR this_ptr);
-       export function Ping_get_byteslen(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Ping_get_byteslen(this_ptr);
-               return nativeResponseValue;
-       }
-       // void Ping_set_byteslen(struct LDKPing *NONNULL_PTR this_ptr, uint16_t val);
-       export function Ping_set_byteslen(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Ping_set_byteslen(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKPing Ping_new(uint16_t ponglen_arg, uint16_t byteslen_arg);
-       export function Ping_new(ponglen_arg: number, byteslen_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Ping_new(ponglen_arg, byteslen_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t Ping_clone_ptr(LDKPing *NONNULL_PTR arg);
-       export function Ping_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Ping_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.Ping_clone(orig);
-               return nativeResponseValue;
-       }
-       // void Pong_free(struct LDKPong this_obj);
-       export function Pong_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Pong_free(this_obj);
-               // debug statements here
-       }
-       // uint16_t Pong_get_byteslen(const struct LDKPong *NONNULL_PTR this_ptr);
-       export function Pong_get_byteslen(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Pong_get_byteslen(this_ptr);
-               return nativeResponseValue;
-       }
-       // void Pong_set_byteslen(struct LDKPong *NONNULL_PTR this_ptr, uint16_t val);
-       export function Pong_set_byteslen(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Pong_set_byteslen(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKPong Pong_new(uint16_t byteslen_arg);
-       export function Pong_new(byteslen_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Pong_new(byteslen_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t Pong_clone_ptr(LDKPong *NONNULL_PTR arg);
-       export function Pong_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Pong_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.Pong_clone(orig);
-               return nativeResponseValue;
-       }
-       // void OpenChannel_free(struct LDKOpenChannel this_obj);
-       export function OpenChannel_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_free(this_obj);
-               // 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 {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_get_chain_hash(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void OpenChannel_set_chain_hash(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function OpenChannel_set_chain_hash(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_set_chain_hash(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // const uint8_t (*OpenChannel_get_temporary_channel_id(const struct LDKOpenChannel *NONNULL_PTR this_ptr))[32];
-       export function OpenChannel_get_temporary_channel_id(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_get_temporary_channel_id(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void OpenChannel_set_temporary_channel_id(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function OpenChannel_set_temporary_channel_id(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_set_temporary_channel_id(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // uint64_t OpenChannel_get_funding_satoshis(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
-       export function OpenChannel_get_funding_satoshis(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_get_funding_satoshis(this_ptr);
-               return nativeResponseValue;
-       }
-       // void OpenChannel_set_funding_satoshis(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
-       export function OpenChannel_set_funding_satoshis(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_set_funding_satoshis(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t OpenChannel_get_push_msat(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
-       export function OpenChannel_get_push_msat(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_get_push_msat(this_ptr);
-               return nativeResponseValue;
-       }
-       // void OpenChannel_set_push_msat(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
-       export function OpenChannel_set_push_msat(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_set_push_msat(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t OpenChannel_get_dust_limit_satoshis(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
-       export function OpenChannel_get_dust_limit_satoshis(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_get_dust_limit_satoshis(this_ptr);
-               return nativeResponseValue;
-       }
-       // void OpenChannel_set_dust_limit_satoshis(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
-       export function OpenChannel_set_dust_limit_satoshis(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_set_dust_limit_satoshis(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t OpenChannel_get_max_htlc_value_in_flight_msat(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
-       export function OpenChannel_get_max_htlc_value_in_flight_msat(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_get_max_htlc_value_in_flight_msat(this_ptr);
-               return nativeResponseValue;
-       }
-       // void OpenChannel_set_max_htlc_value_in_flight_msat(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
-       export function OpenChannel_set_max_htlc_value_in_flight_msat(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_set_max_htlc_value_in_flight_msat(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t OpenChannel_get_channel_reserve_satoshis(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
-       export function OpenChannel_get_channel_reserve_satoshis(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_get_channel_reserve_satoshis(this_ptr);
-               return nativeResponseValue;
-       }
-       // void OpenChannel_set_channel_reserve_satoshis(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
-       export function OpenChannel_set_channel_reserve_satoshis(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_set_channel_reserve_satoshis(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t OpenChannel_get_htlc_minimum_msat(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
-       export function OpenChannel_get_htlc_minimum_msat(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_get_htlc_minimum_msat(this_ptr);
-               return nativeResponseValue;
-       }
-       // void OpenChannel_set_htlc_minimum_msat(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
-       export function OpenChannel_set_htlc_minimum_msat(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_set_htlc_minimum_msat(this_ptr, val);
-               // debug statements here
-       }
-       // uint32_t OpenChannel_get_feerate_per_kw(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
-       export function OpenChannel_get_feerate_per_kw(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_get_feerate_per_kw(this_ptr);
-               return nativeResponseValue;
-       }
-       // void OpenChannel_set_feerate_per_kw(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint32_t val);
-       export function OpenChannel_set_feerate_per_kw(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_set_feerate_per_kw(this_ptr, val);
-               // debug statements here
-       }
-       // uint16_t OpenChannel_get_to_self_delay(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
-       export function OpenChannel_get_to_self_delay(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_get_to_self_delay(this_ptr);
-               return nativeResponseValue;
-       }
-       // void OpenChannel_set_to_self_delay(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint16_t val);
-       export function OpenChannel_set_to_self_delay(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_set_to_self_delay(this_ptr, val);
-               // debug statements here
-       }
-       // uint16_t OpenChannel_get_max_accepted_htlcs(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
-       export function OpenChannel_get_max_accepted_htlcs(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_get_max_accepted_htlcs(this_ptr);
-               return nativeResponseValue;
-       }
-       // void OpenChannel_set_max_accepted_htlcs(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint16_t val);
-       export function OpenChannel_set_max_accepted_htlcs(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_set_max_accepted_htlcs(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKPublicKey OpenChannel_get_funding_pubkey(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
-       export function OpenChannel_get_funding_pubkey(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_get_funding_pubkey(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void OpenChannel_set_funding_pubkey(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function OpenChannel_set_funding_pubkey(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_set_funding_pubkey(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKPublicKey OpenChannel_get_revocation_basepoint(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
-       export function OpenChannel_get_revocation_basepoint(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_get_revocation_basepoint(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void OpenChannel_set_revocation_basepoint(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function OpenChannel_set_revocation_basepoint(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_set_revocation_basepoint(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKPublicKey OpenChannel_get_payment_point(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
-       export function OpenChannel_get_payment_point(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_get_payment_point(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void OpenChannel_set_payment_point(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function OpenChannel_set_payment_point(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_set_payment_point(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKPublicKey OpenChannel_get_delayed_payment_basepoint(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
-       export function OpenChannel_get_delayed_payment_basepoint(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_get_delayed_payment_basepoint(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void OpenChannel_set_delayed_payment_basepoint(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function OpenChannel_set_delayed_payment_basepoint(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_set_delayed_payment_basepoint(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKPublicKey OpenChannel_get_htlc_basepoint(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
-       export function OpenChannel_get_htlc_basepoint(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_get_htlc_basepoint(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void OpenChannel_set_htlc_basepoint(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function OpenChannel_set_htlc_basepoint(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_set_htlc_basepoint(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKPublicKey OpenChannel_get_first_per_commitment_point(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
-       export function OpenChannel_get_first_per_commitment_point(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_get_first_per_commitment_point(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void OpenChannel_set_first_per_commitment_point(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function OpenChannel_set_first_per_commitment_point(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_set_first_per_commitment_point(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // uint8_t OpenChannel_get_channel_flags(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
-       export function OpenChannel_get_channel_flags(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_get_channel_flags(this_ptr);
-               return nativeResponseValue;
-       }
-       // void OpenChannel_set_channel_flags(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint8_t val);
-       export function OpenChannel_set_channel_flags(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_set_channel_flags(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKChannelTypeFeatures OpenChannel_get_channel_type(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
-       export function OpenChannel_get_channel_type(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_get_channel_type(this_ptr);
-               return nativeResponseValue;
-       }
-       // void OpenChannel_set_channel_type(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKChannelTypeFeatures val);
-       export function OpenChannel_set_channel_type(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_set_channel_type(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t OpenChannel_clone_ptr(LDKOpenChannel *NONNULL_PTR arg);
-       export function OpenChannel_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.OpenChannel_clone(orig);
-               return nativeResponseValue;
-       }
-       // void AcceptChannel_free(struct LDKAcceptChannel this_obj);
-       export function AcceptChannel_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_free(this_obj);
-               // 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 {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_get_temporary_channel_id(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void AcceptChannel_set_temporary_channel_id(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function AcceptChannel_set_temporary_channel_id(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_set_temporary_channel_id(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // uint64_t AcceptChannel_get_dust_limit_satoshis(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
-       export function AcceptChannel_get_dust_limit_satoshis(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_get_dust_limit_satoshis(this_ptr);
-               return nativeResponseValue;
-       }
-       // void AcceptChannel_set_dust_limit_satoshis(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
-       export function AcceptChannel_set_dust_limit_satoshis(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_set_dust_limit_satoshis(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t AcceptChannel_get_max_htlc_value_in_flight_msat(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
-       export function AcceptChannel_get_max_htlc_value_in_flight_msat(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_get_max_htlc_value_in_flight_msat(this_ptr);
-               return nativeResponseValue;
-       }
-       // void AcceptChannel_set_max_htlc_value_in_flight_msat(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
-       export function AcceptChannel_set_max_htlc_value_in_flight_msat(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_set_max_htlc_value_in_flight_msat(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t AcceptChannel_get_channel_reserve_satoshis(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
-       export function AcceptChannel_get_channel_reserve_satoshis(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_get_channel_reserve_satoshis(this_ptr);
-               return nativeResponseValue;
-       }
-       // void AcceptChannel_set_channel_reserve_satoshis(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
-       export function AcceptChannel_set_channel_reserve_satoshis(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_set_channel_reserve_satoshis(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t AcceptChannel_get_htlc_minimum_msat(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
-       export function AcceptChannel_get_htlc_minimum_msat(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_get_htlc_minimum_msat(this_ptr);
-               return nativeResponseValue;
-       }
-       // void AcceptChannel_set_htlc_minimum_msat(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
-       export function AcceptChannel_set_htlc_minimum_msat(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_set_htlc_minimum_msat(this_ptr, val);
-               // debug statements here
-       }
-       // uint32_t AcceptChannel_get_minimum_depth(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
-       export function AcceptChannel_get_minimum_depth(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_get_minimum_depth(this_ptr);
-               return nativeResponseValue;
-       }
-       // void AcceptChannel_set_minimum_depth(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint32_t val);
-       export function AcceptChannel_set_minimum_depth(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_set_minimum_depth(this_ptr, val);
-               // debug statements here
-       }
-       // uint16_t AcceptChannel_get_to_self_delay(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
-       export function AcceptChannel_get_to_self_delay(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_get_to_self_delay(this_ptr);
-               return nativeResponseValue;
-       }
-       // void AcceptChannel_set_to_self_delay(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint16_t val);
-       export function AcceptChannel_set_to_self_delay(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_set_to_self_delay(this_ptr, val);
-               // debug statements here
-       }
-       // uint16_t AcceptChannel_get_max_accepted_htlcs(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
-       export function AcceptChannel_get_max_accepted_htlcs(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_get_max_accepted_htlcs(this_ptr);
-               return nativeResponseValue;
-       }
-       // void AcceptChannel_set_max_accepted_htlcs(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint16_t val);
-       export function AcceptChannel_set_max_accepted_htlcs(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_set_max_accepted_htlcs(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKPublicKey AcceptChannel_get_funding_pubkey(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
-       export function AcceptChannel_get_funding_pubkey(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_get_funding_pubkey(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void AcceptChannel_set_funding_pubkey(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function AcceptChannel_set_funding_pubkey(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_set_funding_pubkey(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKPublicKey AcceptChannel_get_revocation_basepoint(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
-       export function AcceptChannel_get_revocation_basepoint(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_get_revocation_basepoint(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void AcceptChannel_set_revocation_basepoint(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function AcceptChannel_set_revocation_basepoint(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_set_revocation_basepoint(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKPublicKey AcceptChannel_get_payment_point(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
-       export function AcceptChannel_get_payment_point(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_get_payment_point(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void AcceptChannel_set_payment_point(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function AcceptChannel_set_payment_point(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_set_payment_point(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKPublicKey AcceptChannel_get_delayed_payment_basepoint(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
-       export function AcceptChannel_get_delayed_payment_basepoint(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_get_delayed_payment_basepoint(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void AcceptChannel_set_delayed_payment_basepoint(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function AcceptChannel_set_delayed_payment_basepoint(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_set_delayed_payment_basepoint(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKPublicKey AcceptChannel_get_htlc_basepoint(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
-       export function AcceptChannel_get_htlc_basepoint(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_get_htlc_basepoint(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void AcceptChannel_set_htlc_basepoint(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function AcceptChannel_set_htlc_basepoint(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_set_htlc_basepoint(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKPublicKey AcceptChannel_get_first_per_commitment_point(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
-       export function AcceptChannel_get_first_per_commitment_point(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_get_first_per_commitment_point(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void AcceptChannel_set_first_per_commitment_point(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function AcceptChannel_set_first_per_commitment_point(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_set_first_per_commitment_point(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // uint64_t AcceptChannel_clone_ptr(LDKAcceptChannel *NONNULL_PTR arg);
-       export function AcceptChannel_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_obj);
-       export function FundingCreated_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FundingCreated_free(this_obj);
-               // debug statements here
-       }
-       // 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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FundingCreated_get_temporary_channel_id(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void FundingCreated_set_temporary_channel_id(struct LDKFundingCreated *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function FundingCreated_set_temporary_channel_id(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FundingCreated_set_temporary_channel_id(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // const uint8_t (*FundingCreated_get_funding_txid(const struct LDKFundingCreated *NONNULL_PTR this_ptr))[32];
-       export function FundingCreated_get_funding_txid(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FundingCreated_get_funding_txid(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void FundingCreated_set_funding_txid(struct LDKFundingCreated *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function FundingCreated_set_funding_txid(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FundingCreated_set_funding_txid(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // uint16_t FundingCreated_get_funding_output_index(const struct LDKFundingCreated *NONNULL_PTR this_ptr);
-       export function FundingCreated_get_funding_output_index(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FundingCreated_get_funding_output_index(this_ptr);
-               return nativeResponseValue;
-       }
-       // void FundingCreated_set_funding_output_index(struct LDKFundingCreated *NONNULL_PTR this_ptr, uint16_t val);
-       export function FundingCreated_set_funding_output_index(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FundingCreated_set_funding_output_index(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKSignature FundingCreated_get_signature(const struct LDKFundingCreated *NONNULL_PTR this_ptr);
-       export function FundingCreated_get_signature(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FundingCreated_get_signature(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void FundingCreated_set_signature(struct LDKFundingCreated *NONNULL_PTR this_ptr, struct LDKSignature val);
-       export function FundingCreated_set_signature(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FundingCreated_set_signature(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // 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);
-       export function FundingCreated_new(temporary_channel_id_arg: Uint8Array, funding_txid_arg: Uint8Array, funding_output_index_arg: number, signature_arg: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FundingCreated_new(encodeArray(temporary_channel_id_arg), encodeArray(funding_txid_arg), funding_output_index_arg, encodeArray(signature_arg));
-               return nativeResponseValue;
-       }
-       // uint64_t FundingCreated_clone_ptr(LDKFundingCreated *NONNULL_PTR arg);
-       export function FundingCreated_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FundingCreated_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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;
-       }
-       // void FundingSigned_free(struct LDKFundingSigned this_obj);
-       export function FundingSigned_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FundingSigned_free(this_obj);
-               // 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 {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FundingSigned_get_channel_id(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void FundingSigned_set_channel_id(struct LDKFundingSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function FundingSigned_set_channel_id(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FundingSigned_set_channel_id(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKSignature FundingSigned_get_signature(const struct LDKFundingSigned *NONNULL_PTR this_ptr);
-       export function FundingSigned_get_signature(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FundingSigned_get_signature(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void FundingSigned_set_signature(struct LDKFundingSigned *NONNULL_PTR this_ptr, struct LDKSignature val);
-       export function FundingSigned_set_signature(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FundingSigned_set_signature(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKFundingSigned FundingSigned_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKSignature signature_arg);
-       export function FundingSigned_new(channel_id_arg: Uint8Array, signature_arg: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FundingSigned_new(encodeArray(channel_id_arg), encodeArray(signature_arg));
-               return nativeResponseValue;
-       }
-       // uint64_t FundingSigned_clone_ptr(LDKFundingSigned *NONNULL_PTR arg);
-       export function FundingSigned_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FundingSigned_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.FundingSigned_clone(orig);
-               return nativeResponseValue;
-       }
-       // void FundingLocked_free(struct LDKFundingLocked this_obj);
-       export function FundingLocked_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FundingLocked_free(this_obj);
-               // 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 {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FundingLocked_get_channel_id(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void FundingLocked_set_channel_id(struct LDKFundingLocked *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function FundingLocked_set_channel_id(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FundingLocked_set_channel_id(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKPublicKey FundingLocked_get_next_per_commitment_point(const struct LDKFundingLocked *NONNULL_PTR this_ptr);
-       export function FundingLocked_get_next_per_commitment_point(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FundingLocked_get_next_per_commitment_point(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void FundingLocked_set_next_per_commitment_point(struct LDKFundingLocked *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function FundingLocked_set_next_per_commitment_point(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FundingLocked_set_next_per_commitment_point(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKFundingLocked FundingLocked_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKPublicKey next_per_commitment_point_arg);
-       export function FundingLocked_new(channel_id_arg: Uint8Array, next_per_commitment_point_arg: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FundingLocked_new(encodeArray(channel_id_arg), encodeArray(next_per_commitment_point_arg));
-               return nativeResponseValue;
-       }
-       // uint64_t FundingLocked_clone_ptr(LDKFundingLocked *NONNULL_PTR arg);
-       export function FundingLocked_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FundingLocked_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.FundingLocked_clone(orig);
-               return nativeResponseValue;
-       }
-       // void Shutdown_free(struct LDKShutdown this_obj);
-       export function Shutdown_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Shutdown_free(this_obj);
-               // 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 {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Shutdown_get_channel_id(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void Shutdown_set_channel_id(struct LDKShutdown *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function Shutdown_set_channel_id(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Shutdown_set_channel_id(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKu8slice Shutdown_get_scriptpubkey(const struct LDKShutdown *NONNULL_PTR this_ptr);
-       export function Shutdown_get_scriptpubkey(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Shutdown_get_scriptpubkey(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void Shutdown_set_scriptpubkey(struct LDKShutdown *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
-       export function Shutdown_set_scriptpubkey(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Shutdown_set_scriptpubkey(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKShutdown Shutdown_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKCVec_u8Z scriptpubkey_arg);
-       export function Shutdown_new(channel_id_arg: Uint8Array, scriptpubkey_arg: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Shutdown_new(encodeArray(channel_id_arg), encodeArray(scriptpubkey_arg));
-               return nativeResponseValue;
-       }
-       // uint64_t Shutdown_clone_ptr(LDKShutdown *NONNULL_PTR arg);
-       export function Shutdown_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Shutdown_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.Shutdown_clone(orig);
-               return nativeResponseValue;
-       }
-       // void ClosingSignedFeeRange_free(struct LDKClosingSignedFeeRange this_obj);
-       export function ClosingSignedFeeRange_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingSignedFeeRange_free(this_obj);
-               // debug statements here
-       }
-       // uint64_t ClosingSignedFeeRange_get_min_fee_satoshis(const struct LDKClosingSignedFeeRange *NONNULL_PTR this_ptr);
-       export function ClosingSignedFeeRange_get_min_fee_satoshis(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingSignedFeeRange_get_min_fee_satoshis(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ClosingSignedFeeRange_set_min_fee_satoshis(struct LDKClosingSignedFeeRange *NONNULL_PTR this_ptr, uint64_t val);
-       export function ClosingSignedFeeRange_set_min_fee_satoshis(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingSignedFeeRange_set_min_fee_satoshis(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t ClosingSignedFeeRange_get_max_fee_satoshis(const struct LDKClosingSignedFeeRange *NONNULL_PTR this_ptr);
-       export function ClosingSignedFeeRange_get_max_fee_satoshis(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingSignedFeeRange_get_max_fee_satoshis(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ClosingSignedFeeRange_set_max_fee_satoshis(struct LDKClosingSignedFeeRange *NONNULL_PTR this_ptr, uint64_t val);
-       export function ClosingSignedFeeRange_set_max_fee_satoshis(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingSignedFeeRange_set_max_fee_satoshis(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKClosingSignedFeeRange ClosingSignedFeeRange_new(uint64_t min_fee_satoshis_arg, uint64_t max_fee_satoshis_arg);
-       export function ClosingSignedFeeRange_new(min_fee_satoshis_arg: number, max_fee_satoshis_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingSignedFeeRange_new(min_fee_satoshis_arg, max_fee_satoshis_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t ClosingSignedFeeRange_clone_ptr(LDKClosingSignedFeeRange *NONNULL_PTR arg);
-       export function ClosingSignedFeeRange_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingSignedFeeRange_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKClosingSignedFeeRange ClosingSignedFeeRange_clone(const struct LDKClosingSignedFeeRange *NONNULL_PTR orig);
-       export function ClosingSignedFeeRange_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingSignedFeeRange_clone(orig);
-               return nativeResponseValue;
-       }
-       // void ClosingSigned_free(struct LDKClosingSigned this_obj);
-       export function ClosingSigned_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingSigned_free(this_obj);
-               // 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 {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingSigned_get_channel_id(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void ClosingSigned_set_channel_id(struct LDKClosingSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function ClosingSigned_set_channel_id(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingSigned_set_channel_id(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // uint64_t ClosingSigned_get_fee_satoshis(const struct LDKClosingSigned *NONNULL_PTR this_ptr);
-       export function ClosingSigned_get_fee_satoshis(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingSigned_get_fee_satoshis(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ClosingSigned_set_fee_satoshis(struct LDKClosingSigned *NONNULL_PTR this_ptr, uint64_t val);
-       export function ClosingSigned_set_fee_satoshis(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingSigned_set_fee_satoshis(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKSignature ClosingSigned_get_signature(const struct LDKClosingSigned *NONNULL_PTR this_ptr);
-       export function ClosingSigned_get_signature(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingSigned_get_signature(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void ClosingSigned_set_signature(struct LDKClosingSigned *NONNULL_PTR this_ptr, struct LDKSignature val);
-       export function ClosingSigned_set_signature(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingSigned_set_signature(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKClosingSignedFeeRange ClosingSigned_get_fee_range(const struct LDKClosingSigned *NONNULL_PTR this_ptr);
-       export function ClosingSigned_get_fee_range(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingSigned_get_fee_range(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ClosingSigned_set_fee_range(struct LDKClosingSigned *NONNULL_PTR this_ptr, struct LDKClosingSignedFeeRange val);
-       export function ClosingSigned_set_fee_range(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingSigned_set_fee_range(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKClosingSigned ClosingSigned_new(struct LDKThirtyTwoBytes channel_id_arg, uint64_t fee_satoshis_arg, struct LDKSignature signature_arg, struct LDKClosingSignedFeeRange fee_range_arg);
-       export function ClosingSigned_new(channel_id_arg: Uint8Array, fee_satoshis_arg: number, signature_arg: Uint8Array, fee_range_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingSigned_new(encodeArray(channel_id_arg), fee_satoshis_arg, encodeArray(signature_arg), fee_range_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t ClosingSigned_clone_ptr(LDKClosingSigned *NONNULL_PTR arg);
-       export function ClosingSigned_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingSigned_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.ClosingSigned_clone(orig);
-               return nativeResponseValue;
-       }
-       // void UpdateAddHTLC_free(struct LDKUpdateAddHTLC this_obj);
-       export function UpdateAddHTLC_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateAddHTLC_free(this_obj);
-               // 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 {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateAddHTLC_get_channel_id(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void UpdateAddHTLC_set_channel_id(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function UpdateAddHTLC_set_channel_id(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateAddHTLC_set_channel_id(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // uint64_t UpdateAddHTLC_get_htlc_id(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr);
-       export function UpdateAddHTLC_get_htlc_id(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateAddHTLC_get_htlc_id(this_ptr);
-               return nativeResponseValue;
-       }
-       // void UpdateAddHTLC_set_htlc_id(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint64_t val);
-       export function UpdateAddHTLC_set_htlc_id(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateAddHTLC_set_htlc_id(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t UpdateAddHTLC_get_amount_msat(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr);
-       export function UpdateAddHTLC_get_amount_msat(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateAddHTLC_get_amount_msat(this_ptr);
-               return nativeResponseValue;
-       }
-       // void UpdateAddHTLC_set_amount_msat(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint64_t val);
-       export function UpdateAddHTLC_set_amount_msat(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateAddHTLC_set_amount_msat(this_ptr, val);
-               // debug statements here
-       }
-       // const uint8_t (*UpdateAddHTLC_get_payment_hash(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr))[32];
-       export function UpdateAddHTLC_get_payment_hash(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateAddHTLC_get_payment_hash(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void UpdateAddHTLC_set_payment_hash(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function UpdateAddHTLC_set_payment_hash(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateAddHTLC_set_payment_hash(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // uint32_t UpdateAddHTLC_get_cltv_expiry(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr);
-       export function UpdateAddHTLC_get_cltv_expiry(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateAddHTLC_get_cltv_expiry(this_ptr);
-               return nativeResponseValue;
-       }
-       // void UpdateAddHTLC_set_cltv_expiry(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint32_t val);
-       export function UpdateAddHTLC_set_cltv_expiry(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateAddHTLC_set_cltv_expiry(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t UpdateAddHTLC_clone_ptr(LDKUpdateAddHTLC *NONNULL_PTR arg);
-       export function UpdateAddHTLC_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateAddHTLC_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.UpdateAddHTLC_clone(orig);
-               return nativeResponseValue;
-       }
-       // void UpdateFulfillHTLC_free(struct LDKUpdateFulfillHTLC this_obj);
-       export function UpdateFulfillHTLC_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFulfillHTLC_free(this_obj);
-               // 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 {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFulfillHTLC_get_channel_id(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void UpdateFulfillHTLC_set_channel_id(struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function UpdateFulfillHTLC_set_channel_id(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFulfillHTLC_set_channel_id(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // uint64_t UpdateFulfillHTLC_get_htlc_id(const struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr);
-       export function UpdateFulfillHTLC_get_htlc_id(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFulfillHTLC_get_htlc_id(this_ptr);
-               return nativeResponseValue;
-       }
-       // void UpdateFulfillHTLC_set_htlc_id(struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr, uint64_t val);
-       export function UpdateFulfillHTLC_set_htlc_id(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFulfillHTLC_set_htlc_id(this_ptr, val);
-               // debug statements here
-       }
-       // const uint8_t (*UpdateFulfillHTLC_get_payment_preimage(const struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr))[32];
-       export function UpdateFulfillHTLC_get_payment_preimage(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFulfillHTLC_get_payment_preimage(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void UpdateFulfillHTLC_set_payment_preimage(struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function UpdateFulfillHTLC_set_payment_preimage(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFulfillHTLC_set_payment_preimage(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKUpdateFulfillHTLC UpdateFulfillHTLC_new(struct LDKThirtyTwoBytes channel_id_arg, uint64_t htlc_id_arg, struct LDKThirtyTwoBytes payment_preimage_arg);
-       export function UpdateFulfillHTLC_new(channel_id_arg: Uint8Array, htlc_id_arg: number, payment_preimage_arg: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFulfillHTLC_new(encodeArray(channel_id_arg), htlc_id_arg, encodeArray(payment_preimage_arg));
-               return nativeResponseValue;
-       }
-       // uint64_t UpdateFulfillHTLC_clone_ptr(LDKUpdateFulfillHTLC *NONNULL_PTR arg);
-       export function UpdateFulfillHTLC_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFulfillHTLC_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.UpdateFulfillHTLC_clone(orig);
-               return nativeResponseValue;
-       }
-       // void UpdateFailHTLC_free(struct LDKUpdateFailHTLC this_obj);
-       export function UpdateFailHTLC_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFailHTLC_free(this_obj);
-               // 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 {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFailHTLC_get_channel_id(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void UpdateFailHTLC_set_channel_id(struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function UpdateFailHTLC_set_channel_id(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFailHTLC_set_channel_id(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // uint64_t UpdateFailHTLC_get_htlc_id(const struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr);
-       export function UpdateFailHTLC_get_htlc_id(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFailHTLC_get_htlc_id(this_ptr);
-               return nativeResponseValue;
-       }
-       // void UpdateFailHTLC_set_htlc_id(struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr, uint64_t val);
-       export function UpdateFailHTLC_set_htlc_id(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFailHTLC_set_htlc_id(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t UpdateFailHTLC_clone_ptr(LDKUpdateFailHTLC *NONNULL_PTR arg);
-       export function UpdateFailHTLC_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFailHTLC_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.UpdateFailHTLC_clone(orig);
-               return nativeResponseValue;
-       }
-       // void UpdateFailMalformedHTLC_free(struct LDKUpdateFailMalformedHTLC this_obj);
-       export function UpdateFailMalformedHTLC_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFailMalformedHTLC_free(this_obj);
-               // 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 {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFailMalformedHTLC_get_channel_id(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void UpdateFailMalformedHTLC_set_channel_id(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function UpdateFailMalformedHTLC_set_channel_id(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFailMalformedHTLC_set_channel_id(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // uint64_t UpdateFailMalformedHTLC_get_htlc_id(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr);
-       export function UpdateFailMalformedHTLC_get_htlc_id(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFailMalformedHTLC_get_htlc_id(this_ptr);
-               return nativeResponseValue;
-       }
-       // void UpdateFailMalformedHTLC_set_htlc_id(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, uint64_t val);
-       export function UpdateFailMalformedHTLC_set_htlc_id(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFailMalformedHTLC_set_htlc_id(this_ptr, val);
-               // debug statements here
-       }
-       // uint16_t UpdateFailMalformedHTLC_get_failure_code(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr);
-       export function UpdateFailMalformedHTLC_get_failure_code(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFailMalformedHTLC_get_failure_code(this_ptr);
-               return nativeResponseValue;
-       }
-       // void UpdateFailMalformedHTLC_set_failure_code(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, uint16_t val);
-       export function UpdateFailMalformedHTLC_set_failure_code(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFailMalformedHTLC_set_failure_code(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t UpdateFailMalformedHTLC_clone_ptr(LDKUpdateFailMalformedHTLC *NONNULL_PTR arg);
-       export function UpdateFailMalformedHTLC_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFailMalformedHTLC_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.UpdateFailMalformedHTLC_clone(orig);
-               return nativeResponseValue;
-       }
-       // void CommitmentSigned_free(struct LDKCommitmentSigned this_obj);
-       export function CommitmentSigned_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentSigned_free(this_obj);
-               // 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 {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentSigned_get_channel_id(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void CommitmentSigned_set_channel_id(struct LDKCommitmentSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function CommitmentSigned_set_channel_id(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentSigned_set_channel_id(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKSignature CommitmentSigned_get_signature(const struct LDKCommitmentSigned *NONNULL_PTR this_ptr);
-       export function CommitmentSigned_get_signature(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentSigned_get_signature(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void CommitmentSigned_set_signature(struct LDKCommitmentSigned *NONNULL_PTR this_ptr, struct LDKSignature val);
-       export function CommitmentSigned_set_signature(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentSigned_set_signature(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // void CommitmentSigned_set_htlc_signatures(struct LDKCommitmentSigned *NONNULL_PTR this_ptr, struct LDKCVec_SignatureZ val);
-       export function CommitmentSigned_set_htlc_signatures(this_ptr: number, val: Uint8Array[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentSigned_set_htlc_signatures(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKCommitmentSigned CommitmentSigned_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKSignature signature_arg, struct LDKCVec_SignatureZ htlc_signatures_arg);
-       export function CommitmentSigned_new(channel_id_arg: Uint8Array, signature_arg: Uint8Array, htlc_signatures_arg: Uint8Array[]): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentSigned_new(encodeArray(channel_id_arg), encodeArray(signature_arg), htlc_signatures_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t CommitmentSigned_clone_ptr(LDKCommitmentSigned *NONNULL_PTR arg);
-       export function CommitmentSigned_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentSigned_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.CommitmentSigned_clone(orig);
-               return nativeResponseValue;
-       }
-       // void RevokeAndACK_free(struct LDKRevokeAndACK this_obj);
-       export function RevokeAndACK_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RevokeAndACK_free(this_obj);
-               // 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 {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RevokeAndACK_get_channel_id(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void RevokeAndACK_set_channel_id(struct LDKRevokeAndACK *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function RevokeAndACK_set_channel_id(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RevokeAndACK_set_channel_id(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // const uint8_t (*RevokeAndACK_get_per_commitment_secret(const struct LDKRevokeAndACK *NONNULL_PTR this_ptr))[32];
-       export function RevokeAndACK_get_per_commitment_secret(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RevokeAndACK_get_per_commitment_secret(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void RevokeAndACK_set_per_commitment_secret(struct LDKRevokeAndACK *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function RevokeAndACK_set_per_commitment_secret(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RevokeAndACK_set_per_commitment_secret(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKPublicKey RevokeAndACK_get_next_per_commitment_point(const struct LDKRevokeAndACK *NONNULL_PTR this_ptr);
-       export function RevokeAndACK_get_next_per_commitment_point(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RevokeAndACK_get_next_per_commitment_point(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void RevokeAndACK_set_next_per_commitment_point(struct LDKRevokeAndACK *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function RevokeAndACK_set_next_per_commitment_point(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RevokeAndACK_set_next_per_commitment_point(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // 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);
-       export function RevokeAndACK_new(channel_id_arg: Uint8Array, per_commitment_secret_arg: Uint8Array, next_per_commitment_point_arg: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RevokeAndACK_new(encodeArray(channel_id_arg), encodeArray(per_commitment_secret_arg), encodeArray(next_per_commitment_point_arg));
-               return nativeResponseValue;
-       }
-       // uint64_t RevokeAndACK_clone_ptr(LDKRevokeAndACK *NONNULL_PTR arg);
-       export function RevokeAndACK_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RevokeAndACK_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.RevokeAndACK_clone(orig);
-               return nativeResponseValue;
-       }
-       // void UpdateFee_free(struct LDKUpdateFee this_obj);
-       export function UpdateFee_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFee_free(this_obj);
-               // 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 {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFee_get_channel_id(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void UpdateFee_set_channel_id(struct LDKUpdateFee *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function UpdateFee_set_channel_id(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFee_set_channel_id(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // uint32_t UpdateFee_get_feerate_per_kw(const struct LDKUpdateFee *NONNULL_PTR this_ptr);
-       export function UpdateFee_get_feerate_per_kw(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFee_get_feerate_per_kw(this_ptr);
-               return nativeResponseValue;
-       }
-       // void UpdateFee_set_feerate_per_kw(struct LDKUpdateFee *NONNULL_PTR this_ptr, uint32_t val);
-       export function UpdateFee_set_feerate_per_kw(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFee_set_feerate_per_kw(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKUpdateFee UpdateFee_new(struct LDKThirtyTwoBytes channel_id_arg, uint32_t feerate_per_kw_arg);
-       export function UpdateFee_new(channel_id_arg: Uint8Array, feerate_per_kw_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFee_new(encodeArray(channel_id_arg), feerate_per_kw_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t UpdateFee_clone_ptr(LDKUpdateFee *NONNULL_PTR arg);
-       export function UpdateFee_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFee_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.UpdateFee_clone(orig);
-               return nativeResponseValue;
-       }
-       // void DataLossProtect_free(struct LDKDataLossProtect this_obj);
-       export function DataLossProtect_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DataLossProtect_free(this_obj);
-               // 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 {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DataLossProtect_get_your_last_per_commitment_secret(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void DataLossProtect_set_your_last_per_commitment_secret(struct LDKDataLossProtect *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function DataLossProtect_set_your_last_per_commitment_secret(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DataLossProtect_set_your_last_per_commitment_secret(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKPublicKey DataLossProtect_get_my_current_per_commitment_point(const struct LDKDataLossProtect *NONNULL_PTR this_ptr);
-       export function DataLossProtect_get_my_current_per_commitment_point(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DataLossProtect_get_my_current_per_commitment_point(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void DataLossProtect_set_my_current_per_commitment_point(struct LDKDataLossProtect *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function DataLossProtect_set_my_current_per_commitment_point(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DataLossProtect_set_my_current_per_commitment_point(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKDataLossProtect DataLossProtect_new(struct LDKThirtyTwoBytes your_last_per_commitment_secret_arg, struct LDKPublicKey my_current_per_commitment_point_arg);
-       export function DataLossProtect_new(your_last_per_commitment_secret_arg: Uint8Array, my_current_per_commitment_point_arg: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DataLossProtect_new(encodeArray(your_last_per_commitment_secret_arg), encodeArray(my_current_per_commitment_point_arg));
-               return nativeResponseValue;
-       }
-       // uint64_t DataLossProtect_clone_ptr(LDKDataLossProtect *NONNULL_PTR arg);
-       export function DataLossProtect_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DataLossProtect_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.DataLossProtect_clone(orig);
-               return nativeResponseValue;
-       }
-       // void ChannelReestablish_free(struct LDKChannelReestablish this_obj);
-       export function ChannelReestablish_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelReestablish_free(this_obj);
-               // 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 {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelReestablish_get_channel_id(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void ChannelReestablish_set_channel_id(struct LDKChannelReestablish *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function ChannelReestablish_set_channel_id(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelReestablish_set_channel_id(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // uint64_t ChannelReestablish_get_next_local_commitment_number(const struct LDKChannelReestablish *NONNULL_PTR this_ptr);
-       export function ChannelReestablish_get_next_local_commitment_number(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelReestablish_get_next_local_commitment_number(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelReestablish_set_next_local_commitment_number(struct LDKChannelReestablish *NONNULL_PTR this_ptr, uint64_t val);
-       export function ChannelReestablish_set_next_local_commitment_number(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelReestablish_set_next_local_commitment_number(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t ChannelReestablish_get_next_remote_commitment_number(const struct LDKChannelReestablish *NONNULL_PTR this_ptr);
-       export function ChannelReestablish_get_next_remote_commitment_number(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelReestablish_get_next_remote_commitment_number(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelReestablish_set_next_remote_commitment_number(struct LDKChannelReestablish *NONNULL_PTR this_ptr, uint64_t val);
-       export function ChannelReestablish_set_next_remote_commitment_number(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelReestablish_set_next_remote_commitment_number(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t ChannelReestablish_clone_ptr(LDKChannelReestablish *NONNULL_PTR arg);
-       export function ChannelReestablish_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelReestablish_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.ChannelReestablish_clone(orig);
-               return nativeResponseValue;
-       }
-       // void AnnouncementSignatures_free(struct LDKAnnouncementSignatures this_obj);
-       export function AnnouncementSignatures_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AnnouncementSignatures_free(this_obj);
-               // 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 {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AnnouncementSignatures_get_channel_id(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void AnnouncementSignatures_set_channel_id(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function AnnouncementSignatures_set_channel_id(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AnnouncementSignatures_set_channel_id(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // uint64_t AnnouncementSignatures_get_short_channel_id(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr);
-       export function AnnouncementSignatures_get_short_channel_id(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AnnouncementSignatures_get_short_channel_id(this_ptr);
-               return nativeResponseValue;
-       }
-       // void AnnouncementSignatures_set_short_channel_id(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, uint64_t val);
-       export function AnnouncementSignatures_set_short_channel_id(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AnnouncementSignatures_set_short_channel_id(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKSignature AnnouncementSignatures_get_node_signature(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr);
-       export function AnnouncementSignatures_get_node_signature(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AnnouncementSignatures_get_node_signature(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void AnnouncementSignatures_set_node_signature(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, struct LDKSignature val);
-       export function AnnouncementSignatures_set_node_signature(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AnnouncementSignatures_set_node_signature(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKSignature AnnouncementSignatures_get_bitcoin_signature(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr);
-       export function AnnouncementSignatures_get_bitcoin_signature(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AnnouncementSignatures_get_bitcoin_signature(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void AnnouncementSignatures_set_bitcoin_signature(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, struct LDKSignature val);
-       export function AnnouncementSignatures_set_bitcoin_signature(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AnnouncementSignatures_set_bitcoin_signature(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // 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);
-       export function AnnouncementSignatures_new(channel_id_arg: Uint8Array, short_channel_id_arg: number, node_signature_arg: Uint8Array, bitcoin_signature_arg: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AnnouncementSignatures_new(encodeArray(channel_id_arg), short_channel_id_arg, encodeArray(node_signature_arg), encodeArray(bitcoin_signature_arg));
-               return nativeResponseValue;
-       }
-       // uint64_t AnnouncementSignatures_clone_ptr(LDKAnnouncementSignatures *NONNULL_PTR arg);
-       export function AnnouncementSignatures_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AnnouncementSignatures_clone_ptr(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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetAddress_free(this_ptr);
-               // debug statements here
-       }
-       // uint64_t NetAddress_clone_ptr(LDKNetAddress *NONNULL_PTR arg);
-       export function NetAddress_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetAddress_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKNetAddress NetAddress_clone(const struct LDKNetAddress *NONNULL_PTR orig);
-       export function NetAddress_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetAddress_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKNetAddress NetAddress_ipv4(struct LDKFourBytes addr, uint16_t port);
-       export function NetAddress_ipv4(addr: Uint8Array, port: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetAddress_ipv4(encodeArray(addr), port);
-               return nativeResponseValue;
-       }
-       // struct LDKNetAddress NetAddress_ipv6(struct LDKSixteenBytes addr, uint16_t port);
-       export function NetAddress_ipv6(addr: Uint8Array, port: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetAddress_ipv6(encodeArray(addr), port);
-               return nativeResponseValue;
-       }
-       // struct LDKNetAddress NetAddress_onion_v2(struct LDKTwelveBytes a);
-       export function NetAddress_onion_v2(a: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetAddress_onion_v2(encodeArray(a));
-               return nativeResponseValue;
-       }
-       // struct LDKNetAddress NetAddress_onion_v3(struct LDKThirtyTwoBytes ed25519_pubkey, uint16_t checksum, uint8_t version, uint16_t port);
-       export function NetAddress_onion_v3(ed25519_pubkey: Uint8Array, checksum: number, version: number, port: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetAddress_onion_v3(encodeArray(ed25519_pubkey), checksum, version, port);
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z NetAddress_write(const struct LDKNetAddress *NONNULL_PTR obj);
-       export function NetAddress_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetAddress_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_NetAddressDecodeErrorZ NetAddress_read(struct LDKu8slice ser);
-       export function NetAddress_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetAddress_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // void UnsignedNodeAnnouncement_free(struct LDKUnsignedNodeAnnouncement this_obj);
-       export function UnsignedNodeAnnouncement_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedNodeAnnouncement_free(this_obj);
-               // debug statements here
-       }
-       // struct LDKNodeFeatures UnsignedNodeAnnouncement_get_features(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr);
-       export function UnsignedNodeAnnouncement_get_features(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedNodeAnnouncement_get_features(this_ptr);
-               return nativeResponseValue;
-       }
-       // void UnsignedNodeAnnouncement_set_features(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKNodeFeatures val);
-       export function UnsignedNodeAnnouncement_set_features(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedNodeAnnouncement_set_features(this_ptr, val);
-               // debug statements here
-       }
-       // uint32_t UnsignedNodeAnnouncement_get_timestamp(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr);
-       export function UnsignedNodeAnnouncement_get_timestamp(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedNodeAnnouncement_get_timestamp(this_ptr);
-               return nativeResponseValue;
-       }
-       // void UnsignedNodeAnnouncement_set_timestamp(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, uint32_t val);
-       export function UnsignedNodeAnnouncement_set_timestamp(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedNodeAnnouncement_set_timestamp(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKPublicKey UnsignedNodeAnnouncement_get_node_id(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr);
-       export function UnsignedNodeAnnouncement_get_node_id(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedNodeAnnouncement_get_node_id(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void UnsignedNodeAnnouncement_set_node_id(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function UnsignedNodeAnnouncement_set_node_id(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedNodeAnnouncement_set_node_id(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // const uint8_t (*UnsignedNodeAnnouncement_get_rgb(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr))[3];
-       export function UnsignedNodeAnnouncement_get_rgb(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedNodeAnnouncement_get_rgb(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void UnsignedNodeAnnouncement_set_rgb(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKThreeBytes val);
-       export function UnsignedNodeAnnouncement_set_rgb(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedNodeAnnouncement_set_rgb(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // const uint8_t (*UnsignedNodeAnnouncement_get_alias(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr))[32];
-       export function UnsignedNodeAnnouncement_get_alias(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedNodeAnnouncement_get_alias(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void UnsignedNodeAnnouncement_set_alias(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function UnsignedNodeAnnouncement_set_alias(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedNodeAnnouncement_set_alias(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // void UnsignedNodeAnnouncement_set_addresses(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKCVec_NetAddressZ val);
-       export function UnsignedNodeAnnouncement_set_addresses(this_ptr: number, val: number[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedNodeAnnouncement_set_addresses(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t UnsignedNodeAnnouncement_clone_ptr(LDKUnsignedNodeAnnouncement *NONNULL_PTR arg);
-       export function UnsignedNodeAnnouncement_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedNodeAnnouncement_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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_obj);
-       export function NodeAnnouncement_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeAnnouncement_free(this_obj);
-               // debug statements here
-       }
-       // struct LDKSignature NodeAnnouncement_get_signature(const struct LDKNodeAnnouncement *NONNULL_PTR this_ptr);
-       export function NodeAnnouncement_get_signature(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeAnnouncement_get_signature(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void NodeAnnouncement_set_signature(struct LDKNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
-       export function NodeAnnouncement_set_signature(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeAnnouncement_set_signature(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKUnsignedNodeAnnouncement NodeAnnouncement_get_contents(const struct LDKNodeAnnouncement *NONNULL_PTR this_ptr);
-       export function NodeAnnouncement_get_contents(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeAnnouncement_get_contents(this_ptr);
-               return nativeResponseValue;
-       }
-       // void NodeAnnouncement_set_contents(struct LDKNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKUnsignedNodeAnnouncement val);
-       export function NodeAnnouncement_set_contents(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeAnnouncement_set_contents(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKNodeAnnouncement NodeAnnouncement_new(struct LDKSignature signature_arg, struct LDKUnsignedNodeAnnouncement contents_arg);
-       export function NodeAnnouncement_new(signature_arg: Uint8Array, contents_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeAnnouncement_new(encodeArray(signature_arg), contents_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t NodeAnnouncement_clone_ptr(LDKNodeAnnouncement *NONNULL_PTR arg);
-       export function NodeAnnouncement_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeAnnouncement_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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;
-       }
-       // void UnsignedChannelAnnouncement_free(struct LDKUnsignedChannelAnnouncement this_obj);
-       export function UnsignedChannelAnnouncement_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelAnnouncement_free(this_obj);
-               // debug statements here
-       }
-       // struct LDKChannelFeatures UnsignedChannelAnnouncement_get_features(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
-       export function UnsignedChannelAnnouncement_get_features(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelAnnouncement_get_features(this_ptr);
-               return nativeResponseValue;
-       }
-       // void UnsignedChannelAnnouncement_set_features(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKChannelFeatures val);
-       export function UnsignedChannelAnnouncement_set_features(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelAnnouncement_set_features(this_ptr, val);
-               // debug statements here
-       }
-       // const uint8_t (*UnsignedChannelAnnouncement_get_chain_hash(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr))[32];
-       export function UnsignedChannelAnnouncement_get_chain_hash(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelAnnouncement_get_chain_hash(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void UnsignedChannelAnnouncement_set_chain_hash(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function UnsignedChannelAnnouncement_set_chain_hash(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelAnnouncement_set_chain_hash(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // uint64_t UnsignedChannelAnnouncement_get_short_channel_id(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
-       export function UnsignedChannelAnnouncement_get_short_channel_id(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelAnnouncement_get_short_channel_id(this_ptr);
-               return nativeResponseValue;
-       }
-       // void UnsignedChannelAnnouncement_set_short_channel_id(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, uint64_t val);
-       export function UnsignedChannelAnnouncement_set_short_channel_id(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelAnnouncement_set_short_channel_id(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKPublicKey UnsignedChannelAnnouncement_get_node_id_1(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
-       export function UnsignedChannelAnnouncement_get_node_id_1(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelAnnouncement_get_node_id_1(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void UnsignedChannelAnnouncement_set_node_id_1(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function UnsignedChannelAnnouncement_set_node_id_1(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelAnnouncement_set_node_id_1(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKPublicKey UnsignedChannelAnnouncement_get_node_id_2(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
-       export function UnsignedChannelAnnouncement_get_node_id_2(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelAnnouncement_get_node_id_2(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void UnsignedChannelAnnouncement_set_node_id_2(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function UnsignedChannelAnnouncement_set_node_id_2(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelAnnouncement_set_node_id_2(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKPublicKey UnsignedChannelAnnouncement_get_bitcoin_key_1(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
-       export function UnsignedChannelAnnouncement_get_bitcoin_key_1(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelAnnouncement_get_bitcoin_key_1(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void UnsignedChannelAnnouncement_set_bitcoin_key_1(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function UnsignedChannelAnnouncement_set_bitcoin_key_1(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelAnnouncement_set_bitcoin_key_1(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKPublicKey UnsignedChannelAnnouncement_get_bitcoin_key_2(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
-       export function UnsignedChannelAnnouncement_get_bitcoin_key_2(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelAnnouncement_get_bitcoin_key_2(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void UnsignedChannelAnnouncement_set_bitcoin_key_2(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function UnsignedChannelAnnouncement_set_bitcoin_key_2(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelAnnouncement_set_bitcoin_key_2(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // uint64_t UnsignedChannelAnnouncement_clone_ptr(LDKUnsignedChannelAnnouncement *NONNULL_PTR arg);
-       export function UnsignedChannelAnnouncement_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelAnnouncement_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.UnsignedChannelAnnouncement_clone(orig);
-               return nativeResponseValue;
-       }
-       // void ChannelAnnouncement_free(struct LDKChannelAnnouncement this_obj);
-       export function ChannelAnnouncement_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelAnnouncement_free(this_obj);
-               // 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 {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelAnnouncement_get_node_signature_1(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void ChannelAnnouncement_set_node_signature_1(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
-       export function ChannelAnnouncement_set_node_signature_1(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelAnnouncement_set_node_signature_1(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKSignature ChannelAnnouncement_get_node_signature_2(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
-       export function ChannelAnnouncement_get_node_signature_2(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelAnnouncement_get_node_signature_2(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void ChannelAnnouncement_set_node_signature_2(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
-       export function ChannelAnnouncement_set_node_signature_2(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelAnnouncement_set_node_signature_2(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKSignature ChannelAnnouncement_get_bitcoin_signature_1(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
-       export function ChannelAnnouncement_get_bitcoin_signature_1(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelAnnouncement_get_bitcoin_signature_1(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void ChannelAnnouncement_set_bitcoin_signature_1(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
-       export function ChannelAnnouncement_set_bitcoin_signature_1(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelAnnouncement_set_bitcoin_signature_1(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKSignature ChannelAnnouncement_get_bitcoin_signature_2(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
-       export function ChannelAnnouncement_get_bitcoin_signature_2(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelAnnouncement_get_bitcoin_signature_2(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void ChannelAnnouncement_set_bitcoin_signature_2(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
-       export function ChannelAnnouncement_set_bitcoin_signature_2(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelAnnouncement_set_bitcoin_signature_2(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKUnsignedChannelAnnouncement ChannelAnnouncement_get_contents(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
-       export function ChannelAnnouncement_get_contents(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelAnnouncement_get_contents(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelAnnouncement_set_contents(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKUnsignedChannelAnnouncement val);
-       export function ChannelAnnouncement_set_contents(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelAnnouncement_set_contents(this_ptr, val);
-               // debug statements here
-       }
-       // 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);
-       export function ChannelAnnouncement_new(node_signature_1_arg: Uint8Array, node_signature_2_arg: Uint8Array, bitcoin_signature_1_arg: Uint8Array, bitcoin_signature_2_arg: Uint8Array, contents_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               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;
-       }
-       // uint64_t ChannelAnnouncement_clone_ptr(LDKChannelAnnouncement *NONNULL_PTR arg);
-       export function ChannelAnnouncement_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelAnnouncement_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.ChannelAnnouncement_clone(orig);
-               return nativeResponseValue;
-       }
-       // void UnsignedChannelUpdate_free(struct LDKUnsignedChannelUpdate this_obj);
-       export function UnsignedChannelUpdate_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelUpdate_free(this_obj);
-               // 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 {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelUpdate_get_chain_hash(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void UnsignedChannelUpdate_set_chain_hash(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function UnsignedChannelUpdate_set_chain_hash(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelUpdate_set_chain_hash(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // uint64_t UnsignedChannelUpdate_get_short_channel_id(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
-       export function UnsignedChannelUpdate_get_short_channel_id(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelUpdate_get_short_channel_id(this_ptr);
-               return nativeResponseValue;
-       }
-       // void UnsignedChannelUpdate_set_short_channel_id(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint64_t val);
-       export function UnsignedChannelUpdate_set_short_channel_id(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelUpdate_set_short_channel_id(this_ptr, val);
-               // debug statements here
-       }
-       // uint32_t UnsignedChannelUpdate_get_timestamp(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
-       export function UnsignedChannelUpdate_get_timestamp(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelUpdate_get_timestamp(this_ptr);
-               return nativeResponseValue;
-       }
-       // void UnsignedChannelUpdate_set_timestamp(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val);
-       export function UnsignedChannelUpdate_set_timestamp(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelUpdate_set_timestamp(this_ptr, val);
-               // debug statements here
-       }
-       // uint8_t UnsignedChannelUpdate_get_flags(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
-       export function UnsignedChannelUpdate_get_flags(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelUpdate_get_flags(this_ptr);
-               return nativeResponseValue;
-       }
-       // void UnsignedChannelUpdate_set_flags(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint8_t val);
-       export function UnsignedChannelUpdate_set_flags(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelUpdate_set_flags(this_ptr, val);
-               // debug statements here
-       }
-       // uint16_t UnsignedChannelUpdate_get_cltv_expiry_delta(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
-       export function UnsignedChannelUpdate_get_cltv_expiry_delta(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelUpdate_get_cltv_expiry_delta(this_ptr);
-               return nativeResponseValue;
-       }
-       // void UnsignedChannelUpdate_set_cltv_expiry_delta(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint16_t val);
-       export function UnsignedChannelUpdate_set_cltv_expiry_delta(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelUpdate_set_cltv_expiry_delta(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t UnsignedChannelUpdate_get_htlc_minimum_msat(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
-       export function UnsignedChannelUpdate_get_htlc_minimum_msat(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelUpdate_get_htlc_minimum_msat(this_ptr);
-               return nativeResponseValue;
-       }
-       // void UnsignedChannelUpdate_set_htlc_minimum_msat(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint64_t val);
-       export function UnsignedChannelUpdate_set_htlc_minimum_msat(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelUpdate_set_htlc_minimum_msat(this_ptr, val);
-               // debug statements here
-       }
-       // uint32_t UnsignedChannelUpdate_get_fee_base_msat(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
-       export function UnsignedChannelUpdate_get_fee_base_msat(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelUpdate_get_fee_base_msat(this_ptr);
-               return nativeResponseValue;
-       }
-       // void UnsignedChannelUpdate_set_fee_base_msat(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val);
-       export function UnsignedChannelUpdate_set_fee_base_msat(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelUpdate_set_fee_base_msat(this_ptr, val);
-               // debug statements here
-       }
-       // uint32_t UnsignedChannelUpdate_get_fee_proportional_millionths(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
-       export function UnsignedChannelUpdate_get_fee_proportional_millionths(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelUpdate_get_fee_proportional_millionths(this_ptr);
-               return nativeResponseValue;
-       }
-       // void UnsignedChannelUpdate_set_fee_proportional_millionths(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val);
-       export function UnsignedChannelUpdate_set_fee_proportional_millionths(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelUpdate_set_fee_proportional_millionths(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t UnsignedChannelUpdate_clone_ptr(LDKUnsignedChannelUpdate *NONNULL_PTR arg);
-       export function UnsignedChannelUpdate_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelUpdate_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.UnsignedChannelUpdate_clone(orig);
-               return nativeResponseValue;
-       }
-       // void ChannelUpdate_free(struct LDKChannelUpdate this_obj);
-       export function ChannelUpdate_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelUpdate_free(this_obj);
-               // debug statements here
-       }
-       // struct LDKSignature ChannelUpdate_get_signature(const struct LDKChannelUpdate *NONNULL_PTR this_ptr);
-       export function ChannelUpdate_get_signature(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelUpdate_get_signature(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void ChannelUpdate_set_signature(struct LDKChannelUpdate *NONNULL_PTR this_ptr, struct LDKSignature val);
-       export function ChannelUpdate_set_signature(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelUpdate_set_signature(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKUnsignedChannelUpdate ChannelUpdate_get_contents(const struct LDKChannelUpdate *NONNULL_PTR this_ptr);
-       export function ChannelUpdate_get_contents(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelUpdate_get_contents(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelUpdate_set_contents(struct LDKChannelUpdate *NONNULL_PTR this_ptr, struct LDKUnsignedChannelUpdate val);
-       export function ChannelUpdate_set_contents(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelUpdate_set_contents(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKChannelUpdate ChannelUpdate_new(struct LDKSignature signature_arg, struct LDKUnsignedChannelUpdate contents_arg);
-       export function ChannelUpdate_new(signature_arg: Uint8Array, contents_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelUpdate_new(encodeArray(signature_arg), contents_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t ChannelUpdate_clone_ptr(LDKChannelUpdate *NONNULL_PTR arg);
-       export function ChannelUpdate_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelUpdate_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.ChannelUpdate_clone(orig);
-               return nativeResponseValue;
-       }
-       // void QueryChannelRange_free(struct LDKQueryChannelRange this_obj);
-       export function QueryChannelRange_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.QueryChannelRange_free(this_obj);
-               // 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 {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.QueryChannelRange_get_chain_hash(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void QueryChannelRange_set_chain_hash(struct LDKQueryChannelRange *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function QueryChannelRange_set_chain_hash(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.QueryChannelRange_set_chain_hash(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // uint32_t QueryChannelRange_get_first_blocknum(const struct LDKQueryChannelRange *NONNULL_PTR this_ptr);
-       export function QueryChannelRange_get_first_blocknum(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.QueryChannelRange_get_first_blocknum(this_ptr);
-               return nativeResponseValue;
-       }
-       // void QueryChannelRange_set_first_blocknum(struct LDKQueryChannelRange *NONNULL_PTR this_ptr, uint32_t val);
-       export function QueryChannelRange_set_first_blocknum(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.QueryChannelRange_set_first_blocknum(this_ptr, val);
-               // debug statements here
-       }
-       // uint32_t QueryChannelRange_get_number_of_blocks(const struct LDKQueryChannelRange *NONNULL_PTR this_ptr);
-       export function QueryChannelRange_get_number_of_blocks(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.QueryChannelRange_get_number_of_blocks(this_ptr);
-               return nativeResponseValue;
-       }
-       // void QueryChannelRange_set_number_of_blocks(struct LDKQueryChannelRange *NONNULL_PTR this_ptr, uint32_t val);
-       export function QueryChannelRange_set_number_of_blocks(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.QueryChannelRange_set_number_of_blocks(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKQueryChannelRange QueryChannelRange_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_blocknum_arg, uint32_t number_of_blocks_arg);
-       export function QueryChannelRange_new(chain_hash_arg: Uint8Array, first_blocknum_arg: number, number_of_blocks_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.QueryChannelRange_new(encodeArray(chain_hash_arg), first_blocknum_arg, number_of_blocks_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t QueryChannelRange_clone_ptr(LDKQueryChannelRange *NONNULL_PTR arg);
-       export function QueryChannelRange_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.QueryChannelRange_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.QueryChannelRange_clone(orig);
-               return nativeResponseValue;
-       }
-       // void ReplyChannelRange_free(struct LDKReplyChannelRange this_obj);
-       export function ReplyChannelRange_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ReplyChannelRange_free(this_obj);
-               // 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 {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ReplyChannelRange_get_chain_hash(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void ReplyChannelRange_set_chain_hash(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function ReplyChannelRange_set_chain_hash(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ReplyChannelRange_set_chain_hash(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // uint32_t ReplyChannelRange_get_first_blocknum(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr);
-       export function ReplyChannelRange_get_first_blocknum(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ReplyChannelRange_get_first_blocknum(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ReplyChannelRange_set_first_blocknum(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, uint32_t val);
-       export function ReplyChannelRange_set_first_blocknum(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ReplyChannelRange_set_first_blocknum(this_ptr, val);
-               // debug statements here
-       }
-       // uint32_t ReplyChannelRange_get_number_of_blocks(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr);
-       export function ReplyChannelRange_get_number_of_blocks(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ReplyChannelRange_get_number_of_blocks(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ReplyChannelRange_set_number_of_blocks(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, uint32_t val);
-       export function ReplyChannelRange_set_number_of_blocks(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ReplyChannelRange_set_number_of_blocks(this_ptr, val);
-               // debug statements here
-       }
-       // 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_sync_complete(this_ptr);
-               return nativeResponseValue;
-       }
-       // 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_sync_complete(this_ptr, val);
-               // debug statements here
-       }
-       // void ReplyChannelRange_set_short_channel_ids(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, struct LDKCVec_u64Z val);
-       export function ReplyChannelRange_set_short_channel_ids(this_ptr: number, val: number[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               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 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, sync_complete_arg, short_channel_ids_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t ReplyChannelRange_clone_ptr(LDKReplyChannelRange *NONNULL_PTR arg);
-       export function ReplyChannelRange_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ReplyChannelRange_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.ReplyChannelRange_clone(orig);
-               return nativeResponseValue;
-       }
-       // void QueryShortChannelIds_free(struct LDKQueryShortChannelIds this_obj);
-       export function QueryShortChannelIds_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.QueryShortChannelIds_free(this_obj);
-               // 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 {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.QueryShortChannelIds_get_chain_hash(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void QueryShortChannelIds_set_chain_hash(struct LDKQueryShortChannelIds *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function QueryShortChannelIds_set_chain_hash(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.QueryShortChannelIds_set_chain_hash(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // void QueryShortChannelIds_set_short_channel_ids(struct LDKQueryShortChannelIds *NONNULL_PTR this_ptr, struct LDKCVec_u64Z val);
-       export function QueryShortChannelIds_set_short_channel_ids(this_ptr: number, val: number[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.QueryShortChannelIds_set_short_channel_ids(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKQueryShortChannelIds QueryShortChannelIds_new(struct LDKThirtyTwoBytes chain_hash_arg, struct LDKCVec_u64Z short_channel_ids_arg);
-       export function QueryShortChannelIds_new(chain_hash_arg: Uint8Array, short_channel_ids_arg: number[]): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.QueryShortChannelIds_new(encodeArray(chain_hash_arg), short_channel_ids_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t QueryShortChannelIds_clone_ptr(LDKQueryShortChannelIds *NONNULL_PTR arg);
-       export function QueryShortChannelIds_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.QueryShortChannelIds_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.QueryShortChannelIds_clone(orig);
-               return nativeResponseValue;
-       }
-       // void ReplyShortChannelIdsEnd_free(struct LDKReplyShortChannelIdsEnd this_obj);
-       export function ReplyShortChannelIdsEnd_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ReplyShortChannelIdsEnd_free(this_obj);
-               // 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 {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ReplyShortChannelIdsEnd_get_chain_hash(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void ReplyShortChannelIdsEnd_set_chain_hash(struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function ReplyShortChannelIdsEnd_set_chain_hash(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ReplyShortChannelIdsEnd_set_chain_hash(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // bool ReplyShortChannelIdsEnd_get_full_information(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr);
-       export function ReplyShortChannelIdsEnd_get_full_information(this_ptr: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ReplyShortChannelIdsEnd_get_full_information(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ReplyShortChannelIdsEnd_set_full_information(struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr, bool val);
-       export function ReplyShortChannelIdsEnd_set_full_information(this_ptr: number, val: boolean): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ReplyShortChannelIdsEnd_set_full_information(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKReplyShortChannelIdsEnd ReplyShortChannelIdsEnd_new(struct LDKThirtyTwoBytes chain_hash_arg, bool full_information_arg);
-       export function ReplyShortChannelIdsEnd_new(chain_hash_arg: Uint8Array, full_information_arg: boolean): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ReplyShortChannelIdsEnd_new(encodeArray(chain_hash_arg), full_information_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t ReplyShortChannelIdsEnd_clone_ptr(LDKReplyShortChannelIdsEnd *NONNULL_PTR arg);
-       export function ReplyShortChannelIdsEnd_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ReplyShortChannelIdsEnd_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.ReplyShortChannelIdsEnd_clone(orig);
-               return nativeResponseValue;
-       }
-       // void GossipTimestampFilter_free(struct LDKGossipTimestampFilter this_obj);
-       export function GossipTimestampFilter_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.GossipTimestampFilter_free(this_obj);
-               // 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 {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.GossipTimestampFilter_get_chain_hash(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void GossipTimestampFilter_set_chain_hash(struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function GossipTimestampFilter_set_chain_hash(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.GossipTimestampFilter_set_chain_hash(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // uint32_t GossipTimestampFilter_get_first_timestamp(const struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr);
-       export function GossipTimestampFilter_get_first_timestamp(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.GossipTimestampFilter_get_first_timestamp(this_ptr);
-               return nativeResponseValue;
-       }
-       // void GossipTimestampFilter_set_first_timestamp(struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr, uint32_t val);
-       export function GossipTimestampFilter_set_first_timestamp(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.GossipTimestampFilter_set_first_timestamp(this_ptr, val);
-               // debug statements here
-       }
-       // uint32_t GossipTimestampFilter_get_timestamp_range(const struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr);
-       export function GossipTimestampFilter_get_timestamp_range(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.GossipTimestampFilter_get_timestamp_range(this_ptr);
-               return nativeResponseValue;
-       }
-       // void GossipTimestampFilter_set_timestamp_range(struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr, uint32_t val);
-       export function GossipTimestampFilter_set_timestamp_range(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.GossipTimestampFilter_set_timestamp_range(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKGossipTimestampFilter GossipTimestampFilter_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_timestamp_arg, uint32_t timestamp_range_arg);
-       export function GossipTimestampFilter_new(chain_hash_arg: Uint8Array, first_timestamp_arg: number, timestamp_range_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.GossipTimestampFilter_new(encodeArray(chain_hash_arg), first_timestamp_arg, timestamp_range_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t GossipTimestampFilter_clone_ptr(LDKGossipTimestampFilter *NONNULL_PTR arg);
-       export function GossipTimestampFilter_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.GossipTimestampFilter_clone_ptr(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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ErrorAction_free(this_ptr);
-               // debug statements here
-       }
-       // uint64_t ErrorAction_clone_ptr(LDKErrorAction *NONNULL_PTR arg);
-       export function ErrorAction_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ErrorAction_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKErrorAction ErrorAction_clone(const struct LDKErrorAction *NONNULL_PTR orig);
-       export function ErrorAction_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ErrorAction_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKErrorAction ErrorAction_disconnect_peer(struct LDKErrorMessage msg);
-       export function ErrorAction_disconnect_peer(msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ErrorAction_disconnect_peer(msg);
-               return nativeResponseValue;
-       }
-       // struct LDKErrorAction ErrorAction_ignore_error(void);
-       export function ErrorAction_ignore_error(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ErrorAction_ignore_error();
-               return nativeResponseValue;
-       }
-       // struct LDKErrorAction ErrorAction_ignore_and_log(enum LDKLevel a);
-       export function ErrorAction_ignore_and_log(a: Level): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ErrorAction_ignore_and_log(a);
-               return nativeResponseValue;
-       }
-       // struct LDKErrorAction ErrorAction_ignore_duplicate_gossip(void);
-       export function ErrorAction_ignore_duplicate_gossip(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ErrorAction_ignore_duplicate_gossip();
-               return nativeResponseValue;
-       }
-       // struct LDKErrorAction ErrorAction_send_error_message(struct LDKErrorMessage msg);
-       export function ErrorAction_send_error_message(msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ErrorAction_send_error_message(msg);
-               return nativeResponseValue;
-       }
-       // void LightningError_free(struct LDKLightningError this_obj);
-       export function LightningError_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.LightningError_free(this_obj);
-               // debug statements here
-       }
-       // struct LDKStr LightningError_get_err(const struct LDKLightningError *NONNULL_PTR this_ptr);
-       export function LightningError_get_err(this_ptr: number): String {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.LightningError_get_err(this_ptr);
-               return nativeResponseValue;
-       }
-       // void LightningError_set_err(struct LDKLightningError *NONNULL_PTR this_ptr, struct LDKStr val);
-       export function LightningError_set_err(this_ptr: number, val: String): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.LightningError_set_err(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKErrorAction LightningError_get_action(const struct LDKLightningError *NONNULL_PTR this_ptr);
-       export function LightningError_get_action(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.LightningError_get_action(this_ptr);
-               return nativeResponseValue;
-       }
-       // void LightningError_set_action(struct LDKLightningError *NONNULL_PTR this_ptr, struct LDKErrorAction val);
-       export function LightningError_set_action(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.LightningError_set_action(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKLightningError LightningError_new(struct LDKStr err_arg, struct LDKErrorAction action_arg);
-       export function LightningError_new(err_arg: String, action_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.LightningError_new(err_arg, action_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t LightningError_clone_ptr(LDKLightningError *NONNULL_PTR arg);
-       export function LightningError_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.LightningError_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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;
-       }
-       // void CommitmentUpdate_free(struct LDKCommitmentUpdate this_obj);
-       export function CommitmentUpdate_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentUpdate_free(this_obj);
-               // debug statements here
-       }
-       // struct LDKCVec_UpdateAddHTLCZ CommitmentUpdate_get_update_add_htlcs(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
-       export function CommitmentUpdate_get_update_add_htlcs(this_ptr: number): number[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentUpdate_get_update_add_htlcs(this_ptr);
-               return nativeResponseValue;
-       }
-       // 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 {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentUpdate_set_update_add_htlcs(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKCVec_UpdateFulfillHTLCZ CommitmentUpdate_get_update_fulfill_htlcs(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
-       export function CommitmentUpdate_get_update_fulfill_htlcs(this_ptr: number): number[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentUpdate_get_update_fulfill_htlcs(this_ptr);
-               return nativeResponseValue;
-       }
-       // void CommitmentUpdate_set_update_fulfill_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateFulfillHTLCZ val);
-       export function CommitmentUpdate_set_update_fulfill_htlcs(this_ptr: number, val: number[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentUpdate_set_update_fulfill_htlcs(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKCVec_UpdateFailHTLCZ CommitmentUpdate_get_update_fail_htlcs(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
-       export function CommitmentUpdate_get_update_fail_htlcs(this_ptr: number): number[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentUpdate_get_update_fail_htlcs(this_ptr);
-               return nativeResponseValue;
-       }
-       // void CommitmentUpdate_set_update_fail_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateFailHTLCZ val);
-       export function CommitmentUpdate_set_update_fail_htlcs(this_ptr: number, val: number[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentUpdate_set_update_fail_htlcs(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKCVec_UpdateFailMalformedHTLCZ CommitmentUpdate_get_update_fail_malformed_htlcs(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
-       export function CommitmentUpdate_get_update_fail_malformed_htlcs(this_ptr: number): number[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentUpdate_get_update_fail_malformed_htlcs(this_ptr);
-               return nativeResponseValue;
-       }
-       // void CommitmentUpdate_set_update_fail_malformed_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateFailMalformedHTLCZ val);
-       export function CommitmentUpdate_set_update_fail_malformed_htlcs(this_ptr: number, val: number[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentUpdate_set_update_fail_malformed_htlcs(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKUpdateFee CommitmentUpdate_get_update_fee(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
-       export function CommitmentUpdate_get_update_fee(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentUpdate_get_update_fee(this_ptr);
-               return nativeResponseValue;
-       }
-       // void CommitmentUpdate_set_update_fee(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKUpdateFee val);
-       export function CommitmentUpdate_set_update_fee(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentUpdate_set_update_fee(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKCommitmentSigned CommitmentUpdate_get_commitment_signed(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
-       export function CommitmentUpdate_get_commitment_signed(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentUpdate_get_commitment_signed(this_ptr);
-               return nativeResponseValue;
-       }
-       // void CommitmentUpdate_set_commitment_signed(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCommitmentSigned val);
-       export function CommitmentUpdate_set_commitment_signed(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentUpdate_set_commitment_signed(this_ptr, val);
-               // debug statements here
-       }
-       // 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);
-       export function CommitmentUpdate_new(update_add_htlcs_arg: number[], update_fulfill_htlcs_arg: number[], update_fail_htlcs_arg: number[], update_fail_malformed_htlcs_arg: number[], update_fee_arg: number, commitment_signed_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               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;
-       }
-       // uint64_t CommitmentUpdate_clone_ptr(LDKCommitmentUpdate *NONNULL_PTR arg);
-       export function CommitmentUpdate_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentUpdate_clone_ptr(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 ChannelMessageHandler_free(struct LDKChannelMessageHandler this_ptr);
-       export function ChannelMessageHandler_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelMessageHandler_free(this_ptr);
-               // debug statements here
-       }
-       // void RoutingMessageHandler_free(struct LDKRoutingMessageHandler this_ptr);
-       export function RoutingMessageHandler_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RoutingMessageHandler_free(this_ptr);
-               // debug statements here
-       }
-       // struct LDKCVec_u8Z AcceptChannel_write(const struct LDKAcceptChannel *NONNULL_PTR obj);
-       export function AcceptChannel_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.AcceptChannel_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z AnnouncementSignatures_write(const struct LDKAnnouncementSignatures *NONNULL_PTR obj);
-       export function AnnouncementSignatures_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.AnnouncementSignatures_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.AnnouncementSignatures_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z ChannelReestablish_write(const struct LDKChannelReestablish *NONNULL_PTR obj);
-       export function ChannelReestablish_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelReestablish_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_ChannelReestablishDecodeErrorZ ChannelReestablish_read(struct LDKu8slice ser);
-       export function ChannelReestablish_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelReestablish_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z ClosingSigned_write(const struct LDKClosingSigned *NONNULL_PTR obj);
-       export function ClosingSigned_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingSigned_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.ClosingSigned_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z ClosingSignedFeeRange_write(const struct LDKClosingSignedFeeRange *NONNULL_PTR obj);
-       export function ClosingSignedFeeRange_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingSignedFeeRange_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ ClosingSignedFeeRange_read(struct LDKu8slice ser);
-       export function ClosingSignedFeeRange_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingSignedFeeRange_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z CommitmentSigned_write(const struct LDKCommitmentSigned *NONNULL_PTR obj);
-       export function CommitmentSigned_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentSigned_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.CommitmentSigned_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z FundingCreated_write(const struct LDKFundingCreated *NONNULL_PTR obj);
-       export function FundingCreated_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FundingCreated_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.FundingCreated_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z FundingSigned_write(const struct LDKFundingSigned *NONNULL_PTR obj);
-       export function FundingSigned_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FundingSigned_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.FundingSigned_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z FundingLocked_write(const struct LDKFundingLocked *NONNULL_PTR obj);
-       export function FundingLocked_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FundingLocked_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.FundingLocked_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z Init_write(const struct LDKInit *NONNULL_PTR obj);
-       export function Init_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Init_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_InitDecodeErrorZ Init_read(struct LDKu8slice ser);
-       export function Init_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Init_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z OpenChannel_write(const struct LDKOpenChannel *NONNULL_PTR obj);
-       export function OpenChannel_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.OpenChannel_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z RevokeAndACK_write(const struct LDKRevokeAndACK *NONNULL_PTR obj);
-       export function RevokeAndACK_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RevokeAndACK_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.RevokeAndACK_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z Shutdown_write(const struct LDKShutdown *NONNULL_PTR obj);
-       export function Shutdown_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Shutdown_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.Shutdown_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z UpdateFailHTLC_write(const struct LDKUpdateFailHTLC *NONNULL_PTR obj);
-       export function UpdateFailHTLC_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFailHTLC_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.UpdateFailHTLC_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z UpdateFailMalformedHTLC_write(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR obj);
-       export function UpdateFailMalformedHTLC_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFailMalformedHTLC_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.UpdateFailMalformedHTLC_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z UpdateFee_write(const struct LDKUpdateFee *NONNULL_PTR obj);
-       export function UpdateFee_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFee_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.UpdateFee_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z UpdateFulfillHTLC_write(const struct LDKUpdateFulfillHTLC *NONNULL_PTR obj);
-       export function UpdateFulfillHTLC_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateFulfillHTLC_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.UpdateFulfillHTLC_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z UpdateAddHTLC_write(const struct LDKUpdateAddHTLC *NONNULL_PTR obj);
-       export function UpdateAddHTLC_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UpdateAddHTLC_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.UpdateAddHTLC_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z Ping_write(const struct LDKPing *NONNULL_PTR obj);
-       export function Ping_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Ping_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_PingDecodeErrorZ Ping_read(struct LDKu8slice ser);
-       export function Ping_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Ping_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z Pong_write(const struct LDKPong *NONNULL_PTR obj);
-       export function Pong_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Pong_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_PongDecodeErrorZ Pong_read(struct LDKu8slice ser);
-       export function Pong_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Pong_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z UnsignedChannelAnnouncement_write(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR obj);
-       export function UnsignedChannelAnnouncement_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelAnnouncement_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ UnsignedChannelAnnouncement_read(struct LDKu8slice ser);
-       export function UnsignedChannelAnnouncement_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelAnnouncement_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z ChannelAnnouncement_write(const struct LDKChannelAnnouncement *NONNULL_PTR obj);
-       export function ChannelAnnouncement_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelAnnouncement_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.ChannelAnnouncement_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z UnsignedChannelUpdate_write(const struct LDKUnsignedChannelUpdate *NONNULL_PTR obj);
-       export function UnsignedChannelUpdate_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelUpdate_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ UnsignedChannelUpdate_read(struct LDKu8slice ser);
-       export function UnsignedChannelUpdate_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedChannelUpdate_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z ChannelUpdate_write(const struct LDKChannelUpdate *NONNULL_PTR obj);
-       export function ChannelUpdate_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelUpdate_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.ChannelUpdate_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z ErrorMessage_write(const struct LDKErrorMessage *NONNULL_PTR obj);
-       export function ErrorMessage_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ErrorMessage_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_ErrorMessageDecodeErrorZ ErrorMessage_read(struct LDKu8slice ser);
-       export function ErrorMessage_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ErrorMessage_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z UnsignedNodeAnnouncement_write(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR obj);
-       export function UnsignedNodeAnnouncement_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedNodeAnnouncement_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ UnsignedNodeAnnouncement_read(struct LDKu8slice ser);
-       export function UnsignedNodeAnnouncement_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.UnsignedNodeAnnouncement_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z NodeAnnouncement_write(const struct LDKNodeAnnouncement *NONNULL_PTR obj);
-       export function NodeAnnouncement_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeAnnouncement_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.NodeAnnouncement_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_QueryShortChannelIdsDecodeErrorZ QueryShortChannelIds_read(struct LDKu8slice ser);
-       export function QueryShortChannelIds_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.QueryShortChannelIds_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z QueryShortChannelIds_write(const struct LDKQueryShortChannelIds *NONNULL_PTR obj);
-       export function QueryShortChannelIds_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.QueryShortChannelIds_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCVec_u8Z ReplyShortChannelIdsEnd_write(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR obj);
-       export function ReplyShortChannelIdsEnd_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ReplyShortChannelIdsEnd_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ ReplyShortChannelIdsEnd_read(struct LDKu8slice ser);
-       export function ReplyShortChannelIdsEnd_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ReplyShortChannelIdsEnd_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES uint32_t QueryChannelRange_end_blocknum(const struct LDKQueryChannelRange *NONNULL_PTR this_arg);
-       export function QueryChannelRange_end_blocknum(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.QueryChannelRange_end_blocknum(this_arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z QueryChannelRange_write(const struct LDKQueryChannelRange *NONNULL_PTR obj);
-       export function QueryChannelRange_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.QueryChannelRange_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_QueryChannelRangeDecodeErrorZ QueryChannelRange_read(struct LDKu8slice ser);
-       export function QueryChannelRange_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.QueryChannelRange_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_ReplyChannelRangeDecodeErrorZ ReplyChannelRange_read(struct LDKu8slice ser);
-       export function ReplyChannelRange_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ReplyChannelRange_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z ReplyChannelRange_write(const struct LDKReplyChannelRange *NONNULL_PTR obj);
-       export function ReplyChannelRange_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ReplyChannelRange_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCVec_u8Z GossipTimestampFilter_write(const struct LDKGossipTimestampFilter *NONNULL_PTR obj);
-       export function GossipTimestampFilter_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.GossipTimestampFilter_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_GossipTimestampFilterDecodeErrorZ GossipTimestampFilter_read(struct LDKu8slice ser);
-       export function GossipTimestampFilter_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.GossipTimestampFilter_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // void CustomMessageHandler_free(struct LDKCustomMessageHandler this_ptr);
-       export function CustomMessageHandler_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CustomMessageHandler_free(this_ptr);
-               // debug statements here
-       }
-       // void IgnoringMessageHandler_free(struct LDKIgnoringMessageHandler this_obj);
-       export function IgnoringMessageHandler_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.IgnoringMessageHandler_free(this_obj);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKIgnoringMessageHandler IgnoringMessageHandler_new(void);
-       export function IgnoringMessageHandler_new(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.IgnoringMessageHandler_new();
-               return nativeResponseValue;
-       }
-       // struct LDKMessageSendEventsProvider IgnoringMessageHandler_as_MessageSendEventsProvider(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
-       export function IgnoringMessageHandler_as_MessageSendEventsProvider(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.IgnoringMessageHandler_as_MessageSendEventsProvider(this_arg);
-               return nativeResponseValue;
-       }
-       // struct LDKRoutingMessageHandler IgnoringMessageHandler_as_RoutingMessageHandler(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
-       export function IgnoringMessageHandler_as_RoutingMessageHandler(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.IgnoringMessageHandler_as_RoutingMessageHandler(this_arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCustomMessageReader IgnoringMessageHandler_as_CustomMessageReader(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
-       export function IgnoringMessageHandler_as_CustomMessageReader(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.IgnoringMessageHandler_as_CustomMessageReader(this_arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCustomMessageHandler IgnoringMessageHandler_as_CustomMessageHandler(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
-       export function IgnoringMessageHandler_as_CustomMessageHandler(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.IgnoringMessageHandler_as_CustomMessageHandler(this_arg);
-               return nativeResponseValue;
-       }
-       // void ErroringMessageHandler_free(struct LDKErroringMessageHandler this_obj);
-       export function ErroringMessageHandler_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ErroringMessageHandler_free(this_obj);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKErroringMessageHandler ErroringMessageHandler_new(void);
-       export function ErroringMessageHandler_new(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ErroringMessageHandler_new();
-               return nativeResponseValue;
-       }
-       // struct LDKMessageSendEventsProvider ErroringMessageHandler_as_MessageSendEventsProvider(const struct LDKErroringMessageHandler *NONNULL_PTR this_arg);
-       export function ErroringMessageHandler_as_MessageSendEventsProvider(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ErroringMessageHandler_as_MessageSendEventsProvider(this_arg);
-               return nativeResponseValue;
-       }
-       // struct LDKChannelMessageHandler ErroringMessageHandler_as_ChannelMessageHandler(const struct LDKErroringMessageHandler *NONNULL_PTR this_arg);
-       export function ErroringMessageHandler_as_ChannelMessageHandler(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ErroringMessageHandler_as_ChannelMessageHandler(this_arg);
-               return nativeResponseValue;
-       }
-       // void MessageHandler_free(struct LDKMessageHandler this_obj);
-       export function MessageHandler_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageHandler_free(this_obj);
-               // debug statements here
-       }
-       // const struct LDKChannelMessageHandler *MessageHandler_get_chan_handler(const struct LDKMessageHandler *NONNULL_PTR this_ptr);
-       export function MessageHandler_get_chan_handler(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageHandler_get_chan_handler(this_ptr);
-               return nativeResponseValue;
-       }
-       // void MessageHandler_set_chan_handler(struct LDKMessageHandler *NONNULL_PTR this_ptr, struct LDKChannelMessageHandler val);
-       export function MessageHandler_set_chan_handler(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageHandler_set_chan_handler(this_ptr, val);
-               // debug statements here
-       }
-       // const struct LDKRoutingMessageHandler *MessageHandler_get_route_handler(const struct LDKMessageHandler *NONNULL_PTR this_ptr);
-       export function MessageHandler_get_route_handler(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageHandler_get_route_handler(this_ptr);
-               return nativeResponseValue;
-       }
-       // void MessageHandler_set_route_handler(struct LDKMessageHandler *NONNULL_PTR this_ptr, struct LDKRoutingMessageHandler val);
-       export function MessageHandler_set_route_handler(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageHandler_set_route_handler(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKMessageHandler MessageHandler_new(struct LDKChannelMessageHandler chan_handler_arg, struct LDKRoutingMessageHandler route_handler_arg);
-       export function MessageHandler_new(chan_handler_arg: number, route_handler_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MessageHandler_new(chan_handler_arg, route_handler_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t SocketDescriptor_clone_ptr(LDKSocketDescriptor *NONNULL_PTR arg);
-       export function SocketDescriptor_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SocketDescriptor_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKSocketDescriptor SocketDescriptor_clone(const struct LDKSocketDescriptor *NONNULL_PTR orig);
-       export function SocketDescriptor_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SocketDescriptor_clone(orig);
-               return nativeResponseValue;
-       }
-       // void SocketDescriptor_free(struct LDKSocketDescriptor this_ptr);
-       export function SocketDescriptor_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SocketDescriptor_free(this_ptr);
-               // debug statements here
-       }
-       // void PeerHandleError_free(struct LDKPeerHandleError this_obj);
-       export function PeerHandleError_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PeerHandleError_free(this_obj);
-               // debug statements here
-       }
-       // 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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PeerHandleError_get_no_connection_possible(this_ptr);
-               return nativeResponseValue;
-       }
-       // void PeerHandleError_set_no_connection_possible(struct LDKPeerHandleError *NONNULL_PTR this_ptr, bool val);
-       export function PeerHandleError_set_no_connection_possible(this_ptr: number, val: boolean): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PeerHandleError_set_no_connection_possible(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKPeerHandleError PeerHandleError_new(bool no_connection_possible_arg);
-       export function PeerHandleError_new(no_connection_possible_arg: boolean): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PeerHandleError_new(no_connection_possible_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t PeerHandleError_clone_ptr(LDKPeerHandleError *NONNULL_PTR arg);
-       export function PeerHandleError_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PeerHandleError_clone_ptr(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_obj);
-       export function PeerManager_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PeerManager_free(this_obj);
-               // debug statements here
-       }
-       // 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, struct LDKCustomMessageHandler custom_message_handler);
-       export function PeerManager_new(message_handler: number, our_node_secret: Uint8Array, ephemeral_random_data: Uint8Array, logger: number, custom_message_handler: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PeerManager_new(message_handler, encodeArray(our_node_secret), encodeArray(ephemeral_random_data), logger, custom_message_handler);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCVec_PublicKeyZ PeerManager_get_peer_node_ids(const struct LDKPeerManager *NONNULL_PTR this_arg);
-       export function PeerManager_get_peer_node_ids(this_arg: number): Uint8Array[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PeerManager_get_peer_node_ids(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_CVec_u8ZPeerHandleErrorZ PeerManager_new_outbound_connection(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, struct LDKSocketDescriptor descriptor);
-       export function PeerManager_new_outbound_connection(this_arg: number, their_node_id: Uint8Array, descriptor: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PeerManager_new_outbound_connection(this_arg, encodeArray(their_node_id), descriptor);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_NonePeerHandleErrorZ PeerManager_new_inbound_connection(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKSocketDescriptor descriptor);
-       export function PeerManager_new_inbound_connection(this_arg: number, descriptor: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PeerManager_new_inbound_connection(this_arg, descriptor);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_NonePeerHandleErrorZ PeerManager_write_buffer_space_avail(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKSocketDescriptor *NONNULL_PTR descriptor);
-       export function PeerManager_write_buffer_space_avail(this_arg: number, descriptor: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PeerManager_write_buffer_space_avail(this_arg, descriptor);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_boolPeerHandleErrorZ PeerManager_read_event(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKSocketDescriptor *NONNULL_PTR peer_descriptor, struct LDKu8slice data);
-       export function PeerManager_read_event(this_arg: number, peer_descriptor: number, data: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PeerManager_read_event(this_arg, peer_descriptor, encodeArray(data));
-               return nativeResponseValue;
-       }
-       // void PeerManager_process_events(const struct LDKPeerManager *NONNULL_PTR this_arg);
-       export function PeerManager_process_events(this_arg: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PeerManager_process_events(this_arg);
-               // debug statements here
-       }
-       // void PeerManager_socket_disconnected(const struct LDKPeerManager *NONNULL_PTR this_arg, const struct LDKSocketDescriptor *NONNULL_PTR descriptor);
-       export function PeerManager_socket_disconnected(this_arg: number, descriptor: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PeerManager_socket_disconnected(this_arg, descriptor);
-               // debug statements here
-       }
-       // void PeerManager_disconnect_by_node_id(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKPublicKey node_id, bool no_connection_possible);
-       export function PeerManager_disconnect_by_node_id(this_arg: number, node_id: Uint8Array, no_connection_possible: boolean): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PeerManager_disconnect_by_node_id(this_arg, encodeArray(node_id), no_connection_possible);
-               // debug statements here
-       }
-       // void PeerManager_disconnect_all_peers(const struct LDKPeerManager *NONNULL_PTR this_arg);
-       export function PeerManager_disconnect_all_peers(this_arg: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PeerManager_disconnect_all_peers(this_arg);
-               // debug statements here
-       }
-       // void PeerManager_timer_tick_occurred(const struct LDKPeerManager *NONNULL_PTR this_arg);
-       export function PeerManager_timer_tick_occurred(this_arg: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PeerManager_timer_tick_occurred(this_arg);
-               // debug statements here
-       }
-       // uint64_t htlc_success_tx_weight(bool opt_anchors);
-       export function htlc_success_tx_weight(opt_anchors: boolean): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.htlc_success_tx_weight(opt_anchors);
-               return nativeResponseValue;
-       }
-       // uint64_t htlc_timeout_tx_weight(bool opt_anchors);
-       export function htlc_timeout_tx_weight(opt_anchors: boolean): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.htlc_timeout_tx_weight(opt_anchors);
-               return nativeResponseValue;
-       }
-       // struct LDKThirtyTwoBytes build_commitment_secret(const uint8_t (*commitment_seed)[32], uint64_t idx);
-       export function build_commitment_secret(commitment_seed: Uint8Array, idx: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.build_commitment_secret(encodeArray(commitment_seed), idx);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKTransaction build_closing_transaction(uint64_t to_holder_value_sat, uint64_t to_counterparty_value_sat, struct LDKCVec_u8Z to_holder_script, struct LDKCVec_u8Z to_counterparty_script, struct LDKOutPoint funding_outpoint);
-       export function build_closing_transaction(to_holder_value_sat: number, to_counterparty_value_sat: number, to_holder_script: Uint8Array, to_counterparty_script: Uint8Array, funding_outpoint: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.build_closing_transaction(to_holder_value_sat, to_counterparty_value_sat, encodeArray(to_holder_script), encodeArray(to_counterparty_script), funding_outpoint);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.derive_private_key(encodeArray(per_commitment_point), encodeArray(base_secret));
-               return nativeResponseValue;
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.derive_public_key(encodeArray(per_commitment_point), encodeArray(base_point));
-               return nativeResponseValue;
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.derive_private_revocation_key(encodeArray(per_commitment_secret), encodeArray(countersignatory_revocation_base_secret));
-               return nativeResponseValue;
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.derive_public_revocation_key(encodeArray(per_commitment_point), encodeArray(countersignatory_revocation_base_point));
-               return nativeResponseValue;
-       }
-       // void TxCreationKeys_free(struct LDKTxCreationKeys this_obj);
-       export function TxCreationKeys_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.TxCreationKeys_free(this_obj);
-               // debug statements here
-       }
-       // 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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.TxCreationKeys_get_per_commitment_point(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void TxCreationKeys_set_per_commitment_point(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function TxCreationKeys_set_per_commitment_point(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.TxCreationKeys_set_per_commitment_point(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKPublicKey TxCreationKeys_get_revocation_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
-       export function TxCreationKeys_get_revocation_key(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.TxCreationKeys_get_revocation_key(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void TxCreationKeys_set_revocation_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function TxCreationKeys_set_revocation_key(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.TxCreationKeys_set_revocation_key(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKPublicKey TxCreationKeys_get_broadcaster_htlc_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
-       export function TxCreationKeys_get_broadcaster_htlc_key(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.TxCreationKeys_get_broadcaster_htlc_key(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void TxCreationKeys_set_broadcaster_htlc_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function TxCreationKeys_set_broadcaster_htlc_key(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.TxCreationKeys_set_broadcaster_htlc_key(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKPublicKey TxCreationKeys_get_countersignatory_htlc_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
-       export function TxCreationKeys_get_countersignatory_htlc_key(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.TxCreationKeys_get_countersignatory_htlc_key(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void TxCreationKeys_set_countersignatory_htlc_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function TxCreationKeys_set_countersignatory_htlc_key(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.TxCreationKeys_set_countersignatory_htlc_key(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKPublicKey TxCreationKeys_get_broadcaster_delayed_payment_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
-       export function TxCreationKeys_get_broadcaster_delayed_payment_key(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.TxCreationKeys_get_broadcaster_delayed_payment_key(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void TxCreationKeys_set_broadcaster_delayed_payment_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function TxCreationKeys_set_broadcaster_delayed_payment_key(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.TxCreationKeys_set_broadcaster_delayed_payment_key(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // 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);
-       export function TxCreationKeys_new(per_commitment_point_arg: Uint8Array, revocation_key_arg: Uint8Array, broadcaster_htlc_key_arg: Uint8Array, countersignatory_htlc_key_arg: Uint8Array, broadcaster_delayed_payment_key_arg: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               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;
-       }
-       // uint64_t TxCreationKeys_clone_ptr(LDKTxCreationKeys *NONNULL_PTR arg);
-       export function TxCreationKeys_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.TxCreationKeys_clone_ptr(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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.TxCreationKeys_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.TxCreationKeys_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // void ChannelPublicKeys_free(struct LDKChannelPublicKeys this_obj);
-       export function ChannelPublicKeys_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelPublicKeys_free(this_obj);
-               // debug statements here
-       }
-       // 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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelPublicKeys_get_funding_pubkey(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void ChannelPublicKeys_set_funding_pubkey(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function ChannelPublicKeys_set_funding_pubkey(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelPublicKeys_set_funding_pubkey(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKPublicKey ChannelPublicKeys_get_revocation_basepoint(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
-       export function ChannelPublicKeys_get_revocation_basepoint(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelPublicKeys_get_revocation_basepoint(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void ChannelPublicKeys_set_revocation_basepoint(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function ChannelPublicKeys_set_revocation_basepoint(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelPublicKeys_set_revocation_basepoint(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKPublicKey ChannelPublicKeys_get_payment_point(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
-       export function ChannelPublicKeys_get_payment_point(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelPublicKeys_get_payment_point(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void ChannelPublicKeys_set_payment_point(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function ChannelPublicKeys_set_payment_point(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelPublicKeys_set_payment_point(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKPublicKey ChannelPublicKeys_get_delayed_payment_basepoint(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
-       export function ChannelPublicKeys_get_delayed_payment_basepoint(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelPublicKeys_get_delayed_payment_basepoint(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void ChannelPublicKeys_set_delayed_payment_basepoint(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function ChannelPublicKeys_set_delayed_payment_basepoint(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelPublicKeys_set_delayed_payment_basepoint(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKPublicKey ChannelPublicKeys_get_htlc_basepoint(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
-       export function ChannelPublicKeys_get_htlc_basepoint(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelPublicKeys_get_htlc_basepoint(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void ChannelPublicKeys_set_htlc_basepoint(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function ChannelPublicKeys_set_htlc_basepoint(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelPublicKeys_set_htlc_basepoint(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // 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);
-       export function ChannelPublicKeys_new(funding_pubkey_arg: Uint8Array, revocation_basepoint_arg: Uint8Array, payment_point_arg: Uint8Array, delayed_payment_basepoint_arg: Uint8Array, htlc_basepoint_arg: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               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;
-       }
-       // uint64_t ChannelPublicKeys_clone_ptr(LDKChannelPublicKeys *NONNULL_PTR arg);
-       export function ChannelPublicKeys_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelPublicKeys_clone_ptr(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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelPublicKeys_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.ChannelPublicKeys_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // 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!");
-               }
-               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_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!");
-               }
-               const nativeResponseValue = wasm.TxCreationKeys_from_channel_static_keys(encodeArray(per_commitment_point), broadcaster_keys, countersignatory_keys);
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z get_revokeable_redeemscript(struct LDKPublicKey revocation_key, uint16_t contest_delay, struct LDKPublicKey broadcaster_delayed_payment_key);
-       export function get_revokeable_redeemscript(revocation_key: Uint8Array, contest_delay: number, broadcaster_delayed_payment_key: Uint8Array): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.get_revokeable_redeemscript(encodeArray(revocation_key), contest_delay, encodeArray(broadcaster_delayed_payment_key));
-               return decodeArray(nativeResponseValue);
-       }
-       // void HTLCOutputInCommitment_free(struct LDKHTLCOutputInCommitment this_obj);
-       export function HTLCOutputInCommitment_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.HTLCOutputInCommitment_free(this_obj);
-               // debug statements here
-       }
-       // bool HTLCOutputInCommitment_get_offered(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
-       export function HTLCOutputInCommitment_get_offered(this_ptr: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.HTLCOutputInCommitment_get_offered(this_ptr);
-               return nativeResponseValue;
-       }
-       // void HTLCOutputInCommitment_set_offered(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, bool val);
-       export function HTLCOutputInCommitment_set_offered(this_ptr: number, val: boolean): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.HTLCOutputInCommitment_set_offered(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t HTLCOutputInCommitment_get_amount_msat(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
-       export function HTLCOutputInCommitment_get_amount_msat(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.HTLCOutputInCommitment_get_amount_msat(this_ptr);
-               return nativeResponseValue;
-       }
-       // void HTLCOutputInCommitment_set_amount_msat(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, uint64_t val);
-       export function HTLCOutputInCommitment_set_amount_msat(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.HTLCOutputInCommitment_set_amount_msat(this_ptr, val);
-               // debug statements here
-       }
-       // uint32_t HTLCOutputInCommitment_get_cltv_expiry(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
-       export function HTLCOutputInCommitment_get_cltv_expiry(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.HTLCOutputInCommitment_get_cltv_expiry(this_ptr);
-               return nativeResponseValue;
-       }
-       // void HTLCOutputInCommitment_set_cltv_expiry(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, uint32_t val);
-       export function HTLCOutputInCommitment_set_cltv_expiry(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.HTLCOutputInCommitment_set_cltv_expiry(this_ptr, val);
-               // debug statements here
-       }
-       // const uint8_t (*HTLCOutputInCommitment_get_payment_hash(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr))[32];
-       export function HTLCOutputInCommitment_get_payment_hash(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.HTLCOutputInCommitment_get_payment_hash(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void HTLCOutputInCommitment_set_payment_hash(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function HTLCOutputInCommitment_set_payment_hash(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.HTLCOutputInCommitment_set_payment_hash(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKCOption_u32Z HTLCOutputInCommitment_get_transaction_output_index(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
-       export function HTLCOutputInCommitment_get_transaction_output_index(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.HTLCOutputInCommitment_get_transaction_output_index(this_ptr);
-               return nativeResponseValue;
-       }
-       // void HTLCOutputInCommitment_set_transaction_output_index(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, struct LDKCOption_u32Z val);
-       export function HTLCOutputInCommitment_set_transaction_output_index(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.HTLCOutputInCommitment_set_transaction_output_index(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKHTLCOutputInCommitment HTLCOutputInCommitment_new(bool offered_arg, uint64_t amount_msat_arg, uint32_t cltv_expiry_arg, struct LDKThirtyTwoBytes payment_hash_arg, struct LDKCOption_u32Z transaction_output_index_arg);
-       export function HTLCOutputInCommitment_new(offered_arg: boolean, amount_msat_arg: number, cltv_expiry_arg: number, payment_hash_arg: Uint8Array, transaction_output_index_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.HTLCOutputInCommitment_new(offered_arg, amount_msat_arg, cltv_expiry_arg, encodeArray(payment_hash_arg), transaction_output_index_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t HTLCOutputInCommitment_clone_ptr(LDKHTLCOutputInCommitment *NONNULL_PTR arg);
-       export function HTLCOutputInCommitment_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.HTLCOutputInCommitment_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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 {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.HTLCOutputInCommitment_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.HTLCOutputInCommitment_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z get_htlc_redeemscript(const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc, bool opt_anchors, const struct LDKTxCreationKeys *NONNULL_PTR keys);
-       export function get_htlc_redeemscript(htlc: number, opt_anchors: boolean, keys: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.get_htlc_redeemscript(htlc, opt_anchors, keys);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCVec_u8Z make_funding_redeemscript(struct LDKPublicKey broadcaster, struct LDKPublicKey countersignatory);
-       export function make_funding_redeemscript(broadcaster: Uint8Array, countersignatory: Uint8Array): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.make_funding_redeemscript(encodeArray(broadcaster), encodeArray(countersignatory));
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKTransaction build_htlc_transaction(const uint8_t (*commitment_txid)[32], uint32_t feerate_per_kw, uint16_t contest_delay, const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc, bool opt_anchors, struct LDKPublicKey broadcaster_delayed_payment_key, struct LDKPublicKey revocation_key);
-       export function build_htlc_transaction(commitment_txid: Uint8Array, feerate_per_kw: number, contest_delay: number, htlc: number, opt_anchors: boolean, broadcaster_delayed_payment_key: Uint8Array, revocation_key: Uint8Array): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.build_htlc_transaction(encodeArray(commitment_txid), feerate_per_kw, contest_delay, htlc, opt_anchors, encodeArray(broadcaster_delayed_payment_key), encodeArray(revocation_key));
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCVec_u8Z get_anchor_redeemscript(struct LDKPublicKey funding_pubkey);
-       export function get_anchor_redeemscript(funding_pubkey: Uint8Array): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.get_anchor_redeemscript(encodeArray(funding_pubkey));
-               return decodeArray(nativeResponseValue);
-       }
-       // void ChannelTransactionParameters_free(struct LDKChannelTransactionParameters this_obj);
-       export function ChannelTransactionParameters_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelTransactionParameters_free(this_obj);
-               // debug statements here
-       }
-       // 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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelTransactionParameters_get_holder_pubkeys(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelTransactionParameters_set_holder_pubkeys(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKChannelPublicKeys val);
-       export function ChannelTransactionParameters_set_holder_pubkeys(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelTransactionParameters_set_holder_pubkeys(this_ptr, val);
-               // debug statements here
-       }
-       // uint16_t ChannelTransactionParameters_get_holder_selected_contest_delay(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
-       export function ChannelTransactionParameters_get_holder_selected_contest_delay(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelTransactionParameters_get_holder_selected_contest_delay(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelTransactionParameters_set_holder_selected_contest_delay(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, uint16_t val);
-       export function ChannelTransactionParameters_set_holder_selected_contest_delay(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelTransactionParameters_set_holder_selected_contest_delay(this_ptr, val);
-               // debug statements here
-       }
-       // bool ChannelTransactionParameters_get_is_outbound_from_holder(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
-       export function ChannelTransactionParameters_get_is_outbound_from_holder(this_ptr: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelTransactionParameters_get_is_outbound_from_holder(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelTransactionParameters_set_is_outbound_from_holder(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, bool val);
-       export function ChannelTransactionParameters_set_is_outbound_from_holder(this_ptr: number, val: boolean): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelTransactionParameters_set_is_outbound_from_holder(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKCounterpartyChannelTransactionParameters ChannelTransactionParameters_get_counterparty_parameters(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
-       export function ChannelTransactionParameters_get_counterparty_parameters(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelTransactionParameters_get_counterparty_parameters(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelTransactionParameters_set_counterparty_parameters(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKCounterpartyChannelTransactionParameters val);
-       export function ChannelTransactionParameters_set_counterparty_parameters(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelTransactionParameters_set_counterparty_parameters(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKOutPoint ChannelTransactionParameters_get_funding_outpoint(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
-       export function ChannelTransactionParameters_get_funding_outpoint(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelTransactionParameters_get_funding_outpoint(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelTransactionParameters_set_funding_outpoint(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKOutPoint val);
-       export function ChannelTransactionParameters_set_funding_outpoint(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelTransactionParameters_set_funding_outpoint(this_ptr, val);
-               // debug statements here
-       }
-       // enum LDKCOption_NoneZ ChannelTransactionParameters_get_opt_anchors(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
-       export function ChannelTransactionParameters_get_opt_anchors(this_ptr: number): COption_NoneZ {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelTransactionParameters_get_opt_anchors(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelTransactionParameters_set_opt_anchors(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, enum LDKCOption_NoneZ val);
-       export function ChannelTransactionParameters_set_opt_anchors(this_ptr: number, val: COption_NoneZ): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelTransactionParameters_set_opt_anchors(this_ptr, val);
-               // debug statements here
-       }
-       // 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, enum LDKCOption_NoneZ opt_anchors_arg);
-       export function ChannelTransactionParameters_new(holder_pubkeys_arg: number, holder_selected_contest_delay_arg: number, is_outbound_from_holder_arg: boolean, counterparty_parameters_arg: number, funding_outpoint_arg: number, opt_anchors_arg: COption_NoneZ): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelTransactionParameters_new(holder_pubkeys_arg, holder_selected_contest_delay_arg, is_outbound_from_holder_arg, counterparty_parameters_arg, funding_outpoint_arg, opt_anchors_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t ChannelTransactionParameters_clone_ptr(LDKChannelTransactionParameters *NONNULL_PTR arg);
-       export function ChannelTransactionParameters_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelTransactionParameters_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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;
-       }
-       // void CounterpartyChannelTransactionParameters_free(struct LDKCounterpartyChannelTransactionParameters this_obj);
-       export function CounterpartyChannelTransactionParameters_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CounterpartyChannelTransactionParameters_free(this_obj);
-               // debug statements here
-       }
-       // struct LDKChannelPublicKeys CounterpartyChannelTransactionParameters_get_pubkeys(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr);
-       export function CounterpartyChannelTransactionParameters_get_pubkeys(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CounterpartyChannelTransactionParameters_get_pubkeys(this_ptr);
-               return nativeResponseValue;
-       }
-       // void CounterpartyChannelTransactionParameters_set_pubkeys(struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKChannelPublicKeys val);
-       export function CounterpartyChannelTransactionParameters_set_pubkeys(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CounterpartyChannelTransactionParameters_set_pubkeys(this_ptr, val);
-               // debug statements here
-       }
-       // uint16_t CounterpartyChannelTransactionParameters_get_selected_contest_delay(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr);
-       export function CounterpartyChannelTransactionParameters_get_selected_contest_delay(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CounterpartyChannelTransactionParameters_get_selected_contest_delay(this_ptr);
-               return nativeResponseValue;
-       }
-       // void CounterpartyChannelTransactionParameters_set_selected_contest_delay(struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr, uint16_t val);
-       export function CounterpartyChannelTransactionParameters_set_selected_contest_delay(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CounterpartyChannelTransactionParameters_set_selected_contest_delay(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKCounterpartyChannelTransactionParameters CounterpartyChannelTransactionParameters_new(struct LDKChannelPublicKeys pubkeys_arg, uint16_t selected_contest_delay_arg);
-       export function CounterpartyChannelTransactionParameters_new(pubkeys_arg: number, selected_contest_delay_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CounterpartyChannelTransactionParameters_new(pubkeys_arg, selected_contest_delay_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t CounterpartyChannelTransactionParameters_clone_ptr(LDKCounterpartyChannelTransactionParameters *NONNULL_PTR arg);
-       export function CounterpartyChannelTransactionParameters_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CounterpartyChannelTransactionParameters_clone_ptr(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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelTransactionParameters_is_populated(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKDirectedChannelTransactionParameters ChannelTransactionParameters_as_holder_broadcastable(const struct LDKChannelTransactionParameters *NONNULL_PTR this_arg);
-       export function ChannelTransactionParameters_as_holder_broadcastable(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelTransactionParameters_as_holder_broadcastable(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKDirectedChannelTransactionParameters ChannelTransactionParameters_as_counterparty_broadcastable(const struct LDKChannelTransactionParameters *NONNULL_PTR this_arg);
-       export function ChannelTransactionParameters_as_counterparty_broadcastable(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelTransactionParameters_as_counterparty_broadcastable(this_arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z CounterpartyChannelTransactionParameters_write(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR obj);
-       export function CounterpartyChannelTransactionParameters_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CounterpartyChannelTransactionParameters_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.CounterpartyChannelTransactionParameters_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z ChannelTransactionParameters_write(const struct LDKChannelTransactionParameters *NONNULL_PTR obj);
-       export function ChannelTransactionParameters_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelTransactionParameters_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.ChannelTransactionParameters_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // void DirectedChannelTransactionParameters_free(struct LDKDirectedChannelTransactionParameters this_obj);
-       export function DirectedChannelTransactionParameters_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DirectedChannelTransactionParameters_free(this_obj);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKChannelPublicKeys DirectedChannelTransactionParameters_broadcaster_pubkeys(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
-       export function DirectedChannelTransactionParameters_broadcaster_pubkeys(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DirectedChannelTransactionParameters_broadcaster_pubkeys(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKChannelPublicKeys DirectedChannelTransactionParameters_countersignatory_pubkeys(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
-       export function DirectedChannelTransactionParameters_countersignatory_pubkeys(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DirectedChannelTransactionParameters_countersignatory_pubkeys(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES uint16_t DirectedChannelTransactionParameters_contest_delay(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
-       export function DirectedChannelTransactionParameters_contest_delay(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DirectedChannelTransactionParameters_contest_delay(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES bool DirectedChannelTransactionParameters_is_outbound(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
-       export function DirectedChannelTransactionParameters_is_outbound(this_arg: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DirectedChannelTransactionParameters_is_outbound(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKOutPoint DirectedChannelTransactionParameters_funding_outpoint(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
-       export function DirectedChannelTransactionParameters_funding_outpoint(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DirectedChannelTransactionParameters_funding_outpoint(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES bool DirectedChannelTransactionParameters_opt_anchors(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
-       export function DirectedChannelTransactionParameters_opt_anchors(this_arg: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DirectedChannelTransactionParameters_opt_anchors(this_arg);
-               return nativeResponseValue;
-       }
-       // void HolderCommitmentTransaction_free(struct LDKHolderCommitmentTransaction this_obj);
-       export function HolderCommitmentTransaction_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.HolderCommitmentTransaction_free(this_obj);
-               // debug statements here
-       }
-       // 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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.HolderCommitmentTransaction_get_counterparty_sig(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void HolderCommitmentTransaction_set_counterparty_sig(struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKSignature val);
-       export function HolderCommitmentTransaction_set_counterparty_sig(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.HolderCommitmentTransaction_set_counterparty_sig(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // void HolderCommitmentTransaction_set_counterparty_htlc_sigs(struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKCVec_SignatureZ val);
-       export function HolderCommitmentTransaction_set_counterparty_htlc_sigs(this_ptr: number, val: Uint8Array[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.HolderCommitmentTransaction_set_counterparty_htlc_sigs(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t HolderCommitmentTransaction_clone_ptr(LDKHolderCommitmentTransaction *NONNULL_PTR arg);
-       export function HolderCommitmentTransaction_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.HolderCommitmentTransaction_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.HolderCommitmentTransaction_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.HolderCommitmentTransaction_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // 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);
-       export function HolderCommitmentTransaction_new(commitment_tx: number, counterparty_sig: Uint8Array, counterparty_htlc_sigs: Uint8Array[], holder_funding_key: Uint8Array, counterparty_funding_key: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.HolderCommitmentTransaction_new(commitment_tx, encodeArray(counterparty_sig), counterparty_htlc_sigs, encodeArray(holder_funding_key), encodeArray(counterparty_funding_key));
-               return nativeResponseValue;
-       }
-       // void BuiltCommitmentTransaction_free(struct LDKBuiltCommitmentTransaction this_obj);
-       export function BuiltCommitmentTransaction_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BuiltCommitmentTransaction_free(this_obj);
-               // debug statements here
-       }
-       // struct LDKTransaction BuiltCommitmentTransaction_get_transaction(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr);
-       export function BuiltCommitmentTransaction_get_transaction(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BuiltCommitmentTransaction_get_transaction(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void BuiltCommitmentTransaction_set_transaction(struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKTransaction val);
-       export function BuiltCommitmentTransaction_set_transaction(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BuiltCommitmentTransaction_set_transaction(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // const uint8_t (*BuiltCommitmentTransaction_get_txid(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr))[32];
-       export function BuiltCommitmentTransaction_get_txid(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BuiltCommitmentTransaction_get_txid(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void BuiltCommitmentTransaction_set_txid(struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function BuiltCommitmentTransaction_set_txid(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BuiltCommitmentTransaction_set_txid(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKBuiltCommitmentTransaction BuiltCommitmentTransaction_new(struct LDKTransaction transaction_arg, struct LDKThirtyTwoBytes txid_arg);
-       export function BuiltCommitmentTransaction_new(transaction_arg: Uint8Array, txid_arg: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BuiltCommitmentTransaction_new(encodeArray(transaction_arg), encodeArray(txid_arg));
-               return nativeResponseValue;
-       }
-       // uint64_t BuiltCommitmentTransaction_clone_ptr(LDKBuiltCommitmentTransaction *NONNULL_PTR arg);
-       export function BuiltCommitmentTransaction_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BuiltCommitmentTransaction_clone_ptr(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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BuiltCommitmentTransaction_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.BuiltCommitmentTransaction_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // 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);
-       export function BuiltCommitmentTransaction_get_sighash_all(this_arg: number, funding_redeemscript: Uint8Array, channel_value_satoshis: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BuiltCommitmentTransaction_get_sighash_all(this_arg, encodeArray(funding_redeemscript), channel_value_satoshis);
-               return decodeArray(nativeResponseValue);
-       }
-       // MUST_USE_RES struct LDKSignature BuiltCommitmentTransaction_sign(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_arg, const uint8_t (*funding_key)[32], struct LDKu8slice funding_redeemscript, uint64_t channel_value_satoshis);
-       export function BuiltCommitmentTransaction_sign(this_arg: number, funding_key: Uint8Array, funding_redeemscript: Uint8Array, channel_value_satoshis: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BuiltCommitmentTransaction_sign(this_arg, encodeArray(funding_key), encodeArray(funding_redeemscript), channel_value_satoshis);
-               return decodeArray(nativeResponseValue);
-       }
-       // void ClosingTransaction_free(struct LDKClosingTransaction this_obj);
-       export function ClosingTransaction_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingTransaction_free(this_obj);
-               // debug statements here
-       }
-       // uint64_t ClosingTransaction_clone_ptr(LDKClosingTransaction *NONNULL_PTR arg);
-       export function ClosingTransaction_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingTransaction_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKClosingTransaction ClosingTransaction_clone(const struct LDKClosingTransaction *NONNULL_PTR orig);
-       export function ClosingTransaction_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingTransaction_clone(orig);
-               return nativeResponseValue;
-       }
-       // uint64_t ClosingTransaction_hash(const struct LDKClosingTransaction *NONNULL_PTR o);
-       export function ClosingTransaction_hash(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingTransaction_hash(o);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKClosingTransaction ClosingTransaction_new(uint64_t to_holder_value_sat, uint64_t to_counterparty_value_sat, struct LDKCVec_u8Z to_holder_script, struct LDKCVec_u8Z to_counterparty_script, struct LDKOutPoint funding_outpoint);
-       export function ClosingTransaction_new(to_holder_value_sat: number, to_counterparty_value_sat: number, to_holder_script: Uint8Array, to_counterparty_script: Uint8Array, funding_outpoint: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingTransaction_new(to_holder_value_sat, to_counterparty_value_sat, encodeArray(to_holder_script), encodeArray(to_counterparty_script), funding_outpoint);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKTrustedClosingTransaction ClosingTransaction_trust(const struct LDKClosingTransaction *NONNULL_PTR this_arg);
-       export function ClosingTransaction_trust(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingTransaction_trust(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_TrustedClosingTransactionNoneZ ClosingTransaction_verify(const struct LDKClosingTransaction *NONNULL_PTR this_arg, struct LDKOutPoint funding_outpoint);
-       export function ClosingTransaction_verify(this_arg: number, funding_outpoint: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingTransaction_verify(this_arg, funding_outpoint);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES uint64_t ClosingTransaction_to_holder_value_sat(const struct LDKClosingTransaction *NONNULL_PTR this_arg);
-       export function ClosingTransaction_to_holder_value_sat(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingTransaction_to_holder_value_sat(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES uint64_t ClosingTransaction_to_counterparty_value_sat(const struct LDKClosingTransaction *NONNULL_PTR this_arg);
-       export function ClosingTransaction_to_counterparty_value_sat(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingTransaction_to_counterparty_value_sat(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKu8slice ClosingTransaction_to_holder_script(const struct LDKClosingTransaction *NONNULL_PTR this_arg);
-       export function ClosingTransaction_to_holder_script(this_arg: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingTransaction_to_holder_script(this_arg);
-               return decodeArray(nativeResponseValue);
-       }
-       // MUST_USE_RES struct LDKu8slice ClosingTransaction_to_counterparty_script(const struct LDKClosingTransaction *NONNULL_PTR this_arg);
-       export function ClosingTransaction_to_counterparty_script(this_arg: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ClosingTransaction_to_counterparty_script(this_arg);
-               return decodeArray(nativeResponseValue);
-       }
-       // void TrustedClosingTransaction_free(struct LDKTrustedClosingTransaction this_obj);
-       export function TrustedClosingTransaction_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.TrustedClosingTransaction_free(this_obj);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKTransaction TrustedClosingTransaction_built_transaction(const struct LDKTrustedClosingTransaction *NONNULL_PTR this_arg);
-       export function TrustedClosingTransaction_built_transaction(this_arg: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.TrustedClosingTransaction_built_transaction(this_arg);
-               return decodeArray(nativeResponseValue);
-       }
-       // MUST_USE_RES struct LDKThirtyTwoBytes TrustedClosingTransaction_get_sighash_all(const struct LDKTrustedClosingTransaction *NONNULL_PTR this_arg, struct LDKu8slice funding_redeemscript, uint64_t channel_value_satoshis);
-       export function TrustedClosingTransaction_get_sighash_all(this_arg: number, funding_redeemscript: Uint8Array, channel_value_satoshis: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.TrustedClosingTransaction_get_sighash_all(this_arg, encodeArray(funding_redeemscript), channel_value_satoshis);
-               return decodeArray(nativeResponseValue);
-       }
-       // MUST_USE_RES struct LDKSignature TrustedClosingTransaction_sign(const struct LDKTrustedClosingTransaction *NONNULL_PTR this_arg, const uint8_t (*funding_key)[32], struct LDKu8slice funding_redeemscript, uint64_t channel_value_satoshis);
-       export function TrustedClosingTransaction_sign(this_arg: number, funding_key: Uint8Array, funding_redeemscript: Uint8Array, channel_value_satoshis: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.TrustedClosingTransaction_sign(this_arg, encodeArray(funding_key), encodeArray(funding_redeemscript), channel_value_satoshis);
-               return decodeArray(nativeResponseValue);
-       }
-       // void CommitmentTransaction_free(struct LDKCommitmentTransaction this_obj);
-       export function CommitmentTransaction_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentTransaction_free(this_obj);
-               // debug statements here
-       }
-       // uint64_t CommitmentTransaction_clone_ptr(LDKCommitmentTransaction *NONNULL_PTR arg);
-       export function CommitmentTransaction_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentTransaction_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCommitmentTransaction CommitmentTransaction_clone(const struct LDKCommitmentTransaction *NONNULL_PTR orig);
-       export function CommitmentTransaction_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentTransaction_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z CommitmentTransaction_write(const struct LDKCommitmentTransaction *NONNULL_PTR obj);
-       export function CommitmentTransaction_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentTransaction_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.CommitmentTransaction_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES uint64_t CommitmentTransaction_commitment_number(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
-       export function CommitmentTransaction_commitment_number(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentTransaction_commitment_number(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES uint64_t CommitmentTransaction_to_broadcaster_value_sat(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
-       export function CommitmentTransaction_to_broadcaster_value_sat(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentTransaction_to_broadcaster_value_sat(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES uint64_t CommitmentTransaction_to_countersignatory_value_sat(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
-       export function CommitmentTransaction_to_countersignatory_value_sat(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentTransaction_to_countersignatory_value_sat(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES uint32_t CommitmentTransaction_feerate_per_kw(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
-       export function CommitmentTransaction_feerate_per_kw(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentTransaction_feerate_per_kw(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKTrustedCommitmentTransaction CommitmentTransaction_trust(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
-       export function CommitmentTransaction_trust(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentTransaction_trust(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_TrustedCommitmentTransactionNoneZ CommitmentTransaction_verify(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg, const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR channel_parameters, const struct LDKChannelPublicKeys *NONNULL_PTR broadcaster_keys, const struct LDKChannelPublicKeys *NONNULL_PTR countersignatory_keys);
-       export function CommitmentTransaction_verify(this_arg: number, channel_parameters: number, broadcaster_keys: number, countersignatory_keys: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CommitmentTransaction_verify(this_arg, channel_parameters, broadcaster_keys, countersignatory_keys);
-               return nativeResponseValue;
-       }
-       // void TrustedCommitmentTransaction_free(struct LDKTrustedCommitmentTransaction this_obj);
-       export function TrustedCommitmentTransaction_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.TrustedCommitmentTransaction_free(this_obj);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKThirtyTwoBytes TrustedCommitmentTransaction_txid(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
-       export function TrustedCommitmentTransaction_txid(this_arg: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.TrustedCommitmentTransaction_txid(this_arg);
-               return decodeArray(nativeResponseValue);
-       }
-       // MUST_USE_RES struct LDKBuiltCommitmentTransaction TrustedCommitmentTransaction_built_transaction(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
-       export function TrustedCommitmentTransaction_built_transaction(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.TrustedCommitmentTransaction_built_transaction(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKTxCreationKeys TrustedCommitmentTransaction_keys(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
-       export function TrustedCommitmentTransaction_keys(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.TrustedCommitmentTransaction_keys(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES bool TrustedCommitmentTransaction_opt_anchors(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
-       export function TrustedCommitmentTransaction_opt_anchors(this_arg: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.TrustedCommitmentTransaction_opt_anchors(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_CVec_SignatureZNoneZ TrustedCommitmentTransaction_get_htlc_sigs(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg, const uint8_t (*htlc_base_key)[32], const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR channel_parameters);
-       export function TrustedCommitmentTransaction_get_htlc_sigs(this_arg: number, htlc_base_key: Uint8Array, channel_parameters: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.TrustedCommitmentTransaction_get_htlc_sigs(this_arg, encodeArray(htlc_base_key), channel_parameters);
-               return nativeResponseValue;
-       }
-       // uint64_t get_commitment_transaction_number_obscure_factor(struct LDKPublicKey broadcaster_payment_basepoint, struct LDKPublicKey countersignatory_payment_basepoint, bool outbound_from_broadcaster);
-       export function get_commitment_transaction_number_obscure_factor(broadcaster_payment_basepoint: Uint8Array, countersignatory_payment_basepoint: Uint8Array, outbound_from_broadcaster: boolean): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.get_commitment_transaction_number_obscure_factor(encodeArray(broadcaster_payment_basepoint), encodeArray(countersignatory_payment_basepoint), outbound_from_broadcaster);
-               return nativeResponseValue;
-       }
-       // bool InitFeatures_eq(const struct LDKInitFeatures *NONNULL_PTR a, const struct LDKInitFeatures *NONNULL_PTR b);
-       export function InitFeatures_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InitFeatures_eq(a, b);
-               return nativeResponseValue;
-       }
-       // bool NodeFeatures_eq(const struct LDKNodeFeatures *NONNULL_PTR a, const struct LDKNodeFeatures *NONNULL_PTR b);
-       export function NodeFeatures_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeFeatures_eq(a, b);
-               return nativeResponseValue;
-       }
-       // bool ChannelFeatures_eq(const struct LDKChannelFeatures *NONNULL_PTR a, const struct LDKChannelFeatures *NONNULL_PTR b);
-       export function ChannelFeatures_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelFeatures_eq(a, b);
-               return nativeResponseValue;
-       }
-       // bool InvoiceFeatures_eq(const struct LDKInvoiceFeatures *NONNULL_PTR a, const struct LDKInvoiceFeatures *NONNULL_PTR b);
-       export function InvoiceFeatures_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InvoiceFeatures_eq(a, b);
-               return nativeResponseValue;
-       }
-       // bool ChannelTypeFeatures_eq(const struct LDKChannelTypeFeatures *NONNULL_PTR a, const struct LDKChannelTypeFeatures *NONNULL_PTR b);
-       export function ChannelTypeFeatures_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelTypeFeatures_eq(a, b);
-               return nativeResponseValue;
-       }
-       // uint64_t InitFeatures_clone_ptr(LDKInitFeatures *NONNULL_PTR arg);
-       export function InitFeatures_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InitFeatures_clone_ptr(arg);
-               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;
-       }
-       // uint64_t NodeFeatures_clone_ptr(LDKNodeFeatures *NONNULL_PTR arg);
-       export function NodeFeatures_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeFeatures_clone_ptr(arg);
-               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;
-       }
-       // uint64_t ChannelFeatures_clone_ptr(LDKChannelFeatures *NONNULL_PTR arg);
-       export function ChannelFeatures_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelFeatures_clone_ptr(arg);
-               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;
-       }
-       // uint64_t InvoiceFeatures_clone_ptr(LDKInvoiceFeatures *NONNULL_PTR arg);
-       export function InvoiceFeatures_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InvoiceFeatures_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKInvoiceFeatures InvoiceFeatures_clone(const struct LDKInvoiceFeatures *NONNULL_PTR orig);
-       export function InvoiceFeatures_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InvoiceFeatures_clone(orig);
-               return nativeResponseValue;
-       }
-       // uint64_t ChannelTypeFeatures_clone_ptr(LDKChannelTypeFeatures *NONNULL_PTR arg);
-       export function ChannelTypeFeatures_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelTypeFeatures_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKChannelTypeFeatures ChannelTypeFeatures_clone(const struct LDKChannelTypeFeatures *NONNULL_PTR orig);
-       export function ChannelTypeFeatures_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelTypeFeatures_clone(orig);
-               return nativeResponseValue;
-       }
-       // void InitFeatures_free(struct LDKInitFeatures this_obj);
-       export function InitFeatures_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InitFeatures_free(this_obj);
-               // debug statements here
-       }
-       // void NodeFeatures_free(struct LDKNodeFeatures this_obj);
-       export function NodeFeatures_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeFeatures_free(this_obj);
-               // debug statements here
-       }
-       // void ChannelFeatures_free(struct LDKChannelFeatures this_obj);
-       export function ChannelFeatures_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelFeatures_free(this_obj);
-               // debug statements here
-       }
-       // void InvoiceFeatures_free(struct LDKInvoiceFeatures this_obj);
-       export function InvoiceFeatures_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InvoiceFeatures_free(this_obj);
-               // debug statements here
-       }
-       // void ChannelTypeFeatures_free(struct LDKChannelTypeFeatures this_obj);
-       export function ChannelTypeFeatures_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelTypeFeatures_free(this_obj);
-               // debug statements here
-       }
-       // 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.InitFeatures_empty();
-               return nativeResponseValue;
-       }
-       // 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.InitFeatures_known();
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES bool InitFeatures_requires_unknown_bits(const struct LDKInitFeatures *NONNULL_PTR this_arg);
-       export function InitFeatures_requires_unknown_bits(this_arg: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InitFeatures_requires_unknown_bits(this_arg);
-               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 bool NodeFeatures_requires_unknown_bits(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
-       export function NodeFeatures_requires_unknown_bits(this_arg: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeFeatures_requires_unknown_bits(this_arg);
-               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;
-       }
-       // MUST_USE_RES bool ChannelFeatures_requires_unknown_bits(const struct LDKChannelFeatures *NONNULL_PTR this_arg);
-       export function ChannelFeatures_requires_unknown_bits(this_arg: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelFeatures_requires_unknown_bits(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKInvoiceFeatures InvoiceFeatures_empty(void);
-       export function InvoiceFeatures_empty(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InvoiceFeatures_empty();
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKInvoiceFeatures InvoiceFeatures_known(void);
-       export function InvoiceFeatures_known(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InvoiceFeatures_known();
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES bool InvoiceFeatures_requires_unknown_bits(const struct LDKInvoiceFeatures *NONNULL_PTR this_arg);
-       export function InvoiceFeatures_requires_unknown_bits(this_arg: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InvoiceFeatures_requires_unknown_bits(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKChannelTypeFeatures ChannelTypeFeatures_empty(void);
-       export function ChannelTypeFeatures_empty(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelTypeFeatures_empty();
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKChannelTypeFeatures ChannelTypeFeatures_known(void);
-       export function ChannelTypeFeatures_known(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelTypeFeatures_known();
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES bool ChannelTypeFeatures_requires_unknown_bits(const struct LDKChannelTypeFeatures *NONNULL_PTR this_arg);
-       export function ChannelTypeFeatures_requires_unknown_bits(this_arg: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelTypeFeatures_requires_unknown_bits(this_arg);
-               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 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 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_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;
-       }
-       // 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 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 LDKCVec_u8Z InvoiceFeatures_write(const struct LDKInvoiceFeatures *NONNULL_PTR obj);
-       export function InvoiceFeatures_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InvoiceFeatures_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_InvoiceFeaturesDecodeErrorZ InvoiceFeatures_read(struct LDKu8slice ser);
-       export function InvoiceFeatures_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InvoiceFeatures_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z ChannelTypeFeatures_write(const struct LDKChannelTypeFeatures *NONNULL_PTR obj);
-       export function ChannelTypeFeatures_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelTypeFeatures_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ ChannelTypeFeatures_read(struct LDKu8slice ser);
-       export function ChannelTypeFeatures_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelTypeFeatures_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // void ShutdownScript_free(struct LDKShutdownScript this_obj);
-       export function ShutdownScript_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ShutdownScript_free(this_obj);
-               // debug statements here
-       }
-       // uint64_t ShutdownScript_clone_ptr(LDKShutdownScript *NONNULL_PTR arg);
-       export function ShutdownScript_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ShutdownScript_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKShutdownScript ShutdownScript_clone(const struct LDKShutdownScript *NONNULL_PTR orig);
-       export function ShutdownScript_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ShutdownScript_clone(orig);
-               return nativeResponseValue;
-       }
-       // void InvalidShutdownScript_free(struct LDKInvalidShutdownScript this_obj);
-       export function InvalidShutdownScript_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InvalidShutdownScript_free(this_obj);
-               // debug statements here
-       }
-       // struct LDKu8slice InvalidShutdownScript_get_script(const struct LDKInvalidShutdownScript *NONNULL_PTR this_ptr);
-       export function InvalidShutdownScript_get_script(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InvalidShutdownScript_get_script(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void InvalidShutdownScript_set_script(struct LDKInvalidShutdownScript *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
-       export function InvalidShutdownScript_set_script(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InvalidShutdownScript_set_script(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKInvalidShutdownScript InvalidShutdownScript_new(struct LDKCVec_u8Z script_arg);
-       export function InvalidShutdownScript_new(script_arg: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InvalidShutdownScript_new(encodeArray(script_arg));
-               return nativeResponseValue;
-       }
-       // uint64_t InvalidShutdownScript_clone_ptr(LDKInvalidShutdownScript *NONNULL_PTR arg);
-       export function InvalidShutdownScript_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InvalidShutdownScript_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKInvalidShutdownScript InvalidShutdownScript_clone(const struct LDKInvalidShutdownScript *NONNULL_PTR orig);
-       export function InvalidShutdownScript_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InvalidShutdownScript_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z ShutdownScript_write(const struct LDKShutdownScript *NONNULL_PTR obj);
-       export function ShutdownScript_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ShutdownScript_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_ShutdownScriptDecodeErrorZ ShutdownScript_read(struct LDKu8slice ser);
-       export function ShutdownScript_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ShutdownScript_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKShutdownScript ShutdownScript_new_p2wpkh(const uint8_t (*pubkey_hash)[20]);
-       export function ShutdownScript_new_p2wpkh(pubkey_hash: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ShutdownScript_new_p2wpkh(encodeArray(pubkey_hash));
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKShutdownScript ShutdownScript_new_p2wsh(const uint8_t (*script_hash)[32]);
-       export function ShutdownScript_new_p2wsh(script_hash: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ShutdownScript_new_p2wsh(encodeArray(script_hash));
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ ShutdownScript_new_witness_program(uint8_t version, struct LDKu8slice program);
-       export function ShutdownScript_new_witness_program(version: number, program: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ShutdownScript_new_witness_program(version, encodeArray(program));
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCVec_u8Z ShutdownScript_into_inner(struct LDKShutdownScript this_arg);
-       export function ShutdownScript_into_inner(this_arg: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ShutdownScript_into_inner(this_arg);
-               return decodeArray(nativeResponseValue);
-       }
-       // MUST_USE_RES struct LDKPublicKey ShutdownScript_as_legacy_pubkey(const struct LDKShutdownScript *NONNULL_PTR this_arg);
-       export function ShutdownScript_as_legacy_pubkey(this_arg: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ShutdownScript_as_legacy_pubkey(this_arg);
-               return decodeArray(nativeResponseValue);
-       }
-       // MUST_USE_RES bool ShutdownScript_is_compatible(const struct LDKShutdownScript *NONNULL_PTR this_arg, const struct LDKInitFeatures *NONNULL_PTR features);
-       export function ShutdownScript_is_compatible(this_arg: number, features: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ShutdownScript_is_compatible(this_arg, features);
-               return nativeResponseValue;
-       }
-       // void CustomMessageReader_free(struct LDKCustomMessageReader this_ptr);
-       export function CustomMessageReader_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CustomMessageReader_free(this_ptr);
-               // debug statements here
-       }
-       // uint64_t Type_clone_ptr(LDKType *NONNULL_PTR arg);
-       export function Type_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Type_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKType Type_clone(const struct LDKType *NONNULL_PTR orig);
-       export function Type_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Type_clone(orig);
-               return nativeResponseValue;
-       }
-       // void Type_free(struct LDKType this_ptr);
-       export function Type_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Type_free(this_ptr);
-               // debug statements here
-       }
-       // void NodeId_free(struct LDKNodeId this_obj);
-       export function NodeId_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeId_free(this_obj);
-               // debug statements here
-       }
-       // uint64_t NodeId_clone_ptr(LDKNodeId *NONNULL_PTR arg);
-       export function NodeId_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeId_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKNodeId NodeId_clone(const struct LDKNodeId *NONNULL_PTR orig);
-       export function NodeId_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeId_clone(orig);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKNodeId NodeId_from_pubkey(struct LDKPublicKey pubkey);
-       export function NodeId_from_pubkey(pubkey: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeId_from_pubkey(encodeArray(pubkey));
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKu8slice NodeId_as_slice(const struct LDKNodeId *NONNULL_PTR this_arg);
-       export function NodeId_as_slice(this_arg: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeId_as_slice(this_arg);
-               return decodeArray(nativeResponseValue);
-       }
-       // uint64_t NodeId_hash(const struct LDKNodeId *NONNULL_PTR o);
-       export function NodeId_hash(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeId_hash(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z NodeId_write(const struct LDKNodeId *NONNULL_PTR obj);
-       export function NodeId_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeId_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_NodeIdDecodeErrorZ NodeId_read(struct LDKu8slice ser);
-       export function NodeId_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeId_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // void NetworkGraph_free(struct LDKNetworkGraph this_obj);
-       export function NetworkGraph_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetworkGraph_free(this_obj);
-               // debug statements here
-       }
-       // uint64_t NetworkGraph_clone_ptr(LDKNetworkGraph *NONNULL_PTR arg);
-       export function NetworkGraph_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetworkGraph_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKNetworkGraph NetworkGraph_clone(const struct LDKNetworkGraph *NONNULL_PTR orig);
-       export function NetworkGraph_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetworkGraph_clone(orig);
-               return nativeResponseValue;
-       }
-       // void ReadOnlyNetworkGraph_free(struct LDKReadOnlyNetworkGraph this_obj);
-       export function ReadOnlyNetworkGraph_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ReadOnlyNetworkGraph_free(this_obj);
-               // debug statements here
-       }
-       // void NetworkUpdate_free(struct LDKNetworkUpdate this_ptr);
-       export function NetworkUpdate_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetworkUpdate_free(this_ptr);
-               // debug statements here
-       }
-       // uint64_t NetworkUpdate_clone_ptr(LDKNetworkUpdate *NONNULL_PTR arg);
-       export function NetworkUpdate_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetworkUpdate_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKNetworkUpdate NetworkUpdate_clone(const struct LDKNetworkUpdate *NONNULL_PTR orig);
-       export function NetworkUpdate_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetworkUpdate_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKNetworkUpdate NetworkUpdate_channel_update_message(struct LDKChannelUpdate msg);
-       export function NetworkUpdate_channel_update_message(msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetworkUpdate_channel_update_message(msg);
-               return nativeResponseValue;
-       }
-       // struct LDKNetworkUpdate NetworkUpdate_channel_closed(uint64_t short_channel_id, bool is_permanent);
-       export function NetworkUpdate_channel_closed(short_channel_id: number, is_permanent: boolean): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetworkUpdate_channel_closed(short_channel_id, is_permanent);
-               return nativeResponseValue;
-       }
-       // struct LDKNetworkUpdate NetworkUpdate_node_failure(struct LDKPublicKey node_id, bool is_permanent);
-       export function NetworkUpdate_node_failure(node_id: Uint8Array, is_permanent: boolean): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetworkUpdate_node_failure(encodeArray(node_id), is_permanent);
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z NetworkUpdate_write(const struct LDKNetworkUpdate *NONNULL_PTR obj);
-       export function NetworkUpdate_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetworkUpdate_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ NetworkUpdate_read(struct LDKu8slice ser);
-       export function NetworkUpdate_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetworkUpdate_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKEventHandler NetGraphMsgHandler_as_EventHandler(const struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg);
-       export function NetGraphMsgHandler_as_EventHandler(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetGraphMsgHandler_as_EventHandler(this_arg);
-               return nativeResponseValue;
-       }
-       // void NetGraphMsgHandler_free(struct LDKNetGraphMsgHandler this_obj);
-       export function NetGraphMsgHandler_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetGraphMsgHandler_free(this_obj);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKNetGraphMsgHandler NetGraphMsgHandler_new(const struct LDKNetworkGraph *NONNULL_PTR network_graph, struct LDKCOption_AccessZ chain_access, struct LDKLogger logger);
-       export function NetGraphMsgHandler_new(network_graph: number, chain_access: number, logger: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetGraphMsgHandler_new(network_graph, chain_access, logger);
-               return nativeResponseValue;
-       }
-       // void NetGraphMsgHandler_add_chain_access(struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg, struct LDKCOption_AccessZ chain_access);
-       export function NetGraphMsgHandler_add_chain_access(this_arg: number, chain_access: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetGraphMsgHandler_add_chain_access(this_arg, chain_access);
-               // debug statements here
-       }
-       // struct LDKRoutingMessageHandler NetGraphMsgHandler_as_RoutingMessageHandler(const struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg);
-       export function NetGraphMsgHandler_as_RoutingMessageHandler(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetGraphMsgHandler_as_RoutingMessageHandler(this_arg);
-               return nativeResponseValue;
-       }
-       // struct LDKMessageSendEventsProvider NetGraphMsgHandler_as_MessageSendEventsProvider(const struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg);
-       export function NetGraphMsgHandler_as_MessageSendEventsProvider(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetGraphMsgHandler_as_MessageSendEventsProvider(this_arg);
-               return nativeResponseValue;
-       }
-       // void DirectionalChannelInfo_free(struct LDKDirectionalChannelInfo this_obj);
-       export function DirectionalChannelInfo_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DirectionalChannelInfo_free(this_obj);
-               // debug statements here
-       }
-       // 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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DirectionalChannelInfo_get_last_update(this_ptr);
-               return nativeResponseValue;
-       }
-       // void DirectionalChannelInfo_set_last_update(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, uint32_t val);
-       export function DirectionalChannelInfo_set_last_update(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DirectionalChannelInfo_set_last_update(this_ptr, val);
-               // debug statements here
-       }
-       // bool DirectionalChannelInfo_get_enabled(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
-       export function DirectionalChannelInfo_get_enabled(this_ptr: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DirectionalChannelInfo_get_enabled(this_ptr);
-               return nativeResponseValue;
-       }
-       // void DirectionalChannelInfo_set_enabled(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, bool val);
-       export function DirectionalChannelInfo_set_enabled(this_ptr: number, val: boolean): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DirectionalChannelInfo_set_enabled(this_ptr, val);
-               // debug statements here
-       }
-       // uint16_t DirectionalChannelInfo_get_cltv_expiry_delta(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
-       export function DirectionalChannelInfo_get_cltv_expiry_delta(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DirectionalChannelInfo_get_cltv_expiry_delta(this_ptr);
-               return nativeResponseValue;
-       }
-       // void DirectionalChannelInfo_set_cltv_expiry_delta(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, uint16_t val);
-       export function DirectionalChannelInfo_set_cltv_expiry_delta(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DirectionalChannelInfo_set_cltv_expiry_delta(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t DirectionalChannelInfo_get_htlc_minimum_msat(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
-       export function DirectionalChannelInfo_get_htlc_minimum_msat(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DirectionalChannelInfo_get_htlc_minimum_msat(this_ptr);
-               return nativeResponseValue;
-       }
-       // void DirectionalChannelInfo_set_htlc_minimum_msat(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, uint64_t val);
-       export function DirectionalChannelInfo_set_htlc_minimum_msat(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DirectionalChannelInfo_set_htlc_minimum_msat(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKCOption_u64Z DirectionalChannelInfo_get_htlc_maximum_msat(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
-       export function DirectionalChannelInfo_get_htlc_maximum_msat(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DirectionalChannelInfo_get_htlc_maximum_msat(this_ptr);
-               return nativeResponseValue;
-       }
-       // void DirectionalChannelInfo_set_htlc_maximum_msat(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
-       export function DirectionalChannelInfo_set_htlc_maximum_msat(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DirectionalChannelInfo_set_htlc_maximum_msat(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKRoutingFees DirectionalChannelInfo_get_fees(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
-       export function DirectionalChannelInfo_get_fees(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DirectionalChannelInfo_get_fees(this_ptr);
-               return nativeResponseValue;
-       }
-       // void DirectionalChannelInfo_set_fees(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, struct LDKRoutingFees val);
-       export function DirectionalChannelInfo_set_fees(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DirectionalChannelInfo_set_fees(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKChannelUpdate DirectionalChannelInfo_get_last_update_message(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
-       export function DirectionalChannelInfo_get_last_update_message(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DirectionalChannelInfo_get_last_update_message(this_ptr);
-               return nativeResponseValue;
-       }
-       // void DirectionalChannelInfo_set_last_update_message(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelUpdate val);
-       export function DirectionalChannelInfo_set_last_update_message(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DirectionalChannelInfo_set_last_update_message(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKDirectionalChannelInfo DirectionalChannelInfo_new(uint32_t last_update_arg, bool enabled_arg, uint16_t cltv_expiry_delta_arg, uint64_t htlc_minimum_msat_arg, struct LDKCOption_u64Z htlc_maximum_msat_arg, struct LDKRoutingFees fees_arg, struct LDKChannelUpdate last_update_message_arg);
-       export function DirectionalChannelInfo_new(last_update_arg: number, enabled_arg: boolean, cltv_expiry_delta_arg: number, htlc_minimum_msat_arg: number, htlc_maximum_msat_arg: number, fees_arg: number, last_update_message_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DirectionalChannelInfo_new(last_update_arg, enabled_arg, cltv_expiry_delta_arg, htlc_minimum_msat_arg, htlc_maximum_msat_arg, fees_arg, last_update_message_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t DirectionalChannelInfo_clone_ptr(LDKDirectionalChannelInfo *NONNULL_PTR arg);
-       export function DirectionalChannelInfo_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DirectionalChannelInfo_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DirectionalChannelInfo_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.DirectionalChannelInfo_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // void ChannelInfo_free(struct LDKChannelInfo this_obj);
-       export function ChannelInfo_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelInfo_free(this_obj);
-               // debug statements here
-       }
-       // struct LDKChannelFeatures ChannelInfo_get_features(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
-       export function ChannelInfo_get_features(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelInfo_get_features(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelInfo_set_features(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelFeatures val);
-       export function ChannelInfo_set_features(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelInfo_set_features(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKNodeId ChannelInfo_get_node_one(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
-       export function ChannelInfo_get_node_one(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelInfo_get_node_one(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelInfo_set_node_one(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKNodeId val);
-       export function ChannelInfo_set_node_one(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelInfo_set_node_one(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKDirectionalChannelInfo ChannelInfo_get_one_to_two(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
-       export function ChannelInfo_get_one_to_two(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelInfo_get_one_to_two(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelInfo_set_one_to_two(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKDirectionalChannelInfo val);
-       export function ChannelInfo_set_one_to_two(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelInfo_set_one_to_two(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKNodeId ChannelInfo_get_node_two(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
-       export function ChannelInfo_get_node_two(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelInfo_get_node_two(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelInfo_set_node_two(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKNodeId val);
-       export function ChannelInfo_set_node_two(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelInfo_set_node_two(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKDirectionalChannelInfo ChannelInfo_get_two_to_one(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
-       export function ChannelInfo_get_two_to_one(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelInfo_get_two_to_one(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelInfo_set_two_to_one(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKDirectionalChannelInfo val);
-       export function ChannelInfo_set_two_to_one(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelInfo_set_two_to_one(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKCOption_u64Z ChannelInfo_get_capacity_sats(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
-       export function ChannelInfo_get_capacity_sats(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelInfo_get_capacity_sats(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelInfo_set_capacity_sats(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
-       export function ChannelInfo_set_capacity_sats(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelInfo_set_capacity_sats(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKChannelAnnouncement ChannelInfo_get_announcement_message(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
-       export function ChannelInfo_get_announcement_message(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelInfo_get_announcement_message(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ChannelInfo_set_announcement_message(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelAnnouncement val);
-       export function ChannelInfo_set_announcement_message(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelInfo_set_announcement_message(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t ChannelInfo_clone_ptr(LDKChannelInfo *NONNULL_PTR arg);
-       export function ChannelInfo_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelInfo_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKChannelInfo ChannelInfo_clone(const struct LDKChannelInfo *NONNULL_PTR orig);
-       export function ChannelInfo_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelInfo_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z ChannelInfo_write(const struct LDKChannelInfo *NONNULL_PTR obj);
-       export function ChannelInfo_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelInfo_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // 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!");
-               }
-               const nativeResponseValue = wasm.ChannelInfo_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // void RoutingFees_free(struct LDKRoutingFees this_obj);
-       export function RoutingFees_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RoutingFees_free(this_obj);
-               // debug statements here
-       }
-       // 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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RoutingFees_get_base_msat(this_ptr);
-               return nativeResponseValue;
-       }
-       // void RoutingFees_set_base_msat(struct LDKRoutingFees *NONNULL_PTR this_ptr, uint32_t val);
-       export function RoutingFees_set_base_msat(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RoutingFees_set_base_msat(this_ptr, val);
-               // debug statements here
-       }
-       // uint32_t RoutingFees_get_proportional_millionths(const struct LDKRoutingFees *NONNULL_PTR this_ptr);
-       export function RoutingFees_get_proportional_millionths(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RoutingFees_get_proportional_millionths(this_ptr);
-               return nativeResponseValue;
-       }
-       // void RoutingFees_set_proportional_millionths(struct LDKRoutingFees *NONNULL_PTR this_ptr, uint32_t val);
-       export function RoutingFees_set_proportional_millionths(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RoutingFees_set_proportional_millionths(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKRoutingFees RoutingFees_new(uint32_t base_msat_arg, uint32_t proportional_millionths_arg);
-       export function RoutingFees_new(base_msat_arg: number, proportional_millionths_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RoutingFees_new(base_msat_arg, proportional_millionths_arg);
-               return nativeResponseValue;
-       }
-       // bool RoutingFees_eq(const struct LDKRoutingFees *NONNULL_PTR a, const struct LDKRoutingFees *NONNULL_PTR b);
-       export function RoutingFees_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RoutingFees_eq(a, b);
-               return nativeResponseValue;
-       }
-       // uint64_t RoutingFees_clone_ptr(LDKRoutingFees *NONNULL_PTR arg);
-       export function RoutingFees_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RoutingFees_clone_ptr(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;
-       }
-       // uint64_t RoutingFees_hash(const struct LDKRoutingFees *NONNULL_PTR o);
-       export function RoutingFees_hash(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RoutingFees_hash(o);
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z RoutingFees_write(const struct LDKRoutingFees *NONNULL_PTR obj);
-       export function RoutingFees_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RoutingFees_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_RoutingFeesDecodeErrorZ RoutingFees_read(struct LDKu8slice ser);
-       export function RoutingFees_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RoutingFees_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // void NodeAnnouncementInfo_free(struct LDKNodeAnnouncementInfo this_obj);
-       export function NodeAnnouncementInfo_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeAnnouncementInfo_free(this_obj);
-               // debug statements here
-       }
-       // struct LDKNodeFeatures NodeAnnouncementInfo_get_features(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr);
-       export function NodeAnnouncementInfo_get_features(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeAnnouncementInfo_get_features(this_ptr);
-               return nativeResponseValue;
-       }
-       // void NodeAnnouncementInfo_set_features(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKNodeFeatures val);
-       export function NodeAnnouncementInfo_set_features(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeAnnouncementInfo_set_features(this_ptr, val);
-               // debug statements here
-       }
-       // uint32_t NodeAnnouncementInfo_get_last_update(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr);
-       export function NodeAnnouncementInfo_get_last_update(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeAnnouncementInfo_get_last_update(this_ptr);
-               return nativeResponseValue;
-       }
-       // void NodeAnnouncementInfo_set_last_update(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, uint32_t val);
-       export function NodeAnnouncementInfo_set_last_update(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeAnnouncementInfo_set_last_update(this_ptr, val);
-               // debug statements here
-       }
-       // const uint8_t (*NodeAnnouncementInfo_get_rgb(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr))[3];
-       export function NodeAnnouncementInfo_get_rgb(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeAnnouncementInfo_get_rgb(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void NodeAnnouncementInfo_set_rgb(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKThreeBytes val);
-       export function NodeAnnouncementInfo_set_rgb(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeAnnouncementInfo_set_rgb(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // const uint8_t (*NodeAnnouncementInfo_get_alias(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr))[32];
-       export function NodeAnnouncementInfo_get_alias(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeAnnouncementInfo_get_alias(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void NodeAnnouncementInfo_set_alias(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
-       export function NodeAnnouncementInfo_set_alias(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeAnnouncementInfo_set_alias(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // void NodeAnnouncementInfo_set_addresses(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKCVec_NetAddressZ val);
-       export function NodeAnnouncementInfo_set_addresses(this_ptr: number, val: number[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeAnnouncementInfo_set_addresses(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKNodeAnnouncement NodeAnnouncementInfo_get_announcement_message(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr);
-       export function NodeAnnouncementInfo_get_announcement_message(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeAnnouncementInfo_get_announcement_message(this_ptr);
-               return nativeResponseValue;
-       }
-       // void NodeAnnouncementInfo_set_announcement_message(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKNodeAnnouncement val);
-       export function NodeAnnouncementInfo_set_announcement_message(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeAnnouncementInfo_set_announcement_message(this_ptr, val);
-               // debug statements here
-       }
-       // 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);
-       export function NodeAnnouncementInfo_new(features_arg: number, last_update_arg: number, rgb_arg: Uint8Array, alias_arg: Uint8Array, addresses_arg: number[], announcement_message_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeAnnouncementInfo_new(features_arg, last_update_arg, encodeArray(rgb_arg), encodeArray(alias_arg), addresses_arg, announcement_message_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t NodeAnnouncementInfo_clone_ptr(LDKNodeAnnouncementInfo *NONNULL_PTR arg);
-       export function NodeAnnouncementInfo_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeAnnouncementInfo_clone_ptr(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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeAnnouncementInfo_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ NodeAnnouncementInfo_read(struct LDKu8slice ser);
-       export function NodeAnnouncementInfo_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeAnnouncementInfo_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // void NodeInfo_free(struct LDKNodeInfo this_obj);
-       export function NodeInfo_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeInfo_free(this_obj);
-               // debug statements here
-       }
-       // 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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeInfo_set_channels(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKRoutingFees NodeInfo_get_lowest_inbound_channel_fees(const struct LDKNodeInfo *NONNULL_PTR this_ptr);
-       export function NodeInfo_get_lowest_inbound_channel_fees(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeInfo_get_lowest_inbound_channel_fees(this_ptr);
-               return nativeResponseValue;
-       }
-       // void NodeInfo_set_lowest_inbound_channel_fees(struct LDKNodeInfo *NONNULL_PTR this_ptr, struct LDKRoutingFees val);
-       export function NodeInfo_set_lowest_inbound_channel_fees(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeInfo_set_lowest_inbound_channel_fees(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKNodeAnnouncementInfo NodeInfo_get_announcement_info(const struct LDKNodeInfo *NONNULL_PTR this_ptr);
-       export function NodeInfo_get_announcement_info(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeInfo_get_announcement_info(this_ptr);
-               return nativeResponseValue;
-       }
-       // void NodeInfo_set_announcement_info(struct LDKNodeInfo *NONNULL_PTR this_ptr, struct LDKNodeAnnouncementInfo val);
-       export function NodeInfo_set_announcement_info(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeInfo_set_announcement_info(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKNodeInfo NodeInfo_new(struct LDKCVec_u64Z channels_arg, struct LDKRoutingFees lowest_inbound_channel_fees_arg, struct LDKNodeAnnouncementInfo announcement_info_arg);
-       export function NodeInfo_new(channels_arg: number[], lowest_inbound_channel_fees_arg: number, announcement_info_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeInfo_new(channels_arg, lowest_inbound_channel_fees_arg, announcement_info_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t NodeInfo_clone_ptr(LDKNodeInfo *NONNULL_PTR arg);
-       export function NodeInfo_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeInfo_clone_ptr(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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeInfo_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_NodeInfoDecodeErrorZ NodeInfo_read(struct LDKu8slice ser);
-       export function NodeInfo_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NodeInfo_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z NetworkGraph_write(const struct LDKNetworkGraph *NONNULL_PTR obj);
-       export function NetworkGraph_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetworkGraph_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_NetworkGraphDecodeErrorZ NetworkGraph_read(struct LDKu8slice ser);
-       export function NetworkGraph_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetworkGraph_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKNetworkGraph NetworkGraph_new(struct LDKThirtyTwoBytes genesis_hash);
-       export function NetworkGraph_new(genesis_hash: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetworkGraph_new(encodeArray(genesis_hash));
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKReadOnlyNetworkGraph NetworkGraph_read_only(const struct LDKNetworkGraph *NONNULL_PTR this_arg);
-       export function NetworkGraph_read_only(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetworkGraph_read_only(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_node_from_announcement(const struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKNodeAnnouncement *NONNULL_PTR msg);
-       export function NetworkGraph_update_node_from_announcement(this_arg: number, msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetworkGraph_update_node_from_announcement(this_arg, msg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_node_from_unsigned_announcement(const struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR msg);
-       export function NetworkGraph_update_node_from_unsigned_announcement(this_arg: number, msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetworkGraph_update_node_from_unsigned_announcement(this_arg, msg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_channel_from_announcement(const struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKChannelAnnouncement *NONNULL_PTR msg, struct LDKCOption_AccessZ chain_access);
-       export function NetworkGraph_update_channel_from_announcement(this_arg: number, msg: number, chain_access: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetworkGraph_update_channel_from_announcement(this_arg, msg, chain_access);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_channel_from_unsigned_announcement(const struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg, struct LDKCOption_AccessZ chain_access);
-       export function NetworkGraph_update_channel_from_unsigned_announcement(this_arg: number, msg: number, chain_access: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetworkGraph_update_channel_from_unsigned_announcement(this_arg, msg, chain_access);
-               return nativeResponseValue;
-       }
-       // void NetworkGraph_close_channel_from_update(const struct LDKNetworkGraph *NONNULL_PTR this_arg, uint64_t short_channel_id, bool is_permanent);
-       export function NetworkGraph_close_channel_from_update(this_arg: number, short_channel_id: number, is_permanent: boolean): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetworkGraph_close_channel_from_update(this_arg, short_channel_id, is_permanent);
-               // debug statements here
-       }
-       // void NetworkGraph_fail_node(const struct LDKNetworkGraph *NONNULL_PTR this_arg, struct LDKPublicKey _node_id, bool is_permanent);
-       export function NetworkGraph_fail_node(this_arg: number, _node_id: Uint8Array, is_permanent: boolean): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetworkGraph_fail_node(this_arg, encodeArray(_node_id), is_permanent);
-               // debug statements here
-       }
-       // void NetworkGraph_remove_stale_channels_with_time(const struct LDKNetworkGraph *NONNULL_PTR this_arg, uint64_t current_time_unix);
-       export function NetworkGraph_remove_stale_channels_with_time(this_arg: number, current_time_unix: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetworkGraph_remove_stale_channels_with_time(this_arg, current_time_unix);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_channel(const struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKChannelUpdate *NONNULL_PTR msg);
-       export function NetworkGraph_update_channel(this_arg: number, msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetworkGraph_update_channel(this_arg, msg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_channel_unsigned(const struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKUnsignedChannelUpdate *NONNULL_PTR msg);
-       export function NetworkGraph_update_channel_unsigned(this_arg: number, msg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.NetworkGraph_update_channel_unsigned(this_arg, msg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCOption_CVec_NetAddressZZ ReadOnlyNetworkGraph_get_addresses(const struct LDKReadOnlyNetworkGraph *NONNULL_PTR this_arg, struct LDKPublicKey pubkey);
-       export function ReadOnlyNetworkGraph_get_addresses(this_arg: number, pubkey: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ReadOnlyNetworkGraph_get_addresses(this_arg, encodeArray(pubkey));
-               return nativeResponseValue;
-       }
-       // void RouteHop_free(struct LDKRouteHop this_obj);
-       export function RouteHop_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHop_free(this_obj);
-               // 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) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHop_get_pubkey(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void RouteHop_set_pubkey(struct LDKRouteHop *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function RouteHop_set_pubkey(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHop_set_pubkey(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKNodeFeatures RouteHop_get_node_features(const struct LDKRouteHop *NONNULL_PTR this_ptr);
-       export function RouteHop_get_node_features(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHop_get_node_features(this_ptr);
-               return nativeResponseValue;
-       }
-       // void RouteHop_set_node_features(struct LDKRouteHop *NONNULL_PTR this_ptr, struct LDKNodeFeatures val);
-       export function RouteHop_set_node_features(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHop_set_node_features(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t RouteHop_get_short_channel_id(const struct LDKRouteHop *NONNULL_PTR this_ptr);
-       export function RouteHop_get_short_channel_id(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHop_get_short_channel_id(this_ptr);
-               return nativeResponseValue;
-       }
-       // void RouteHop_set_short_channel_id(struct LDKRouteHop *NONNULL_PTR this_ptr, uint64_t val);
-       export function RouteHop_set_short_channel_id(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHop_set_short_channel_id(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKChannelFeatures RouteHop_get_channel_features(const struct LDKRouteHop *NONNULL_PTR this_ptr);
-       export function RouteHop_get_channel_features(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHop_get_channel_features(this_ptr);
-               return nativeResponseValue;
-       }
-       // void RouteHop_set_channel_features(struct LDKRouteHop *NONNULL_PTR this_ptr, struct LDKChannelFeatures val);
-       export function RouteHop_set_channel_features(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHop_set_channel_features(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t RouteHop_get_fee_msat(const struct LDKRouteHop *NONNULL_PTR this_ptr);
-       export function RouteHop_get_fee_msat(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHop_get_fee_msat(this_ptr);
-               return nativeResponseValue;
-       }
-       // void RouteHop_set_fee_msat(struct LDKRouteHop *NONNULL_PTR this_ptr, uint64_t val);
-       export function RouteHop_set_fee_msat(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHop_set_fee_msat(this_ptr, val);
-               // debug statements here
-       }
-       // uint32_t RouteHop_get_cltv_expiry_delta(const struct LDKRouteHop *NONNULL_PTR this_ptr);
-       export function RouteHop_get_cltv_expiry_delta(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHop_get_cltv_expiry_delta(this_ptr);
-               return nativeResponseValue;
-       }
-       // void RouteHop_set_cltv_expiry_delta(struct LDKRouteHop *NONNULL_PTR this_ptr, uint32_t val);
-       export function RouteHop_set_cltv_expiry_delta(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHop_set_cltv_expiry_delta(this_ptr, val);
-               // debug statements here
-       }
-       // 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);
-       export function RouteHop_new(pubkey_arg: Uint8Array, node_features_arg: number, short_channel_id_arg: number, channel_features_arg: number, fee_msat_arg: number, cltv_expiry_delta_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               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;
-       }
-       // uint64_t RouteHop_clone_ptr(LDKRouteHop *NONNULL_PTR arg);
-       export function RouteHop_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHop_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // 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.RouteHop_clone(orig);
-               return nativeResponseValue;
-       }
-       // uint64_t RouteHop_hash(const struct LDKRouteHop *NONNULL_PTR o);
-       export function RouteHop_hash(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHop_hash(o);
-               return nativeResponseValue;
-       }
-       // bool RouteHop_eq(const struct LDKRouteHop *NONNULL_PTR a, const struct LDKRouteHop *NONNULL_PTR b);
-       export function RouteHop_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHop_eq(a, b);
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z RouteHop_write(const struct LDKRouteHop *NONNULL_PTR obj);
-       export function RouteHop_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHop_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_RouteHopDecodeErrorZ RouteHop_read(struct LDKu8slice ser);
-       export function RouteHop_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHop_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // void Route_free(struct LDKRoute this_obj);
-       export function Route_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Route_free(this_obj);
-               // debug statements here
-       }
-       // struct LDKCVec_CVec_RouteHopZZ Route_get_paths(const struct LDKRoute *NONNULL_PTR this_ptr);
-       export function Route_get_paths(this_ptr: number): number[][] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Route_get_paths(this_ptr);
-               return nativeResponseValue;
-       }
-       // 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 {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Route_set_paths(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKPayee Route_get_payee(const struct LDKRoute *NONNULL_PTR this_ptr);
-       export function Route_get_payee(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Route_get_payee(this_ptr);
-               return nativeResponseValue;
-       }
-       // void Route_set_payee(struct LDKRoute *NONNULL_PTR this_ptr, struct LDKPayee val);
-       export function Route_set_payee(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Route_set_payee(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKRoute Route_new(struct LDKCVec_CVec_RouteHopZZ paths_arg, struct LDKPayee payee_arg);
-       export function Route_new(paths_arg: number[][], payee_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Route_new(paths_arg, payee_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t Route_clone_ptr(LDKRoute *NONNULL_PTR arg);
-       export function Route_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Route_clone_ptr(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;
-       }
-       // uint64_t Route_hash(const struct LDKRoute *NONNULL_PTR o);
-       export function Route_hash(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Route_hash(o);
-               return nativeResponseValue;
-       }
-       // bool Route_eq(const struct LDKRoute *NONNULL_PTR a, const struct LDKRoute *NONNULL_PTR b);
-       export function Route_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Route_eq(a, b);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES uint64_t Route_get_total_fees(const struct LDKRoute *NONNULL_PTR this_arg);
-       export function Route_get_total_fees(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Route_get_total_fees(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES uint64_t Route_get_total_amount(const struct LDKRoute *NONNULL_PTR this_arg);
-       export function Route_get_total_amount(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Route_get_total_amount(this_arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z Route_write(const struct LDKRoute *NONNULL_PTR obj);
-       export function Route_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Route_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_RouteDecodeErrorZ Route_read(struct LDKu8slice ser);
-       export function Route_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Route_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // void RouteParameters_free(struct LDKRouteParameters this_obj);
-       export function RouteParameters_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteParameters_free(this_obj);
-               // debug statements here
-       }
-       // struct LDKPayee RouteParameters_get_payee(const struct LDKRouteParameters *NONNULL_PTR this_ptr);
-       export function RouteParameters_get_payee(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteParameters_get_payee(this_ptr);
-               return nativeResponseValue;
-       }
-       // void RouteParameters_set_payee(struct LDKRouteParameters *NONNULL_PTR this_ptr, struct LDKPayee val);
-       export function RouteParameters_set_payee(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteParameters_set_payee(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t RouteParameters_get_final_value_msat(const struct LDKRouteParameters *NONNULL_PTR this_ptr);
-       export function RouteParameters_get_final_value_msat(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteParameters_get_final_value_msat(this_ptr);
-               return nativeResponseValue;
-       }
-       // void RouteParameters_set_final_value_msat(struct LDKRouteParameters *NONNULL_PTR this_ptr, uint64_t val);
-       export function RouteParameters_set_final_value_msat(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteParameters_set_final_value_msat(this_ptr, val);
-               // debug statements here
-       }
-       // uint32_t RouteParameters_get_final_cltv_expiry_delta(const struct LDKRouteParameters *NONNULL_PTR this_ptr);
-       export function RouteParameters_get_final_cltv_expiry_delta(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteParameters_get_final_cltv_expiry_delta(this_ptr);
-               return nativeResponseValue;
-       }
-       // void RouteParameters_set_final_cltv_expiry_delta(struct LDKRouteParameters *NONNULL_PTR this_ptr, uint32_t val);
-       export function RouteParameters_set_final_cltv_expiry_delta(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteParameters_set_final_cltv_expiry_delta(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKRouteParameters RouteParameters_new(struct LDKPayee payee_arg, uint64_t final_value_msat_arg, uint32_t final_cltv_expiry_delta_arg);
-       export function RouteParameters_new(payee_arg: number, final_value_msat_arg: number, final_cltv_expiry_delta_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteParameters_new(payee_arg, final_value_msat_arg, final_cltv_expiry_delta_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t RouteParameters_clone_ptr(LDKRouteParameters *NONNULL_PTR arg);
-       export function RouteParameters_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteParameters_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKRouteParameters RouteParameters_clone(const struct LDKRouteParameters *NONNULL_PTR orig);
-       export function RouteParameters_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteParameters_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z RouteParameters_write(const struct LDKRouteParameters *NONNULL_PTR obj);
-       export function RouteParameters_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteParameters_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_RouteParametersDecodeErrorZ RouteParameters_read(struct LDKu8slice ser);
-       export function RouteParameters_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteParameters_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // void Payee_free(struct LDKPayee this_obj);
-       export function Payee_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Payee_free(this_obj);
-               // debug statements here
-       }
-       // struct LDKPublicKey Payee_get_pubkey(const struct LDKPayee *NONNULL_PTR this_ptr);
-       export function Payee_get_pubkey(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Payee_get_pubkey(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void Payee_set_pubkey(struct LDKPayee *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function Payee_set_pubkey(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Payee_set_pubkey(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // struct LDKInvoiceFeatures Payee_get_features(const struct LDKPayee *NONNULL_PTR this_ptr);
-       export function Payee_get_features(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Payee_get_features(this_ptr);
-               return nativeResponseValue;
-       }
-       // void Payee_set_features(struct LDKPayee *NONNULL_PTR this_ptr, struct LDKInvoiceFeatures val);
-       export function Payee_set_features(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Payee_set_features(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKCVec_RouteHintZ Payee_get_route_hints(const struct LDKPayee *NONNULL_PTR this_ptr);
-       export function Payee_get_route_hints(this_ptr: number): number[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Payee_get_route_hints(this_ptr);
-               return nativeResponseValue;
-       }
-       // void Payee_set_route_hints(struct LDKPayee *NONNULL_PTR this_ptr, struct LDKCVec_RouteHintZ val);
-       export function Payee_set_route_hints(this_ptr: number, val: number[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Payee_set_route_hints(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKCOption_u64Z Payee_get_expiry_time(const struct LDKPayee *NONNULL_PTR this_ptr);
-       export function Payee_get_expiry_time(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Payee_get_expiry_time(this_ptr);
-               return nativeResponseValue;
-       }
-       // void Payee_set_expiry_time(struct LDKPayee *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
-       export function Payee_set_expiry_time(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Payee_set_expiry_time(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKPayee Payee_new(struct LDKPublicKey pubkey_arg, struct LDKInvoiceFeatures features_arg, struct LDKCVec_RouteHintZ route_hints_arg, struct LDKCOption_u64Z expiry_time_arg);
-       export function Payee_new(pubkey_arg: Uint8Array, features_arg: number, route_hints_arg: number[], expiry_time_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Payee_new(encodeArray(pubkey_arg), features_arg, route_hints_arg, expiry_time_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t Payee_clone_ptr(LDKPayee *NONNULL_PTR arg);
-       export function Payee_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Payee_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKPayee Payee_clone(const struct LDKPayee *NONNULL_PTR orig);
-       export function Payee_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Payee_clone(orig);
-               return nativeResponseValue;
-       }
-       // uint64_t Payee_hash(const struct LDKPayee *NONNULL_PTR o);
-       export function Payee_hash(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Payee_hash(o);
-               return nativeResponseValue;
-       }
-       // bool Payee_eq(const struct LDKPayee *NONNULL_PTR a, const struct LDKPayee *NONNULL_PTR b);
-       export function Payee_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Payee_eq(a, b);
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z Payee_write(const struct LDKPayee *NONNULL_PTR obj);
-       export function Payee_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Payee_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_PayeeDecodeErrorZ Payee_read(struct LDKu8slice ser);
-       export function Payee_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Payee_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKPayee Payee_from_node_id(struct LDKPublicKey pubkey);
-       export function Payee_from_node_id(pubkey: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Payee_from_node_id(encodeArray(pubkey));
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKPayee Payee_for_keysend(struct LDKPublicKey pubkey);
-       export function Payee_for_keysend(pubkey: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Payee_for_keysend(encodeArray(pubkey));
-               return nativeResponseValue;
-       }
-       // void RouteHint_free(struct LDKRouteHint this_obj);
-       export function RouteHint_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHint_free(this_obj);
-               // debug statements here
-       }
-       // struct LDKCVec_RouteHintHopZ RouteHint_get_a(const struct LDKRouteHint *NONNULL_PTR this_ptr);
-       export function RouteHint_get_a(this_ptr: number): number[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHint_get_a(this_ptr);
-               return nativeResponseValue;
-       }
-       // void RouteHint_set_a(struct LDKRouteHint *NONNULL_PTR this_ptr, struct LDKCVec_RouteHintHopZ val);
-       export function RouteHint_set_a(this_ptr: number, val: number[]): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHint_set_a(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKRouteHint RouteHint_new(struct LDKCVec_RouteHintHopZ a_arg);
-       export function RouteHint_new(a_arg: number[]): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHint_new(a_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t RouteHint_clone_ptr(LDKRouteHint *NONNULL_PTR arg);
-       export function RouteHint_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHint_clone_ptr(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;
-       }
-       // uint64_t RouteHint_hash(const struct LDKRouteHint *NONNULL_PTR o);
-       export function RouteHint_hash(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHint_hash(o);
-               return nativeResponseValue;
-       }
-       // bool RouteHint_eq(const struct LDKRouteHint *NONNULL_PTR a, const struct LDKRouteHint *NONNULL_PTR b);
-       export function RouteHint_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHint_eq(a, b);
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z RouteHint_write(const struct LDKRouteHint *NONNULL_PTR obj);
-       export function RouteHint_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHint_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_RouteHintDecodeErrorZ RouteHint_read(struct LDKu8slice ser);
-       export function RouteHint_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHint_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // void RouteHintHop_free(struct LDKRouteHintHop this_obj);
-       export function RouteHintHop_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHintHop_free(this_obj);
-               // debug statements here
-       }
-       // struct LDKPublicKey RouteHintHop_get_src_node_id(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
-       export function RouteHintHop_get_src_node_id(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHintHop_get_src_node_id(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void RouteHintHop_set_src_node_id(struct LDKRouteHintHop *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function RouteHintHop_set_src_node_id(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHintHop_set_src_node_id(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // uint64_t RouteHintHop_get_short_channel_id(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
-       export function RouteHintHop_get_short_channel_id(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHintHop_get_short_channel_id(this_ptr);
-               return nativeResponseValue;
-       }
-       // void RouteHintHop_set_short_channel_id(struct LDKRouteHintHop *NONNULL_PTR this_ptr, uint64_t val);
-       export function RouteHintHop_set_short_channel_id(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHintHop_set_short_channel_id(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKRoutingFees RouteHintHop_get_fees(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
-       export function RouteHintHop_get_fees(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHintHop_get_fees(this_ptr);
-               return nativeResponseValue;
-       }
-       // void RouteHintHop_set_fees(struct LDKRouteHintHop *NONNULL_PTR this_ptr, struct LDKRoutingFees val);
-       export function RouteHintHop_set_fees(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHintHop_set_fees(this_ptr, val);
-               // debug statements here
-       }
-       // uint16_t RouteHintHop_get_cltv_expiry_delta(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
-       export function RouteHintHop_get_cltv_expiry_delta(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHintHop_get_cltv_expiry_delta(this_ptr);
-               return nativeResponseValue;
-       }
-       // void RouteHintHop_set_cltv_expiry_delta(struct LDKRouteHintHop *NONNULL_PTR this_ptr, uint16_t val);
-       export function RouteHintHop_set_cltv_expiry_delta(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHintHop_set_cltv_expiry_delta(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKCOption_u64Z RouteHintHop_get_htlc_minimum_msat(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
-       export function RouteHintHop_get_htlc_minimum_msat(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHintHop_get_htlc_minimum_msat(this_ptr);
-               return nativeResponseValue;
-       }
-       // void RouteHintHop_set_htlc_minimum_msat(struct LDKRouteHintHop *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
-       export function RouteHintHop_set_htlc_minimum_msat(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHintHop_set_htlc_minimum_msat(this_ptr, val);
-               // debug statements here
-       }
-       // struct LDKCOption_u64Z RouteHintHop_get_htlc_maximum_msat(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
-       export function RouteHintHop_get_htlc_maximum_msat(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHintHop_get_htlc_maximum_msat(this_ptr);
-               return nativeResponseValue;
-       }
-       // void RouteHintHop_set_htlc_maximum_msat(struct LDKRouteHintHop *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
-       export function RouteHintHop_set_htlc_maximum_msat(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHintHop_set_htlc_maximum_msat(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKRouteHintHop RouteHintHop_new(struct LDKPublicKey src_node_id_arg, uint64_t short_channel_id_arg, struct LDKRoutingFees fees_arg, uint16_t cltv_expiry_delta_arg, struct LDKCOption_u64Z htlc_minimum_msat_arg, struct LDKCOption_u64Z htlc_maximum_msat_arg);
-       export function RouteHintHop_new(src_node_id_arg: Uint8Array, short_channel_id_arg: number, fees_arg: number, cltv_expiry_delta_arg: number, htlc_minimum_msat_arg: number, htlc_maximum_msat_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHintHop_new(encodeArray(src_node_id_arg), short_channel_id_arg, fees_arg, cltv_expiry_delta_arg, htlc_minimum_msat_arg, htlc_maximum_msat_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t RouteHintHop_clone_ptr(LDKRouteHintHop *NONNULL_PTR arg);
-       export function RouteHintHop_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHintHop_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKRouteHintHop RouteHintHop_clone(const struct LDKRouteHintHop *NONNULL_PTR orig);
-       export function RouteHintHop_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHintHop_clone(orig);
-               return nativeResponseValue;
-       }
-       // uint64_t RouteHintHop_hash(const struct LDKRouteHintHop *NONNULL_PTR o);
-       export function RouteHintHop_hash(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHintHop_hash(o);
-               return nativeResponseValue;
-       }
-       // bool RouteHintHop_eq(const struct LDKRouteHintHop *NONNULL_PTR a, const struct LDKRouteHintHop *NONNULL_PTR b);
-       export function RouteHintHop_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHintHop_eq(a, b);
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z RouteHintHop_write(const struct LDKRouteHintHop *NONNULL_PTR obj);
-       export function RouteHintHop_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHintHop_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_RouteHintHopDecodeErrorZ RouteHintHop_read(struct LDKu8slice ser);
-       export function RouteHintHop_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RouteHintHop_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_RouteLightningErrorZ find_route(struct LDKPublicKey our_node_pubkey, const struct LDKRouteParameters *NONNULL_PTR params, const struct LDKNetworkGraph *NONNULL_PTR network, struct LDKCVec_ChannelDetailsZ *first_hops, struct LDKLogger logger, const struct LDKScore *NONNULL_PTR scorer);
-       export function find_route(our_node_pubkey: Uint8Array, params: number, network: number, first_hops: number[], logger: number, scorer: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.find_route(encodeArray(our_node_pubkey), params, network, first_hops, logger, scorer);
-               return nativeResponseValue;
-       }
-       // void Score_free(struct LDKScore this_ptr);
-       export function Score_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Score_free(this_ptr);
-               // debug statements here
-       }
-       // void LockableScore_free(struct LDKLockableScore this_ptr);
-       export function LockableScore_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.LockableScore_free(this_ptr);
-               // debug statements here
-       }
-       // void MultiThreadedLockableScore_free(struct LDKMultiThreadedLockableScore this_obj);
-       export function MultiThreadedLockableScore_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MultiThreadedLockableScore_free(this_obj);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKMultiThreadedLockableScore MultiThreadedLockableScore_new(struct LDKScore score);
-       export function MultiThreadedLockableScore_new(score: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MultiThreadedLockableScore_new(score);
-               return nativeResponseValue;
-       }
-       // void Scorer_free(struct LDKScorer this_obj);
-       export function Scorer_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Scorer_free(this_obj);
-               // debug statements here
-       }
-       // void ScoringParameters_free(struct LDKScoringParameters this_obj);
-       export function ScoringParameters_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ScoringParameters_free(this_obj);
-               // debug statements here
-       }
-       // uint64_t ScoringParameters_get_base_penalty_msat(const struct LDKScoringParameters *NONNULL_PTR this_ptr);
-       export function ScoringParameters_get_base_penalty_msat(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ScoringParameters_get_base_penalty_msat(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ScoringParameters_set_base_penalty_msat(struct LDKScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
-       export function ScoringParameters_set_base_penalty_msat(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ScoringParameters_set_base_penalty_msat(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t ScoringParameters_get_failure_penalty_msat(const struct LDKScoringParameters *NONNULL_PTR this_ptr);
-       export function ScoringParameters_get_failure_penalty_msat(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ScoringParameters_get_failure_penalty_msat(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ScoringParameters_set_failure_penalty_msat(struct LDKScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
-       export function ScoringParameters_set_failure_penalty_msat(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ScoringParameters_set_failure_penalty_msat(this_ptr, val);
-               // debug statements here
-       }
-       // uint16_t ScoringParameters_get_overuse_penalty_start_1024th(const struct LDKScoringParameters *NONNULL_PTR this_ptr);
-       export function ScoringParameters_get_overuse_penalty_start_1024th(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ScoringParameters_get_overuse_penalty_start_1024th(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ScoringParameters_set_overuse_penalty_start_1024th(struct LDKScoringParameters *NONNULL_PTR this_ptr, uint16_t val);
-       export function ScoringParameters_set_overuse_penalty_start_1024th(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ScoringParameters_set_overuse_penalty_start_1024th(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t ScoringParameters_get_overuse_penalty_msat_per_1024th(const struct LDKScoringParameters *NONNULL_PTR this_ptr);
-       export function ScoringParameters_get_overuse_penalty_msat_per_1024th(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ScoringParameters_get_overuse_penalty_msat_per_1024th(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ScoringParameters_set_overuse_penalty_msat_per_1024th(struct LDKScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
-       export function ScoringParameters_set_overuse_penalty_msat_per_1024th(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ScoringParameters_set_overuse_penalty_msat_per_1024th(this_ptr, val);
-               // debug statements here
-       }
-       // uint64_t ScoringParameters_get_failure_penalty_half_life(const struct LDKScoringParameters *NONNULL_PTR this_ptr);
-       export function ScoringParameters_get_failure_penalty_half_life(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ScoringParameters_get_failure_penalty_half_life(this_ptr);
-               return nativeResponseValue;
-       }
-       // void ScoringParameters_set_failure_penalty_half_life(struct LDKScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
-       export function ScoringParameters_set_failure_penalty_half_life(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ScoringParameters_set_failure_penalty_half_life(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKScoringParameters ScoringParameters_new(uint64_t base_penalty_msat_arg, uint64_t failure_penalty_msat_arg, uint16_t overuse_penalty_start_1024th_arg, uint64_t overuse_penalty_msat_per_1024th_arg, uint64_t failure_penalty_half_life_arg);
-       export function ScoringParameters_new(base_penalty_msat_arg: number, failure_penalty_msat_arg: number, overuse_penalty_start_1024th_arg: number, overuse_penalty_msat_per_1024th_arg: number, failure_penalty_half_life_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ScoringParameters_new(base_penalty_msat_arg, failure_penalty_msat_arg, overuse_penalty_start_1024th_arg, overuse_penalty_msat_per_1024th_arg, failure_penalty_half_life_arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z ScoringParameters_write(const struct LDKScoringParameters *NONNULL_PTR obj);
-       export function ScoringParameters_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ScoringParameters_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_ScoringParametersDecodeErrorZ ScoringParameters_read(struct LDKu8slice ser);
-       export function ScoringParameters_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ScoringParameters_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKScorer Scorer_new(struct LDKScoringParameters params);
-       export function Scorer_new(params: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Scorer_new(params);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKScorer Scorer_default(void);
-       export function Scorer_default(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Scorer_default();
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKScoringParameters ScoringParameters_default(void);
-       export function ScoringParameters_default(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ScoringParameters_default();
-               return nativeResponseValue;
-       }
-       // struct LDKScore Scorer_as_Score(const struct LDKScorer *NONNULL_PTR this_arg);
-       export function Scorer_as_Score(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Scorer_as_Score(this_arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCVec_u8Z Scorer_write(const struct LDKScorer *NONNULL_PTR obj);
-       export function Scorer_write(obj: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Scorer_write(obj);
-               return decodeArray(nativeResponseValue);
-       }
-       // struct LDKCResult_ScorerDecodeErrorZ Scorer_read(struct LDKu8slice ser);
-       export function Scorer_read(ser: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Scorer_read(encodeArray(ser));
-               return nativeResponseValue;
-       }
-       // void FilesystemPersister_free(struct LDKFilesystemPersister this_obj);
-       export function FilesystemPersister_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FilesystemPersister_free(this_obj);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKFilesystemPersister FilesystemPersister_new(struct LDKStr path_to_channel_data);
-       export function FilesystemPersister_new(path_to_channel_data: String): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FilesystemPersister_new(path_to_channel_data);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKStr FilesystemPersister_get_data_dir(const struct LDKFilesystemPersister *NONNULL_PTR this_arg);
-       export function FilesystemPersister_get_data_dir(this_arg: number): String {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FilesystemPersister_get_data_dir(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_NoneErrorZ FilesystemPersister_persist_manager(struct LDKStr data_dir, const struct LDKChannelManager *NONNULL_PTR manager);
-       export function FilesystemPersister_persist_manager(data_dir: String, manager: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FilesystemPersister_persist_manager(data_dir, manager);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ FilesystemPersister_read_channelmonitors(const struct LDKFilesystemPersister *NONNULL_PTR this_arg, struct LDKKeysInterface keys_manager);
-       export function FilesystemPersister_read_channelmonitors(this_arg: number, keys_manager: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FilesystemPersister_read_channelmonitors(this_arg, keys_manager);
-               return nativeResponseValue;
-       }
-       // struct LDKPersist FilesystemPersister_as_Persist(const struct LDKFilesystemPersister *NONNULL_PTR this_arg);
-       export function FilesystemPersister_as_Persist(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.FilesystemPersister_as_Persist(this_arg);
-               return nativeResponseValue;
-       }
-       // void BackgroundProcessor_free(struct LDKBackgroundProcessor this_obj);
-       export function BackgroundProcessor_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BackgroundProcessor_free(this_obj);
-               // debug statements here
-       }
-       // void ChannelManagerPersister_free(struct LDKChannelManagerPersister this_ptr);
-       export function ChannelManagerPersister_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManagerPersister_free(this_ptr);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKBackgroundProcessor BackgroundProcessor_start(struct LDKChannelManagerPersister persister, struct LDKEventHandler event_handler, const struct LDKChainMonitor *NONNULL_PTR chain_monitor, const struct LDKChannelManager *NONNULL_PTR channel_manager, struct LDKNetGraphMsgHandler net_graph_msg_handler, const struct LDKPeerManager *NONNULL_PTR peer_manager, struct LDKLogger logger);
-       export function BackgroundProcessor_start(persister: number, event_handler: number, chain_monitor: number, channel_manager: number, net_graph_msg_handler: number, peer_manager: number, logger: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BackgroundProcessor_start(persister, event_handler, chain_monitor, channel_manager, net_graph_msg_handler, peer_manager, logger);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_NoneErrorZ BackgroundProcessor_join(struct LDKBackgroundProcessor this_arg);
-       export function BackgroundProcessor_join(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BackgroundProcessor_join(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_NoneErrorZ BackgroundProcessor_stop(struct LDKBackgroundProcessor this_arg);
-       export function BackgroundProcessor_stop(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.BackgroundProcessor_stop(this_arg);
-               return nativeResponseValue;
-       }
-       // void check_platform(void);
-       export function check_platform(): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.check_platform();
-               // debug statements here
-       }
-       // void Invoice_free(struct LDKInvoice this_obj);
-       export function Invoice_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Invoice_free(this_obj);
-               // debug statements here
-       }
-       // bool Invoice_eq(const struct LDKInvoice *NONNULL_PTR a, const struct LDKInvoice *NONNULL_PTR b);
-       export function Invoice_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Invoice_eq(a, b);
-               return nativeResponseValue;
-       }
-       // uint64_t Invoice_clone_ptr(LDKInvoice *NONNULL_PTR arg);
-       export function Invoice_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Invoice_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKInvoice Invoice_clone(const struct LDKInvoice *NONNULL_PTR orig);
-       export function Invoice_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Invoice_clone(orig);
-               return nativeResponseValue;
-       }
-       // void SignedRawInvoice_free(struct LDKSignedRawInvoice this_obj);
-       export function SignedRawInvoice_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SignedRawInvoice_free(this_obj);
-               // debug statements here
-       }
-       // bool SignedRawInvoice_eq(const struct LDKSignedRawInvoice *NONNULL_PTR a, const struct LDKSignedRawInvoice *NONNULL_PTR b);
-       export function SignedRawInvoice_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SignedRawInvoice_eq(a, b);
-               return nativeResponseValue;
-       }
-       // uint64_t SignedRawInvoice_clone_ptr(LDKSignedRawInvoice *NONNULL_PTR arg);
-       export function SignedRawInvoice_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SignedRawInvoice_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKSignedRawInvoice SignedRawInvoice_clone(const struct LDKSignedRawInvoice *NONNULL_PTR orig);
-       export function SignedRawInvoice_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SignedRawInvoice_clone(orig);
-               return nativeResponseValue;
-       }
-       // void RawInvoice_free(struct LDKRawInvoice this_obj);
-       export function RawInvoice_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RawInvoice_free(this_obj);
-               // debug statements here
-       }
-       // struct LDKRawDataPart RawInvoice_get_data(const struct LDKRawInvoice *NONNULL_PTR this_ptr);
-       export function RawInvoice_get_data(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RawInvoice_get_data(this_ptr);
-               return nativeResponseValue;
-       }
-       // void RawInvoice_set_data(struct LDKRawInvoice *NONNULL_PTR this_ptr, struct LDKRawDataPart val);
-       export function RawInvoice_set_data(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RawInvoice_set_data(this_ptr, val);
-               // debug statements here
-       }
-       // bool RawInvoice_eq(const struct LDKRawInvoice *NONNULL_PTR a, const struct LDKRawInvoice *NONNULL_PTR b);
-       export function RawInvoice_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RawInvoice_eq(a, b);
-               return nativeResponseValue;
-       }
-       // uint64_t RawInvoice_clone_ptr(LDKRawInvoice *NONNULL_PTR arg);
-       export function RawInvoice_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RawInvoice_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKRawInvoice RawInvoice_clone(const struct LDKRawInvoice *NONNULL_PTR orig);
-       export function RawInvoice_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RawInvoice_clone(orig);
-               return nativeResponseValue;
-       }
-       // void RawDataPart_free(struct LDKRawDataPart this_obj);
-       export function RawDataPart_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RawDataPart_free(this_obj);
-               // debug statements here
-       }
-       // struct LDKPositiveTimestamp RawDataPart_get_timestamp(const struct LDKRawDataPart *NONNULL_PTR this_ptr);
-       export function RawDataPart_get_timestamp(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RawDataPart_get_timestamp(this_ptr);
-               return nativeResponseValue;
-       }
-       // void RawDataPart_set_timestamp(struct LDKRawDataPart *NONNULL_PTR this_ptr, struct LDKPositiveTimestamp val);
-       export function RawDataPart_set_timestamp(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RawDataPart_set_timestamp(this_ptr, val);
-               // debug statements here
-       }
-       // bool RawDataPart_eq(const struct LDKRawDataPart *NONNULL_PTR a, const struct LDKRawDataPart *NONNULL_PTR b);
-       export function RawDataPart_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RawDataPart_eq(a, b);
-               return nativeResponseValue;
-       }
-       // uint64_t RawDataPart_clone_ptr(LDKRawDataPart *NONNULL_PTR arg);
-       export function RawDataPart_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RawDataPart_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKRawDataPart RawDataPart_clone(const struct LDKRawDataPart *NONNULL_PTR orig);
-       export function RawDataPart_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RawDataPart_clone(orig);
-               return nativeResponseValue;
-       }
-       // void PositiveTimestamp_free(struct LDKPositiveTimestamp this_obj);
-       export function PositiveTimestamp_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PositiveTimestamp_free(this_obj);
-               // debug statements here
-       }
-       // bool PositiveTimestamp_eq(const struct LDKPositiveTimestamp *NONNULL_PTR a, const struct LDKPositiveTimestamp *NONNULL_PTR b);
-       export function PositiveTimestamp_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PositiveTimestamp_eq(a, b);
-               return nativeResponseValue;
-       }
-       // uint64_t PositiveTimestamp_clone_ptr(LDKPositiveTimestamp *NONNULL_PTR arg);
-       export function PositiveTimestamp_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PositiveTimestamp_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKPositiveTimestamp PositiveTimestamp_clone(const struct LDKPositiveTimestamp *NONNULL_PTR orig);
-       export function PositiveTimestamp_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PositiveTimestamp_clone(orig);
-               return nativeResponseValue;
-       }
-       // enum LDKSiPrefix SiPrefix_clone(const enum LDKSiPrefix *NONNULL_PTR orig);
-       export function SiPrefix_clone(orig: number): SiPrefix {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SiPrefix_clone(orig);
-               return nativeResponseValue;
-       }
-       // enum LDKSiPrefix SiPrefix_milli(void);
-       export function SiPrefix_milli(): SiPrefix {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SiPrefix_milli();
-               return nativeResponseValue;
-       }
-       // enum LDKSiPrefix SiPrefix_micro(void);
-       export function SiPrefix_micro(): SiPrefix {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SiPrefix_micro();
-               return nativeResponseValue;
-       }
-       // enum LDKSiPrefix SiPrefix_nano(void);
-       export function SiPrefix_nano(): SiPrefix {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SiPrefix_nano();
-               return nativeResponseValue;
-       }
-       // enum LDKSiPrefix SiPrefix_pico(void);
-       export function SiPrefix_pico(): SiPrefix {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SiPrefix_pico();
-               return nativeResponseValue;
-       }
-       // bool SiPrefix_eq(const enum LDKSiPrefix *NONNULL_PTR a, const enum LDKSiPrefix *NONNULL_PTR b);
-       export function SiPrefix_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SiPrefix_eq(a, b);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES uint64_t SiPrefix_multiplier(const enum LDKSiPrefix *NONNULL_PTR this_arg);
-       export function SiPrefix_multiplier(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SiPrefix_multiplier(this_arg);
-               return nativeResponseValue;
-       }
-       // enum LDKCurrency Currency_clone(const enum LDKCurrency *NONNULL_PTR orig);
-       export function Currency_clone(orig: number): Currency {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Currency_clone(orig);
-               return nativeResponseValue;
-       }
-       // enum LDKCurrency Currency_bitcoin(void);
-       export function Currency_bitcoin(): Currency {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Currency_bitcoin();
-               return nativeResponseValue;
-       }
-       // enum LDKCurrency Currency_bitcoin_testnet(void);
-       export function Currency_bitcoin_testnet(): Currency {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Currency_bitcoin_testnet();
-               return nativeResponseValue;
-       }
-       // enum LDKCurrency Currency_regtest(void);
-       export function Currency_regtest(): Currency {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Currency_regtest();
-               return nativeResponseValue;
-       }
-       // enum LDKCurrency Currency_simnet(void);
-       export function Currency_simnet(): Currency {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Currency_simnet();
-               return nativeResponseValue;
-       }
-       // enum LDKCurrency Currency_signet(void);
-       export function Currency_signet(): Currency {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Currency_signet();
-               return nativeResponseValue;
-       }
-       // uint64_t Currency_hash(const enum LDKCurrency *NONNULL_PTR o);
-       export function Currency_hash(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Currency_hash(o);
-               return nativeResponseValue;
-       }
-       // bool Currency_eq(const enum LDKCurrency *NONNULL_PTR a, const enum LDKCurrency *NONNULL_PTR b);
-       export function Currency_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Currency_eq(a, b);
-               return nativeResponseValue;
-       }
-       // void Sha256_free(struct LDKSha256 this_obj);
-       export function Sha256_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Sha256_free(this_obj);
-               // debug statements here
-       }
-       // uint64_t Sha256_clone_ptr(LDKSha256 *NONNULL_PTR arg);
-       export function Sha256_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Sha256_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKSha256 Sha256_clone(const struct LDKSha256 *NONNULL_PTR orig);
-       export function Sha256_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Sha256_clone(orig);
-               return nativeResponseValue;
-       }
-       // uint64_t Sha256_hash(const struct LDKSha256 *NONNULL_PTR o);
-       export function Sha256_hash(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Sha256_hash(o);
-               return nativeResponseValue;
-       }
-       // bool Sha256_eq(const struct LDKSha256 *NONNULL_PTR a, const struct LDKSha256 *NONNULL_PTR b);
-       export function Sha256_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Sha256_eq(a, b);
-               return nativeResponseValue;
-       }
-       // void Description_free(struct LDKDescription this_obj);
-       export function Description_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Description_free(this_obj);
-               // debug statements here
-       }
-       // uint64_t Description_clone_ptr(LDKDescription *NONNULL_PTR arg);
-       export function Description_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Description_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKDescription Description_clone(const struct LDKDescription *NONNULL_PTR orig);
-       export function Description_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Description_clone(orig);
-               return nativeResponseValue;
-       }
-       // uint64_t Description_hash(const struct LDKDescription *NONNULL_PTR o);
-       export function Description_hash(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Description_hash(o);
-               return nativeResponseValue;
-       }
-       // bool Description_eq(const struct LDKDescription *NONNULL_PTR a, const struct LDKDescription *NONNULL_PTR b);
-       export function Description_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Description_eq(a, b);
-               return nativeResponseValue;
-       }
-       // void PayeePubKey_free(struct LDKPayeePubKey this_obj);
-       export function PayeePubKey_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PayeePubKey_free(this_obj);
-               // debug statements here
-       }
-       // struct LDKPublicKey PayeePubKey_get_a(const struct LDKPayeePubKey *NONNULL_PTR this_ptr);
-       export function PayeePubKey_get_a(this_ptr: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PayeePubKey_get_a(this_ptr);
-               return decodeArray(nativeResponseValue);
-       }
-       // void PayeePubKey_set_a(struct LDKPayeePubKey *NONNULL_PTR this_ptr, struct LDKPublicKey val);
-       export function PayeePubKey_set_a(this_ptr: number, val: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PayeePubKey_set_a(this_ptr, encodeArray(val));
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKPayeePubKey PayeePubKey_new(struct LDKPublicKey a_arg);
-       export function PayeePubKey_new(a_arg: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PayeePubKey_new(encodeArray(a_arg));
-               return nativeResponseValue;
-       }
-       // uint64_t PayeePubKey_clone_ptr(LDKPayeePubKey *NONNULL_PTR arg);
-       export function PayeePubKey_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PayeePubKey_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKPayeePubKey PayeePubKey_clone(const struct LDKPayeePubKey *NONNULL_PTR orig);
-       export function PayeePubKey_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PayeePubKey_clone(orig);
-               return nativeResponseValue;
-       }
-       // uint64_t PayeePubKey_hash(const struct LDKPayeePubKey *NONNULL_PTR o);
-       export function PayeePubKey_hash(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PayeePubKey_hash(o);
-               return nativeResponseValue;
-       }
-       // bool PayeePubKey_eq(const struct LDKPayeePubKey *NONNULL_PTR a, const struct LDKPayeePubKey *NONNULL_PTR b);
-       export function PayeePubKey_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PayeePubKey_eq(a, b);
-               return nativeResponseValue;
-       }
-       // void ExpiryTime_free(struct LDKExpiryTime this_obj);
-       export function ExpiryTime_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ExpiryTime_free(this_obj);
-               // debug statements here
-       }
-       // uint64_t ExpiryTime_clone_ptr(LDKExpiryTime *NONNULL_PTR arg);
-       export function ExpiryTime_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ExpiryTime_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKExpiryTime ExpiryTime_clone(const struct LDKExpiryTime *NONNULL_PTR orig);
-       export function ExpiryTime_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ExpiryTime_clone(orig);
-               return nativeResponseValue;
-       }
-       // uint64_t ExpiryTime_hash(const struct LDKExpiryTime *NONNULL_PTR o);
-       export function ExpiryTime_hash(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ExpiryTime_hash(o);
-               return nativeResponseValue;
-       }
-       // bool ExpiryTime_eq(const struct LDKExpiryTime *NONNULL_PTR a, const struct LDKExpiryTime *NONNULL_PTR b);
-       export function ExpiryTime_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ExpiryTime_eq(a, b);
-               return nativeResponseValue;
-       }
-       // void MinFinalCltvExpiry_free(struct LDKMinFinalCltvExpiry this_obj);
-       export function MinFinalCltvExpiry_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MinFinalCltvExpiry_free(this_obj);
-               // debug statements here
-       }
-       // uint64_t MinFinalCltvExpiry_get_a(const struct LDKMinFinalCltvExpiry *NONNULL_PTR this_ptr);
-       export function MinFinalCltvExpiry_get_a(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MinFinalCltvExpiry_get_a(this_ptr);
-               return nativeResponseValue;
-       }
-       // void MinFinalCltvExpiry_set_a(struct LDKMinFinalCltvExpiry *NONNULL_PTR this_ptr, uint64_t val);
-       export function MinFinalCltvExpiry_set_a(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MinFinalCltvExpiry_set_a(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKMinFinalCltvExpiry MinFinalCltvExpiry_new(uint64_t a_arg);
-       export function MinFinalCltvExpiry_new(a_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MinFinalCltvExpiry_new(a_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t MinFinalCltvExpiry_clone_ptr(LDKMinFinalCltvExpiry *NONNULL_PTR arg);
-       export function MinFinalCltvExpiry_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MinFinalCltvExpiry_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKMinFinalCltvExpiry MinFinalCltvExpiry_clone(const struct LDKMinFinalCltvExpiry *NONNULL_PTR orig);
-       export function MinFinalCltvExpiry_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MinFinalCltvExpiry_clone(orig);
-               return nativeResponseValue;
-       }
-       // uint64_t MinFinalCltvExpiry_hash(const struct LDKMinFinalCltvExpiry *NONNULL_PTR o);
-       export function MinFinalCltvExpiry_hash(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MinFinalCltvExpiry_hash(o);
-               return nativeResponseValue;
-       }
-       // bool MinFinalCltvExpiry_eq(const struct LDKMinFinalCltvExpiry *NONNULL_PTR a, const struct LDKMinFinalCltvExpiry *NONNULL_PTR b);
-       export function MinFinalCltvExpiry_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.MinFinalCltvExpiry_eq(a, b);
-               return nativeResponseValue;
-       }
-       // void Fallback_free(struct LDKFallback this_ptr);
-       export function Fallback_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Fallback_free(this_ptr);
-               // debug statements here
-       }
-       // uint64_t Fallback_clone_ptr(LDKFallback *NONNULL_PTR arg);
-       export function Fallback_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Fallback_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKFallback Fallback_clone(const struct LDKFallback *NONNULL_PTR orig);
-       export function Fallback_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Fallback_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKFallback Fallback_seg_wit_program(struct LDKu5 version, struct LDKCVec_u8Z program);
-       export function Fallback_seg_wit_program(version: number, program: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Fallback_seg_wit_program(version, encodeArray(program));
-               return nativeResponseValue;
-       }
-       // struct LDKFallback Fallback_pub_key_hash(struct LDKTwentyBytes a);
-       export function Fallback_pub_key_hash(a: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Fallback_pub_key_hash(encodeArray(a));
-               return nativeResponseValue;
-       }
-       // struct LDKFallback Fallback_script_hash(struct LDKTwentyBytes a);
-       export function Fallback_script_hash(a: Uint8Array): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Fallback_script_hash(encodeArray(a));
-               return nativeResponseValue;
-       }
-       // uint64_t Fallback_hash(const struct LDKFallback *NONNULL_PTR o);
-       export function Fallback_hash(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Fallback_hash(o);
-               return nativeResponseValue;
-       }
-       // bool Fallback_eq(const struct LDKFallback *NONNULL_PTR a, const struct LDKFallback *NONNULL_PTR b);
-       export function Fallback_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Fallback_eq(a, b);
-               return nativeResponseValue;
-       }
-       // void InvoiceSignature_free(struct LDKInvoiceSignature this_obj);
-       export function InvoiceSignature_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InvoiceSignature_free(this_obj);
-               // debug statements here
-       }
-       // uint64_t InvoiceSignature_clone_ptr(LDKInvoiceSignature *NONNULL_PTR arg);
-       export function InvoiceSignature_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InvoiceSignature_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKInvoiceSignature InvoiceSignature_clone(const struct LDKInvoiceSignature *NONNULL_PTR orig);
-       export function InvoiceSignature_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InvoiceSignature_clone(orig);
-               return nativeResponseValue;
-       }
-       // bool InvoiceSignature_eq(const struct LDKInvoiceSignature *NONNULL_PTR a, const struct LDKInvoiceSignature *NONNULL_PTR b);
-       export function InvoiceSignature_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InvoiceSignature_eq(a, b);
-               return nativeResponseValue;
-       }
-       // void PrivateRoute_free(struct LDKPrivateRoute this_obj);
-       export function PrivateRoute_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PrivateRoute_free(this_obj);
-               // debug statements here
-       }
-       // uint64_t PrivateRoute_clone_ptr(LDKPrivateRoute *NONNULL_PTR arg);
-       export function PrivateRoute_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PrivateRoute_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKPrivateRoute PrivateRoute_clone(const struct LDKPrivateRoute *NONNULL_PTR orig);
-       export function PrivateRoute_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PrivateRoute_clone(orig);
-               return nativeResponseValue;
-       }
-       // uint64_t PrivateRoute_hash(const struct LDKPrivateRoute *NONNULL_PTR o);
-       export function PrivateRoute_hash(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PrivateRoute_hash(o);
-               return nativeResponseValue;
-       }
-       // bool PrivateRoute_eq(const struct LDKPrivateRoute *NONNULL_PTR a, const struct LDKPrivateRoute *NONNULL_PTR b);
-       export function PrivateRoute_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PrivateRoute_eq(a, b);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ SignedRawInvoice_into_parts(struct LDKSignedRawInvoice this_arg);
-       export function SignedRawInvoice_into_parts(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SignedRawInvoice_into_parts(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKRawInvoice SignedRawInvoice_raw_invoice(const struct LDKSignedRawInvoice *NONNULL_PTR this_arg);
-       export function SignedRawInvoice_raw_invoice(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SignedRawInvoice_raw_invoice(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES const uint8_t (*SignedRawInvoice_hash(const struct LDKSignedRawInvoice *NONNULL_PTR this_arg))[32];
-       export function SignedRawInvoice_hash(this_arg: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SignedRawInvoice_hash(this_arg);
-               return decodeArray(nativeResponseValue);
-       }
-       // MUST_USE_RES struct LDKInvoiceSignature SignedRawInvoice_signature(const struct LDKSignedRawInvoice *NONNULL_PTR this_arg);
-       export function SignedRawInvoice_signature(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SignedRawInvoice_signature(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_PayeePubKeyErrorZ SignedRawInvoice_recover_payee_pub_key(const struct LDKSignedRawInvoice *NONNULL_PTR this_arg);
-       export function SignedRawInvoice_recover_payee_pub_key(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SignedRawInvoice_recover_payee_pub_key(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES bool SignedRawInvoice_check_signature(const struct LDKSignedRawInvoice *NONNULL_PTR this_arg);
-       export function SignedRawInvoice_check_signature(this_arg: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SignedRawInvoice_check_signature(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKThirtyTwoBytes RawInvoice_hash(const struct LDKRawInvoice *NONNULL_PTR this_arg);
-       export function RawInvoice_hash(this_arg: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RawInvoice_hash(this_arg);
-               return decodeArray(nativeResponseValue);
-       }
-       // MUST_USE_RES struct LDKSha256 RawInvoice_payment_hash(const struct LDKRawInvoice *NONNULL_PTR this_arg);
-       export function RawInvoice_payment_hash(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RawInvoice_payment_hash(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKDescription RawInvoice_description(const struct LDKRawInvoice *NONNULL_PTR this_arg);
-       export function RawInvoice_description(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RawInvoice_description(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKPayeePubKey RawInvoice_payee_pub_key(const struct LDKRawInvoice *NONNULL_PTR this_arg);
-       export function RawInvoice_payee_pub_key(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RawInvoice_payee_pub_key(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKSha256 RawInvoice_description_hash(const struct LDKRawInvoice *NONNULL_PTR this_arg);
-       export function RawInvoice_description_hash(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RawInvoice_description_hash(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKExpiryTime RawInvoice_expiry_time(const struct LDKRawInvoice *NONNULL_PTR this_arg);
-       export function RawInvoice_expiry_time(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RawInvoice_expiry_time(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKMinFinalCltvExpiry RawInvoice_min_final_cltv_expiry(const struct LDKRawInvoice *NONNULL_PTR this_arg);
-       export function RawInvoice_min_final_cltv_expiry(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RawInvoice_min_final_cltv_expiry(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKThirtyTwoBytes RawInvoice_payment_secret(const struct LDKRawInvoice *NONNULL_PTR this_arg);
-       export function RawInvoice_payment_secret(this_arg: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RawInvoice_payment_secret(this_arg);
-               return decodeArray(nativeResponseValue);
-       }
-       // MUST_USE_RES struct LDKInvoiceFeatures RawInvoice_features(const struct LDKRawInvoice *NONNULL_PTR this_arg);
-       export function RawInvoice_features(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RawInvoice_features(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCVec_PrivateRouteZ RawInvoice_private_routes(const struct LDKRawInvoice *NONNULL_PTR this_arg);
-       export function RawInvoice_private_routes(this_arg: number): number[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RawInvoice_private_routes(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCOption_u64Z RawInvoice_amount_pico_btc(const struct LDKRawInvoice *NONNULL_PTR this_arg);
-       export function RawInvoice_amount_pico_btc(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RawInvoice_amount_pico_btc(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES enum LDKCurrency RawInvoice_currency(const struct LDKRawInvoice *NONNULL_PTR this_arg);
-       export function RawInvoice_currency(this_arg: number): Currency {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RawInvoice_currency(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_PositiveTimestampCreationErrorZ PositiveTimestamp_from_unix_timestamp(uint64_t unix_seconds);
-       export function PositiveTimestamp_from_unix_timestamp(unix_seconds: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PositiveTimestamp_from_unix_timestamp(unix_seconds);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_PositiveTimestampCreationErrorZ PositiveTimestamp_from_system_time(uint64_t time);
-       export function PositiveTimestamp_from_system_time(time: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PositiveTimestamp_from_system_time(time);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES uint64_t PositiveTimestamp_as_unix_timestamp(const struct LDKPositiveTimestamp *NONNULL_PTR this_arg);
-       export function PositiveTimestamp_as_unix_timestamp(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PositiveTimestamp_as_unix_timestamp(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES uint64_t PositiveTimestamp_as_time(const struct LDKPositiveTimestamp *NONNULL_PTR this_arg);
-       export function PositiveTimestamp_as_time(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PositiveTimestamp_as_time(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKSignedRawInvoice Invoice_into_signed_raw(struct LDKInvoice this_arg);
-       export function Invoice_into_signed_raw(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Invoice_into_signed_raw(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_NoneSemanticErrorZ Invoice_check_signature(const struct LDKInvoice *NONNULL_PTR this_arg);
-       export function Invoice_check_signature(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Invoice_check_signature(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_InvoiceSemanticErrorZ Invoice_from_signed(struct LDKSignedRawInvoice signed_invoice);
-       export function Invoice_from_signed(signed_invoice: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Invoice_from_signed(signed_invoice);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES uint64_t Invoice_timestamp(const struct LDKInvoice *NONNULL_PTR this_arg);
-       export function Invoice_timestamp(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Invoice_timestamp(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES const uint8_t (*Invoice_payment_hash(const struct LDKInvoice *NONNULL_PTR this_arg))[32];
-       export function Invoice_payment_hash(this_arg: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Invoice_payment_hash(this_arg);
-               return decodeArray(nativeResponseValue);
-       }
-       // MUST_USE_RES struct LDKPublicKey Invoice_payee_pub_key(const struct LDKInvoice *NONNULL_PTR this_arg);
-       export function Invoice_payee_pub_key(this_arg: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Invoice_payee_pub_key(this_arg);
-               return decodeArray(nativeResponseValue);
-       }
-       // MUST_USE_RES const uint8_t (*Invoice_payment_secret(const struct LDKInvoice *NONNULL_PTR this_arg))[32];
-       export function Invoice_payment_secret(this_arg: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Invoice_payment_secret(this_arg);
-               return decodeArray(nativeResponseValue);
-       }
-       // MUST_USE_RES struct LDKInvoiceFeatures Invoice_features(const struct LDKInvoice *NONNULL_PTR this_arg);
-       export function Invoice_features(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Invoice_features(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKPublicKey Invoice_recover_payee_pub_key(const struct LDKInvoice *NONNULL_PTR this_arg);
-       export function Invoice_recover_payee_pub_key(this_arg: number): Uint8Array {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Invoice_recover_payee_pub_key(this_arg);
-               return decodeArray(nativeResponseValue);
-       }
-       // MUST_USE_RES uint64_t Invoice_expiry_time(const struct LDKInvoice *NONNULL_PTR this_arg);
-       export function Invoice_expiry_time(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Invoice_expiry_time(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES bool Invoice_is_expired(const struct LDKInvoice *NONNULL_PTR this_arg);
-       export function Invoice_is_expired(this_arg: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Invoice_is_expired(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES uint64_t Invoice_min_final_cltv_expiry(const struct LDKInvoice *NONNULL_PTR this_arg);
-       export function Invoice_min_final_cltv_expiry(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Invoice_min_final_cltv_expiry(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCVec_PrivateRouteZ Invoice_private_routes(const struct LDKInvoice *NONNULL_PTR this_arg);
-       export function Invoice_private_routes(this_arg: number): number[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Invoice_private_routes(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCVec_RouteHintZ Invoice_route_hints(const struct LDKInvoice *NONNULL_PTR this_arg);
-       export function Invoice_route_hints(this_arg: number): number[] {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Invoice_route_hints(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES enum LDKCurrency Invoice_currency(const struct LDKInvoice *NONNULL_PTR this_arg);
-       export function Invoice_currency(this_arg: number): Currency {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Invoice_currency(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCOption_u64Z Invoice_amount_milli_satoshis(const struct LDKInvoice *NONNULL_PTR this_arg);
-       export function Invoice_amount_milli_satoshis(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Invoice_amount_milli_satoshis(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_DescriptionCreationErrorZ Description_new(struct LDKStr description);
-       export function Description_new(description: String): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Description_new(description);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKStr Description_into_inner(struct LDKDescription this_arg);
-       export function Description_into_inner(this_arg: number): String {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Description_into_inner(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_ExpiryTimeCreationErrorZ ExpiryTime_from_seconds(uint64_t seconds);
-       export function ExpiryTime_from_seconds(seconds: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ExpiryTime_from_seconds(seconds);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_ExpiryTimeCreationErrorZ ExpiryTime_from_duration(uint64_t duration);
-       export function ExpiryTime_from_duration(duration: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ExpiryTime_from_duration(duration);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES uint64_t ExpiryTime_as_seconds(const struct LDKExpiryTime *NONNULL_PTR this_arg);
-       export function ExpiryTime_as_seconds(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ExpiryTime_as_seconds(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES uint64_t ExpiryTime_as_duration(const struct LDKExpiryTime *NONNULL_PTR this_arg);
-       export function ExpiryTime_as_duration(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ExpiryTime_as_duration(this_arg);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_PrivateRouteCreationErrorZ PrivateRoute_new(struct LDKRouteHint hops);
-       export function PrivateRoute_new(hops: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PrivateRoute_new(hops);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKRouteHint PrivateRoute_into_inner(struct LDKPrivateRoute this_arg);
-       export function PrivateRoute_into_inner(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PrivateRoute_into_inner(this_arg);
-               return nativeResponseValue;
-       }
-       // enum LDKCreationError CreationError_clone(const enum LDKCreationError *NONNULL_PTR orig);
-       export function CreationError_clone(orig: number): CreationError {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CreationError_clone(orig);
-               return nativeResponseValue;
-       }
-       // enum LDKCreationError CreationError_description_too_long(void);
-       export function CreationError_description_too_long(): CreationError {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CreationError_description_too_long();
-               return nativeResponseValue;
-       }
-       // enum LDKCreationError CreationError_route_too_long(void);
-       export function CreationError_route_too_long(): CreationError {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CreationError_route_too_long();
-               return nativeResponseValue;
-       }
-       // enum LDKCreationError CreationError_timestamp_out_of_bounds(void);
-       export function CreationError_timestamp_out_of_bounds(): CreationError {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CreationError_timestamp_out_of_bounds();
-               return nativeResponseValue;
-       }
-       // enum LDKCreationError CreationError_expiry_time_out_of_bounds(void);
-       export function CreationError_expiry_time_out_of_bounds(): CreationError {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CreationError_expiry_time_out_of_bounds();
-               return nativeResponseValue;
-       }
-       // enum LDKCreationError CreationError_invalid_amount(void);
-       export function CreationError_invalid_amount(): CreationError {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CreationError_invalid_amount();
-               return nativeResponseValue;
-       }
-       // bool CreationError_eq(const enum LDKCreationError *NONNULL_PTR a, const enum LDKCreationError *NONNULL_PTR b);
-       export function CreationError_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CreationError_eq(a, b);
-               return nativeResponseValue;
-       }
-       // struct LDKStr CreationError_to_str(const enum LDKCreationError *NONNULL_PTR o);
-       export function CreationError_to_str(o: number): String {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.CreationError_to_str(o);
-               return nativeResponseValue;
-       }
-       // enum LDKSemanticError SemanticError_clone(const enum LDKSemanticError *NONNULL_PTR orig);
-       export function SemanticError_clone(orig: number): SemanticError {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SemanticError_clone(orig);
-               return nativeResponseValue;
-       }
-       // enum LDKSemanticError SemanticError_no_payment_hash(void);
-       export function SemanticError_no_payment_hash(): SemanticError {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SemanticError_no_payment_hash();
-               return nativeResponseValue;
-       }
-       // enum LDKSemanticError SemanticError_multiple_payment_hashes(void);
-       export function SemanticError_multiple_payment_hashes(): SemanticError {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SemanticError_multiple_payment_hashes();
-               return nativeResponseValue;
-       }
-       // enum LDKSemanticError SemanticError_no_description(void);
-       export function SemanticError_no_description(): SemanticError {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SemanticError_no_description();
-               return nativeResponseValue;
-       }
-       // enum LDKSemanticError SemanticError_multiple_descriptions(void);
-       export function SemanticError_multiple_descriptions(): SemanticError {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SemanticError_multiple_descriptions();
-               return nativeResponseValue;
-       }
-       // enum LDKSemanticError SemanticError_no_payment_secret(void);
-       export function SemanticError_no_payment_secret(): SemanticError {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SemanticError_no_payment_secret();
-               return nativeResponseValue;
-       }
-       // enum LDKSemanticError SemanticError_multiple_payment_secrets(void);
-       export function SemanticError_multiple_payment_secrets(): SemanticError {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SemanticError_multiple_payment_secrets();
-               return nativeResponseValue;
-       }
-       // enum LDKSemanticError SemanticError_invalid_features(void);
-       export function SemanticError_invalid_features(): SemanticError {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SemanticError_invalid_features();
-               return nativeResponseValue;
-       }
-       // enum LDKSemanticError SemanticError_invalid_recovery_id(void);
-       export function SemanticError_invalid_recovery_id(): SemanticError {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SemanticError_invalid_recovery_id();
-               return nativeResponseValue;
-       }
-       // enum LDKSemanticError SemanticError_invalid_signature(void);
-       export function SemanticError_invalid_signature(): SemanticError {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SemanticError_invalid_signature();
-               return nativeResponseValue;
-       }
-       // enum LDKSemanticError SemanticError_imprecise_amount(void);
-       export function SemanticError_imprecise_amount(): SemanticError {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SemanticError_imprecise_amount();
-               return nativeResponseValue;
-       }
-       // bool SemanticError_eq(const enum LDKSemanticError *NONNULL_PTR a, const enum LDKSemanticError *NONNULL_PTR b);
-       export function SemanticError_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SemanticError_eq(a, b);
-               return nativeResponseValue;
-       }
-       // struct LDKStr SemanticError_to_str(const enum LDKSemanticError *NONNULL_PTR o);
-       export function SemanticError_to_str(o: number): String {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SemanticError_to_str(o);
-               return nativeResponseValue;
-       }
-       // void SignOrCreationError_free(struct LDKSignOrCreationError this_ptr);
-       export function SignOrCreationError_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SignOrCreationError_free(this_ptr);
-               // debug statements here
-       }
-       // uint64_t SignOrCreationError_clone_ptr(LDKSignOrCreationError *NONNULL_PTR arg);
-       export function SignOrCreationError_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SignOrCreationError_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKSignOrCreationError SignOrCreationError_clone(const struct LDKSignOrCreationError *NONNULL_PTR orig);
-       export function SignOrCreationError_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SignOrCreationError_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKSignOrCreationError SignOrCreationError_sign_error(void);
-       export function SignOrCreationError_sign_error(): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SignOrCreationError_sign_error();
-               return nativeResponseValue;
-       }
-       // struct LDKSignOrCreationError SignOrCreationError_creation_error(enum LDKCreationError a);
-       export function SignOrCreationError_creation_error(a: CreationError): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SignOrCreationError_creation_error(a);
-               return nativeResponseValue;
-       }
-       // bool SignOrCreationError_eq(const struct LDKSignOrCreationError *NONNULL_PTR a, const struct LDKSignOrCreationError *NONNULL_PTR b);
-       export function SignOrCreationError_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SignOrCreationError_eq(a, b);
-               return nativeResponseValue;
-       }
-       // struct LDKStr SignOrCreationError_to_str(const struct LDKSignOrCreationError *NONNULL_PTR o);
-       export function SignOrCreationError_to_str(o: number): String {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SignOrCreationError_to_str(o);
-               return nativeResponseValue;
-       }
-       // void InvoicePayer_free(struct LDKInvoicePayer this_obj);
-       export function InvoicePayer_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InvoicePayer_free(this_obj);
-               // debug statements here
-       }
-       // void Payer_free(struct LDKPayer this_ptr);
-       export function Payer_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Payer_free(this_ptr);
-               // debug statements here
-       }
-       // void Router_free(struct LDKRouter this_ptr);
-       export function Router_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Router_free(this_ptr);
-               // debug statements here
-       }
-       // void RetryAttempts_free(struct LDKRetryAttempts this_obj);
-       export function RetryAttempts_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RetryAttempts_free(this_obj);
-               // debug statements here
-       }
-       // uintptr_t RetryAttempts_get_a(const struct LDKRetryAttempts *NONNULL_PTR this_ptr);
-       export function RetryAttempts_get_a(this_ptr: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RetryAttempts_get_a(this_ptr);
-               return nativeResponseValue;
-       }
-       // void RetryAttempts_set_a(struct LDKRetryAttempts *NONNULL_PTR this_ptr, uintptr_t val);
-       export function RetryAttempts_set_a(this_ptr: number, val: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RetryAttempts_set_a(this_ptr, val);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKRetryAttempts RetryAttempts_new(uintptr_t a_arg);
-       export function RetryAttempts_new(a_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RetryAttempts_new(a_arg);
-               return nativeResponseValue;
-       }
-       // uint64_t RetryAttempts_clone_ptr(LDKRetryAttempts *NONNULL_PTR arg);
-       export function RetryAttempts_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RetryAttempts_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKRetryAttempts RetryAttempts_clone(const struct LDKRetryAttempts *NONNULL_PTR orig);
-       export function RetryAttempts_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RetryAttempts_clone(orig);
-               return nativeResponseValue;
-       }
-       // bool RetryAttempts_eq(const struct LDKRetryAttempts *NONNULL_PTR a, const struct LDKRetryAttempts *NONNULL_PTR b);
-       export function RetryAttempts_eq(a: number, b: number): boolean {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RetryAttempts_eq(a, b);
-               return nativeResponseValue;
-       }
-       // uint64_t RetryAttempts_hash(const struct LDKRetryAttempts *NONNULL_PTR o);
-       export function RetryAttempts_hash(o: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.RetryAttempts_hash(o);
-               return nativeResponseValue;
-       }
-       // void PaymentError_free(struct LDKPaymentError this_ptr);
-       export function PaymentError_free(this_ptr: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PaymentError_free(this_ptr);
-               // debug statements here
-       }
-       // uint64_t PaymentError_clone_ptr(LDKPaymentError *NONNULL_PTR arg);
-       export function PaymentError_clone_ptr(arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PaymentError_clone_ptr(arg);
-               return nativeResponseValue;
-       }
-       // struct LDKPaymentError PaymentError_clone(const struct LDKPaymentError *NONNULL_PTR orig);
-       export function PaymentError_clone(orig: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PaymentError_clone(orig);
-               return nativeResponseValue;
-       }
-       // struct LDKPaymentError PaymentError_invoice(struct LDKStr a);
-       export function PaymentError_invoice(a: String): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PaymentError_invoice(a);
-               return nativeResponseValue;
-       }
-       // struct LDKPaymentError PaymentError_routing(struct LDKLightningError a);
-       export function PaymentError_routing(a: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PaymentError_routing(a);
-               return nativeResponseValue;
-       }
-       // struct LDKPaymentError PaymentError_sending(struct LDKPaymentSendFailure a);
-       export function PaymentError_sending(a: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.PaymentError_sending(a);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKInvoicePayer InvoicePayer_new(struct LDKPayer payer, struct LDKRouter router, const struct LDKMultiThreadedLockableScore *NONNULL_PTR scorer, struct LDKLogger logger, struct LDKEventHandler event_handler, struct LDKRetryAttempts retry_attempts);
-       export function InvoicePayer_new(payer: number, router: number, scorer: number, logger: number, event_handler: number, retry_attempts: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InvoicePayer_new(payer, router, scorer, logger, event_handler, retry_attempts);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_PaymentIdPaymentErrorZ InvoicePayer_pay_invoice(const struct LDKInvoicePayer *NONNULL_PTR this_arg, const struct LDKInvoice *NONNULL_PTR invoice);
-       export function InvoicePayer_pay_invoice(this_arg: number, invoice: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InvoicePayer_pay_invoice(this_arg, invoice);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_PaymentIdPaymentErrorZ InvoicePayer_pay_zero_value_invoice(const struct LDKInvoicePayer *NONNULL_PTR this_arg, const struct LDKInvoice *NONNULL_PTR invoice, uint64_t amount_msats);
-       export function InvoicePayer_pay_zero_value_invoice(this_arg: number, invoice: number, amount_msats: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InvoicePayer_pay_zero_value_invoice(this_arg, invoice, amount_msats);
-               return nativeResponseValue;
-       }
-       // MUST_USE_RES struct LDKCResult_PaymentIdPaymentErrorZ InvoicePayer_pay_pubkey(const struct LDKInvoicePayer *NONNULL_PTR this_arg, struct LDKPublicKey pubkey, struct LDKThirtyTwoBytes payment_preimage, uint64_t amount_msats, uint32_t final_cltv_expiry_delta);
-       export function InvoicePayer_pay_pubkey(this_arg: number, pubkey: Uint8Array, payment_preimage: Uint8Array, amount_msats: number, final_cltv_expiry_delta: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InvoicePayer_pay_pubkey(this_arg, encodeArray(pubkey), encodeArray(payment_preimage), amount_msats, final_cltv_expiry_delta);
-               return nativeResponseValue;
-       }
-       // void InvoicePayer_remove_cached_payment(const struct LDKInvoicePayer *NONNULL_PTR this_arg, const uint8_t (*payment_hash)[32]);
-       export function InvoicePayer_remove_cached_payment(this_arg: number, payment_hash: Uint8Array): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InvoicePayer_remove_cached_payment(this_arg, encodeArray(payment_hash));
-               // debug statements here
-       }
-       // struct LDKEventHandler InvoicePayer_as_EventHandler(const struct LDKInvoicePayer *NONNULL_PTR this_arg);
-       export function InvoicePayer_as_EventHandler(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.InvoicePayer_as_EventHandler(this_arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_InvoiceSignOrCreationErrorZ create_invoice_from_channelmanager(const struct LDKChannelManager *NONNULL_PTR channelmanager, struct LDKKeysInterface keys_manager, enum LDKCurrency network, struct LDKCOption_u64Z amt_msat, struct LDKStr description);
-       export function create_invoice_from_channelmanager(channelmanager: number, keys_manager: number, network: Currency, amt_msat: number, description: String): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.create_invoice_from_channelmanager(channelmanager, keys_manager, network, amt_msat, description);
-               return nativeResponseValue;
-       }
-       // void DefaultRouter_free(struct LDKDefaultRouter this_obj);
-       export function DefaultRouter_free(this_obj: number): void {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DefaultRouter_free(this_obj);
-               // debug statements here
-       }
-       // MUST_USE_RES struct LDKDefaultRouter DefaultRouter_new(const struct LDKNetworkGraph *NONNULL_PTR network_graph, struct LDKLogger logger);
-       export function DefaultRouter_new(network_graph: number, logger: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DefaultRouter_new(network_graph, logger);
-               return nativeResponseValue;
-       }
-       // struct LDKRouter DefaultRouter_as_Router(const struct LDKDefaultRouter *NONNULL_PTR this_arg);
-       export function DefaultRouter_as_Router(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.DefaultRouter_as_Router(this_arg);
-               return nativeResponseValue;
-       }
-       // struct LDKPayer ChannelManager_as_Payer(const struct LDKChannelManager *NONNULL_PTR this_arg);
-       export function ChannelManager_as_Payer(this_arg: number): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.ChannelManager_as_Payer(this_arg);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_SiPrefixNoneZ SiPrefix_from_str(struct LDKStr s);
-       export function SiPrefix_from_str(s: String): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SiPrefix_from_str(s);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_InvoiceNoneZ Invoice_from_str(struct LDKStr s);
-       export function Invoice_from_str(s: String): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Invoice_from_str(s);
-               return nativeResponseValue;
-       }
-       // struct LDKCResult_SignedRawInvoiceNoneZ SignedRawInvoice_from_str(struct LDKStr s);
-       export function SignedRawInvoice_from_str(s: String): number {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SignedRawInvoice_from_str(s);
-               return nativeResponseValue;
-       }
-       // struct LDKStr Invoice_to_str(const struct LDKInvoice *NONNULL_PTR o);
-       export function Invoice_to_str(o: number): String {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Invoice_to_str(o);
-               return nativeResponseValue;
-       }
-       // struct LDKStr SignedRawInvoice_to_str(const struct LDKSignedRawInvoice *NONNULL_PTR o);
-       export function SignedRawInvoice_to_str(o: number): String {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SignedRawInvoice_to_str(o);
-               return nativeResponseValue;
-       }
-       // struct LDKStr Currency_to_str(const enum LDKCurrency *NONNULL_PTR o);
-       export function Currency_to_str(o: number): String {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.Currency_to_str(o);
-               return nativeResponseValue;
-       }
-       // struct LDKStr SiPrefix_to_str(const enum LDKSiPrefix *NONNULL_PTR o);
-       export function SiPrefix_to_str(o: number): String {
-               if(!isWasmInitialized) {
-                       throw new Error("initializeWasm() must be awaited first!");
-               }
-               const nativeResponseValue = wasm.SiPrefix_to_str(o);
-               return nativeResponseValue;
-       }
-
-        export async function initializeWasm(allowDoubleInitialization: boolean = false): Promise<void> {
-            if(isWasmInitialized && !allowDoubleInitialization) {
-                return;
-            }
-            const wasmInstance = await WebAssembly.instantiate(wasmModule, imports)
-            wasm = wasmInstance.exports;
-            isWasmInitialized = true;
-        }
-        
\ No newline at end of file
diff --git a/ts/enums/AccessError.mts b/ts/enums/AccessError.mts
new file mode 100644 (file)
index 0000000..d5c8f55
--- /dev/null
@@ -0,0 +1 @@
+export { AccessError } from "../bindings.mjs";
\ No newline at end of file
diff --git a/ts/enums/AccessError.ts b/ts/enums/AccessError.ts
deleted file mode 100644 (file)
index fcbdf0f..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-
-            export enum AccessError {
-                /**
- * The requested chain is unknown.
- */
-LDKAccessError_UnknownChain,
-                               /**
- * The requested transaction doesn't exist or hasn't confirmed.
- */
-LDKAccessError_UnknownTx,
-                               
-            }
diff --git a/ts/enums/COption_NoneZ.mts b/ts/enums/COption_NoneZ.mts
new file mode 100644 (file)
index 0000000..04928b6
--- /dev/null
@@ -0,0 +1 @@
+export { COption_NoneZ } from "../bindings.mjs";
\ No newline at end of file
diff --git a/ts/enums/COption_NoneZ.ts b/ts/enums/COption_NoneZ.ts
deleted file mode 100644 (file)
index f8ebffc..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-
-            export enum COption_NoneZ {
-                /**
- * When we're in this state, this COption_NoneZ contains a
- */
-LDKCOption_NoneZ_Some,
-                               /**
- * When we're in this state, this COption_NoneZ contains nothing
- */
-LDKCOption_NoneZ_None,
-                               
-            }
diff --git a/ts/enums/ChannelMonitorUpdateErr.mts b/ts/enums/ChannelMonitorUpdateErr.mts
new file mode 100644 (file)
index 0000000..d521a84
--- /dev/null
@@ -0,0 +1 @@
+export { ChannelMonitorUpdateErr } from "../bindings.mjs";
\ No newline at end of file
diff --git a/ts/enums/ChannelMonitorUpdateErr.ts b/ts/enums/ChannelMonitorUpdateErr.ts
deleted file mode 100644 (file)
index 0e32c6e..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-            export enum ChannelMonitorUpdateErr {
-                /**
- * Used to indicate a temporary failure (eg connection to a watchtower or remote backup of
-our state failed, but is expected to succeed at some point in the future).
-
-Such a failure will \"freeze\" a channel, preventing us from revoking old states or
-submitting new commitment transactions to the counterparty. Once the update(s) that failed
-have been successfully applied, a [`MonitorEvent::UpdateCompleted`] event should be returned
-via [`Watch::release_pending_monitor_events`] which will then restore the channel to an
-operational state.
-
-Note that a given ChannelManager will *never* re-generate a given ChannelMonitorUpdate. If
-you return a TemporaryFailure you must ensure that it is written to disk safely before
-writing out the latest ChannelManager state.
-
-Even when a channel has been \"frozen\" updates to the ChannelMonitor can continue to occur
-(eg if an inbound HTLC which we forwarded was claimed upstream resulting in us attempting
-to claim it on this channel) and those updates must be applied wherever they can be. At
-least one such updated ChannelMonitor must be persisted otherwise PermanentFailure should
-be returned to get things on-chain ASAP using only the in-memory copy. Obviously updates to
-the channel which would invalidate previous ChannelMonitors are not made when a channel has
-been \"frozen\".
-
-Note that even if updates made after TemporaryFailure succeed you must still provide a
-[`MonitorEvent::UpdateCompleted`] to ensure you have the latest monitor and re-enable
-normal channel operation. Note that this is normally generated through a call to
-[`ChainMonitor::channel_monitor_updated`].
-
-Note that the update being processed here will not be replayed for you when you return a
-[`MonitorEvent::UpdateCompleted`] event via [`Watch::release_pending_monitor_events`], so
-you must store the update itself on your own local disk prior to returning a
-TemporaryFailure. You may, of course, employ a journaling approach, storing only the
-ChannelMonitorUpdate on disk without updating the monitor itself, replaying the journal at
-reload-time.
-
-For deployments where a copy of ChannelMonitors and other local state are backed up in a
-remote location (with local copies persisted immediately), it is anticipated that all
-updates will return TemporaryFailure until the remote copies could be updated.
-
-[`ChainMonitor::channel_monitor_updated`]: chainmonitor::ChainMonitor::channel_monitor_updated
- */
-LDKChannelMonitorUpdateErr_TemporaryFailure,
-                               /**
- * Used to indicate no further channel monitor updates will be allowed (eg we've moved on to a
-different watchtower and cannot update with all watchtowers that were previously informed
-of this channel).
-
-At reception of this error, ChannelManager will force-close the channel and return at
-least a final ChannelMonitorUpdate::ChannelForceClosed which must be delivered to at
-least one ChannelMonitor copy. Revocation secret MUST NOT be released and offchain channel
-update must be rejected.
-
-This failure may also signal a failure to update the local persisted copy of one of
-the channel monitor instance.
-
-Note that even when you fail a holder commitment transaction update, you must store the
-update to ensure you can claim from it in case of a duplicate copy of this ChannelMonitor
-broadcasts it (e.g distributed channel-monitor deployment)
-
-In case of distributed watchtowers deployment, the new version must be written to disk, as
-state may have been stored but rejected due to a block forcing a commitment broadcast. This
-storage is used to claim outputs of rejected state confirmed onchain by another watchtower,
-lagging behind on block processing.
- */
-LDKChannelMonitorUpdateErr_PermanentFailure,
-                               
-            }
diff --git a/ts/enums/ConfirmationTarget.mts b/ts/enums/ConfirmationTarget.mts
new file mode 100644 (file)
index 0000000..749a469
--- /dev/null
@@ -0,0 +1 @@
+export { ConfirmationTarget } from "../bindings.mjs";
\ No newline at end of file
diff --git a/ts/enums/ConfirmationTarget.ts b/ts/enums/ConfirmationTarget.ts
deleted file mode 100644 (file)
index 25afe79..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-
-            export enum ConfirmationTarget {
-                /**
- * We are happy with this transaction confirming slowly when feerate drops some.
- */
-LDKConfirmationTarget_Background,
-                               /**
- * We'd like this transaction to confirm without major delay, but 12-18 blocks is fine.
- */
-LDKConfirmationTarget_Normal,
-                               /**
- * We'd like this transaction to confirm in the next few blocks.
- */
-LDKConfirmationTarget_HighPriority,
-                               
-            }
diff --git a/ts/enums/CreationError.ts b/ts/enums/CreationError.ts
deleted file mode 100644 (file)
index ac01280..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-
-            export enum CreationError {
-                /**
- * The supplied description string was longer than 639 __bytes__ (see [`Description::new(...)`](./struct.Description.html#method.new))
- */
-LDKCreationError_DescriptionTooLong,
-                               /**
- * The specified route has too many hops and can't be encoded
- */
-LDKCreationError_RouteTooLong,
-                               /**
- * The unix timestamp of the supplied date is <0 or can't be represented as `SystemTime`
- */
-LDKCreationError_TimestampOutOfBounds,
-                               /**
- * The supplied expiry time could cause an overflow if added to a `PositiveTimestamp`
- */
-LDKCreationError_ExpiryTimeOutOfBounds,
-                               /**
- * The supplied millisatoshi amount was greater than the total bitcoin supply.
- */
-LDKCreationError_InvalidAmount,
-                               
-            }
diff --git a/ts/enums/Currency.ts b/ts/enums/Currency.ts
deleted file mode 100644 (file)
index c8a6378..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-
-            export enum Currency {
-                /**
- * Bitcoin mainnet
- */
-LDKCurrency_Bitcoin,
-                               /**
- * Bitcoin testnet
- */
-LDKCurrency_BitcoinTestnet,
-                               /**
- * Bitcoin regtest
- */
-LDKCurrency_Regtest,
-                               /**
- * Bitcoin simnet
- */
-LDKCurrency_Simnet,
-                               /**
- * Bitcoin signet
- */
-LDKCurrency_Signet,
-                               
-            }
diff --git a/ts/enums/IOError.ts b/ts/enums/IOError.ts
deleted file mode 100644 (file)
index d5d1835..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-
-            export enum IOError {
-                LDKIOError_NotFound,
-                               LDKIOError_PermissionDenied,
-                               LDKIOError_ConnectionRefused,
-                               LDKIOError_ConnectionReset,
-                               LDKIOError_ConnectionAborted,
-                               LDKIOError_NotConnected,
-                               LDKIOError_AddrInUse,
-                               LDKIOError_AddrNotAvailable,
-                               LDKIOError_BrokenPipe,
-                               LDKIOError_AlreadyExists,
-                               LDKIOError_WouldBlock,
-                               LDKIOError_InvalidInput,
-                               LDKIOError_InvalidData,
-                               LDKIOError_TimedOut,
-                               LDKIOError_WriteZero,
-                               LDKIOError_Interrupted,
-                               LDKIOError_Other,
-                               LDKIOError_UnexpectedEof,
-                               
-            }
diff --git a/ts/enums/Level.mts b/ts/enums/Level.mts
new file mode 100644 (file)
index 0000000..2c8bf90
--- /dev/null
@@ -0,0 +1 @@
+export { Level } from "../bindings.mjs";
\ No newline at end of file
diff --git a/ts/enums/Level.ts b/ts/enums/Level.ts
deleted file mode 100644 (file)
index 0cea0fc..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-
-            export enum Level {
-                /**
- * Designates extremely verbose information, including gossip-induced messages
- */
-LDKLevel_Gossip,
-                               /**
- * Designates very low priority, often extremely verbose, information
- */
-LDKLevel_Trace,
-                               /**
- * Designates lower priority information
- */
-LDKLevel_Debug,
-                               /**
- * Designates useful information
- */
-LDKLevel_Info,
-                               /**
- * Designates hazardous situations
- */
-LDKLevel_Warn,
-                               /**
- * Designates very serious errors
- */
-LDKLevel_Error,
-                               
-            }
diff --git a/ts/enums/Network.mts b/ts/enums/Network.mts
new file mode 100644 (file)
index 0000000..a97634a
--- /dev/null
@@ -0,0 +1 @@
+export { Network } from "../bindings.mjs";
\ No newline at end of file
diff --git a/ts/enums/Network.ts b/ts/enums/Network.ts
deleted file mode 100644 (file)
index c871fad..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-
-            export enum Network {
-                /**
- * The main Bitcoin blockchain.
- */
-LDKNetwork_Bitcoin,
-                               /**
- * The testnet3 blockchain.
- */
-LDKNetwork_Testnet,
-                               /**
- * A local test blockchain.
- */
-LDKNetwork_Regtest,
-                               /**
- * A blockchain on which blocks are signed instead of mined.
- */
-LDKNetwork_Signet,
-                               
-            }
diff --git a/ts/enums/Secp256k1Error.mts b/ts/enums/Secp256k1Error.mts
new file mode 100644 (file)
index 0000000..88fef5f
--- /dev/null
@@ -0,0 +1 @@
+export { Secp256k1Error } from "../bindings.mjs";
\ No newline at end of file
diff --git a/ts/enums/Secp256k1Error.ts b/ts/enums/Secp256k1Error.ts
deleted file mode 100644 (file)
index eef54a9..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-
-            export enum Secp256k1Error {
-                /**
- * Signature failed verification
- */
-LDKSecp256k1Error_IncorrectSignature,
-                               /**
- * Badly sized message ("messages" are actually fixed-sized digests; see the MESSAGE_SIZE constant)
- */
-LDKSecp256k1Error_InvalidMessage,
-                               /**
- * Bad public key
- */
-LDKSecp256k1Error_InvalidPublicKey,
-                               /**
- * Bad signature
- */
-LDKSecp256k1Error_InvalidSignature,
-                               /**
- * Bad secret key
- */
-LDKSecp256k1Error_InvalidSecretKey,
-                               /**
- * Bad recovery id
- */
-LDKSecp256k1Error_InvalidRecoveryId,
-                               /**
- * Invalid tweak for add_assign or mul_assign
- */
-LDKSecp256k1Error_InvalidTweak,
-                               /**
- * tweak_add_check failed on an xonly public key
- */
-LDKSecp256k1Error_TweakCheckFailed,
-                               /**
- * Didn't pass enough memory to context creation with preallocated memory
- */
-LDKSecp256k1Error_NotEnoughMemory,
-                               
-            }
diff --git a/ts/enums/SemanticError.ts b/ts/enums/SemanticError.ts
deleted file mode 100644 (file)
index ea1655f..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-
-            export enum SemanticError {
-                /**
- * The invoice is missing the mandatory payment hash
- */
-LDKSemanticError_NoPaymentHash,
-                               /**
- * The invoice has multiple payment hashes which isn't allowed
- */
-LDKSemanticError_MultiplePaymentHashes,
-                               /**
- * No description or description hash are part of the invoice
- */
-LDKSemanticError_NoDescription,
-                               /**
- * The invoice contains multiple descriptions and/or description hashes which isn't allowed
- */
-LDKSemanticError_MultipleDescriptions,
-                               /**
- * The invoice is missing the mandatory payment secret, which all modern lightning nodes
-should provide.
- */
-LDKSemanticError_NoPaymentSecret,
-                               /**
- * The invoice contains multiple payment secrets
- */
-LDKSemanticError_MultiplePaymentSecrets,
-                               /**
- * The invoice's features are invalid
- */
-LDKSemanticError_InvalidFeatures,
-                               /**
- * The recovery id doesn't fit the signature/pub key
- */
-LDKSemanticError_InvalidRecoveryId,
-                               /**
- * The invoice's signature is invalid
- */
-LDKSemanticError_InvalidSignature,
-                               /**
- * The invoice's amount was not a whole number of millisatoshis
- */
-LDKSemanticError_ImpreciseAmount,
-                               
-            }
diff --git a/ts/enums/SiPrefix.ts b/ts/enums/SiPrefix.ts
deleted file mode 100644 (file)
index 5f25c85..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-
-            export enum SiPrefix {
-                /**
- * 10^-3
- */
-LDKSiPrefix_Milli,
-                               /**
- * 10^-6
- */
-LDKSiPrefix_Micro,
-                               /**
- * 10^-9
- */
-LDKSiPrefix_Nano,
-                               /**
- * 10^-12
- */
-LDKSiPrefix_Pico,
-                               
-            }
index af20d1393e0aec8814ce5232542ad7bfd061cf0c..76792ddd5376195453b0f15838f4731a139bb080 100755 (executable)
@@ -1,5 +1,5 @@
-// Minimal subset of the node 'fs' library that we depend on.
-// May be (c) Microsoft licensed under the MIT license, but API's are generally not copyrightable per recent precedent.
+// Minimal part of the Node fs API which we depend on.
+// May be (c) Microsoft licensed under the MIT license, however API's are not generally copyrightable per recent precedent.
 declare module 'fs' {
     export type PathLike = string | Buffer | URL;
     export type PathOrFileDescriptor = PathLike | number;
index 516375fd9ebccbc6976695c1ecdcf562c27f04c8..110c3060187d6d93a11cf485c47e3114e9404f12 100755 (executable)
@@ -1,3 +1,3 @@
-// Minimal subset of the node 'fs' library that we depend on.
-// May be (c) Microsoft licensed under the MIT license, but API's are generally not copyrightable per recent precedent.
+// Minimal part of the Node fs API which we depend on.
+// May be (c) Microsoft licensed under the MIT license, however API's are not generally copyrightable per recent precedent.
 /// <reference path="fs.d.ts" />
diff --git a/ts/structs/APIError.ts b/ts/structs/APIError.ts
deleted file mode 100644 (file)
index 61fdaef..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-export default class APIError extends CommonBase {
-       protected constructor(_dummy: object, ptr: number) { super(ptr); }
-       protected finalize() {
-               super.finalize();
-               if (this.ptr != 0) { bindings.APIError_free(this.ptr); }
-       }
-       static constr_from_ptr(ptr: number): APIError {
-               const raw_val: bindings.LDKAPIError = bindings.LDKAPIError_ref_from_ptr(ptr);
-               if (raw_val instanceof bindings.LDKAPIError.APIMisuseError) {
-                       return new APIMisuseError(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKAPIError.FeeRateTooHigh) {
-                       return new FeeRateTooHigh(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKAPIError.RouteError) {
-                       return new RouteError(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKAPIError.ChannelUnavailable) {
-                       return new ChannelUnavailable(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKAPIError.MonitorUpdateFailed) {
-                       return new MonitorUpdateFailed(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKAPIError.IncompatibleShutdownScript) {
-                       return new IncompatibleShutdownScript(this.ptr, raw_val);
-               }
-               throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
-       }
-
-}
-export class APIMisuseError extends APIError {
-       public err: String;
-       private constructor(ptr: number, obj: bindings.LDKAPIError.APIMisuseError) {
-               super(null, ptr);
-               this.err = obj.err;
-       }
-}
-export class FeeRateTooHigh extends APIError {
-       public err: String;
-       public feerate: number;
-       private constructor(ptr: number, obj: bindings.LDKAPIError.FeeRateTooHigh) {
-               super(null, ptr);
-               this.err = obj.err;
-               this.feerate = obj.feerate;
-       }
-}
-export class RouteError extends APIError {
-       public err: String;
-       private constructor(ptr: number, obj: bindings.LDKAPIError.RouteError) {
-               super(null, ptr);
-               this.err = obj.err;
-       }
-}
-export class ChannelUnavailable extends APIError {
-       public err: String;
-       private constructor(ptr: number, obj: bindings.LDKAPIError.ChannelUnavailable) {
-               super(null, ptr);
-               this.err = obj.err;
-       }
-}
-export class MonitorUpdateFailed extends APIError {
-       private constructor(ptr: number, obj: bindings.LDKAPIError.MonitorUpdateFailed) {
-               super(null, ptr);
-       }
-}
-export class IncompatibleShutdownScript extends APIError {
-       public script: ShutdownScript;
-       private constructor(ptr: number, obj: bindings.LDKAPIError.IncompatibleShutdownScript) {
-               super(null, ptr);
-               const script: number = obj.script;
-               const script_hu_conv: ShutdownScript = new ShutdownScript(null, script);
-                       script_hu_conv.ptrs_to.add(this);
-               this.script = script_hu_conv;
-       }
-}
-       public number clone_ptr() {
-               number ret = bindings.APIError_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public APIError clone() {
-               number ret = bindings.APIError_clone(this.ptr);
-               APIError ret_hu_conv = APIError.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static APIError constructor_apimisuse_error(String err) {
-               number ret = bindings.APIError_apimisuse_error(err);
-               APIError ret_hu_conv = APIError.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static APIError constructor_fee_rate_too_high(String err, number feerate) {
-               number ret = bindings.APIError_fee_rate_too_high(err, feerate);
-               APIError ret_hu_conv = APIError.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static APIError constructor_route_error(String err) {
-               number ret = bindings.APIError_route_error(err);
-               APIError ret_hu_conv = APIError.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static APIError constructor_channel_unavailable(String err) {
-               number ret = bindings.APIError_channel_unavailable(err);
-               APIError ret_hu_conv = APIError.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static APIError constructor_monitor_update_failed() {
-               number ret = bindings.APIError_monitor_update_failed();
-               APIError ret_hu_conv = APIError.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static APIError constructor_incompatible_shutdown_script(ShutdownScript script) {
-               number ret = bindings.APIError_incompatible_shutdown_script(script == null ? 0 : script.ptr & ~1);
-               APIError ret_hu_conv = APIError.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/AcceptChannel.ts b/ts/structs/AcceptChannel.ts
deleted file mode 100644 (file)
index 4e102c7..0000000
+++ /dev/null
@@ -1,170 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class AcceptChannel extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.AcceptChannel_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_temporary_channel_id() {
-               Uint8Array ret = bindings.AcceptChannel_get_temporary_channel_id(this.ptr);
-               return ret;
-       }
-
-       public void set_temporary_channel_id(Uint8Array val) {
-               bindings.AcceptChannel_set_temporary_channel_id(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public number get_dust_limit_satoshis() {
-               number ret = bindings.AcceptChannel_get_dust_limit_satoshis(this.ptr);
-               return ret;
-       }
-
-       public void set_dust_limit_satoshis(number val) {
-               bindings.AcceptChannel_set_dust_limit_satoshis(this.ptr, val);
-       }
-
-       public number get_max_htlc_value_in_flight_msat() {
-               number ret = bindings.AcceptChannel_get_max_htlc_value_in_flight_msat(this.ptr);
-               return ret;
-       }
-
-       public void set_max_htlc_value_in_flight_msat(number val) {
-               bindings.AcceptChannel_set_max_htlc_value_in_flight_msat(this.ptr, val);
-       }
-
-       public number get_channel_reserve_satoshis() {
-               number ret = bindings.AcceptChannel_get_channel_reserve_satoshis(this.ptr);
-               return ret;
-       }
-
-       public void set_channel_reserve_satoshis(number val) {
-               bindings.AcceptChannel_set_channel_reserve_satoshis(this.ptr, val);
-       }
-
-       public number get_htlc_minimum_msat() {
-               number ret = bindings.AcceptChannel_get_htlc_minimum_msat(this.ptr);
-               return ret;
-       }
-
-       public void set_htlc_minimum_msat(number val) {
-               bindings.AcceptChannel_set_htlc_minimum_msat(this.ptr, val);
-       }
-
-       public number get_minimum_depth() {
-               number ret = bindings.AcceptChannel_get_minimum_depth(this.ptr);
-               return ret;
-       }
-
-       public void set_minimum_depth(number val) {
-               bindings.AcceptChannel_set_minimum_depth(this.ptr, val);
-       }
-
-       public number get_to_self_delay() {
-               number ret = bindings.AcceptChannel_get_to_self_delay(this.ptr);
-               return ret;
-       }
-
-       public void set_to_self_delay(number val) {
-               bindings.AcceptChannel_set_to_self_delay(this.ptr, val);
-       }
-
-       public number get_max_accepted_htlcs() {
-               number ret = bindings.AcceptChannel_get_max_accepted_htlcs(this.ptr);
-               return ret;
-       }
-
-       public void set_max_accepted_htlcs(number val) {
-               bindings.AcceptChannel_set_max_accepted_htlcs(this.ptr, val);
-       }
-
-       public Uint8Array get_funding_pubkey() {
-               Uint8Array ret = bindings.AcceptChannel_get_funding_pubkey(this.ptr);
-               return ret;
-       }
-
-       public void set_funding_pubkey(Uint8Array val) {
-               bindings.AcceptChannel_set_funding_pubkey(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public Uint8Array get_revocation_basepoint() {
-               Uint8Array ret = bindings.AcceptChannel_get_revocation_basepoint(this.ptr);
-               return ret;
-       }
-
-       public void set_revocation_basepoint(Uint8Array val) {
-               bindings.AcceptChannel_set_revocation_basepoint(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public Uint8Array get_payment_point() {
-               Uint8Array ret = bindings.AcceptChannel_get_payment_point(this.ptr);
-               return ret;
-       }
-
-       public void set_payment_point(Uint8Array val) {
-               bindings.AcceptChannel_set_payment_point(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public Uint8Array get_delayed_payment_basepoint() {
-               Uint8Array ret = bindings.AcceptChannel_get_delayed_payment_basepoint(this.ptr);
-               return ret;
-       }
-
-       public void set_delayed_payment_basepoint(Uint8Array val) {
-               bindings.AcceptChannel_set_delayed_payment_basepoint(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public Uint8Array get_htlc_basepoint() {
-               Uint8Array ret = bindings.AcceptChannel_get_htlc_basepoint(this.ptr);
-               return ret;
-       }
-
-       public void set_htlc_basepoint(Uint8Array val) {
-               bindings.AcceptChannel_set_htlc_basepoint(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public Uint8Array get_first_per_commitment_point() {
-               Uint8Array ret = bindings.AcceptChannel_get_first_per_commitment_point(this.ptr);
-               return ret;
-       }
-
-       public void set_first_per_commitment_point(Uint8Array val) {
-               bindings.AcceptChannel_set_first_per_commitment_point(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.AcceptChannel_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 Result_AcceptChannelDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.AcceptChannel_read(ser);
-               Result_AcceptChannelDecodeErrorZ ret_hu_conv = Result_AcceptChannelDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Access.ts b/ts/structs/Access.ts
deleted file mode 100644 (file)
index ccb20fb..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export class Access extends CommonBase {
-
-                bindings_instance?: bindings.LDKAccess;
-
-                constructor(ptr?: number, arg?: bindings.LDKAccess) {
-                    if (Number.isFinite(ptr)) {
-                                       super(ptr);
-                                       this.bindings_instance = null;
-                                   } else {
-                                       // TODO: private constructor instantiation
-                                       super(bindings.LDKAccess_new(arg));
-                                       this.ptrs_to.push(arg);
-                                       
-                                   }
-                }
-
-                protected finalize() {
-                    if (this.ptr != 0) {
-                        bindings.Access_free(this.ptr);
-                    }
-                    super.finalize();
-                }
-
-                static new_impl(arg: AccessInterface): Access {
-                    const impl_holder: LDKAccessHolder = new LDKAccessHolder();
-                    let structImplementation = <bindings.LDKAccess>{
-                        // todo: in-line interface filling
-                        get_utxo (genesis_hash: Uint8Array, short_channel_id: number): number {
-                                                       Result_TxOutAccessErrorZ ret = arg.get_utxo(genesis_hash, short_channel_id);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               
-                    };
-                    impl_holder.held = new Access (null, structImplementation);
-                }
-            }
-
-            export interface AccessInterface {
-                get_utxo(genesis_hash: Uint8Array, short_channel_id: number): Result_TxOutAccessErrorZ;
-                               
-            }
-
-            class LDKAccessHolder {
-                held: Access;
-            }
-       public Result_TxOutAccessErrorZ get_utxo(Uint8Array genesis_hash, number short_channel_id) {
-               number ret = bindings.Access_get_utxo(this.ptr, InternalUtils.check_arr_len(genesis_hash, 32), short_channel_id);
-               Result_TxOutAccessErrorZ ret_hu_conv = Result_TxOutAccessErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/AnnouncementSignatures.ts b/ts/structs/AnnouncementSignatures.ts
deleted file mode 100644 (file)
index 808cd55..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class AnnouncementSignatures extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.AnnouncementSignatures_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_channel_id() {
-               Uint8Array ret = bindings.AnnouncementSignatures_get_channel_id(this.ptr);
-               return ret;
-       }
-
-       public void set_channel_id(Uint8Array val) {
-               bindings.AnnouncementSignatures_set_channel_id(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public number get_short_channel_id() {
-               number ret = bindings.AnnouncementSignatures_get_short_channel_id(this.ptr);
-               return ret;
-       }
-
-       public void set_short_channel_id(number val) {
-               bindings.AnnouncementSignatures_set_short_channel_id(this.ptr, val);
-       }
-
-       public Uint8Array get_node_signature() {
-               Uint8Array ret = bindings.AnnouncementSignatures_get_node_signature(this.ptr);
-               return ret;
-       }
-
-       public void set_node_signature(Uint8Array val) {
-               bindings.AnnouncementSignatures_set_node_signature(this.ptr, InternalUtils.check_arr_len(val, 64));
-       }
-
-       public Uint8Array get_bitcoin_signature() {
-               Uint8Array ret = bindings.AnnouncementSignatures_get_bitcoin_signature(this.ptr);
-               return ret;
-       }
-
-       public void set_bitcoin_signature(Uint8Array val) {
-               bindings.AnnouncementSignatures_set_bitcoin_signature(this.ptr, InternalUtils.check_arr_len(val, 64));
-       }
-
-       public static AnnouncementSignatures constructor_new(Uint8Array channel_id_arg, number short_channel_id_arg, Uint8Array node_signature_arg, Uint8Array bitcoin_signature_arg) {
-               number ret = bindings.AnnouncementSignatures_new(InternalUtils.check_arr_len(channel_id_arg, 32), short_channel_id_arg, InternalUtils.check_arr_len(node_signature_arg, 64), InternalUtils.check_arr_len(bitcoin_signature_arg, 64));
-               const ret_hu_conv: AnnouncementSignatures = new AnnouncementSignatures(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.AnnouncementSignatures_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 Result_AnnouncementSignaturesDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.AnnouncementSignatures_read(ser);
-               Result_AnnouncementSignaturesDecodeErrorZ ret_hu_conv = Result_AnnouncementSignaturesDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/BackgroundProcessor.ts b/ts/structs/BackgroundProcessor.ts
deleted file mode 100644 (file)
index 8f3ffdc..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class BackgroundProcessor extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.BackgroundProcessor_free(this.ptr);
-                    }
-                }
-       public static BackgroundProcessor constructor_start(ChannelManagerPersister persister, EventHandler event_handler, ChainMonitor chain_monitor, ChannelManager channel_manager, NetGraphMsgHandler net_graph_msg_handler, PeerManager peer_manager, Logger logger) {
-               number ret = bindings.BackgroundProcessor_start(persister == null ? 0 : persister.ptr, event_handler == null ? 0 : event_handler.ptr, chain_monitor == null ? 0 : chain_monitor.ptr & ~1, channel_manager == null ? 0 : channel_manager.ptr & ~1, net_graph_msg_handler == null ? 0 : net_graph_msg_handler.ptr & ~1, peer_manager == null ? 0 : peer_manager.ptr & ~1, logger == null ? 0 : logger.ptr);
-               const ret_hu_conv: BackgroundProcessor = new BackgroundProcessor(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               ret_hu_conv.ptrs_to.add(persister);
-               ret_hu_conv.ptrs_to.add(event_handler);
-               ret_hu_conv.ptrs_to.add(chain_monitor);
-               ret_hu_conv.ptrs_to.add(channel_manager);
-               ret_hu_conv.ptrs_to.add(net_graph_msg_handler);
-               ret_hu_conv.ptrs_to.add(peer_manager);
-               ret_hu_conv.ptrs_to.add(logger);
-               return ret_hu_conv;
-       }
-
-       public Result_NoneErrorZ join() {
-               number ret = bindings.BackgroundProcessor_join(this.ptr);
-               Result_NoneErrorZ ret_hu_conv = Result_NoneErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public Result_NoneErrorZ stop() {
-               number ret = bindings.BackgroundProcessor_stop(this.ptr);
-               Result_NoneErrorZ ret_hu_conv = Result_NoneErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Balance.ts b/ts/structs/Balance.ts
deleted file mode 100644 (file)
index c76978e..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-export default class Balance extends CommonBase {
-       protected constructor(_dummy: object, ptr: number) { super(ptr); }
-       protected finalize() {
-               super.finalize();
-               if (this.ptr != 0) { bindings.Balance_free(this.ptr); }
-       }
-       static constr_from_ptr(ptr: number): Balance {
-               const raw_val: bindings.LDKBalance = bindings.LDKBalance_ref_from_ptr(ptr);
-               if (raw_val instanceof bindings.LDKBalance.ClaimableOnChannelClose) {
-                       return new ClaimableOnChannelClose(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKBalance.ClaimableAwaitingConfirmations) {
-                       return new ClaimableAwaitingConfirmations(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKBalance.ContentiousClaimable) {
-                       return new ContentiousClaimable(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKBalance.MaybeClaimableHTLCAwaitingTimeout) {
-                       return new MaybeClaimableHTLCAwaitingTimeout(this.ptr, raw_val);
-               }
-               throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
-       }
-
-}
-export class ClaimableOnChannelClose extends Balance {
-       public claimable_amount_satoshis: number;
-       private constructor(ptr: number, obj: bindings.LDKBalance.ClaimableOnChannelClose) {
-               super(null, ptr);
-               this.claimable_amount_satoshis = obj.claimable_amount_satoshis;
-       }
-}
-export class ClaimableAwaitingConfirmations extends Balance {
-       public claimable_amount_satoshis: number;
-       public confirmation_height: number;
-       private constructor(ptr: number, obj: bindings.LDKBalance.ClaimableAwaitingConfirmations) {
-               super(null, ptr);
-               this.claimable_amount_satoshis = obj.claimable_amount_satoshis;
-               this.confirmation_height = obj.confirmation_height;
-       }
-}
-export class ContentiousClaimable extends Balance {
-       public claimable_amount_satoshis: number;
-       public timeout_height: number;
-       private constructor(ptr: number, obj: bindings.LDKBalance.ContentiousClaimable) {
-               super(null, ptr);
-               this.claimable_amount_satoshis = obj.claimable_amount_satoshis;
-               this.timeout_height = obj.timeout_height;
-       }
-}
-export class MaybeClaimableHTLCAwaitingTimeout extends Balance {
-       public claimable_amount_satoshis: number;
-       public claimable_height: number;
-       private constructor(ptr: number, obj: bindings.LDKBalance.MaybeClaimableHTLCAwaitingTimeout) {
-               super(null, ptr);
-               this.claimable_amount_satoshis = obj.claimable_amount_satoshis;
-               this.claimable_height = obj.claimable_height;
-       }
-}
-       public number clone_ptr() {
-               number ret = bindings.Balance_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Balance clone() {
-               number ret = bindings.Balance_clone(this.ptr);
-               Balance ret_hu_conv = Balance.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static Balance constructor_claimable_on_channel_close(number claimable_amount_satoshis) {
-               number ret = bindings.Balance_claimable_on_channel_close(claimable_amount_satoshis);
-               Balance ret_hu_conv = Balance.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static Balance constructor_claimable_awaiting_confirmations(number claimable_amount_satoshis, number confirmation_height) {
-               number ret = bindings.Balance_claimable_awaiting_confirmations(claimable_amount_satoshis, confirmation_height);
-               Balance ret_hu_conv = Balance.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static Balance constructor_contentious_claimable(number claimable_amount_satoshis, number timeout_height) {
-               number ret = bindings.Balance_contentious_claimable(claimable_amount_satoshis, timeout_height);
-               Balance ret_hu_conv = Balance.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static Balance constructor_maybe_claimable_htlcawaiting_timeout(number claimable_amount_satoshis, number claimable_height) {
-               number ret = bindings.Balance_maybe_claimable_htlcawaiting_timeout(claimable_amount_satoshis, claimable_height);
-               Balance ret_hu_conv = Balance.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public boolean eq(Balance b) {
-               boolean ret = bindings.Balance_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/BaseSign.ts b/ts/structs/BaseSign.ts
deleted file mode 100644 (file)
index b76963c..0000000
+++ /dev/null
@@ -1,233 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export class BaseSign extends CommonBase {
-
-                bindings_instance?: bindings.LDKBaseSign;
-
-                constructor(ptr?: number, arg?: bindings.LDKBaseSign, pubkeys?: ChannelPublicKeys) {
-                    if (Number.isFinite(ptr)) {
-                                       super(ptr);
-                                       this.bindings_instance = null;
-                                   } else {
-                                       // TODO: private constructor instantiation
-                                       super(bindings.LDKBaseSign_new(arg, pubkeys == null ? 0 : pubkeys.clone_ptr()));
-                                       this.ptrs_to.push(arg);
-                                       
-                                   }
-                }
-
-                protected finalize() {
-                    if (this.ptr != 0) {
-                        bindings.BaseSign_free(this.ptr);
-                    }
-                    super.finalize();
-                }
-
-                static new_impl(arg: BaseSignInterface, pubkeys: ChannelPublicKeys): BaseSign {
-                    const impl_holder: LDKBaseSignHolder = new LDKBaseSignHolder();
-                    let structImplementation = <bindings.LDKBaseSign>{
-                        // todo: in-line interface filling
-                        get_per_commitment_point (idx: number): Uint8Array {
-                                                       Uint8Array ret = arg.get_per_commitment_point(idx);
-                               result: Uint8Array = InternalUtils.check_arr_len(ret, 33);
-                               return result;
-                                               },
-
-                                               release_commitment_secret (idx: number): Uint8Array {
-                                                       Uint8Array ret = arg.release_commitment_secret(idx);
-                               result: Uint8Array = InternalUtils.check_arr_len(ret, 32);
-                               return result;
-                                               },
-
-                                               validate_holder_commitment (holder_tx: number): number {
-                                                       const holder_tx_hu_conv: HolderCommitmentTransaction = new HolderCommitmentTransaction(null, holder_tx);
-                                                       Result_NoneNoneZ ret = arg.validate_holder_commitment(holder_tx_hu_conv);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               channel_keys_id (): Uint8Array {
-                                                       Uint8Array ret = arg.channel_keys_id();
-                               result: Uint8Array = InternalUtils.check_arr_len(ret, 32);
-                               return result;
-                                               },
-
-                                               sign_counterparty_commitment (commitment_tx: number): number {
-                                                       const commitment_tx_hu_conv: CommitmentTransaction = new CommitmentTransaction(null, commitment_tx);
-                                                       Result_C2Tuple_SignatureCVec_SignatureZZNoneZ ret = arg.sign_counterparty_commitment(commitment_tx_hu_conv);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               validate_counterparty_revocation (idx: number, secret: Uint8Array): number {
-                                                       Result_NoneNoneZ ret = arg.validate_counterparty_revocation(idx, secret);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               sign_holder_commitment_and_htlcs (commitment_tx: number): number {
-                                                       const commitment_tx_hu_conv: HolderCommitmentTransaction = new HolderCommitmentTransaction(null, commitment_tx);
-                                                       Result_C2Tuple_SignatureCVec_SignatureZZNoneZ ret = arg.sign_holder_commitment_and_htlcs(commitment_tx_hu_conv);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               sign_justice_revoked_output (justice_tx: Uint8Array, input: number, amount: number, per_commitment_key: Uint8Array): number {
-                                                       Result_SignatureNoneZ ret = arg.sign_justice_revoked_output(justice_tx, input, amount, per_commitment_key);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               sign_justice_revoked_htlc (justice_tx: Uint8Array, input: number, amount: number, per_commitment_key: Uint8Array, htlc: number): number {
-                                                       const htlc_hu_conv: HTLCOutputInCommitment = new HTLCOutputInCommitment(null, htlc);
-                                                       Result_SignatureNoneZ ret = arg.sign_justice_revoked_htlc(justice_tx, input, amount, per_commitment_key, htlc_hu_conv);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               sign_counterparty_htlc_transaction (htlc_tx: Uint8Array, input: number, amount: number, per_commitment_point: Uint8Array, htlc: number): number {
-                                                       const htlc_hu_conv: HTLCOutputInCommitment = new HTLCOutputInCommitment(null, htlc);
-                                                       Result_SignatureNoneZ ret = arg.sign_counterparty_htlc_transaction(htlc_tx, input, amount, per_commitment_point, htlc_hu_conv);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               sign_closing_transaction (closing_tx: number): number {
-                                                       const closing_tx_hu_conv: ClosingTransaction = new ClosingTransaction(null, closing_tx);
-                                                       Result_SignatureNoneZ ret = arg.sign_closing_transaction(closing_tx_hu_conv);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               sign_channel_announcement (msg: number): number {
-                                                       const msg_hu_conv: UnsignedChannelAnnouncement = new UnsignedChannelAnnouncement(null, msg);
-                                                       Result_SignatureNoneZ ret = arg.sign_channel_announcement(msg_hu_conv);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               ready_channel (channel_parameters: number): void {
-                                                       const channel_parameters_hu_conv: ChannelTransactionParameters = new ChannelTransactionParameters(null, channel_parameters);
-                                                       arg.ready_channel(channel_parameters_hu_conv);
-                                               },
-
-                                               
-                    };
-                    impl_holder.held = new BaseSign (null, structImplementation, pubkeys);
-                }
-            }
-
-            export interface BaseSignInterface {
-                get_per_commitment_point(idx: number): Uint8Array;
-                               release_commitment_secret(idx: number): Uint8Array;
-                               validate_holder_commitment(holder_tx: HolderCommitmentTransaction): Result_NoneNoneZ;
-                               channel_keys_id(): Uint8Array;
-                               sign_counterparty_commitment(commitment_tx: CommitmentTransaction): Result_C2Tuple_SignatureCVec_SignatureZZNoneZ;
-                               validate_counterparty_revocation(idx: number, secret: Uint8Array): Result_NoneNoneZ;
-                               sign_holder_commitment_and_htlcs(commitment_tx: HolderCommitmentTransaction): Result_C2Tuple_SignatureCVec_SignatureZZNoneZ;
-                               sign_justice_revoked_output(justice_tx: Uint8Array, input: number, amount: number, per_commitment_key: Uint8Array): Result_SignatureNoneZ;
-                               sign_justice_revoked_htlc(justice_tx: Uint8Array, input: number, amount: number, per_commitment_key: Uint8Array, htlc: HTLCOutputInCommitment): Result_SignatureNoneZ;
-                               sign_counterparty_htlc_transaction(htlc_tx: Uint8Array, input: number, amount: number, per_commitment_point: Uint8Array, htlc: HTLCOutputInCommitment): Result_SignatureNoneZ;
-                               sign_closing_transaction(closing_tx: ClosingTransaction): Result_SignatureNoneZ;
-                               sign_channel_announcement(msg: UnsignedChannelAnnouncement): Result_SignatureNoneZ;
-                               ready_channel(channel_parameters: ChannelTransactionParameters): void;
-                               
-            }
-
-            class LDKBaseSignHolder {
-                held: BaseSign;
-            }
-       public Uint8Array get_per_commitment_point(number idx) {
-               Uint8Array ret = bindings.BaseSign_get_per_commitment_point(this.ptr, idx);
-               return ret;
-       }
-
-       public Uint8Array release_commitment_secret(number idx) {
-               Uint8Array ret = bindings.BaseSign_release_commitment_secret(this.ptr, idx);
-               return ret;
-       }
-
-       public Result_NoneNoneZ validate_holder_commitment(HolderCommitmentTransaction holder_tx) {
-               number ret = bindings.BaseSign_validate_holder_commitment(this.ptr, holder_tx == null ? 0 : holder_tx.ptr & ~1);
-               Result_NoneNoneZ ret_hu_conv = Result_NoneNoneZ.constr_from_ptr(ret);
-               this.ptrs_to.add(holder_tx);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array channel_keys_id() {
-               Uint8Array ret = bindings.BaseSign_channel_keys_id(this.ptr);
-               return ret;
-       }
-
-       public Result_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_counterparty_commitment(CommitmentTransaction commitment_tx) {
-               number ret = bindings.BaseSign_sign_counterparty_commitment(this.ptr, commitment_tx == null ? 0 : commitment_tx.ptr & ~1);
-               Result_C2Tuple_SignatureCVec_SignatureZZNoneZ ret_hu_conv = Result_C2Tuple_SignatureCVec_SignatureZZNoneZ.constr_from_ptr(ret);
-               this.ptrs_to.add(commitment_tx);
-               return ret_hu_conv;
-       }
-
-       public Result_NoneNoneZ validate_counterparty_revocation(number idx, Uint8Array secret) {
-               number ret = bindings.BaseSign_validate_counterparty_revocation(this.ptr, idx, InternalUtils.check_arr_len(secret, 32));
-               Result_NoneNoneZ ret_hu_conv = Result_NoneNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public Result_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_holder_commitment_and_htlcs(HolderCommitmentTransaction commitment_tx) {
-               number ret = bindings.BaseSign_sign_holder_commitment_and_htlcs(this.ptr, commitment_tx == null ? 0 : commitment_tx.ptr & ~1);
-               Result_C2Tuple_SignatureCVec_SignatureZZNoneZ ret_hu_conv = Result_C2Tuple_SignatureCVec_SignatureZZNoneZ.constr_from_ptr(ret);
-               this.ptrs_to.add(commitment_tx);
-               return ret_hu_conv;
-       }
-
-       public Result_SignatureNoneZ sign_justice_revoked_output(Uint8Array justice_tx, number input, number amount, Uint8Array per_commitment_key) {
-               number ret = bindings.BaseSign_sign_justice_revoked_output(this.ptr, justice_tx, input, amount, InternalUtils.check_arr_len(per_commitment_key, 32));
-               Result_SignatureNoneZ ret_hu_conv = Result_SignatureNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public Result_SignatureNoneZ sign_justice_revoked_htlc(Uint8Array justice_tx, number input, number amount, Uint8Array per_commitment_key, HTLCOutputInCommitment htlc) {
-               number ret = bindings.BaseSign_sign_justice_revoked_htlc(this.ptr, justice_tx, input, amount, InternalUtils.check_arr_len(per_commitment_key, 32), htlc == null ? 0 : htlc.ptr & ~1);
-               Result_SignatureNoneZ ret_hu_conv = Result_SignatureNoneZ.constr_from_ptr(ret);
-               this.ptrs_to.add(htlc);
-               return ret_hu_conv;
-       }
-
-       public Result_SignatureNoneZ sign_counterparty_htlc_transaction(Uint8Array htlc_tx, number input, number amount, Uint8Array per_commitment_point, HTLCOutputInCommitment htlc) {
-               number ret = bindings.BaseSign_sign_counterparty_htlc_transaction(this.ptr, htlc_tx, input, amount, InternalUtils.check_arr_len(per_commitment_point, 33), htlc == null ? 0 : htlc.ptr & ~1);
-               Result_SignatureNoneZ ret_hu_conv = Result_SignatureNoneZ.constr_from_ptr(ret);
-               this.ptrs_to.add(htlc);
-               return ret_hu_conv;
-       }
-
-       public Result_SignatureNoneZ sign_closing_transaction(ClosingTransaction closing_tx) {
-               number ret = bindings.BaseSign_sign_closing_transaction(this.ptr, closing_tx == null ? 0 : closing_tx.ptr & ~1);
-               Result_SignatureNoneZ ret_hu_conv = Result_SignatureNoneZ.constr_from_ptr(ret);
-               this.ptrs_to.add(closing_tx);
-               return ret_hu_conv;
-       }
-
-       public Result_SignatureNoneZ sign_channel_announcement(UnsignedChannelAnnouncement msg) {
-               number ret = bindings.BaseSign_sign_channel_announcement(this.ptr, msg == null ? 0 : msg.ptr & ~1);
-               Result_SignatureNoneZ ret_hu_conv = Result_SignatureNoneZ.constr_from_ptr(ret);
-               this.ptrs_to.add(msg);
-               return ret_hu_conv;
-       }
-
-       public void ready_channel(ChannelTransactionParameters channel_parameters) {
-               bindings.BaseSign_ready_channel(this.ptr, channel_parameters == null ? 0 : channel_parameters.ptr & ~1);
-               this.ptrs_to.add(channel_parameters);
-       }
-
-       public ChannelPublicKeys get_pubkeys() {
-               number ret = bindings.BaseSign_get_pubkeys(this.ptr);
-               const ret_hu_conv: ChannelPublicKeys = new ChannelPublicKeys(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/BestBlock.ts b/ts/structs/BestBlock.ts
deleted file mode 100644 (file)
index 08597ee..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class BestBlock extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.BestBlock_free(this.ptr);
-                    }
-                }
-       public number clone_ptr() {
-               number ret = bindings.BestBlock_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public BestBlock clone() {
-               number ret = bindings.BestBlock_clone(this.ptr);
-               const ret_hu_conv: BestBlock = new BestBlock(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static BestBlock constructor_from_genesis(Network network) {
-               number ret = bindings.BestBlock_from_genesis(network);
-               const ret_hu_conv: BestBlock = new BestBlock(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static BestBlock constructor_new(Uint8Array block_hash, number height) {
-               number ret = bindings.BestBlock_new(InternalUtils.check_arr_len(block_hash, 32), height);
-               const ret_hu_conv: BestBlock = new BestBlock(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array block_hash() {
-               Uint8Array ret = bindings.BestBlock_block_hash(this.ptr);
-               return ret;
-       }
-
-       public number height() {
-               number ret = bindings.BestBlock_height(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/BroadcasterInterface.ts b/ts/structs/BroadcasterInterface.ts
deleted file mode 100644 (file)
index 2fbda73..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export class BroadcasterInterface extends CommonBase {
-
-                bindings_instance?: bindings.LDKBroadcasterInterface;
-
-                constructor(ptr?: number, arg?: bindings.LDKBroadcasterInterface) {
-                    if (Number.isFinite(ptr)) {
-                                       super(ptr);
-                                       this.bindings_instance = null;
-                                   } else {
-                                       // TODO: private constructor instantiation
-                                       super(bindings.LDKBroadcasterInterface_new(arg));
-                                       this.ptrs_to.push(arg);
-                                       
-                                   }
-                }
-
-                protected finalize() {
-                    if (this.ptr != 0) {
-                        bindings.BroadcasterInterface_free(this.ptr);
-                    }
-                    super.finalize();
-                }
-
-                static new_impl(arg: BroadcasterInterfaceInterface): BroadcasterInterface {
-                    const impl_holder: LDKBroadcasterInterfaceHolder = new LDKBroadcasterInterfaceHolder();
-                    let structImplementation = <bindings.LDKBroadcasterInterface>{
-                        // todo: in-line interface filling
-                        broadcast_transaction (tx: Uint8Array): void {
-                                                       arg.broadcast_transaction(tx);
-                                               },
-
-                                               
-                    };
-                    impl_holder.held = new BroadcasterInterface (null, structImplementation);
-                }
-            }
-
-            export interface BroadcasterInterfaceInterface {
-                broadcast_transaction(tx: Uint8Array): void;
-                               
-            }
-
-            class LDKBroadcasterInterfaceHolder {
-                held: BroadcasterInterface;
-            }
-       public void broadcast_transaction(Uint8Array tx) {
-               bindings.BroadcasterInterface_broadcast_transaction(this.ptr, tx);
-       }
-
-}
diff --git a/ts/structs/BuiltCommitmentTransaction.ts b/ts/structs/BuiltCommitmentTransaction.ts
deleted file mode 100644 (file)
index a2082dc..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class BuiltCommitmentTransaction extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.BuiltCommitmentTransaction_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_transaction() {
-               Uint8Array ret = bindings.BuiltCommitmentTransaction_get_transaction(this.ptr);
-               return ret;
-       }
-
-       public void set_transaction(Uint8Array val) {
-               bindings.BuiltCommitmentTransaction_set_transaction(this.ptr, val);
-       }
-
-       public Uint8Array get_txid() {
-               Uint8Array ret = bindings.BuiltCommitmentTransaction_get_txid(this.ptr);
-               return ret;
-       }
-
-       public void set_txid(Uint8Array val) {
-               bindings.BuiltCommitmentTransaction_set_txid(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public static BuiltCommitmentTransaction constructor_new(Uint8Array transaction_arg, Uint8Array txid_arg) {
-               number ret = bindings.BuiltCommitmentTransaction_new(transaction_arg, InternalUtils.check_arr_len(txid_arg, 32));
-               const ret_hu_conv: BuiltCommitmentTransaction = new BuiltCommitmentTransaction(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.BuiltCommitmentTransaction_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 Result_BuiltCommitmentTransactionDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.BuiltCommitmentTransaction_read(ser);
-               Result_BuiltCommitmentTransactionDecodeErrorZ ret_hu_conv = Result_BuiltCommitmentTransactionDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array get_sighash_all(Uint8Array funding_redeemscript, number channel_value_satoshis) {
-               Uint8Array ret = bindings.BuiltCommitmentTransaction_get_sighash_all(this.ptr, funding_redeemscript, channel_value_satoshis);
-               return ret;
-       }
-
-       public Uint8Array sign(Uint8Array funding_key, Uint8Array funding_redeemscript, number channel_value_satoshis) {
-               Uint8Array ret = bindings.BuiltCommitmentTransaction_sign(this.ptr, InternalUtils.check_arr_len(funding_key, 32), funding_redeemscript, channel_value_satoshis);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/ChainMonitor.ts b/ts/structs/ChainMonitor.ts
deleted file mode 100644 (file)
index e65e42b..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ChainMonitor extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ChainMonitor_free(this.ptr);
-                    }
-                }
-       public static ChainMonitor constructor_new(Option_FilterZ chain_source, BroadcasterInterface broadcaster, Logger logger, FeeEstimator feeest, Persist persister) {
-               number ret = bindings.ChainMonitor_new(chain_source.ptr, broadcaster == null ? 0 : broadcaster.ptr, logger == null ? 0 : logger.ptr, feeest == null ? 0 : feeest.ptr, persister == null ? 0 : persister.ptr);
-               const ret_hu_conv: ChainMonitor = new ChainMonitor(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               ret_hu_conv.ptrs_to.add(chain_source);
-               ret_hu_conv.ptrs_to.add(broadcaster);
-               ret_hu_conv.ptrs_to.add(logger);
-               ret_hu_conv.ptrs_to.add(feeest);
-               ret_hu_conv.ptrs_to.add(persister);
-               return ret_hu_conv;
-       }
-
-       public Balance[] get_claimable_balances(ChannelDetails[] ignored_channels) {
-               number[] ret = bindings.ChainMonitor_get_claimable_balances(this.ptr, ignored_channels != null ? Arrays.stream(ignored_channels).map(ignored_channels_conv_16 -> ignored_channels_conv_16 == null ? 0 : ignored_channels_conv_16.ptr & ~1).toArray(number[]::new) : null);
-               Balance[] ret_conv_9_arr = new Balance[ret.length];
-               for (int j = 0; j < ret.length; j++) {
-                       number ret_conv_9 = ret[j];
-                       Balance ret_conv_9_hu_conv = Balance.constr_from_ptr(ret_conv_9);
-                       ret_conv_9_hu_conv.ptrs_to.add(this);
-                       ret_conv_9_arr[j] = ret_conv_9_hu_conv;
-               }
-               return ret_conv_9_arr;
-       }
-
-       public Result_LockedChannelMonitorNoneZ get_monitor(OutPoint funding_txo) {
-               number ret = bindings.ChainMonitor_get_monitor(this.ptr, funding_txo == null ? 0 : funding_txo.ptr & ~1);
-               Result_LockedChannelMonitorNoneZ ret_hu_conv = Result_LockedChannelMonitorNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public OutPoint[] list_monitors() {
-               number[] ret = bindings.ChainMonitor_list_monitors(this.ptr);
-               OutPoint[] ret_conv_10_arr = new OutPoint[ret.length];
-               for (int k = 0; k < ret.length; k++) {
-                       number ret_conv_10 = ret[k];
-                       const ret_conv_10_hu_conv: OutPoint = new OutPoint(null, ret_conv_10);
-                       ret_conv_10_hu_conv.ptrs_to.add(this);
-                       ret_conv_10_arr[k] = ret_conv_10_hu_conv;
-               }
-               return ret_conv_10_arr;
-       }
-
-       public Result_NoneAPIErrorZ channel_monitor_updated(OutPoint funding_txo, MonitorUpdateId completed_update_id) {
-               number ret = bindings.ChainMonitor_channel_monitor_updated(this.ptr, funding_txo == null ? 0 : funding_txo.ptr & ~1, completed_update_id == null ? 0 : completed_update_id.ptr & ~1);
-               Result_NoneAPIErrorZ ret_hu_conv = Result_NoneAPIErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public Listen as_Listen() {
-               number ret = bindings.ChainMonitor_as_Listen(this.ptr);
-               Listen ret_hu_conv = new Listen(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Confirm as_Confirm() {
-               number ret = bindings.ChainMonitor_as_Confirm(this.ptr);
-               Confirm ret_hu_conv = new Confirm(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Watch as_Watch() {
-               number ret = bindings.ChainMonitor_as_Watch(this.ptr);
-               Watch ret_hu_conv = new Watch(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public EventsProvider as_EventsProvider() {
-               number ret = bindings.ChainMonitor_as_EventsProvider(this.ptr);
-               EventsProvider ret_hu_conv = new EventsProvider(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/ChainParameters.ts b/ts/structs/ChainParameters.ts
deleted file mode 100644 (file)
index cf87765..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ChainParameters extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ChainParameters_free(this.ptr);
-                    }
-                }
-       public Network get_network() {
-               Network ret = bindings.ChainParameters_get_network(this.ptr);
-               return ret;
-       }
-
-       public void set_network(Network val) {
-               bindings.ChainParameters_set_network(this.ptr, val);
-       }
-
-       public BestBlock get_best_block() {
-               number ret = bindings.ChainParameters_get_best_block(this.ptr);
-               const ret_hu_conv: BestBlock = new BestBlock(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_best_block(BestBlock val) {
-               bindings.ChainParameters_set_best_block(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public static ChainParameters constructor_new(Network network_arg, BestBlock best_block_arg) {
-               number ret = bindings.ChainParameters_new(network_arg, best_block_arg == null ? 0 : best_block_arg.ptr & ~1);
-               const ret_hu_conv: ChainParameters = new ChainParameters(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.ChainParameters_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public ChainParameters clone() {
-               number ret = bindings.ChainParameters_clone(this.ptr);
-               const ret_hu_conv: ChainParameters = new ChainParameters(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/ChannelAnnouncement.ts b/ts/structs/ChannelAnnouncement.ts
deleted file mode 100644 (file)
index d009b06..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ChannelAnnouncement extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ChannelAnnouncement_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_node_signature_1() {
-               Uint8Array ret = bindings.ChannelAnnouncement_get_node_signature_1(this.ptr);
-               return ret;
-       }
-
-       public void set_node_signature_1(Uint8Array val) {
-               bindings.ChannelAnnouncement_set_node_signature_1(this.ptr, InternalUtils.check_arr_len(val, 64));
-       }
-
-       public Uint8Array get_node_signature_2() {
-               Uint8Array ret = bindings.ChannelAnnouncement_get_node_signature_2(this.ptr);
-               return ret;
-       }
-
-       public void set_node_signature_2(Uint8Array val) {
-               bindings.ChannelAnnouncement_set_node_signature_2(this.ptr, InternalUtils.check_arr_len(val, 64));
-       }
-
-       public Uint8Array get_bitcoin_signature_1() {
-               Uint8Array ret = bindings.ChannelAnnouncement_get_bitcoin_signature_1(this.ptr);
-               return ret;
-       }
-
-       public void set_bitcoin_signature_1(Uint8Array val) {
-               bindings.ChannelAnnouncement_set_bitcoin_signature_1(this.ptr, InternalUtils.check_arr_len(val, 64));
-       }
-
-       public Uint8Array get_bitcoin_signature_2() {
-               Uint8Array ret = bindings.ChannelAnnouncement_get_bitcoin_signature_2(this.ptr);
-               return ret;
-       }
-
-       public void set_bitcoin_signature_2(Uint8Array val) {
-               bindings.ChannelAnnouncement_set_bitcoin_signature_2(this.ptr, InternalUtils.check_arr_len(val, 64));
-       }
-
-       public UnsignedChannelAnnouncement get_contents() {
-               number ret = bindings.ChannelAnnouncement_get_contents(this.ptr);
-               const ret_hu_conv: UnsignedChannelAnnouncement = new UnsignedChannelAnnouncement(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_contents(UnsignedChannelAnnouncement val) {
-               bindings.ChannelAnnouncement_set_contents(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public static ChannelAnnouncement constructor_new(Uint8Array node_signature_1_arg, Uint8Array node_signature_2_arg, Uint8Array bitcoin_signature_1_arg, Uint8Array bitcoin_signature_2_arg, UnsignedChannelAnnouncement contents_arg) {
-               number ret = bindings.ChannelAnnouncement_new(InternalUtils.check_arr_len(node_signature_1_arg, 64), InternalUtils.check_arr_len(node_signature_2_arg, 64), InternalUtils.check_arr_len(bitcoin_signature_1_arg, 64), InternalUtils.check_arr_len(bitcoin_signature_2_arg, 64), contents_arg == null ? 0 : contents_arg.ptr & ~1);
-               const ret_hu_conv: ChannelAnnouncement = new ChannelAnnouncement(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.ChannelAnnouncement_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 Result_ChannelAnnouncementDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.ChannelAnnouncement_read(ser);
-               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
deleted file mode 100644 (file)
index e7e2c97..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ChannelConfig extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ChannelConfig_free(this.ptr);
-                    }
-                }
-       public number get_forwarding_fee_proportional_millionths() {
-               number ret = bindings.ChannelConfig_get_forwarding_fee_proportional_millionths(this.ptr);
-               return ret;
-       }
-
-       public void set_forwarding_fee_proportional_millionths(number val) {
-               bindings.ChannelConfig_set_forwarding_fee_proportional_millionths(this.ptr, val);
-       }
-
-       public number get_forwarding_fee_base_msat() {
-               number ret = bindings.ChannelConfig_get_forwarding_fee_base_msat(this.ptr);
-               return ret;
-       }
-
-       public void set_forwarding_fee_base_msat(number val) {
-               bindings.ChannelConfig_set_forwarding_fee_base_msat(this.ptr, val);
-       }
-
-       public number get_cltv_expiry_delta() {
-               number ret = bindings.ChannelConfig_get_cltv_expiry_delta(this.ptr);
-               return ret;
-       }
-
-       public void set_cltv_expiry_delta(number val) {
-               bindings.ChannelConfig_set_cltv_expiry_delta(this.ptr, val);
-       }
-
-       public boolean get_announced_channel() {
-               boolean ret = bindings.ChannelConfig_get_announced_channel(this.ptr);
-               return ret;
-       }
-
-       public void set_announced_channel(boolean val) {
-               bindings.ChannelConfig_set_announced_channel(this.ptr, val);
-       }
-
-       public boolean get_commit_upfront_shutdown_pubkey() {
-               boolean ret = bindings.ChannelConfig_get_commit_upfront_shutdown_pubkey(this.ptr);
-               return ret;
-       }
-
-       public void set_commit_upfront_shutdown_pubkey(boolean val) {
-               bindings.ChannelConfig_set_commit_upfront_shutdown_pubkey(this.ptr, val);
-       }
-
-       public number get_max_dust_htlc_exposure_msat() {
-               number ret = bindings.ChannelConfig_get_max_dust_htlc_exposure_msat(this.ptr);
-               return ret;
-       }
-
-       public void set_max_dust_htlc_exposure_msat(number val) {
-               bindings.ChannelConfig_set_max_dust_htlc_exposure_msat(this.ptr, val);
-       }
-
-       public number get_force_close_avoidance_max_fee_satoshis() {
-               number ret = bindings.ChannelConfig_get_force_close_avoidance_max_fee_satoshis(this.ptr);
-               return ret;
-       }
-
-       public void set_force_close_avoidance_max_fee_satoshis(number val) {
-               bindings.ChannelConfig_set_force_close_avoidance_max_fee_satoshis(this.ptr, val);
-       }
-
-       public static ChannelConfig constructor_new(number forwarding_fee_proportional_millionths_arg, number forwarding_fee_base_msat_arg, number cltv_expiry_delta_arg, boolean announced_channel_arg, boolean commit_upfront_shutdown_pubkey_arg, number max_dust_htlc_exposure_msat_arg, number force_close_avoidance_max_fee_satoshis_arg) {
-               number ret = bindings.ChannelConfig_new(forwarding_fee_proportional_millionths_arg, forwarding_fee_base_msat_arg, cltv_expiry_delta_arg, announced_channel_arg, commit_upfront_shutdown_pubkey_arg, max_dust_htlc_exposure_msat_arg, force_close_avoidance_max_fee_satoshis_arg);
-               const ret_hu_conv: ChannelConfig = new ChannelConfig(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.ChannelConfig_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.ChannelConfig_write(this.ptr);
-               return ret;
-       }
-
-       public static Result_ChannelConfigDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.ChannelConfig_read(ser);
-               Result_ChannelConfigDecodeErrorZ ret_hu_conv = Result_ChannelConfigDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/ChannelCounterparty.ts b/ts/structs/ChannelCounterparty.ts
deleted file mode 100644 (file)
index 2facb07..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ChannelCounterparty extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ChannelCounterparty_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_node_id() {
-               Uint8Array ret = bindings.ChannelCounterparty_get_node_id(this.ptr);
-               return ret;
-       }
-
-       public void set_node_id(Uint8Array val) {
-               bindings.ChannelCounterparty_set_node_id(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public InitFeatures get_features() {
-               number ret = bindings.ChannelCounterparty_get_features(this.ptr);
-               const ret_hu_conv: InitFeatures = new InitFeatures(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_features(InitFeatures val) {
-               bindings.ChannelCounterparty_set_features(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public number get_unspendable_punishment_reserve() {
-               number ret = bindings.ChannelCounterparty_get_unspendable_punishment_reserve(this.ptr);
-               return ret;
-       }
-
-       public void set_unspendable_punishment_reserve(number val) {
-               bindings.ChannelCounterparty_set_unspendable_punishment_reserve(this.ptr, val);
-       }
-
-       public CounterpartyForwardingInfo get_forwarding_info() {
-               number ret = bindings.ChannelCounterparty_get_forwarding_info(this.ptr);
-               const ret_hu_conv: CounterpartyForwardingInfo = new CounterpartyForwardingInfo(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_forwarding_info(CounterpartyForwardingInfo val) {
-               bindings.ChannelCounterparty_set_forwarding_info(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public static ChannelCounterparty constructor_new(Uint8Array node_id_arg, InitFeatures features_arg, number unspendable_punishment_reserve_arg, CounterpartyForwardingInfo forwarding_info_arg) {
-               number ret = bindings.ChannelCounterparty_new(InternalUtils.check_arr_len(node_id_arg, 33), features_arg == null ? 0 : features_arg.ptr & ~1, unspendable_punishment_reserve_arg, forwarding_info_arg == null ? 0 : forwarding_info_arg.ptr & ~1);
-               const ret_hu_conv: ChannelCounterparty = new ChannelCounterparty(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.ChannelCounterparty_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public ChannelCounterparty clone() {
-               number ret = bindings.ChannelCounterparty_clone(this.ptr);
-               const ret_hu_conv: ChannelCounterparty = new ChannelCounterparty(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/ChannelDetails.ts b/ts/structs/ChannelDetails.ts
deleted file mode 100644 (file)
index 15435d9..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ChannelDetails extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ChannelDetails_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_channel_id() {
-               Uint8Array ret = bindings.ChannelDetails_get_channel_id(this.ptr);
-               return ret;
-       }
-
-       public void set_channel_id(Uint8Array val) {
-               bindings.ChannelDetails_set_channel_id(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public ChannelCounterparty get_counterparty() {
-               number ret = bindings.ChannelDetails_get_counterparty(this.ptr);
-               const ret_hu_conv: ChannelCounterparty = new ChannelCounterparty(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_counterparty(ChannelCounterparty val) {
-               bindings.ChannelDetails_set_counterparty(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public OutPoint get_funding_txo() {
-               number ret = bindings.ChannelDetails_get_funding_txo(this.ptr);
-               const ret_hu_conv: OutPoint = new OutPoint(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_funding_txo(OutPoint val) {
-               bindings.ChannelDetails_set_funding_txo(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public Option_u64Z get_short_channel_id() {
-               number ret = bindings.ChannelDetails_get_short_channel_id(this.ptr);
-               Option_u64Z ret_hu_conv = Option_u64Z.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_short_channel_id(Option_u64Z val) {
-               bindings.ChannelDetails_set_short_channel_id(this.ptr, val.ptr);
-       }
-
-       public number get_channel_value_satoshis() {
-               number ret = bindings.ChannelDetails_get_channel_value_satoshis(this.ptr);
-               return ret;
-       }
-
-       public void set_channel_value_satoshis(number val) {
-               bindings.ChannelDetails_set_channel_value_satoshis(this.ptr, val);
-       }
-
-       public Option_u64Z get_unspendable_punishment_reserve() {
-               number ret = bindings.ChannelDetails_get_unspendable_punishment_reserve(this.ptr);
-               Option_u64Z ret_hu_conv = Option_u64Z.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_unspendable_punishment_reserve(Option_u64Z val) {
-               bindings.ChannelDetails_set_unspendable_punishment_reserve(this.ptr, val.ptr);
-       }
-
-       public number get_user_channel_id() {
-               number ret = bindings.ChannelDetails_get_user_channel_id(this.ptr);
-               return ret;
-       }
-
-       public void set_user_channel_id(number val) {
-               bindings.ChannelDetails_set_user_channel_id(this.ptr, val);
-       }
-
-       public number get_balance_msat() {
-               number ret = bindings.ChannelDetails_get_balance_msat(this.ptr);
-               return ret;
-       }
-
-       public void set_balance_msat(number val) {
-               bindings.ChannelDetails_set_balance_msat(this.ptr, val);
-       }
-
-       public number get_outbound_capacity_msat() {
-               number ret = bindings.ChannelDetails_get_outbound_capacity_msat(this.ptr);
-               return ret;
-       }
-
-       public void set_outbound_capacity_msat(number val) {
-               bindings.ChannelDetails_set_outbound_capacity_msat(this.ptr, val);
-       }
-
-       public number get_inbound_capacity_msat() {
-               number ret = bindings.ChannelDetails_get_inbound_capacity_msat(this.ptr);
-               return ret;
-       }
-
-       public void set_inbound_capacity_msat(number val) {
-               bindings.ChannelDetails_set_inbound_capacity_msat(this.ptr, val);
-       }
-
-       public Option_u32Z get_confirmations_required() {
-               number ret = bindings.ChannelDetails_get_confirmations_required(this.ptr);
-               Option_u32Z ret_hu_conv = Option_u32Z.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_confirmations_required(Option_u32Z val) {
-               bindings.ChannelDetails_set_confirmations_required(this.ptr, val.ptr);
-       }
-
-       public Option_u16Z get_force_close_spend_delay() {
-               number ret = bindings.ChannelDetails_get_force_close_spend_delay(this.ptr);
-               Option_u16Z ret_hu_conv = Option_u16Z.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_force_close_spend_delay(Option_u16Z val) {
-               bindings.ChannelDetails_set_force_close_spend_delay(this.ptr, val.ptr);
-       }
-
-       public boolean get_is_outbound() {
-               boolean ret = bindings.ChannelDetails_get_is_outbound(this.ptr);
-               return ret;
-       }
-
-       public void set_is_outbound(boolean val) {
-               bindings.ChannelDetails_set_is_outbound(this.ptr, val);
-       }
-
-       public boolean get_is_funding_locked() {
-               boolean ret = bindings.ChannelDetails_get_is_funding_locked(this.ptr);
-               return ret;
-       }
-
-       public void set_is_funding_locked(boolean val) {
-               bindings.ChannelDetails_set_is_funding_locked(this.ptr, val);
-       }
-
-       public boolean get_is_usable() {
-               boolean ret = bindings.ChannelDetails_get_is_usable(this.ptr);
-               return ret;
-       }
-
-       public void set_is_usable(boolean val) {
-               bindings.ChannelDetails_set_is_usable(this.ptr, val);
-       }
-
-       public boolean get_is_public() {
-               boolean ret = bindings.ChannelDetails_get_is_public(this.ptr);
-               return ret;
-       }
-
-       public void set_is_public(boolean val) {
-               bindings.ChannelDetails_set_is_public(this.ptr, val);
-       }
-
-       public static ChannelDetails constructor_new(Uint8Array channel_id_arg, ChannelCounterparty counterparty_arg, OutPoint funding_txo_arg, Option_u64Z short_channel_id_arg, number channel_value_satoshis_arg, Option_u64Z unspendable_punishment_reserve_arg, number user_channel_id_arg, number balance_msat_arg, number outbound_capacity_msat_arg, number inbound_capacity_msat_arg, Option_u32Z confirmations_required_arg, Option_u16Z force_close_spend_delay_arg, boolean is_outbound_arg, boolean is_funding_locked_arg, boolean is_usable_arg, boolean is_public_arg) {
-               number ret = bindings.ChannelDetails_new(InternalUtils.check_arr_len(channel_id_arg, 32), counterparty_arg == null ? 0 : counterparty_arg.ptr & ~1, funding_txo_arg == null ? 0 : funding_txo_arg.ptr & ~1, short_channel_id_arg.ptr, channel_value_satoshis_arg, unspendable_punishment_reserve_arg.ptr, user_channel_id_arg, balance_msat_arg, outbound_capacity_msat_arg, inbound_capacity_msat_arg, confirmations_required_arg.ptr, force_close_spend_delay_arg.ptr, is_outbound_arg, is_funding_locked_arg, is_usable_arg, is_public_arg);
-               const ret_hu_conv: ChannelDetails = new ChannelDetails(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.ChannelDetails_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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
deleted file mode 100644 (file)
index 305b3a2..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ChannelFeatures extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ChannelFeatures_free(this.ptr);
-                    }
-                }
-       public boolean eq(ChannelFeatures b) {
-               boolean ret = bindings.ChannelFeatures_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
-               this.ptrs_to.add(b);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.ChannelFeatures_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 boolean requires_unknown_bits() {
-               boolean ret = bindings.ChannelFeatures_requires_unknown_bits(this.ptr);
-               return ret;
-       }
-
-       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
deleted file mode 100644 (file)
index 2c06b27..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ChannelHandshakeConfig extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ChannelHandshakeConfig_free(this.ptr);
-                    }
-                }
-       public number get_minimum_depth() {
-               number ret = bindings.ChannelHandshakeConfig_get_minimum_depth(this.ptr);
-               return ret;
-       }
-
-       public void set_minimum_depth(number val) {
-               bindings.ChannelHandshakeConfig_set_minimum_depth(this.ptr, val);
-       }
-
-       public number get_our_to_self_delay() {
-               number ret = bindings.ChannelHandshakeConfig_get_our_to_self_delay(this.ptr);
-               return ret;
-       }
-
-       public void set_our_to_self_delay(number val) {
-               bindings.ChannelHandshakeConfig_set_our_to_self_delay(this.ptr, val);
-       }
-
-       public number get_our_htlc_minimum_msat() {
-               number ret = bindings.ChannelHandshakeConfig_get_our_htlc_minimum_msat(this.ptr);
-               return ret;
-       }
-
-       public void set_our_htlc_minimum_msat(number val) {
-               bindings.ChannelHandshakeConfig_set_our_htlc_minimum_msat(this.ptr, val);
-       }
-
-       public static ChannelHandshakeConfig constructor_new(number minimum_depth_arg, number our_to_self_delay_arg, number our_htlc_minimum_msat_arg) {
-               number ret = bindings.ChannelHandshakeConfig_new(minimum_depth_arg, our_to_self_delay_arg, our_htlc_minimum_msat_arg);
-               const ret_hu_conv: ChannelHandshakeConfig = new ChannelHandshakeConfig(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.ChannelHandshakeConfig_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/ChannelHandshakeLimits.ts b/ts/structs/ChannelHandshakeLimits.ts
deleted file mode 100644 (file)
index 643c7ff..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ChannelHandshakeLimits extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ChannelHandshakeLimits_free(this.ptr);
-                    }
-                }
-       public number get_min_funding_satoshis() {
-               number ret = bindings.ChannelHandshakeLimits_get_min_funding_satoshis(this.ptr);
-               return ret;
-       }
-
-       public void set_min_funding_satoshis(number val) {
-               bindings.ChannelHandshakeLimits_set_min_funding_satoshis(this.ptr, val);
-       }
-
-       public number get_max_htlc_minimum_msat() {
-               number ret = bindings.ChannelHandshakeLimits_get_max_htlc_minimum_msat(this.ptr);
-               return ret;
-       }
-
-       public void set_max_htlc_minimum_msat(number val) {
-               bindings.ChannelHandshakeLimits_set_max_htlc_minimum_msat(this.ptr, val);
-       }
-
-       public number get_min_max_htlc_value_in_flight_msat() {
-               number ret = bindings.ChannelHandshakeLimits_get_min_max_htlc_value_in_flight_msat(this.ptr);
-               return ret;
-       }
-
-       public void set_min_max_htlc_value_in_flight_msat(number val) {
-               bindings.ChannelHandshakeLimits_set_min_max_htlc_value_in_flight_msat(this.ptr, val);
-       }
-
-       public number get_max_channel_reserve_satoshis() {
-               number ret = bindings.ChannelHandshakeLimits_get_max_channel_reserve_satoshis(this.ptr);
-               return ret;
-       }
-
-       public void set_max_channel_reserve_satoshis(number val) {
-               bindings.ChannelHandshakeLimits_set_max_channel_reserve_satoshis(this.ptr, val);
-       }
-
-       public number get_min_max_accepted_htlcs() {
-               number ret = bindings.ChannelHandshakeLimits_get_min_max_accepted_htlcs(this.ptr);
-               return ret;
-       }
-
-       public void set_min_max_accepted_htlcs(number val) {
-               bindings.ChannelHandshakeLimits_set_min_max_accepted_htlcs(this.ptr, val);
-       }
-
-       public number get_max_minimum_depth() {
-               number ret = bindings.ChannelHandshakeLimits_get_max_minimum_depth(this.ptr);
-               return ret;
-       }
-
-       public void set_max_minimum_depth(number val) {
-               bindings.ChannelHandshakeLimits_set_max_minimum_depth(this.ptr, val);
-       }
-
-       public boolean get_force_announced_channel_preference() {
-               boolean ret = bindings.ChannelHandshakeLimits_get_force_announced_channel_preference(this.ptr);
-               return ret;
-       }
-
-       public void set_force_announced_channel_preference(boolean val) {
-               bindings.ChannelHandshakeLimits_set_force_announced_channel_preference(this.ptr, val);
-       }
-
-       public number get_their_to_self_delay() {
-               number ret = bindings.ChannelHandshakeLimits_get_their_to_self_delay(this.ptr);
-               return ret;
-       }
-
-       public void set_their_to_self_delay(number val) {
-               bindings.ChannelHandshakeLimits_set_their_to_self_delay(this.ptr, val);
-       }
-
-       public static ChannelHandshakeLimits constructor_new(number min_funding_satoshis_arg, number max_htlc_minimum_msat_arg, number min_max_htlc_value_in_flight_msat_arg, number max_channel_reserve_satoshis_arg, number min_max_accepted_htlcs_arg, number max_minimum_depth_arg, boolean force_announced_channel_preference_arg, number their_to_self_delay_arg) {
-               number ret = bindings.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, max_minimum_depth_arg, force_announced_channel_preference_arg, their_to_self_delay_arg);
-               const ret_hu_conv: ChannelHandshakeLimits = new ChannelHandshakeLimits(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.ChannelHandshakeLimits_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/ChannelInfo.ts b/ts/structs/ChannelInfo.ts
deleted file mode 100644 (file)
index 19a1837..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ChannelInfo extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ChannelInfo_free(this.ptr);
-                    }
-                }
-       public ChannelFeatures get_features() {
-               number ret = bindings.ChannelInfo_get_features(this.ptr);
-               const ret_hu_conv: ChannelFeatures = new ChannelFeatures(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_features(ChannelFeatures val) {
-               bindings.ChannelInfo_set_features(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public NodeId get_node_one() {
-               number ret = bindings.ChannelInfo_get_node_one(this.ptr);
-               const ret_hu_conv: NodeId = new NodeId(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_node_one(NodeId val) {
-               bindings.ChannelInfo_set_node_one(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public DirectionalChannelInfo get_one_to_two() {
-               number ret = bindings.ChannelInfo_get_one_to_two(this.ptr);
-               const ret_hu_conv: DirectionalChannelInfo = new DirectionalChannelInfo(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_one_to_two(DirectionalChannelInfo val) {
-               bindings.ChannelInfo_set_one_to_two(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public NodeId get_node_two() {
-               number ret = bindings.ChannelInfo_get_node_two(this.ptr);
-               const ret_hu_conv: NodeId = new NodeId(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_node_two(NodeId val) {
-               bindings.ChannelInfo_set_node_two(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public DirectionalChannelInfo get_two_to_one() {
-               number ret = bindings.ChannelInfo_get_two_to_one(this.ptr);
-               const ret_hu_conv: DirectionalChannelInfo = new DirectionalChannelInfo(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_two_to_one(DirectionalChannelInfo val) {
-               bindings.ChannelInfo_set_two_to_one(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public Option_u64Z get_capacity_sats() {
-               number ret = bindings.ChannelInfo_get_capacity_sats(this.ptr);
-               Option_u64Z ret_hu_conv = Option_u64Z.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_capacity_sats(Option_u64Z val) {
-               bindings.ChannelInfo_set_capacity_sats(this.ptr, val.ptr);
-       }
-
-       public ChannelAnnouncement get_announcement_message() {
-               number ret = bindings.ChannelInfo_get_announcement_message(this.ptr);
-               const ret_hu_conv: ChannelAnnouncement = new ChannelAnnouncement(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_announcement_message(ChannelAnnouncement val) {
-               bindings.ChannelInfo_set_announcement_message(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.ChannelInfo_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public ChannelInfo clone() {
-               number ret = bindings.ChannelInfo_clone(this.ptr);
-               const ret_hu_conv: ChannelInfo = new ChannelInfo(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.ChannelInfo_write(this.ptr);
-               return ret;
-       }
-
-       public static Result_ChannelInfoDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.ChannelInfo_read(ser);
-               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
deleted file mode 100644 (file)
index 5c483a3..0000000
+++ /dev/null
@@ -1,243 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ChannelManager extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ChannelManager_free(this.ptr);
-                    }
-                }
-       public static ChannelManager constructor_new(FeeEstimator fee_est, Watch chain_monitor, BroadcasterInterface tx_broadcaster, Logger logger, KeysInterface keys_manager, UserConfig config, ChainParameters params) {
-               number ret = bindings.ChannelManager_new(fee_est == null ? 0 : fee_est.ptr, chain_monitor == null ? 0 : chain_monitor.ptr, tx_broadcaster == null ? 0 : tx_broadcaster.ptr, logger == null ? 0 : logger.ptr, keys_manager == null ? 0 : keys_manager.ptr, config == null ? 0 : config.ptr & ~1, params == null ? 0 : params.ptr & ~1);
-               const ret_hu_conv: ChannelManager = new ChannelManager(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               ret_hu_conv.ptrs_to.add(fee_est);
-               ret_hu_conv.ptrs_to.add(chain_monitor);
-               ret_hu_conv.ptrs_to.add(tx_broadcaster);
-               ret_hu_conv.ptrs_to.add(logger);
-               ret_hu_conv.ptrs_to.add(keys_manager);
-               return ret_hu_conv;
-       }
-
-       public UserConfig get_current_default_configuration() {
-               number ret = bindings.ChannelManager_get_current_default_configuration(this.ptr);
-               const ret_hu_conv: UserConfig = new UserConfig(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Result__u832APIErrorZ create_channel(Uint8Array their_network_key, number channel_value_satoshis, number push_msat, number user_channel_id, UserConfig override_config) {
-               number ret = bindings.ChannelManager_create_channel(this.ptr, InternalUtils.check_arr_len(their_network_key, 33), channel_value_satoshis, push_msat, user_channel_id, override_config == null ? 0 : override_config.ptr & ~1);
-               Result__u832APIErrorZ ret_hu_conv = Result__u832APIErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public ChannelDetails[] list_channels() {
-               number[] ret = bindings.ChannelManager_list_channels(this.ptr);
-               ChannelDetails[] ret_conv_16_arr = new ChannelDetails[ret.length];
-               for (int q = 0; q < ret.length; q++) {
-                       number ret_conv_16 = ret[q];
-                       const ret_conv_16_hu_conv: ChannelDetails = new ChannelDetails(null, ret_conv_16);
-                       ret_conv_16_hu_conv.ptrs_to.add(this);
-                       ret_conv_16_arr[q] = ret_conv_16_hu_conv;
-               }
-               return ret_conv_16_arr;
-       }
-
-       public ChannelDetails[] list_usable_channels() {
-               number[] ret = bindings.ChannelManager_list_usable_channels(this.ptr);
-               ChannelDetails[] ret_conv_16_arr = new ChannelDetails[ret.length];
-               for (int q = 0; q < ret.length; q++) {
-                       number ret_conv_16 = ret[q];
-                       const ret_conv_16_hu_conv: ChannelDetails = new ChannelDetails(null, ret_conv_16);
-                       ret_conv_16_hu_conv.ptrs_to.add(this);
-                       ret_conv_16_arr[q] = ret_conv_16_hu_conv;
-               }
-               return ret_conv_16_arr;
-       }
-
-       public Result_NoneAPIErrorZ close_channel(Uint8Array channel_id) {
-               number ret = bindings.ChannelManager_close_channel(this.ptr, InternalUtils.check_arr_len(channel_id, 32));
-               Result_NoneAPIErrorZ ret_hu_conv = Result_NoneAPIErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public Result_NoneAPIErrorZ close_channel_with_target_feerate(Uint8Array channel_id, number target_feerate_sats_per_1000_weight) {
-               number ret = bindings.ChannelManager_close_channel_with_target_feerate(this.ptr, InternalUtils.check_arr_len(channel_id, 32), target_feerate_sats_per_1000_weight);
-               Result_NoneAPIErrorZ ret_hu_conv = Result_NoneAPIErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public Result_NoneAPIErrorZ force_close_channel(Uint8Array channel_id) {
-               number ret = bindings.ChannelManager_force_close_channel(this.ptr, InternalUtils.check_arr_len(channel_id, 32));
-               Result_NoneAPIErrorZ ret_hu_conv = Result_NoneAPIErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public void force_close_all_channels() {
-               bindings.ChannelManager_force_close_all_channels(this.ptr);
-       }
-
-       public Result_PaymentIdPaymentSendFailureZ send_payment(Route route, Uint8Array payment_hash, Uint8Array payment_secret) {
-               number ret = bindings.ChannelManager_send_payment(this.ptr, route == null ? 0 : route.ptr & ~1, InternalUtils.check_arr_len(payment_hash, 32), InternalUtils.check_arr_len(payment_secret, 32));
-               Result_PaymentIdPaymentSendFailureZ ret_hu_conv = Result_PaymentIdPaymentSendFailureZ.constr_from_ptr(ret);
-               this.ptrs_to.add(route);
-               return ret_hu_conv;
-       }
-
-       public Result_NonePaymentSendFailureZ retry_payment(Route route, Uint8Array payment_id) {
-               number ret = bindings.ChannelManager_retry_payment(this.ptr, route == null ? 0 : route.ptr & ~1, InternalUtils.check_arr_len(payment_id, 32));
-               Result_NonePaymentSendFailureZ ret_hu_conv = Result_NonePaymentSendFailureZ.constr_from_ptr(ret);
-               this.ptrs_to.add(route);
-               return ret_hu_conv;
-       }
-
-       public void abandon_payment(Uint8Array payment_id) {
-               bindings.ChannelManager_abandon_payment(this.ptr, InternalUtils.check_arr_len(payment_id, 32));
-       }
-
-       public Result_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ send_spontaneous_payment(Route route, Uint8Array payment_preimage) {
-               number ret = bindings.ChannelManager_send_spontaneous_payment(this.ptr, route == null ? 0 : route.ptr & ~1, InternalUtils.check_arr_len(payment_preimage, 32));
-               Result_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ ret_hu_conv = Result_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ.constr_from_ptr(ret);
-               this.ptrs_to.add(route);
-               return ret_hu_conv;
-       }
-
-       public Result_NoneAPIErrorZ funding_transaction_generated(Uint8Array temporary_channel_id, Uint8Array funding_transaction) {
-               number ret = bindings.ChannelManager_funding_transaction_generated(this.ptr, InternalUtils.check_arr_len(temporary_channel_id, 32), funding_transaction);
-               Result_NoneAPIErrorZ ret_hu_conv = Result_NoneAPIErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public void broadcast_node_announcement(Uint8Array rgb, Uint8Array alias, NetAddress[] addresses) {
-               bindings.ChannelManager_broadcast_node_announcement(this.ptr, InternalUtils.check_arr_len(rgb, 3), InternalUtils.check_arr_len(alias, 32), addresses != null ? Arrays.stream(addresses).map(addresses_conv_12 -> addresses_conv_12.ptr).toArray(number[]::new) : null);
-       }
-
-       public void process_pending_htlc_forwards() {
-               bindings.ChannelManager_process_pending_htlc_forwards(this.ptr);
-       }
-
-       public void timer_tick_occurred() {
-               bindings.ChannelManager_timer_tick_occurred(this.ptr);
-       }
-
-       public boolean fail_htlc_backwards(Uint8Array payment_hash) {
-               boolean ret = bindings.ChannelManager_fail_htlc_backwards(this.ptr, InternalUtils.check_arr_len(payment_hash, 32));
-               return ret;
-       }
-
-       public boolean claim_funds(Uint8Array payment_preimage) {
-               boolean ret = bindings.ChannelManager_claim_funds(this.ptr, InternalUtils.check_arr_len(payment_preimage, 32));
-               return ret;
-       }
-
-       public Uint8Array get_our_node_id() {
-               Uint8Array ret = bindings.ChannelManager_get_our_node_id(this.ptr);
-               return ret;
-       }
-
-       public Result_C2Tuple_PaymentHashPaymentSecretZNoneZ create_inbound_payment(Option_u64Z min_value_msat, number invoice_expiry_delta_secs) {
-               number ret = bindings.ChannelManager_create_inbound_payment(this.ptr, min_value_msat.ptr, invoice_expiry_delta_secs);
-               Result_C2Tuple_PaymentHashPaymentSecretZNoneZ ret_hu_conv = Result_C2Tuple_PaymentHashPaymentSecretZNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public Result_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ create_inbound_payment_legacy(Option_u64Z min_value_msat, number invoice_expiry_delta_secs) {
-               number ret = bindings.ChannelManager_create_inbound_payment_legacy(this.ptr, min_value_msat.ptr, invoice_expiry_delta_secs);
-               Result_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ ret_hu_conv = Result_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public Result_PaymentSecretNoneZ create_inbound_payment_for_hash(Uint8Array payment_hash, Option_u64Z min_value_msat, number invoice_expiry_delta_secs) {
-               number ret = bindings.ChannelManager_create_inbound_payment_for_hash(this.ptr, InternalUtils.check_arr_len(payment_hash, 32), min_value_msat.ptr, invoice_expiry_delta_secs);
-               Result_PaymentSecretNoneZ ret_hu_conv = Result_PaymentSecretNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public Result_PaymentSecretAPIErrorZ create_inbound_payment_for_hash_legacy(Uint8Array payment_hash, Option_u64Z min_value_msat, number invoice_expiry_delta_secs) {
-               number ret = bindings.ChannelManager_create_inbound_payment_for_hash_legacy(this.ptr, InternalUtils.check_arr_len(payment_hash, 32), min_value_msat.ptr, invoice_expiry_delta_secs);
-               Result_PaymentSecretAPIErrorZ ret_hu_conv = Result_PaymentSecretAPIErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public Result_PaymentPreimageAPIErrorZ get_payment_preimage(Uint8Array payment_hash, Uint8Array payment_secret) {
-               number ret = bindings.ChannelManager_get_payment_preimage(this.ptr, InternalUtils.check_arr_len(payment_hash, 32), InternalUtils.check_arr_len(payment_secret, 32));
-               Result_PaymentPreimageAPIErrorZ ret_hu_conv = Result_PaymentPreimageAPIErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public MessageSendEventsProvider as_MessageSendEventsProvider() {
-               number ret = bindings.ChannelManager_as_MessageSendEventsProvider(this.ptr);
-               MessageSendEventsProvider ret_hu_conv = new MessageSendEventsProvider(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public EventsProvider as_EventsProvider() {
-               number ret = bindings.ChannelManager_as_EventsProvider(this.ptr);
-               EventsProvider ret_hu_conv = new EventsProvider(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Listen as_Listen() {
-               number ret = bindings.ChannelManager_as_Listen(this.ptr);
-               Listen ret_hu_conv = new Listen(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Confirm as_Confirm() {
-               number ret = bindings.ChannelManager_as_Confirm(this.ptr);
-               Confirm ret_hu_conv = new Confirm(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public boolean await_persistable_update_timeout(number max_wait) {
-               boolean ret = bindings.ChannelManager_await_persistable_update_timeout(this.ptr, max_wait);
-               return ret;
-       }
-
-       public void await_persistable_update() {
-               bindings.ChannelManager_await_persistable_update(this.ptr);
-       }
-
-       public BestBlock current_best_block() {
-               number ret = bindings.ChannelManager_current_best_block(this.ptr);
-               const ret_hu_conv: BestBlock = new BestBlock(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public ChannelMessageHandler as_ChannelMessageHandler() {
-               number ret = bindings.ChannelManager_as_ChannelMessageHandler(this.ptr);
-               ChannelMessageHandler ret_hu_conv = new ChannelMessageHandler(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.ChannelManager_write(this.ptr);
-               return ret;
-       }
-
-       public Payer as_Payer() {
-               number ret = bindings.ChannelManager_as_Payer(this.ptr);
-               Payer ret_hu_conv = new Payer(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/ChannelManagerPersister.ts b/ts/structs/ChannelManagerPersister.ts
deleted file mode 100644 (file)
index f6cffb2..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export class ChannelManagerPersister extends CommonBase {
-
-                bindings_instance?: bindings.LDKChannelManagerPersister;
-
-                constructor(ptr?: number, arg?: bindings.LDKChannelManagerPersister) {
-                    if (Number.isFinite(ptr)) {
-                                       super(ptr);
-                                       this.bindings_instance = null;
-                                   } else {
-                                       // TODO: private constructor instantiation
-                                       super(bindings.LDKChannelManagerPersister_new(arg));
-                                       this.ptrs_to.push(arg);
-                                       
-                                   }
-                }
-
-                protected finalize() {
-                    if (this.ptr != 0) {
-                        bindings.ChannelManagerPersister_free(this.ptr);
-                    }
-                    super.finalize();
-                }
-
-                static new_impl(arg: ChannelManagerPersisterInterface): ChannelManagerPersister {
-                    const impl_holder: LDKChannelManagerPersisterHolder = new LDKChannelManagerPersisterHolder();
-                    let structImplementation = <bindings.LDKChannelManagerPersister>{
-                        // todo: in-line interface filling
-                        persist_manager (channel_manager: number): number {
-                                                       const channel_manager_hu_conv: ChannelManager = new ChannelManager(null, channel_manager);
-                                                       Result_NoneErrorZ ret = arg.persist_manager(channel_manager_hu_conv);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               
-                    };
-                    impl_holder.held = new ChannelManagerPersister (null, structImplementation);
-                }
-            }
-
-            export interface ChannelManagerPersisterInterface {
-                persist_manager(channel_manager: ChannelManager): Result_NoneErrorZ;
-                               
-            }
-
-            class LDKChannelManagerPersisterHolder {
-                held: ChannelManagerPersister;
-            }
-       public Result_NoneErrorZ persist_manager(ChannelManager channel_manager) {
-               number ret = bindings.ChannelManagerPersister_persist_manager(this.ptr, channel_manager == null ? 0 : channel_manager.ptr & ~1);
-               Result_NoneErrorZ ret_hu_conv = Result_NoneErrorZ.constr_from_ptr(ret);
-               this.ptrs_to.add(channel_manager);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/ChannelManagerReadArgs.ts b/ts/structs/ChannelManagerReadArgs.ts
deleted file mode 100644 (file)
index 3553905..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ChannelManagerReadArgs extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ChannelManagerReadArgs_free(this.ptr);
-                    }
-                }
-       public KeysInterface get_keys_manager() {
-               number ret = bindings.ChannelManagerReadArgs_get_keys_manager(this.ptr);
-               KeysInterface ret_hu_conv = new KeysInterface(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_keys_manager(KeysInterface val) {
-               bindings.ChannelManagerReadArgs_set_keys_manager(this.ptr, val == null ? 0 : val.ptr);
-               this.ptrs_to.add(val);
-       }
-
-       public FeeEstimator get_fee_estimator() {
-               number ret = bindings.ChannelManagerReadArgs_get_fee_estimator(this.ptr);
-               FeeEstimator ret_hu_conv = new FeeEstimator(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_fee_estimator(FeeEstimator val) {
-               bindings.ChannelManagerReadArgs_set_fee_estimator(this.ptr, val == null ? 0 : val.ptr);
-               this.ptrs_to.add(val);
-       }
-
-       public Watch get_chain_monitor() {
-               number ret = bindings.ChannelManagerReadArgs_get_chain_monitor(this.ptr);
-               Watch ret_hu_conv = new Watch(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_chain_monitor(Watch val) {
-               bindings.ChannelManagerReadArgs_set_chain_monitor(this.ptr, val == null ? 0 : val.ptr);
-               this.ptrs_to.add(val);
-       }
-
-       public BroadcasterInterface get_tx_broadcaster() {
-               number ret = bindings.ChannelManagerReadArgs_get_tx_broadcaster(this.ptr);
-               BroadcasterInterface ret_hu_conv = new BroadcasterInterface(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_tx_broadcaster(BroadcasterInterface val) {
-               bindings.ChannelManagerReadArgs_set_tx_broadcaster(this.ptr, val == null ? 0 : val.ptr);
-               this.ptrs_to.add(val);
-       }
-
-       public Logger get_logger() {
-               number ret = bindings.ChannelManagerReadArgs_get_logger(this.ptr);
-               Logger ret_hu_conv = new Logger(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_logger(Logger val) {
-               bindings.ChannelManagerReadArgs_set_logger(this.ptr, val == null ? 0 : val.ptr);
-               this.ptrs_to.add(val);
-       }
-
-       public UserConfig get_default_config() {
-               number ret = bindings.ChannelManagerReadArgs_get_default_config(this.ptr);
-               const ret_hu_conv: UserConfig = new UserConfig(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_default_config(UserConfig val) {
-               bindings.ChannelManagerReadArgs_set_default_config(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       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, channel_monitors != null ? Arrays.stream(channel_monitors).map(channel_monitors_conv_16 -> channel_monitors_conv_16 == null ? 0 : channel_monitors_conv_16.ptr & ~1).toArray(number[]::new) : null);
-               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);
-               ret_hu_conv.ptrs_to.add(fee_estimator);
-               ret_hu_conv.ptrs_to.add(chain_monitor);
-               ret_hu_conv.ptrs_to.add(tx_broadcaster);
-               ret_hu_conv.ptrs_to.add(logger);
-               for (ChannelMonitor channel_monitors_conv_16: channel_monitors) { ret_hu_conv.ptrs_to.add(channel_monitors_conv_16); };
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/ChannelMessageHandler.ts b/ts/structs/ChannelMessageHandler.ts
deleted file mode 100644 (file)
index bc81d09..0000000
+++ /dev/null
@@ -1,273 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export class ChannelMessageHandler extends CommonBase {
-
-                bindings_instance?: bindings.LDKChannelMessageHandler;
-
-                constructor(ptr?: number, arg?: bindings.LDKChannelMessageHandler, messageSendEventsProvider?: bindings.LDKMessageSendEventsProvider) {
-                    if (Number.isFinite(ptr)) {
-                                       super(ptr);
-                                       this.bindings_instance = null;
-                                   } else {
-                                       // TODO: private constructor instantiation
-                                       super(bindings.LDKChannelMessageHandler_new(arg, messageSendEventsProvider));
-                                       this.ptrs_to.push(arg);
-                                       this.ptrs_to.push(messageSendEventsProvider);
-
-                                   }
-                }
-
-                protected finalize() {
-                    if (this.ptr != 0) {
-                        bindings.ChannelMessageHandler_free(this.ptr);
-                    }
-                    super.finalize();
-                }
-
-                static new_impl(arg: ChannelMessageHandlerInterface, messageSendEventsProvider_impl: MessageSendEventsProvider.MessageSendEventsProviderInterface): ChannelMessageHandler {
-                    const impl_holder: LDKChannelMessageHandlerHolder = new LDKChannelMessageHandlerHolder();
-                    let structImplementation = <bindings.LDKChannelMessageHandler>{
-                        // todo: in-line interface filling
-                        handle_open_channel (their_node_id: Uint8Array, their_features: number, msg: number): void {
-                                                       const their_features_hu_conv: InitFeatures = new InitFeatures(null, their_features);
-                               their_features_hu_conv.ptrs_to.add(this);
-                                                       const msg_hu_conv: OpenChannel = new OpenChannel(null, msg);
-                                                       arg.handle_open_channel(their_node_id, their_features_hu_conv, msg_hu_conv);
-                                               },
-
-                                               handle_accept_channel (their_node_id: Uint8Array, their_features: number, msg: number): void {
-                                                       const their_features_hu_conv: InitFeatures = new InitFeatures(null, their_features);
-                               their_features_hu_conv.ptrs_to.add(this);
-                                                       const msg_hu_conv: AcceptChannel = new AcceptChannel(null, msg);
-                                                       arg.handle_accept_channel(their_node_id, their_features_hu_conv, msg_hu_conv);
-                                               },
-
-                                               handle_funding_created (their_node_id: Uint8Array, msg: number): void {
-                                                       const msg_hu_conv: FundingCreated = new FundingCreated(null, msg);
-                                                       arg.handle_funding_created(their_node_id, msg_hu_conv);
-                                               },
-
-                                               handle_funding_signed (their_node_id: Uint8Array, msg: number): void {
-                                                       const msg_hu_conv: FundingSigned = new FundingSigned(null, msg);
-                                                       arg.handle_funding_signed(their_node_id, msg_hu_conv);
-                                               },
-
-                                               handle_funding_locked (their_node_id: Uint8Array, msg: number): void {
-                                                       const msg_hu_conv: FundingLocked = new FundingLocked(null, msg);
-                                                       arg.handle_funding_locked(their_node_id, msg_hu_conv);
-                                               },
-
-                                               handle_shutdown (their_node_id: Uint8Array, their_features: number, msg: number): void {
-                                                       const their_features_hu_conv: InitFeatures = new InitFeatures(null, their_features);
-                                                       const msg_hu_conv: Shutdown = new Shutdown(null, msg);
-                                                       arg.handle_shutdown(their_node_id, their_features_hu_conv, msg_hu_conv);
-                                               },
-
-                                               handle_closing_signed (their_node_id: Uint8Array, msg: number): void {
-                                                       const msg_hu_conv: ClosingSigned = new ClosingSigned(null, msg);
-                                                       arg.handle_closing_signed(their_node_id, msg_hu_conv);
-                                               },
-
-                                               handle_update_add_htlc (their_node_id: Uint8Array, msg: number): void {
-                                                       const msg_hu_conv: UpdateAddHTLC = new UpdateAddHTLC(null, msg);
-                                                       arg.handle_update_add_htlc(their_node_id, msg_hu_conv);
-                                               },
-
-                                               handle_update_fulfill_htlc (their_node_id: Uint8Array, msg: number): void {
-                                                       const msg_hu_conv: UpdateFulfillHTLC = new UpdateFulfillHTLC(null, msg);
-                                                       arg.handle_update_fulfill_htlc(their_node_id, msg_hu_conv);
-                                               },
-
-                                               handle_update_fail_htlc (their_node_id: Uint8Array, msg: number): void {
-                                                       const msg_hu_conv: UpdateFailHTLC = new UpdateFailHTLC(null, msg);
-                                                       arg.handle_update_fail_htlc(their_node_id, msg_hu_conv);
-                                               },
-
-                                               handle_update_fail_malformed_htlc (their_node_id: Uint8Array, msg: number): void {
-                                                       const msg_hu_conv: UpdateFailMalformedHTLC = new UpdateFailMalformedHTLC(null, msg);
-                                                       arg.handle_update_fail_malformed_htlc(their_node_id, msg_hu_conv);
-                                               },
-
-                                               handle_commitment_signed (their_node_id: Uint8Array, msg: number): void {
-                                                       const msg_hu_conv: CommitmentSigned = new CommitmentSigned(null, msg);
-                                                       arg.handle_commitment_signed(their_node_id, msg_hu_conv);
-                                               },
-
-                                               handle_revoke_and_ack (their_node_id: Uint8Array, msg: number): void {
-                                                       const msg_hu_conv: RevokeAndACK = new RevokeAndACK(null, msg);
-                                                       arg.handle_revoke_and_ack(their_node_id, msg_hu_conv);
-                                               },
-
-                                               handle_update_fee (their_node_id: Uint8Array, msg: number): void {
-                                                       const msg_hu_conv: UpdateFee = new UpdateFee(null, msg);
-                                                       arg.handle_update_fee(their_node_id, msg_hu_conv);
-                                               },
-
-                                               handle_announcement_signatures (their_node_id: Uint8Array, msg: number): void {
-                                                       const msg_hu_conv: AnnouncementSignatures = new AnnouncementSignatures(null, msg);
-                                                       arg.handle_announcement_signatures(their_node_id, msg_hu_conv);
-                                               },
-
-                                               peer_disconnected (their_node_id: Uint8Array, no_connection_possible: boolean): void {
-                                                       arg.peer_disconnected(their_node_id, no_connection_possible);
-                                               },
-
-                                               peer_connected (their_node_id: Uint8Array, msg: number): void {
-                                                       const msg_hu_conv: Init = new Init(null, msg);
-                                                       arg.peer_connected(their_node_id, msg_hu_conv);
-                                               },
-
-                                               handle_channel_reestablish (their_node_id: Uint8Array, msg: number): void {
-                                                       const msg_hu_conv: ChannelReestablish = new ChannelReestablish(null, msg);
-                                                       arg.handle_channel_reestablish(their_node_id, msg_hu_conv);
-                                               },
-
-                                               handle_channel_update (their_node_id: Uint8Array, msg: number): void {
-                                                       const msg_hu_conv: ChannelUpdate = new ChannelUpdate(null, msg);
-                                                       arg.handle_channel_update(their_node_id, msg_hu_conv);
-                                               },
-
-                                               handle_error (their_node_id: Uint8Array, msg: number): void {
-                                                       const msg_hu_conv: ErrorMessage = new ErrorMessage(null, msg);
-                                                       arg.handle_error(their_node_id, msg_hu_conv);
-                                               },
-
-                                               
-                    };
-                    impl_holder.held = new ChannelMessageHandler (null, structImplementation, MessageSendEventsProvider.new_impl(MessageSendEventsProvider_impl).bindings_instance);
-                }
-            }
-
-            export interface ChannelMessageHandlerInterface {
-                handle_open_channel(their_node_id: Uint8Array, their_features: InitFeatures, msg: OpenChannel): void;
-                               handle_accept_channel(their_node_id: Uint8Array, their_features: InitFeatures, msg: AcceptChannel): void;
-                               handle_funding_created(their_node_id: Uint8Array, msg: FundingCreated): void;
-                               handle_funding_signed(their_node_id: Uint8Array, msg: FundingSigned): void;
-                               handle_funding_locked(their_node_id: Uint8Array, msg: FundingLocked): void;
-                               handle_shutdown(their_node_id: Uint8Array, their_features: InitFeatures, msg: Shutdown): void;
-                               handle_closing_signed(their_node_id: Uint8Array, msg: ClosingSigned): void;
-                               handle_update_add_htlc(their_node_id: Uint8Array, msg: UpdateAddHTLC): void;
-                               handle_update_fulfill_htlc(their_node_id: Uint8Array, msg: UpdateFulfillHTLC): void;
-                               handle_update_fail_htlc(their_node_id: Uint8Array, msg: UpdateFailHTLC): void;
-                               handle_update_fail_malformed_htlc(their_node_id: Uint8Array, msg: UpdateFailMalformedHTLC): void;
-                               handle_commitment_signed(their_node_id: Uint8Array, msg: CommitmentSigned): void;
-                               handle_revoke_and_ack(their_node_id: Uint8Array, msg: RevokeAndACK): void;
-                               handle_update_fee(their_node_id: Uint8Array, msg: UpdateFee): void;
-                               handle_announcement_signatures(their_node_id: Uint8Array, msg: AnnouncementSignatures): void;
-                               peer_disconnected(their_node_id: Uint8Array, no_connection_possible: boolean): void;
-                               peer_connected(their_node_id: Uint8Array, msg: Init): void;
-                               handle_channel_reestablish(their_node_id: Uint8Array, msg: ChannelReestablish): void;
-                               handle_channel_update(their_node_id: Uint8Array, msg: ChannelUpdate): void;
-                               handle_error(their_node_id: Uint8Array, msg: ErrorMessage): void;
-                               
-            }
-
-            class LDKChannelMessageHandlerHolder {
-                held: ChannelMessageHandler;
-            }
-       public void handle_open_channel(Uint8Array their_node_id, InitFeatures their_features, OpenChannel msg) {
-               bindings.ChannelMessageHandler_handle_open_channel(this.ptr, InternalUtils.check_arr_len(their_node_id, 33), their_features == null ? 0 : their_features.ptr & ~1, msg == null ? 0 : msg.ptr & ~1);
-               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, InternalUtils.check_arr_len(their_node_id, 33), their_features == null ? 0 : their_features.ptr & ~1, msg == null ? 0 : msg.ptr & ~1);
-               this.ptrs_to.add(msg);
-       }
-
-       public void handle_funding_created(Uint8Array their_node_id, FundingCreated msg) {
-               bindings.ChannelMessageHandler_handle_funding_created(this.ptr, InternalUtils.check_arr_len(their_node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               this.ptrs_to.add(msg);
-       }
-
-       public void handle_funding_signed(Uint8Array their_node_id, FundingSigned msg) {
-               bindings.ChannelMessageHandler_handle_funding_signed(this.ptr, InternalUtils.check_arr_len(their_node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               this.ptrs_to.add(msg);
-       }
-
-       public void handle_funding_locked(Uint8Array their_node_id, FundingLocked msg) {
-               bindings.ChannelMessageHandler_handle_funding_locked(this.ptr, InternalUtils.check_arr_len(their_node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               this.ptrs_to.add(msg);
-       }
-
-       public void handle_shutdown(Uint8Array their_node_id, InitFeatures their_features, Shutdown msg) {
-               bindings.ChannelMessageHandler_handle_shutdown(this.ptr, InternalUtils.check_arr_len(their_node_id, 33), their_features == null ? 0 : their_features.ptr & ~1, msg == null ? 0 : msg.ptr & ~1);
-               this.ptrs_to.add(their_features);
-               this.ptrs_to.add(msg);
-       }
-
-       public void handle_closing_signed(Uint8Array their_node_id, ClosingSigned msg) {
-               bindings.ChannelMessageHandler_handle_closing_signed(this.ptr, InternalUtils.check_arr_len(their_node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               this.ptrs_to.add(msg);
-       }
-
-       public void handle_update_add_htlc(Uint8Array their_node_id, UpdateAddHTLC msg) {
-               bindings.ChannelMessageHandler_handle_update_add_htlc(this.ptr, InternalUtils.check_arr_len(their_node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               this.ptrs_to.add(msg);
-       }
-
-       public void handle_update_fulfill_htlc(Uint8Array their_node_id, UpdateFulfillHTLC msg) {
-               bindings.ChannelMessageHandler_handle_update_fulfill_htlc(this.ptr, InternalUtils.check_arr_len(their_node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               this.ptrs_to.add(msg);
-       }
-
-       public void handle_update_fail_htlc(Uint8Array their_node_id, UpdateFailHTLC msg) {
-               bindings.ChannelMessageHandler_handle_update_fail_htlc(this.ptr, InternalUtils.check_arr_len(their_node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               this.ptrs_to.add(msg);
-       }
-
-       public void handle_update_fail_malformed_htlc(Uint8Array their_node_id, UpdateFailMalformedHTLC msg) {
-               bindings.ChannelMessageHandler_handle_update_fail_malformed_htlc(this.ptr, InternalUtils.check_arr_len(their_node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               this.ptrs_to.add(msg);
-       }
-
-       public void handle_commitment_signed(Uint8Array their_node_id, CommitmentSigned msg) {
-               bindings.ChannelMessageHandler_handle_commitment_signed(this.ptr, InternalUtils.check_arr_len(their_node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               this.ptrs_to.add(msg);
-       }
-
-       public void handle_revoke_and_ack(Uint8Array their_node_id, RevokeAndACK msg) {
-               bindings.ChannelMessageHandler_handle_revoke_and_ack(this.ptr, InternalUtils.check_arr_len(their_node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               this.ptrs_to.add(msg);
-       }
-
-       public void handle_update_fee(Uint8Array their_node_id, UpdateFee msg) {
-               bindings.ChannelMessageHandler_handle_update_fee(this.ptr, InternalUtils.check_arr_len(their_node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               this.ptrs_to.add(msg);
-       }
-
-       public void handle_announcement_signatures(Uint8Array their_node_id, AnnouncementSignatures msg) {
-               bindings.ChannelMessageHandler_handle_announcement_signatures(this.ptr, InternalUtils.check_arr_len(their_node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               this.ptrs_to.add(msg);
-       }
-
-       public void peer_disconnected(Uint8Array their_node_id, boolean no_connection_possible) {
-               bindings.ChannelMessageHandler_peer_disconnected(this.ptr, InternalUtils.check_arr_len(their_node_id, 33), no_connection_possible);
-       }
-
-       public void peer_connected(Uint8Array their_node_id, Init msg) {
-               bindings.ChannelMessageHandler_peer_connected(this.ptr, InternalUtils.check_arr_len(their_node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               this.ptrs_to.add(msg);
-       }
-
-       public void handle_channel_reestablish(Uint8Array their_node_id, ChannelReestablish msg) {
-               bindings.ChannelMessageHandler_handle_channel_reestablish(this.ptr, InternalUtils.check_arr_len(their_node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               this.ptrs_to.add(msg);
-       }
-
-       public void handle_channel_update(Uint8Array their_node_id, ChannelUpdate msg) {
-               bindings.ChannelMessageHandler_handle_channel_update(this.ptr, InternalUtils.check_arr_len(their_node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               this.ptrs_to.add(msg);
-       }
-
-       public void handle_error(Uint8Array their_node_id, ErrorMessage msg) {
-               bindings.ChannelMessageHandler_handle_error(this.ptr, InternalUtils.check_arr_len(their_node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               this.ptrs_to.add(msg);
-       }
-
-}
diff --git a/ts/structs/ChannelMonitor.ts b/ts/structs/ChannelMonitor.ts
deleted file mode 100644 (file)
index e88b8b4..0000000
+++ /dev/null
@@ -1,190 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ChannelMonitor extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ChannelMonitor_free(this.ptr);
-                    }
-                }
-       public number clone_ptr() {
-               number ret = bindings.ChannelMonitor_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public ChannelMonitor clone() {
-               number ret = bindings.ChannelMonitor_clone(this.ptr);
-               const ret_hu_conv: ChannelMonitor = new ChannelMonitor(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.ChannelMonitor_write(this.ptr);
-               return ret;
-       }
-
-       public Result_NoneNoneZ update_monitor(ChannelMonitorUpdate updates, BroadcasterInterface broadcaster, FeeEstimator fee_estimator, Logger logger) {
-               number ret = bindings.ChannelMonitor_update_monitor(this.ptr, updates == null ? 0 : updates.ptr & ~1, broadcaster == null ? 0 : broadcaster.ptr, fee_estimator == null ? 0 : fee_estimator.ptr, logger == null ? 0 : logger.ptr);
-               Result_NoneNoneZ ret_hu_conv = Result_NoneNoneZ.constr_from_ptr(ret);
-               this.ptrs_to.add(updates);
-               this.ptrs_to.add(broadcaster);
-               this.ptrs_to.add(fee_estimator);
-               this.ptrs_to.add(logger);
-               return ret_hu_conv;
-       }
-
-       public number get_latest_update_id() {
-               number ret = bindings.ChannelMonitor_get_latest_update_id(this.ptr);
-               return ret;
-       }
-
-       public TwoTuple_OutPointScriptZ get_funding_txo() {
-               number ret = bindings.ChannelMonitor_get_funding_txo(this.ptr);
-               TwoTuple_OutPointScriptZ ret_hu_conv = new TwoTuple_OutPointScriptZ(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public TwoTuple_TxidCVec_C2Tuple_u32ScriptZZZ[] get_outputs_to_watch() {
-               number[] ret = bindings.ChannelMonitor_get_outputs_to_watch(this.ptr);
-               TwoTuple_TxidCVec_C2Tuple_u32ScriptZZZ[] ret_conv_40_arr = new TwoTuple_TxidCVec_C2Tuple_u32ScriptZZZ[ret.length];
-               for (int o = 0; o < ret.length; o++) {
-                       number ret_conv_40 = ret[o];
-                       TwoTuple_TxidCVec_C2Tuple_u32ScriptZZZ ret_conv_40_hu_conv = new TwoTuple_TxidCVec_C2Tuple_u32ScriptZZZ(null, ret_conv_40);
-                       ret_conv_40_hu_conv.ptrs_to.add(this);
-                       ret_conv_40_arr[o] = ret_conv_40_hu_conv;
-               }
-               return ret_conv_40_arr;
-       }
-
-       public void load_outputs_to_watch(Filter filter) {
-               bindings.ChannelMonitor_load_outputs_to_watch(this.ptr, filter == null ? 0 : filter.ptr);
-               this.ptrs_to.add(filter);
-       }
-
-       public MonitorEvent[] get_and_clear_pending_monitor_events() {
-               number[] ret = bindings.ChannelMonitor_get_and_clear_pending_monitor_events(this.ptr);
-               MonitorEvent[] ret_conv_14_arr = new MonitorEvent[ret.length];
-               for (int o = 0; o < ret.length; o++) {
-                       number ret_conv_14 = ret[o];
-                       MonitorEvent ret_conv_14_hu_conv = MonitorEvent.constr_from_ptr(ret_conv_14);
-                       ret_conv_14_hu_conv.ptrs_to.add(this);
-                       ret_conv_14_arr[o] = ret_conv_14_hu_conv;
-               }
-               return ret_conv_14_arr;
-       }
-
-       public Event[] get_and_clear_pending_events() {
-               number[] ret = bindings.ChannelMonitor_get_and_clear_pending_events(this.ptr);
-               Event[] ret_conv_7_arr = new Event[ret.length];
-               for (int h = 0; h < ret.length; h++) {
-                       number ret_conv_7 = ret[h];
-                       Event ret_conv_7_hu_conv = Event.constr_from_ptr(ret_conv_7);
-                       ret_conv_7_hu_conv.ptrs_to.add(this);
-                       ret_conv_7_arr[h] = ret_conv_7_hu_conv;
-               }
-               return ret_conv_7_arr;
-       }
-
-       public Uint8Array[] get_latest_holder_commitment_txn(Logger logger) {
-               Uint8Array[] ret = bindings.ChannelMonitor_get_latest_holder_commitment_txn(this.ptr, logger == null ? 0 : logger.ptr);
-               this.ptrs_to.add(logger);
-               return ret;
-       }
-
-       public TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ[] block_connected(Uint8Array header, TwoTuple_usizeTransactionZ[] txdata, number height, BroadcasterInterface broadcaster, FeeEstimator fee_estimator, Logger logger) {
-               number[] ret = bindings.ChannelMonitor_block_connected(this.ptr, InternalUtils.check_arr_len(header, 80), txdata != null ? Arrays.stream(txdata).map(txdata_conv_28 -> txdata_conv_28 != null ? txdata_conv_28.ptr : 0).toArray(number[]::new) : null, height, broadcaster == null ? 0 : broadcaster.ptr, fee_estimator == null ? 0 : fee_estimator.ptr, logger == null ? 0 : logger.ptr);
-               TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ[] ret_conv_39_arr = new TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ[ret.length];
-               for (int n = 0; n < ret.length; n++) {
-                       number ret_conv_39 = ret[n];
-                       TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ ret_conv_39_hu_conv = new TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ(null, ret_conv_39);
-                       ret_conv_39_hu_conv.ptrs_to.add(this);
-                       ret_conv_39_arr[n] = ret_conv_39_hu_conv;
-               }
-               this.ptrs_to.add(broadcaster);
-               this.ptrs_to.add(fee_estimator);
-               this.ptrs_to.add(logger);
-               return ret_conv_39_arr;
-       }
-
-       public void block_disconnected(Uint8Array header, number height, BroadcasterInterface broadcaster, FeeEstimator fee_estimator, Logger logger) {
-               bindings.ChannelMonitor_block_disconnected(this.ptr, InternalUtils.check_arr_len(header, 80), height, broadcaster == null ? 0 : broadcaster.ptr, fee_estimator == null ? 0 : fee_estimator.ptr, logger == null ? 0 : logger.ptr);
-               this.ptrs_to.add(broadcaster);
-               this.ptrs_to.add(fee_estimator);
-               this.ptrs_to.add(logger);
-       }
-
-       public TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ[] transactions_confirmed(Uint8Array header, TwoTuple_usizeTransactionZ[] txdata, number height, BroadcasterInterface broadcaster, FeeEstimator fee_estimator, Logger logger) {
-               number[] ret = bindings.ChannelMonitor_transactions_confirmed(this.ptr, InternalUtils.check_arr_len(header, 80), txdata != null ? Arrays.stream(txdata).map(txdata_conv_28 -> txdata_conv_28 != null ? txdata_conv_28.ptr : 0).toArray(number[]::new) : null, height, broadcaster == null ? 0 : broadcaster.ptr, fee_estimator == null ? 0 : fee_estimator.ptr, logger == null ? 0 : logger.ptr);
-               TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ[] ret_conv_39_arr = new TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ[ret.length];
-               for (int n = 0; n < ret.length; n++) {
-                       number ret_conv_39 = ret[n];
-                       TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ ret_conv_39_hu_conv = new TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ(null, ret_conv_39);
-                       ret_conv_39_hu_conv.ptrs_to.add(this);
-                       ret_conv_39_arr[n] = ret_conv_39_hu_conv;
-               }
-               this.ptrs_to.add(broadcaster);
-               this.ptrs_to.add(fee_estimator);
-               this.ptrs_to.add(logger);
-               return ret_conv_39_arr;
-       }
-
-       public void transaction_unconfirmed(Uint8Array txid, BroadcasterInterface broadcaster, FeeEstimator fee_estimator, Logger logger) {
-               bindings.ChannelMonitor_transaction_unconfirmed(this.ptr, InternalUtils.check_arr_len(txid, 32), broadcaster == null ? 0 : broadcaster.ptr, fee_estimator == null ? 0 : fee_estimator.ptr, logger == null ? 0 : logger.ptr);
-               this.ptrs_to.add(broadcaster);
-               this.ptrs_to.add(fee_estimator);
-               this.ptrs_to.add(logger);
-       }
-
-       public TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ[] best_block_updated(Uint8Array header, number height, BroadcasterInterface broadcaster, FeeEstimator fee_estimator, Logger logger) {
-               number[] ret = bindings.ChannelMonitor_best_block_updated(this.ptr, InternalUtils.check_arr_len(header, 80), height, broadcaster == null ? 0 : broadcaster.ptr, fee_estimator == null ? 0 : fee_estimator.ptr, logger == null ? 0 : logger.ptr);
-               TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ[] ret_conv_39_arr = new TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ[ret.length];
-               for (int n = 0; n < ret.length; n++) {
-                       number ret_conv_39 = ret[n];
-                       TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ ret_conv_39_hu_conv = new TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ(null, ret_conv_39);
-                       ret_conv_39_hu_conv.ptrs_to.add(this);
-                       ret_conv_39_arr[n] = ret_conv_39_hu_conv;
-               }
-               this.ptrs_to.add(broadcaster);
-               this.ptrs_to.add(fee_estimator);
-               this.ptrs_to.add(logger);
-               return ret_conv_39_arr;
-       }
-
-       public Uint8Array[] get_relevant_txids() {
-               Uint8Array[] ret = bindings.ChannelMonitor_get_relevant_txids(this.ptr);
-               return ret;
-       }
-
-       public BestBlock current_best_block() {
-               number ret = bindings.ChannelMonitor_current_best_block(this.ptr);
-               const ret_hu_conv: BestBlock = new BestBlock(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Balance[] get_claimable_balances() {
-               number[] ret = bindings.ChannelMonitor_get_claimable_balances(this.ptr);
-               Balance[] ret_conv_9_arr = new Balance[ret.length];
-               for (int j = 0; j < ret.length; j++) {
-                       number ret_conv_9 = ret[j];
-                       Balance ret_conv_9_hu_conv = Balance.constr_from_ptr(ret_conv_9);
-                       ret_conv_9_hu_conv.ptrs_to.add(this);
-                       ret_conv_9_arr[j] = ret_conv_9_hu_conv;
-               }
-               return ret_conv_9_arr;
-       }
-
-}
diff --git a/ts/structs/ChannelMonitorUpdate.ts b/ts/structs/ChannelMonitorUpdate.ts
deleted file mode 100644 (file)
index d33e514..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ChannelMonitorUpdate extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ChannelMonitorUpdate_free(this.ptr);
-                    }
-                }
-       public number get_update_id() {
-               number ret = bindings.ChannelMonitorUpdate_get_update_id(this.ptr);
-               return ret;
-       }
-
-       public void set_update_id(number val) {
-               bindings.ChannelMonitorUpdate_set_update_id(this.ptr, val);
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.ChannelMonitorUpdate_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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;
-       }
-
-       public static Result_ChannelMonitorUpdateDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.ChannelMonitorUpdate_read(ser);
-               Result_ChannelMonitorUpdateDecodeErrorZ ret_hu_conv = Result_ChannelMonitorUpdateDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/ChannelPublicKeys.ts b/ts/structs/ChannelPublicKeys.ts
deleted file mode 100644 (file)
index 18fd769..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ChannelPublicKeys extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ChannelPublicKeys_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_funding_pubkey() {
-               Uint8Array ret = bindings.ChannelPublicKeys_get_funding_pubkey(this.ptr);
-               return ret;
-       }
-
-       public void set_funding_pubkey(Uint8Array val) {
-               bindings.ChannelPublicKeys_set_funding_pubkey(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public Uint8Array get_revocation_basepoint() {
-               Uint8Array ret = bindings.ChannelPublicKeys_get_revocation_basepoint(this.ptr);
-               return ret;
-       }
-
-       public void set_revocation_basepoint(Uint8Array val) {
-               bindings.ChannelPublicKeys_set_revocation_basepoint(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public Uint8Array get_payment_point() {
-               Uint8Array ret = bindings.ChannelPublicKeys_get_payment_point(this.ptr);
-               return ret;
-       }
-
-       public void set_payment_point(Uint8Array val) {
-               bindings.ChannelPublicKeys_set_payment_point(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public Uint8Array get_delayed_payment_basepoint() {
-               Uint8Array ret = bindings.ChannelPublicKeys_get_delayed_payment_basepoint(this.ptr);
-               return ret;
-       }
-
-       public void set_delayed_payment_basepoint(Uint8Array val) {
-               bindings.ChannelPublicKeys_set_delayed_payment_basepoint(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public Uint8Array get_htlc_basepoint() {
-               Uint8Array ret = bindings.ChannelPublicKeys_get_htlc_basepoint(this.ptr);
-               return ret;
-       }
-
-       public void set_htlc_basepoint(Uint8Array val) {
-               bindings.ChannelPublicKeys_set_htlc_basepoint(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public static ChannelPublicKeys constructor_new(Uint8Array funding_pubkey_arg, Uint8Array revocation_basepoint_arg, Uint8Array payment_point_arg, Uint8Array delayed_payment_basepoint_arg, Uint8Array htlc_basepoint_arg) {
-               number ret = bindings.ChannelPublicKeys_new(InternalUtils.check_arr_len(funding_pubkey_arg, 33), InternalUtils.check_arr_len(revocation_basepoint_arg, 33), InternalUtils.check_arr_len(payment_point_arg, 33), InternalUtils.check_arr_len(delayed_payment_basepoint_arg, 33), InternalUtils.check_arr_len(htlc_basepoint_arg, 33));
-               const ret_hu_conv: ChannelPublicKeys = new ChannelPublicKeys(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.ChannelPublicKeys_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 Result_ChannelPublicKeysDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.ChannelPublicKeys_read(ser);
-               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
deleted file mode 100644 (file)
index c39a2ec..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ChannelReestablish extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ChannelReestablish_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_channel_id() {
-               Uint8Array ret = bindings.ChannelReestablish_get_channel_id(this.ptr);
-               return ret;
-       }
-
-       public void set_channel_id(Uint8Array val) {
-               bindings.ChannelReestablish_set_channel_id(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public number get_next_local_commitment_number() {
-               number ret = bindings.ChannelReestablish_get_next_local_commitment_number(this.ptr);
-               return ret;
-       }
-
-       public void set_next_local_commitment_number(number val) {
-               bindings.ChannelReestablish_set_next_local_commitment_number(this.ptr, val);
-       }
-
-       public number get_next_remote_commitment_number() {
-               number ret = bindings.ChannelReestablish_get_next_remote_commitment_number(this.ptr);
-               return ret;
-       }
-
-       public void set_next_remote_commitment_number(number val) {
-               bindings.ChannelReestablish_set_next_remote_commitment_number(this.ptr, val);
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.ChannelReestablish_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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;
-       }
-
-       public static Result_ChannelReestablishDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.ChannelReestablish_read(ser);
-               Result_ChannelReestablishDecodeErrorZ ret_hu_conv = Result_ChannelReestablishDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/ChannelTransactionParameters.ts b/ts/structs/ChannelTransactionParameters.ts
deleted file mode 100644 (file)
index 8b49117..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ChannelTransactionParameters extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ChannelTransactionParameters_free(this.ptr);
-                    }
-                }
-       public ChannelPublicKeys get_holder_pubkeys() {
-               number ret = bindings.ChannelTransactionParameters_get_holder_pubkeys(this.ptr);
-               const ret_hu_conv: ChannelPublicKeys = new ChannelPublicKeys(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_holder_pubkeys(ChannelPublicKeys val) {
-               bindings.ChannelTransactionParameters_set_holder_pubkeys(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public number get_holder_selected_contest_delay() {
-               number ret = bindings.ChannelTransactionParameters_get_holder_selected_contest_delay(this.ptr);
-               return ret;
-       }
-
-       public void set_holder_selected_contest_delay(number val) {
-               bindings.ChannelTransactionParameters_set_holder_selected_contest_delay(this.ptr, val);
-       }
-
-       public boolean get_is_outbound_from_holder() {
-               boolean ret = bindings.ChannelTransactionParameters_get_is_outbound_from_holder(this.ptr);
-               return ret;
-       }
-
-       public void set_is_outbound_from_holder(boolean val) {
-               bindings.ChannelTransactionParameters_set_is_outbound_from_holder(this.ptr, val);
-       }
-
-       public CounterpartyChannelTransactionParameters get_counterparty_parameters() {
-               number ret = bindings.ChannelTransactionParameters_get_counterparty_parameters(this.ptr);
-               const ret_hu_conv: CounterpartyChannelTransactionParameters = new CounterpartyChannelTransactionParameters(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_counterparty_parameters(CounterpartyChannelTransactionParameters val) {
-               bindings.ChannelTransactionParameters_set_counterparty_parameters(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public OutPoint get_funding_outpoint() {
-               number ret = bindings.ChannelTransactionParameters_get_funding_outpoint(this.ptr);
-               const ret_hu_conv: OutPoint = new OutPoint(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_funding_outpoint(OutPoint val) {
-               bindings.ChannelTransactionParameters_set_funding_outpoint(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public COption_NoneZ get_opt_anchors() {
-               COption_NoneZ ret = bindings.ChannelTransactionParameters_get_opt_anchors(this.ptr);
-               return ret;
-       }
-
-       public void set_opt_anchors(COption_NoneZ val) {
-               bindings.ChannelTransactionParameters_set_opt_anchors(this.ptr, val);
-       }
-
-       public static ChannelTransactionParameters constructor_new(ChannelPublicKeys holder_pubkeys_arg, number holder_selected_contest_delay_arg, boolean is_outbound_from_holder_arg, CounterpartyChannelTransactionParameters counterparty_parameters_arg, OutPoint funding_outpoint_arg, COption_NoneZ opt_anchors_arg) {
-               number ret = bindings.ChannelTransactionParameters_new(holder_pubkeys_arg == null ? 0 : holder_pubkeys_arg.ptr & ~1, holder_selected_contest_delay_arg, is_outbound_from_holder_arg, counterparty_parameters_arg == null ? 0 : counterparty_parameters_arg.ptr & ~1, funding_outpoint_arg == null ? 0 : funding_outpoint_arg.ptr & ~1, opt_anchors_arg);
-               const ret_hu_conv: ChannelTransactionParameters = new ChannelTransactionParameters(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.ChannelTransactionParameters_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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;
-       }
-
-       public DirectedChannelTransactionParameters as_holder_broadcastable() {
-               number ret = bindings.ChannelTransactionParameters_as_holder_broadcastable(this.ptr);
-               const ret_hu_conv: DirectedChannelTransactionParameters = new DirectedChannelTransactionParameters(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public DirectedChannelTransactionParameters as_counterparty_broadcastable() {
-               number ret = bindings.ChannelTransactionParameters_as_counterparty_broadcastable(this.ptr);
-               const ret_hu_conv: DirectedChannelTransactionParameters = new DirectedChannelTransactionParameters(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.ChannelTransactionParameters_write(this.ptr);
-               return ret;
-       }
-
-       public static Result_ChannelTransactionParametersDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.ChannelTransactionParameters_read(ser);
-               Result_ChannelTransactionParametersDecodeErrorZ ret_hu_conv = Result_ChannelTransactionParametersDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/ChannelTypeFeatures.ts b/ts/structs/ChannelTypeFeatures.ts
deleted file mode 100644 (file)
index 6863dec..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ChannelTypeFeatures extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ChannelTypeFeatures_free(this.ptr);
-                    }
-                }
-       public boolean eq(ChannelTypeFeatures b) {
-               boolean ret = bindings.ChannelTypeFeatures_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
-               this.ptrs_to.add(b);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.ChannelTypeFeatures_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public ChannelTypeFeatures clone() {
-               number ret = bindings.ChannelTypeFeatures_clone(this.ptr);
-               const ret_hu_conv: ChannelTypeFeatures = new ChannelTypeFeatures(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static ChannelTypeFeatures constructor_empty() {
-               number ret = bindings.ChannelTypeFeatures_empty();
-               const ret_hu_conv: ChannelTypeFeatures = new ChannelTypeFeatures(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static ChannelTypeFeatures constructor_known() {
-               number ret = bindings.ChannelTypeFeatures_known();
-               const ret_hu_conv: ChannelTypeFeatures = new ChannelTypeFeatures(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public boolean requires_unknown_bits() {
-               boolean ret = bindings.ChannelTypeFeatures_requires_unknown_bits(this.ptr);
-               return ret;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.ChannelTypeFeatures_write(this.ptr);
-               return ret;
-       }
-
-       public static Result_ChannelTypeFeaturesDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.ChannelTypeFeatures_read(ser);
-               Result_ChannelTypeFeaturesDecodeErrorZ ret_hu_conv = Result_ChannelTypeFeaturesDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/ChannelUpdate.ts b/ts/structs/ChannelUpdate.ts
deleted file mode 100644 (file)
index c59b611..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ChannelUpdate extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ChannelUpdate_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_signature() {
-               Uint8Array ret = bindings.ChannelUpdate_get_signature(this.ptr);
-               return ret;
-       }
-
-       public void set_signature(Uint8Array val) {
-               bindings.ChannelUpdate_set_signature(this.ptr, InternalUtils.check_arr_len(val, 64));
-       }
-
-       public UnsignedChannelUpdate get_contents() {
-               number ret = bindings.ChannelUpdate_get_contents(this.ptr);
-               const ret_hu_conv: UnsignedChannelUpdate = new UnsignedChannelUpdate(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_contents(UnsignedChannelUpdate val) {
-               bindings.ChannelUpdate_set_contents(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public static ChannelUpdate constructor_new(Uint8Array signature_arg, UnsignedChannelUpdate contents_arg) {
-               number ret = bindings.ChannelUpdate_new(InternalUtils.check_arr_len(signature_arg, 64), contents_arg == null ? 0 : contents_arg.ptr & ~1);
-               const ret_hu_conv: ChannelUpdate = new ChannelUpdate(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.ChannelUpdate_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 Result_ChannelUpdateDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.ChannelUpdate_read(ser);
-               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
deleted file mode 100644 (file)
index c9cd256..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ClosingSigned extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ClosingSigned_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_channel_id() {
-               Uint8Array ret = bindings.ClosingSigned_get_channel_id(this.ptr);
-               return ret;
-       }
-
-       public void set_channel_id(Uint8Array val) {
-               bindings.ClosingSigned_set_channel_id(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public number get_fee_satoshis() {
-               number ret = bindings.ClosingSigned_get_fee_satoshis(this.ptr);
-               return ret;
-       }
-
-       public void set_fee_satoshis(number val) {
-               bindings.ClosingSigned_set_fee_satoshis(this.ptr, val);
-       }
-
-       public Uint8Array get_signature() {
-               Uint8Array ret = bindings.ClosingSigned_get_signature(this.ptr);
-               return ret;
-       }
-
-       public void set_signature(Uint8Array val) {
-               bindings.ClosingSigned_set_signature(this.ptr, InternalUtils.check_arr_len(val, 64));
-       }
-
-       public ClosingSignedFeeRange get_fee_range() {
-               number ret = bindings.ClosingSigned_get_fee_range(this.ptr);
-               const ret_hu_conv: ClosingSignedFeeRange = new ClosingSignedFeeRange(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_fee_range(ClosingSignedFeeRange val) {
-               bindings.ClosingSigned_set_fee_range(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public static ClosingSigned constructor_new(Uint8Array channel_id_arg, number fee_satoshis_arg, Uint8Array signature_arg, ClosingSignedFeeRange fee_range_arg) {
-               number ret = bindings.ClosingSigned_new(InternalUtils.check_arr_len(channel_id_arg, 32), fee_satoshis_arg, InternalUtils.check_arr_len(signature_arg, 64), fee_range_arg == null ? 0 : fee_range_arg.ptr & ~1);
-               const ret_hu_conv: ClosingSigned = new ClosingSigned(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.ClosingSigned_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 Result_ClosingSignedDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.ClosingSigned_read(ser);
-               Result_ClosingSignedDecodeErrorZ ret_hu_conv = Result_ClosingSignedDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/ClosingSignedFeeRange.ts b/ts/structs/ClosingSignedFeeRange.ts
deleted file mode 100644 (file)
index a34f9e3..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ClosingSignedFeeRange extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ClosingSignedFeeRange_free(this.ptr);
-                    }
-                }
-       public number get_min_fee_satoshis() {
-               number ret = bindings.ClosingSignedFeeRange_get_min_fee_satoshis(this.ptr);
-               return ret;
-       }
-
-       public void set_min_fee_satoshis(number val) {
-               bindings.ClosingSignedFeeRange_set_min_fee_satoshis(this.ptr, val);
-       }
-
-       public number get_max_fee_satoshis() {
-               number ret = bindings.ClosingSignedFeeRange_get_max_fee_satoshis(this.ptr);
-               return ret;
-       }
-
-       public void set_max_fee_satoshis(number val) {
-               bindings.ClosingSignedFeeRange_set_max_fee_satoshis(this.ptr, val);
-       }
-
-       public static ClosingSignedFeeRange constructor_new(number min_fee_satoshis_arg, number max_fee_satoshis_arg) {
-               number ret = bindings.ClosingSignedFeeRange_new(min_fee_satoshis_arg, max_fee_satoshis_arg);
-               const ret_hu_conv: ClosingSignedFeeRange = new ClosingSignedFeeRange(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.ClosingSignedFeeRange_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public ClosingSignedFeeRange clone() {
-               number ret = bindings.ClosingSignedFeeRange_clone(this.ptr);
-               const ret_hu_conv: ClosingSignedFeeRange = new ClosingSignedFeeRange(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.ClosingSignedFeeRange_write(this.ptr);
-               return ret;
-       }
-
-       public static Result_ClosingSignedFeeRangeDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.ClosingSignedFeeRange_read(ser);
-               Result_ClosingSignedFeeRangeDecodeErrorZ ret_hu_conv = Result_ClosingSignedFeeRangeDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/ClosingTransaction.ts b/ts/structs/ClosingTransaction.ts
deleted file mode 100644 (file)
index 52f1bc7..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ClosingTransaction extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ClosingTransaction_free(this.ptr);
-                    }
-                }
-       public number clone_ptr() {
-               number ret = bindings.ClosingTransaction_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public ClosingTransaction clone() {
-               number ret = bindings.ClosingTransaction_clone(this.ptr);
-               const ret_hu_conv: ClosingTransaction = new ClosingTransaction(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public number hash() {
-               number ret = bindings.ClosingTransaction_hash(this.ptr);
-               return ret;
-       }
-
-       public static ClosingTransaction constructor_new(number to_holder_value_sat, number to_counterparty_value_sat, Uint8Array to_holder_script, Uint8Array to_counterparty_script, OutPoint funding_outpoint) {
-               number ret = bindings.ClosingTransaction_new(to_holder_value_sat, to_counterparty_value_sat, to_holder_script, to_counterparty_script, funding_outpoint == null ? 0 : funding_outpoint.ptr & ~1);
-               const ret_hu_conv: ClosingTransaction = new ClosingTransaction(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public TrustedClosingTransaction trust() {
-               number ret = bindings.ClosingTransaction_trust(this.ptr);
-               const ret_hu_conv: TrustedClosingTransaction = new TrustedClosingTransaction(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Result_TrustedClosingTransactionNoneZ verify(OutPoint funding_outpoint) {
-               number ret = bindings.ClosingTransaction_verify(this.ptr, funding_outpoint == null ? 0 : funding_outpoint.ptr & ~1);
-               Result_TrustedClosingTransactionNoneZ ret_hu_conv = Result_TrustedClosingTransactionNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public number to_holder_value_sat() {
-               number ret = bindings.ClosingTransaction_to_holder_value_sat(this.ptr);
-               return ret;
-       }
-
-       public number to_counterparty_value_sat() {
-               number ret = bindings.ClosingTransaction_to_counterparty_value_sat(this.ptr);
-               return ret;
-       }
-
-       public Uint8Array to_holder_script() {
-               Uint8Array ret = bindings.ClosingTransaction_to_holder_script(this.ptr);
-               return ret;
-       }
-
-       public Uint8Array to_counterparty_script() {
-               Uint8Array ret = bindings.ClosingTransaction_to_counterparty_script(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/ClosureReason.ts b/ts/structs/ClosureReason.ts
deleted file mode 100644 (file)
index fab6ef6..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-export default class ClosureReason extends CommonBase {
-       protected constructor(_dummy: object, ptr: number) { super(ptr); }
-       protected finalize() {
-               super.finalize();
-               if (this.ptr != 0) { bindings.ClosureReason_free(this.ptr); }
-       }
-       static constr_from_ptr(ptr: number): ClosureReason {
-               const raw_val: bindings.LDKClosureReason = bindings.LDKClosureReason_ref_from_ptr(ptr);
-               if (raw_val instanceof bindings.LDKClosureReason.CounterpartyForceClosed) {
-                       return new CounterpartyForceClosed(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKClosureReason.HolderForceClosed) {
-                       return new HolderForceClosed(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKClosureReason.CooperativeClosure) {
-                       return new CooperativeClosure(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKClosureReason.CommitmentTxConfirmed) {
-                       return new CommitmentTxConfirmed(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKClosureReason.FundingTimedOut) {
-                       return new FundingTimedOut(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKClosureReason.ProcessingError) {
-                       return new ProcessingError(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKClosureReason.DisconnectedPeer) {
-                       return new DisconnectedPeer(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKClosureReason.OutdatedChannelManager) {
-                       return new OutdatedChannelManager(this.ptr, raw_val);
-               }
-               throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
-       }
-
-}
-export class CounterpartyForceClosed extends ClosureReason {
-       public peer_msg: String;
-       private constructor(ptr: number, obj: bindings.LDKClosureReason.CounterpartyForceClosed) {
-               super(null, ptr);
-               this.peer_msg = obj.peer_msg;
-       }
-}
-export class HolderForceClosed extends ClosureReason {
-       private constructor(ptr: number, obj: bindings.LDKClosureReason.HolderForceClosed) {
-               super(null, ptr);
-       }
-}
-export class CooperativeClosure extends ClosureReason {
-       private constructor(ptr: number, obj: bindings.LDKClosureReason.CooperativeClosure) {
-               super(null, ptr);
-       }
-}
-export class CommitmentTxConfirmed extends ClosureReason {
-       private constructor(ptr: number, obj: bindings.LDKClosureReason.CommitmentTxConfirmed) {
-               super(null, ptr);
-       }
-}
-export class FundingTimedOut extends ClosureReason {
-       private constructor(ptr: number, obj: bindings.LDKClosureReason.FundingTimedOut) {
-               super(null, ptr);
-       }
-}
-export class ProcessingError extends ClosureReason {
-       public err: String;
-       private constructor(ptr: number, obj: bindings.LDKClosureReason.ProcessingError) {
-               super(null, ptr);
-               this.err = obj.err;
-       }
-}
-export class DisconnectedPeer extends ClosureReason {
-       private constructor(ptr: number, obj: bindings.LDKClosureReason.DisconnectedPeer) {
-               super(null, ptr);
-       }
-}
-export class OutdatedChannelManager extends ClosureReason {
-       private constructor(ptr: number, obj: bindings.LDKClosureReason.OutdatedChannelManager) {
-               super(null, ptr);
-       }
-}
-       public number clone_ptr() {
-               number ret = bindings.ClosureReason_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public ClosureReason clone() {
-               number ret = bindings.ClosureReason_clone(this.ptr);
-               ClosureReason ret_hu_conv = ClosureReason.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static ClosureReason constructor_counterparty_force_closed(String peer_msg) {
-               number ret = bindings.ClosureReason_counterparty_force_closed(peer_msg);
-               ClosureReason ret_hu_conv = ClosureReason.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static ClosureReason constructor_holder_force_closed() {
-               number ret = bindings.ClosureReason_holder_force_closed();
-               ClosureReason ret_hu_conv = ClosureReason.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static ClosureReason constructor_cooperative_closure() {
-               number ret = bindings.ClosureReason_cooperative_closure();
-               ClosureReason ret_hu_conv = ClosureReason.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static ClosureReason constructor_commitment_tx_confirmed() {
-               number ret = bindings.ClosureReason_commitment_tx_confirmed();
-               ClosureReason ret_hu_conv = ClosureReason.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static ClosureReason constructor_funding_timed_out() {
-               number ret = bindings.ClosureReason_funding_timed_out();
-               ClosureReason ret_hu_conv = ClosureReason.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static ClosureReason constructor_processing_error(String err) {
-               number ret = bindings.ClosureReason_processing_error(err);
-               ClosureReason ret_hu_conv = ClosureReason.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static ClosureReason constructor_disconnected_peer() {
-               number ret = bindings.ClosureReason_disconnected_peer();
-               ClosureReason ret_hu_conv = ClosureReason.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static ClosureReason constructor_outdated_channel_manager() {
-               number ret = bindings.ClosureReason_outdated_channel_manager();
-               ClosureReason ret_hu_conv = ClosureReason.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.ClosureReason_write(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/CommitmentSigned.ts b/ts/structs/CommitmentSigned.ts
deleted file mode 100644 (file)
index 59def69..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class CommitmentSigned extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.CommitmentSigned_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_channel_id() {
-               Uint8Array ret = bindings.CommitmentSigned_get_channel_id(this.ptr);
-               return ret;
-       }
-
-       public void set_channel_id(Uint8Array val) {
-               bindings.CommitmentSigned_set_channel_id(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public Uint8Array get_signature() {
-               Uint8Array ret = bindings.CommitmentSigned_get_signature(this.ptr);
-               return ret;
-       }
-
-       public void set_signature(Uint8Array val) {
-               bindings.CommitmentSigned_set_signature(this.ptr, InternalUtils.check_arr_len(val, 64));
-       }
-
-       public void set_htlc_signatures(Uint8Array[] val) {
-               bindings.CommitmentSigned_set_htlc_signatures(this.ptr, val != null ? Arrays.stream(val).map(val_conv_12 -> InternalUtils.check_arr_len(val_conv_12, 64)).toArray(Uint8Array[]::new) : null);
-       }
-
-       public static CommitmentSigned constructor_new(Uint8Array channel_id_arg, Uint8Array signature_arg, Uint8Array[] htlc_signatures_arg) {
-               number ret = bindings.CommitmentSigned_new(InternalUtils.check_arr_len(channel_id_arg, 32), InternalUtils.check_arr_len(signature_arg, 64), htlc_signatures_arg != null ? Arrays.stream(htlc_signatures_arg).map(htlc_signatures_arg_conv_12 -> InternalUtils.check_arr_len(htlc_signatures_arg_conv_12, 64)).toArray(Uint8Array[]::new) : null);
-               const ret_hu_conv: CommitmentSigned = new CommitmentSigned(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CommitmentSigned_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 Result_CommitmentSignedDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.CommitmentSigned_read(ser);
-               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
deleted file mode 100644 (file)
index 2a1a96f..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class CommitmentTransaction extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.CommitmentTransaction_free(this.ptr);
-                    }
-                }
-       public number clone_ptr() {
-               number ret = bindings.CommitmentTransaction_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public CommitmentTransaction clone() {
-               number ret = bindings.CommitmentTransaction_clone(this.ptr);
-               const ret_hu_conv: CommitmentTransaction = new CommitmentTransaction(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.CommitmentTransaction_write(this.ptr);
-               return ret;
-       }
-
-       public static Result_CommitmentTransactionDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.CommitmentTransaction_read(ser);
-               Result_CommitmentTransactionDecodeErrorZ ret_hu_conv = Result_CommitmentTransactionDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public number commitment_number() {
-               number ret = bindings.CommitmentTransaction_commitment_number(this.ptr);
-               return ret;
-       }
-
-       public number to_broadcaster_value_sat() {
-               number ret = bindings.CommitmentTransaction_to_broadcaster_value_sat(this.ptr);
-               return ret;
-       }
-
-       public number to_countersignatory_value_sat() {
-               number ret = bindings.CommitmentTransaction_to_countersignatory_value_sat(this.ptr);
-               return ret;
-       }
-
-       public number feerate_per_kw() {
-               number ret = bindings.CommitmentTransaction_feerate_per_kw(this.ptr);
-               return ret;
-       }
-
-       public TrustedCommitmentTransaction trust() {
-               number ret = bindings.CommitmentTransaction_trust(this.ptr);
-               const ret_hu_conv: TrustedCommitmentTransaction = new TrustedCommitmentTransaction(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Result_TrustedCommitmentTransactionNoneZ verify(DirectedChannelTransactionParameters channel_parameters, ChannelPublicKeys broadcaster_keys, ChannelPublicKeys countersignatory_keys) {
-               number ret = bindings.CommitmentTransaction_verify(this.ptr, channel_parameters == null ? 0 : channel_parameters.ptr & ~1, broadcaster_keys == null ? 0 : broadcaster_keys.ptr & ~1, countersignatory_keys == null ? 0 : countersignatory_keys.ptr & ~1);
-               Result_TrustedCommitmentTransactionNoneZ ret_hu_conv = Result_TrustedCommitmentTransactionNoneZ.constr_from_ptr(ret);
-               this.ptrs_to.add(channel_parameters);
-               this.ptrs_to.add(broadcaster_keys);
-               this.ptrs_to.add(countersignatory_keys);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/CommitmentUpdate.ts b/ts/structs/CommitmentUpdate.ts
deleted file mode 100644 (file)
index 0c7e3db..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class CommitmentUpdate extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.CommitmentUpdate_free(this.ptr);
-                    }
-                }
-       public UpdateAddHTLC[] get_update_add_htlcs() {
-               number[] ret = bindings.CommitmentUpdate_get_update_add_htlcs(this.ptr);
-               UpdateAddHTLC[] ret_conv_15_arr = new UpdateAddHTLC[ret.length];
-               for (int p = 0; p < ret.length; p++) {
-                       number ret_conv_15 = ret[p];
-                       const ret_conv_15_hu_conv: UpdateAddHTLC = new UpdateAddHTLC(null, ret_conv_15);
-                       ret_conv_15_hu_conv.ptrs_to.add(this);
-                       ret_conv_15_arr[p] = ret_conv_15_hu_conv;
-               }
-               return ret_conv_15_arr;
-       }
-
-       public void set_update_add_htlcs(UpdateAddHTLC[] val) {
-               bindings.CommitmentUpdate_set_update_add_htlcs(this.ptr, val != null ? Arrays.stream(val).map(val_conv_15 -> val_conv_15 == null ? 0 : val_conv_15.ptr & ~1).toArray(number[]::new) : null);
-       }
-
-       public UpdateFulfillHTLC[] get_update_fulfill_htlcs() {
-               number[] ret = bindings.CommitmentUpdate_get_update_fulfill_htlcs(this.ptr);
-               UpdateFulfillHTLC[] ret_conv_19_arr = new UpdateFulfillHTLC[ret.length];
-               for (int t = 0; t < ret.length; t++) {
-                       number ret_conv_19 = ret[t];
-                       const ret_conv_19_hu_conv: UpdateFulfillHTLC = new UpdateFulfillHTLC(null, ret_conv_19);
-                       ret_conv_19_hu_conv.ptrs_to.add(this);
-                       ret_conv_19_arr[t] = ret_conv_19_hu_conv;
-               }
-               return ret_conv_19_arr;
-       }
-
-       public void set_update_fulfill_htlcs(UpdateFulfillHTLC[] val) {
-               bindings.CommitmentUpdate_set_update_fulfill_htlcs(this.ptr, val != null ? Arrays.stream(val).map(val_conv_19 -> val_conv_19 == null ? 0 : val_conv_19.ptr & ~1).toArray(number[]::new) : null);
-       }
-
-       public UpdateFailHTLC[] get_update_fail_htlcs() {
-               number[] ret = bindings.CommitmentUpdate_get_update_fail_htlcs(this.ptr);
-               UpdateFailHTLC[] ret_conv_16_arr = new UpdateFailHTLC[ret.length];
-               for (int q = 0; q < ret.length; q++) {
-                       number ret_conv_16 = ret[q];
-                       const ret_conv_16_hu_conv: UpdateFailHTLC = new UpdateFailHTLC(null, ret_conv_16);
-                       ret_conv_16_hu_conv.ptrs_to.add(this);
-                       ret_conv_16_arr[q] = ret_conv_16_hu_conv;
-               }
-               return ret_conv_16_arr;
-       }
-
-       public void set_update_fail_htlcs(UpdateFailHTLC[] val) {
-               bindings.CommitmentUpdate_set_update_fail_htlcs(this.ptr, val != null ? Arrays.stream(val).map(val_conv_16 -> val_conv_16 == null ? 0 : val_conv_16.ptr & ~1).toArray(number[]::new) : null);
-       }
-
-       public UpdateFailMalformedHTLC[] get_update_fail_malformed_htlcs() {
-               number[] ret = bindings.CommitmentUpdate_get_update_fail_malformed_htlcs(this.ptr);
-               UpdateFailMalformedHTLC[] ret_conv_25_arr = new UpdateFailMalformedHTLC[ret.length];
-               for (int z = 0; z < ret.length; z++) {
-                       number ret_conv_25 = ret[z];
-                       const ret_conv_25_hu_conv: UpdateFailMalformedHTLC = new UpdateFailMalformedHTLC(null, ret_conv_25);
-                       ret_conv_25_hu_conv.ptrs_to.add(this);
-                       ret_conv_25_arr[z] = ret_conv_25_hu_conv;
-               }
-               return ret_conv_25_arr;
-       }
-
-       public void set_update_fail_malformed_htlcs(UpdateFailMalformedHTLC[] val) {
-               bindings.CommitmentUpdate_set_update_fail_malformed_htlcs(this.ptr, val != null ? Arrays.stream(val).map(val_conv_25 -> val_conv_25 == null ? 0 : val_conv_25.ptr & ~1).toArray(number[]::new) : null);
-       }
-
-       public UpdateFee get_update_fee() {
-               number ret = bindings.CommitmentUpdate_get_update_fee(this.ptr);
-               const ret_hu_conv: UpdateFee = new UpdateFee(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_update_fee(UpdateFee val) {
-               bindings.CommitmentUpdate_set_update_fee(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public CommitmentSigned get_commitment_signed() {
-               number ret = bindings.CommitmentUpdate_get_commitment_signed(this.ptr);
-               const ret_hu_conv: CommitmentSigned = new CommitmentSigned(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_commitment_signed(CommitmentSigned val) {
-               bindings.CommitmentUpdate_set_commitment_signed(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       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(update_add_htlcs_arg != null ? Arrays.stream(update_add_htlcs_arg).map(update_add_htlcs_arg_conv_15 -> update_add_htlcs_arg_conv_15 == null ? 0 : update_add_htlcs_arg_conv_15.ptr & ~1).toArray(number[]::new) : null, update_fulfill_htlcs_arg != null ? Arrays.stream(update_fulfill_htlcs_arg).map(update_fulfill_htlcs_arg_conv_19 -> update_fulfill_htlcs_arg_conv_19 == null ? 0 : update_fulfill_htlcs_arg_conv_19.ptr & ~1).toArray(number[]::new) : null, update_fail_htlcs_arg != null ? Arrays.stream(update_fail_htlcs_arg).map(update_fail_htlcs_arg_conv_16 -> update_fail_htlcs_arg_conv_16 == null ? 0 : update_fail_htlcs_arg_conv_16.ptr & ~1).toArray(number[]::new) : null, update_fail_malformed_htlcs_arg != null ? Arrays.stream(update_fail_malformed_htlcs_arg).map(update_fail_malformed_htlcs_arg_conv_25 -> update_fail_malformed_htlcs_arg_conv_25 == null ? 0 : update_fail_malformed_htlcs_arg_conv_25.ptr & ~1).toArray(number[]::new) : null, 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);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CommitmentUpdate_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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/CommonBase.ts b/ts/structs/CommonBase.ts
deleted file mode 100644 (file)
index 2f7a0f0..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-
-            export default class CommonBase {
-                ptr: number;
-                ptrs_to: object[] = []; // new LinkedList(); TODO: build linked list implementation
-                protected constructor(ptr: number) { this.ptr = ptr; }
-                public _test_only_get_ptr(): number { return this.ptr; }
-                protected finalize() {
-                    // TODO: finalize myself
-                }
-            }
diff --git a/ts/structs/Confirm.ts b/ts/structs/Confirm.ts
deleted file mode 100644 (file)
index c991e83..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export class Confirm extends CommonBase {
-
-                bindings_instance?: bindings.LDKConfirm;
-
-                constructor(ptr?: number, arg?: bindings.LDKConfirm) {
-                    if (Number.isFinite(ptr)) {
-                                       super(ptr);
-                                       this.bindings_instance = null;
-                                   } else {
-                                       // TODO: private constructor instantiation
-                                       super(bindings.LDKConfirm_new(arg));
-                                       this.ptrs_to.push(arg);
-                                       
-                                   }
-                }
-
-                protected finalize() {
-                    if (this.ptr != 0) {
-                        bindings.Confirm_free(this.ptr);
-                    }
-                    super.finalize();
-                }
-
-                static new_impl(arg: ConfirmInterface): Confirm {
-                    const impl_holder: LDKConfirmHolder = new LDKConfirmHolder();
-                    let structImplementation = <bindings.LDKConfirm>{
-                        // todo: in-line interface filling
-                        transactions_confirmed (header: Uint8Array, txdata: number[], height: number): void {
-                                                       TwoTuple_usizeTransactionZ[] txdata_conv_28_arr = new TwoTuple_usizeTransactionZ[txdata.length];
-                               for (int c = 0; c < txdata.length; c++) {
-                                       number txdata_conv_28 = txdata[c];
-                                       TwoTuple_usizeTransactionZ txdata_conv_28_hu_conv = new TwoTuple_usizeTransactionZ(null, txdata_conv_28);
-                                       txdata_conv_28_hu_conv.ptrs_to.add(this);
-                                       txdata_conv_28_arr[c] = txdata_conv_28_hu_conv;
-                               }
-                                                       arg.transactions_confirmed(header, txdata_conv_28_arr, height);
-                                               },
-
-                                               transaction_unconfirmed (txid: Uint8Array): void {
-                                                       arg.transaction_unconfirmed(txid);
-                                               },
-
-                                               best_block_updated (header: Uint8Array, height: number): void {
-                                                       arg.best_block_updated(header, height);
-                                               },
-
-                                               get_relevant_txids (): Uint8Array[] {
-                                                       Uint8Array[] ret = arg.get_relevant_txids();
-                               result: Uint8Array[] = ret != null ? Arrays.stream(ret).map(ret_conv_12 -> InternalUtils.check_arr_len(ret_conv_12, 32)).toArray(Uint8Array[]::new) : null;
-                               return result;
-                                               },
-
-                                               
-                    };
-                    impl_holder.held = new Confirm (null, structImplementation);
-                }
-            }
-
-            export interface ConfirmInterface {
-                transactions_confirmed(header: Uint8Array, txdata: TwoTuple_usizeTransactionZ[], height: number): void;
-                               transaction_unconfirmed(txid: Uint8Array): void;
-                               best_block_updated(header: Uint8Array, height: number): void;
-                               get_relevant_txids(): Uint8Array[];
-                               
-            }
-
-            class LDKConfirmHolder {
-                held: Confirm;
-            }
-       public void transactions_confirmed(Uint8Array header, TwoTuple_usizeTransactionZ[] txdata, number height) {
-               bindings.Confirm_transactions_confirmed(this.ptr, InternalUtils.check_arr_len(header, 80), txdata != null ? Arrays.stream(txdata).map(txdata_conv_28 -> txdata_conv_28 != null ? txdata_conv_28.ptr : 0).toArray(number[]::new) : null, height);
-       }
-
-       public void transaction_unconfirmed(Uint8Array txid) {
-               bindings.Confirm_transaction_unconfirmed(this.ptr, InternalUtils.check_arr_len(txid, 32));
-       }
-
-       public void best_block_updated(Uint8Array header, number height) {
-               bindings.Confirm_best_block_updated(this.ptr, InternalUtils.check_arr_len(header, 80), height);
-       }
-
-       public Uint8Array[] get_relevant_txids() {
-               Uint8Array[] ret = bindings.Confirm_get_relevant_txids(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/CounterpartyChannelTransactionParameters.ts b/ts/structs/CounterpartyChannelTransactionParameters.ts
deleted file mode 100644 (file)
index 140dfb3..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class CounterpartyChannelTransactionParameters extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.CounterpartyChannelTransactionParameters_free(this.ptr);
-                    }
-                }
-       public ChannelPublicKeys get_pubkeys() {
-               number ret = bindings.CounterpartyChannelTransactionParameters_get_pubkeys(this.ptr);
-               const ret_hu_conv: ChannelPublicKeys = new ChannelPublicKeys(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_pubkeys(ChannelPublicKeys val) {
-               bindings.CounterpartyChannelTransactionParameters_set_pubkeys(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public number get_selected_contest_delay() {
-               number ret = bindings.CounterpartyChannelTransactionParameters_get_selected_contest_delay(this.ptr);
-               return ret;
-       }
-
-       public void set_selected_contest_delay(number val) {
-               bindings.CounterpartyChannelTransactionParameters_set_selected_contest_delay(this.ptr, val);
-       }
-
-       public static CounterpartyChannelTransactionParameters constructor_new(ChannelPublicKeys pubkeys_arg, number selected_contest_delay_arg) {
-               number ret = bindings.CounterpartyChannelTransactionParameters_new(pubkeys_arg == null ? 0 : pubkeys_arg.ptr & ~1, selected_contest_delay_arg);
-               const ret_hu_conv: CounterpartyChannelTransactionParameters = new CounterpartyChannelTransactionParameters(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CounterpartyChannelTransactionParameters_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 Result_CounterpartyChannelTransactionParametersDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.CounterpartyChannelTransactionParameters_read(ser);
-               Result_CounterpartyChannelTransactionParametersDecodeErrorZ ret_hu_conv = Result_CounterpartyChannelTransactionParametersDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/CounterpartyForwardingInfo.ts b/ts/structs/CounterpartyForwardingInfo.ts
deleted file mode 100644 (file)
index 8b8db20..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class CounterpartyForwardingInfo extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.CounterpartyForwardingInfo_free(this.ptr);
-                    }
-                }
-       public number get_fee_base_msat() {
-               number ret = bindings.CounterpartyForwardingInfo_get_fee_base_msat(this.ptr);
-               return ret;
-       }
-
-       public void set_fee_base_msat(number val) {
-               bindings.CounterpartyForwardingInfo_set_fee_base_msat(this.ptr, val);
-       }
-
-       public number get_fee_proportional_millionths() {
-               number ret = bindings.CounterpartyForwardingInfo_get_fee_proportional_millionths(this.ptr);
-               return ret;
-       }
-
-       public void set_fee_proportional_millionths(number val) {
-               bindings.CounterpartyForwardingInfo_set_fee_proportional_millionths(this.ptr, val);
-       }
-
-       public number get_cltv_expiry_delta() {
-               number ret = bindings.CounterpartyForwardingInfo_get_cltv_expiry_delta(this.ptr);
-               return ret;
-       }
-
-       public void set_cltv_expiry_delta(number val) {
-               bindings.CounterpartyForwardingInfo_set_cltv_expiry_delta(this.ptr, val);
-       }
-
-       public static CounterpartyForwardingInfo constructor_new(number fee_base_msat_arg, number fee_proportional_millionths_arg, number cltv_expiry_delta_arg) {
-               number ret = bindings.CounterpartyForwardingInfo_new(fee_base_msat_arg, fee_proportional_millionths_arg, cltv_expiry_delta_arg);
-               const ret_hu_conv: CounterpartyForwardingInfo = new CounterpartyForwardingInfo(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CounterpartyForwardingInfo_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public CounterpartyForwardingInfo clone() {
-               number ret = bindings.CounterpartyForwardingInfo_clone(this.ptr);
-               const ret_hu_conv: CounterpartyForwardingInfo = new CounterpartyForwardingInfo(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/CustomMessageHandler.ts b/ts/structs/CustomMessageHandler.ts
deleted file mode 100644 (file)
index 0791013..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export class CustomMessageHandler extends CommonBase {
-
-                bindings_instance?: bindings.LDKCustomMessageHandler;
-
-                constructor(ptr?: number, arg?: bindings.LDKCustomMessageHandler, customMessageReader?: bindings.LDKCustomMessageReader) {
-                    if (Number.isFinite(ptr)) {
-                                       super(ptr);
-                                       this.bindings_instance = null;
-                                   } else {
-                                       // TODO: private constructor instantiation
-                                       super(bindings.LDKCustomMessageHandler_new(arg, customMessageReader));
-                                       this.ptrs_to.push(arg);
-                                       this.ptrs_to.push(customMessageReader);
-
-                                   }
-                }
-
-                protected finalize() {
-                    if (this.ptr != 0) {
-                        bindings.CustomMessageHandler_free(this.ptr);
-                    }
-                    super.finalize();
-                }
-
-                static new_impl(arg: CustomMessageHandlerInterface, customMessageReader_impl: CustomMessageReader.CustomMessageReaderInterface): CustomMessageHandler {
-                    const impl_holder: LDKCustomMessageHandlerHolder = new LDKCustomMessageHandlerHolder();
-                    let structImplementation = <bindings.LDKCustomMessageHandler>{
-                        // todo: in-line interface filling
-                        handle_custom_message (msg: number, sender_node_id: Uint8Array): number {
-                                                       Type ret_hu_conv = new Type(null, msg);
-                               ret_hu_conv.ptrs_to.add(this);
-                                                       Result_NoneLightningErrorZ ret = arg.handle_custom_message(ret_hu_conv, sender_node_id);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               get_and_clear_pending_msg (): number[] {
-                                                       TwoTuple_PublicKeyTypeZ[] ret = arg.get_and_clear_pending_msg();
-                               result: number[] = ret != null ? Arrays.stream(ret).map(ret_conv_25 -> ret_conv_25 == null ? 0 : ret_conv_25.clone_ptr()).toArray(number[]::new) : null;
-                               return result;
-                                               },
-
-                                               
-                    };
-                    impl_holder.held = new CustomMessageHandler (null, structImplementation, CustomMessageReader.new_impl(CustomMessageReader_impl).bindings_instance);
-                }
-            }
-
-            export interface CustomMessageHandlerInterface {
-                handle_custom_message(msg: Type, sender_node_id: Uint8Array): Result_NoneLightningErrorZ;
-                               get_and_clear_pending_msg(): TwoTuple_PublicKeyTypeZ[];
-                               
-            }
-
-            class LDKCustomMessageHandlerHolder {
-                held: CustomMessageHandler;
-            }
-       public Result_NoneLightningErrorZ handle_custom_message(Type msg, Uint8Array sender_node_id) {
-               number ret = bindings.CustomMessageHandler_handle_custom_message(this.ptr, msg == null ? 0 : msg.ptr, InternalUtils.check_arr_len(sender_node_id, 33));
-               Result_NoneLightningErrorZ ret_hu_conv = Result_NoneLightningErrorZ.constr_from_ptr(ret);
-               this.ptrs_to.add(msg);
-               return ret_hu_conv;
-       }
-
-       public TwoTuple_PublicKeyTypeZ[] get_and_clear_pending_msg() {
-               number[] ret = bindings.CustomMessageHandler_get_and_clear_pending_msg(this.ptr);
-               TwoTuple_PublicKeyTypeZ[] ret_conv_25_arr = new TwoTuple_PublicKeyTypeZ[ret.length];
-               for (int z = 0; z < ret.length; z++) {
-                       number ret_conv_25 = ret[z];
-                       TwoTuple_PublicKeyTypeZ ret_conv_25_hu_conv = new TwoTuple_PublicKeyTypeZ(null, ret_conv_25);
-                       ret_conv_25_hu_conv.ptrs_to.add(this);
-                       ret_conv_25_arr[z] = ret_conv_25_hu_conv;
-               }
-               return ret_conv_25_arr;
-       }
-
-}
diff --git a/ts/structs/CustomMessageReader.ts b/ts/structs/CustomMessageReader.ts
deleted file mode 100644 (file)
index 6d57c77..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export class CustomMessageReader extends CommonBase {
-
-                bindings_instance?: bindings.LDKCustomMessageReader;
-
-                constructor(ptr?: number, arg?: bindings.LDKCustomMessageReader) {
-                    if (Number.isFinite(ptr)) {
-                                       super(ptr);
-                                       this.bindings_instance = null;
-                                   } else {
-                                       // TODO: private constructor instantiation
-                                       super(bindings.LDKCustomMessageReader_new(arg));
-                                       this.ptrs_to.push(arg);
-                                       
-                                   }
-                }
-
-                protected finalize() {
-                    if (this.ptr != 0) {
-                        bindings.CustomMessageReader_free(this.ptr);
-                    }
-                    super.finalize();
-                }
-
-                static new_impl(arg: CustomMessageReaderInterface): CustomMessageReader {
-                    const impl_holder: LDKCustomMessageReaderHolder = new LDKCustomMessageReaderHolder();
-                    let structImplementation = <bindings.LDKCustomMessageReader>{
-                        // todo: in-line interface filling
-                        read (message_type: number, buffer: Uint8Array): number {
-                                                       Result_COption_TypeZDecodeErrorZ ret = arg.read(message_type, buffer);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               
-                    };
-                    impl_holder.held = new CustomMessageReader (null, structImplementation);
-                }
-            }
-
-            export interface CustomMessageReaderInterface {
-                read(message_type: number, buffer: Uint8Array): Result_COption_TypeZDecodeErrorZ;
-                               
-            }
-
-            class LDKCustomMessageReaderHolder {
-                held: CustomMessageReader;
-            }
-       public Result_COption_TypeZDecodeErrorZ read(number message_type, Uint8Array buffer) {
-               number ret = bindings.CustomMessageReader_read(this.ptr, message_type, buffer);
-               Result_COption_TypeZDecodeErrorZ ret_hu_conv = Result_COption_TypeZDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/DataLossProtect.ts b/ts/structs/DataLossProtect.ts
deleted file mode 100644 (file)
index 35fc4ca..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class DataLossProtect extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.DataLossProtect_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_your_last_per_commitment_secret() {
-               Uint8Array ret = bindings.DataLossProtect_get_your_last_per_commitment_secret(this.ptr);
-               return ret;
-       }
-
-       public void set_your_last_per_commitment_secret(Uint8Array val) {
-               bindings.DataLossProtect_set_your_last_per_commitment_secret(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public Uint8Array get_my_current_per_commitment_point() {
-               Uint8Array ret = bindings.DataLossProtect_get_my_current_per_commitment_point(this.ptr);
-               return ret;
-       }
-
-       public void set_my_current_per_commitment_point(Uint8Array val) {
-               bindings.DataLossProtect_set_my_current_per_commitment_point(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public static DataLossProtect constructor_new(Uint8Array your_last_per_commitment_secret_arg, Uint8Array my_current_per_commitment_point_arg) {
-               number ret = bindings.DataLossProtect_new(InternalUtils.check_arr_len(your_last_per_commitment_secret_arg, 32), InternalUtils.check_arr_len(my_current_per_commitment_point_arg, 33));
-               const ret_hu_conv: DataLossProtect = new DataLossProtect(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.DataLossProtect_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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/DecodeError.ts b/ts/structs/DecodeError.ts
deleted file mode 100644 (file)
index caffcab..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class DecodeError extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.DecodeError_free(this.ptr);
-                    }
-                }
-       public number clone_ptr() {
-               number ret = bindings.DecodeError_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public DecodeError clone() {
-               number ret = bindings.DecodeError_clone(this.ptr);
-               const ret_hu_conv: DecodeError = new DecodeError(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/DefaultRouter.ts b/ts/structs/DefaultRouter.ts
deleted file mode 100644 (file)
index e4dee1e..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class DefaultRouter extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.DefaultRouter_free(this.ptr);
-                    }
-                }
-       public static DefaultRouter constructor_new(NetworkGraph network_graph, Logger logger) {
-               number ret = bindings.DefaultRouter_new(network_graph == null ? 0 : network_graph.ptr & ~1, logger == null ? 0 : logger.ptr);
-               const ret_hu_conv: DefaultRouter = new DefaultRouter(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               ret_hu_conv.ptrs_to.add(network_graph);
-               ret_hu_conv.ptrs_to.add(logger);
-               return ret_hu_conv;
-       }
-
-       public Router as_Router() {
-               number ret = bindings.DefaultRouter_as_Router(this.ptr);
-               Router ret_hu_conv = new Router(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/DelayedPaymentOutputDescriptor.ts b/ts/structs/DelayedPaymentOutputDescriptor.ts
deleted file mode 100644 (file)
index 669ad3d..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class DelayedPaymentOutputDescriptor extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.DelayedPaymentOutputDescriptor_free(this.ptr);
-                    }
-                }
-       public OutPoint get_outpoint() {
-               number ret = bindings.DelayedPaymentOutputDescriptor_get_outpoint(this.ptr);
-               const ret_hu_conv: OutPoint = new OutPoint(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_outpoint(OutPoint val) {
-               bindings.DelayedPaymentOutputDescriptor_set_outpoint(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public Uint8Array get_per_commitment_point() {
-               Uint8Array ret = bindings.DelayedPaymentOutputDescriptor_get_per_commitment_point(this.ptr);
-               return ret;
-       }
-
-       public void set_per_commitment_point(Uint8Array val) {
-               bindings.DelayedPaymentOutputDescriptor_set_per_commitment_point(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public number get_to_self_delay() {
-               number ret = bindings.DelayedPaymentOutputDescriptor_get_to_self_delay(this.ptr);
-               return ret;
-       }
-
-       public void set_to_self_delay(number val) {
-               bindings.DelayedPaymentOutputDescriptor_set_to_self_delay(this.ptr, val);
-       }
-
-       public void set_output(TxOut val) {
-               bindings.DelayedPaymentOutputDescriptor_set_output(this.ptr, val.ptr);
-       }
-
-       public Uint8Array get_revocation_pubkey() {
-               Uint8Array ret = bindings.DelayedPaymentOutputDescriptor_get_revocation_pubkey(this.ptr);
-               return ret;
-       }
-
-       public void set_revocation_pubkey(Uint8Array val) {
-               bindings.DelayedPaymentOutputDescriptor_set_revocation_pubkey(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public Uint8Array get_channel_keys_id() {
-               Uint8Array ret = bindings.DelayedPaymentOutputDescriptor_get_channel_keys_id(this.ptr);
-               return ret;
-       }
-
-       public void set_channel_keys_id(Uint8Array val) {
-               bindings.DelayedPaymentOutputDescriptor_set_channel_keys_id(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public number get_channel_value_satoshis() {
-               number ret = bindings.DelayedPaymentOutputDescriptor_get_channel_value_satoshis(this.ptr);
-               return ret;
-       }
-
-       public void set_channel_value_satoshis(number val) {
-               bindings.DelayedPaymentOutputDescriptor_set_channel_value_satoshis(this.ptr, val);
-       }
-
-       public static DelayedPaymentOutputDescriptor constructor_new(OutPoint outpoint_arg, Uint8Array per_commitment_point_arg, number to_self_delay_arg, TxOut output_arg, Uint8Array revocation_pubkey_arg, Uint8Array channel_keys_id_arg, number channel_value_satoshis_arg) {
-               number ret = bindings.DelayedPaymentOutputDescriptor_new(outpoint_arg == null ? 0 : outpoint_arg.ptr & ~1, InternalUtils.check_arr_len(per_commitment_point_arg, 33), to_self_delay_arg, output_arg.ptr, InternalUtils.check_arr_len(revocation_pubkey_arg, 33), InternalUtils.check_arr_len(channel_keys_id_arg, 32), channel_value_satoshis_arg);
-               const ret_hu_conv: DelayedPaymentOutputDescriptor = new DelayedPaymentOutputDescriptor(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.DelayedPaymentOutputDescriptor_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public DelayedPaymentOutputDescriptor clone() {
-               number ret = bindings.DelayedPaymentOutputDescriptor_clone(this.ptr);
-               const ret_hu_conv: DelayedPaymentOutputDescriptor = new DelayedPaymentOutputDescriptor(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.DelayedPaymentOutputDescriptor_write(this.ptr);
-               return ret;
-       }
-
-       public static Result_DelayedPaymentOutputDescriptorDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.DelayedPaymentOutputDescriptor_read(ser);
-               Result_DelayedPaymentOutputDescriptorDecodeErrorZ ret_hu_conv = Result_DelayedPaymentOutputDescriptorDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Description.ts b/ts/structs/Description.ts
deleted file mode 100644 (file)
index 3fcb336..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class Description extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.Description_free(this.ptr);
-                    }
-                }
-       public number clone_ptr() {
-               number ret = bindings.Description_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Description clone() {
-               number ret = bindings.Description_clone(this.ptr);
-               const ret_hu_conv: Description = new Description(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public number hash() {
-               number ret = bindings.Description_hash(this.ptr);
-               return ret;
-       }
-
-       public boolean eq(Description b) {
-               boolean ret = bindings.Description_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
-               this.ptrs_to.add(b);
-               return ret;
-       }
-
-       public static Result_DescriptionCreationErrorZ constructor_new(String description) {
-               number ret = bindings.Description_new(description);
-               Result_DescriptionCreationErrorZ ret_hu_conv = Result_DescriptionCreationErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public String into_inner() {
-               String ret = bindings.Description_into_inner(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/DirectedChannelTransactionParameters.ts b/ts/structs/DirectedChannelTransactionParameters.ts
deleted file mode 100644 (file)
index dfc9e69..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class DirectedChannelTransactionParameters extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.DirectedChannelTransactionParameters_free(this.ptr);
-                    }
-                }
-       public ChannelPublicKeys broadcaster_pubkeys() {
-               number ret = bindings.DirectedChannelTransactionParameters_broadcaster_pubkeys(this.ptr);
-               const ret_hu_conv: ChannelPublicKeys = new ChannelPublicKeys(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public ChannelPublicKeys countersignatory_pubkeys() {
-               number ret = bindings.DirectedChannelTransactionParameters_countersignatory_pubkeys(this.ptr);
-               const ret_hu_conv: ChannelPublicKeys = new ChannelPublicKeys(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public number contest_delay() {
-               number ret = bindings.DirectedChannelTransactionParameters_contest_delay(this.ptr);
-               return ret;
-       }
-
-       public boolean is_outbound() {
-               boolean ret = bindings.DirectedChannelTransactionParameters_is_outbound(this.ptr);
-               return ret;
-       }
-
-       public OutPoint funding_outpoint() {
-               number ret = bindings.DirectedChannelTransactionParameters_funding_outpoint(this.ptr);
-               const ret_hu_conv: OutPoint = new OutPoint(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public boolean opt_anchors() {
-               boolean ret = bindings.DirectedChannelTransactionParameters_opt_anchors(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/DirectionalChannelInfo.ts b/ts/structs/DirectionalChannelInfo.ts
deleted file mode 100644 (file)
index d76b77f..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class DirectionalChannelInfo extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.DirectionalChannelInfo_free(this.ptr);
-                    }
-                }
-       public number get_last_update() {
-               number ret = bindings.DirectionalChannelInfo_get_last_update(this.ptr);
-               return ret;
-       }
-
-       public void set_last_update(number val) {
-               bindings.DirectionalChannelInfo_set_last_update(this.ptr, val);
-       }
-
-       public boolean get_enabled() {
-               boolean ret = bindings.DirectionalChannelInfo_get_enabled(this.ptr);
-               return ret;
-       }
-
-       public void set_enabled(boolean val) {
-               bindings.DirectionalChannelInfo_set_enabled(this.ptr, val);
-       }
-
-       public number get_cltv_expiry_delta() {
-               number ret = bindings.DirectionalChannelInfo_get_cltv_expiry_delta(this.ptr);
-               return ret;
-       }
-
-       public void set_cltv_expiry_delta(number val) {
-               bindings.DirectionalChannelInfo_set_cltv_expiry_delta(this.ptr, val);
-       }
-
-       public number get_htlc_minimum_msat() {
-               number ret = bindings.DirectionalChannelInfo_get_htlc_minimum_msat(this.ptr);
-               return ret;
-       }
-
-       public void set_htlc_minimum_msat(number val) {
-               bindings.DirectionalChannelInfo_set_htlc_minimum_msat(this.ptr, val);
-       }
-
-       public Option_u64Z get_htlc_maximum_msat() {
-               number ret = bindings.DirectionalChannelInfo_get_htlc_maximum_msat(this.ptr);
-               Option_u64Z ret_hu_conv = Option_u64Z.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_htlc_maximum_msat(Option_u64Z val) {
-               bindings.DirectionalChannelInfo_set_htlc_maximum_msat(this.ptr, val.ptr);
-       }
-
-       public RoutingFees get_fees() {
-               number ret = bindings.DirectionalChannelInfo_get_fees(this.ptr);
-               const ret_hu_conv: RoutingFees = new RoutingFees(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_fees(RoutingFees val) {
-               bindings.DirectionalChannelInfo_set_fees(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public ChannelUpdate get_last_update_message() {
-               number ret = bindings.DirectionalChannelInfo_get_last_update_message(this.ptr);
-               const ret_hu_conv: ChannelUpdate = new ChannelUpdate(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_last_update_message(ChannelUpdate val) {
-               bindings.DirectionalChannelInfo_set_last_update_message(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public static DirectionalChannelInfo constructor_new(number last_update_arg, boolean enabled_arg, number cltv_expiry_delta_arg, number htlc_minimum_msat_arg, Option_u64Z htlc_maximum_msat_arg, RoutingFees fees_arg, ChannelUpdate last_update_message_arg) {
-               number ret = bindings.DirectionalChannelInfo_new(last_update_arg, enabled_arg, cltv_expiry_delta_arg, htlc_minimum_msat_arg, htlc_maximum_msat_arg.ptr, fees_arg == null ? 0 : fees_arg.ptr & ~1, last_update_message_arg == null ? 0 : last_update_message_arg.ptr & ~1);
-               const ret_hu_conv: DirectionalChannelInfo = new DirectionalChannelInfo(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.DirectionalChannelInfo_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 Result_DirectionalChannelInfoDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.DirectionalChannelInfo_read(ser);
-               Result_DirectionalChannelInfoDecodeErrorZ ret_hu_conv = Result_DirectionalChannelInfoDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/ErrorAction.ts b/ts/structs/ErrorAction.ts
deleted file mode 100644 (file)
index 64eea7a..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-export default class ErrorAction extends CommonBase {
-       protected constructor(_dummy: object, ptr: number) { super(ptr); }
-       protected finalize() {
-               super.finalize();
-               if (this.ptr != 0) { bindings.ErrorAction_free(this.ptr); }
-       }
-       static constr_from_ptr(ptr: number): ErrorAction {
-               const raw_val: bindings.LDKErrorAction = bindings.LDKErrorAction_ref_from_ptr(ptr);
-               if (raw_val instanceof bindings.LDKErrorAction.DisconnectPeer) {
-                       return new DisconnectPeer(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKErrorAction.IgnoreError) {
-                       return new IgnoreError(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKErrorAction.IgnoreAndLog) {
-                       return new IgnoreAndLog(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKErrorAction.IgnoreDuplicateGossip) {
-                       return new IgnoreDuplicateGossip(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKErrorAction.SendErrorMessage) {
-                       return new SendErrorMessage(this.ptr, raw_val);
-               }
-               throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
-       }
-
-}
-export class DisconnectPeer extends ErrorAction {
-       public msg: ErrorMessage;
-       private constructor(ptr: number, obj: bindings.LDKErrorAction.DisconnectPeer) {
-               super(null, ptr);
-               const msg: number = obj.msg;
-               const msg_hu_conv: ErrorMessage = new ErrorMessage(null, msg);
-                       msg_hu_conv.ptrs_to.add(this);
-               this.msg = msg_hu_conv;
-       }
-}
-export class IgnoreError extends ErrorAction {
-       private constructor(ptr: number, obj: bindings.LDKErrorAction.IgnoreError) {
-               super(null, ptr);
-       }
-}
-export class IgnoreAndLog extends ErrorAction {
-       public ignore_and_log: Level;
-       private constructor(ptr: number, obj: bindings.LDKErrorAction.IgnoreAndLog) {
-               super(null, ptr);
-               this.ignore_and_log = obj.ignore_and_log;
-       }
-}
-export class IgnoreDuplicateGossip extends ErrorAction {
-       private constructor(ptr: number, obj: bindings.LDKErrorAction.IgnoreDuplicateGossip) {
-               super(null, ptr);
-       }
-}
-export class SendErrorMessage extends ErrorAction {
-       public msg: ErrorMessage;
-       private constructor(ptr: number, obj: bindings.LDKErrorAction.SendErrorMessage) {
-               super(null, ptr);
-               const msg: number = obj.msg;
-               const msg_hu_conv: ErrorMessage = new ErrorMessage(null, msg);
-                       msg_hu_conv.ptrs_to.add(this);
-               this.msg = msg_hu_conv;
-       }
-}
-       public number clone_ptr() {
-               number ret = bindings.ErrorAction_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public ErrorAction clone() {
-               number ret = bindings.ErrorAction_clone(this.ptr);
-               ErrorAction ret_hu_conv = ErrorAction.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static ErrorAction constructor_disconnect_peer(ErrorMessage msg) {
-               number ret = bindings.ErrorAction_disconnect_peer(msg == null ? 0 : msg.ptr & ~1);
-               ErrorAction ret_hu_conv = ErrorAction.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static ErrorAction constructor_ignore_error() {
-               number ret = bindings.ErrorAction_ignore_error();
-               ErrorAction ret_hu_conv = ErrorAction.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static ErrorAction constructor_ignore_and_log(Level a) {
-               number ret = bindings.ErrorAction_ignore_and_log(a);
-               ErrorAction ret_hu_conv = ErrorAction.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static ErrorAction constructor_ignore_duplicate_gossip() {
-               number ret = bindings.ErrorAction_ignore_duplicate_gossip();
-               ErrorAction ret_hu_conv = ErrorAction.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static ErrorAction constructor_send_error_message(ErrorMessage msg) {
-               number ret = bindings.ErrorAction_send_error_message(msg == null ? 0 : msg.ptr & ~1);
-               ErrorAction ret_hu_conv = ErrorAction.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/ErrorMessage.ts b/ts/structs/ErrorMessage.ts
deleted file mode 100644 (file)
index 755f712..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ErrorMessage extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ErrorMessage_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_channel_id() {
-               Uint8Array ret = bindings.ErrorMessage_get_channel_id(this.ptr);
-               return ret;
-       }
-
-       public void set_channel_id(Uint8Array val) {
-               bindings.ErrorMessage_set_channel_id(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public String get_data() {
-               String ret = bindings.ErrorMessage_get_data(this.ptr);
-               return ret;
-       }
-
-       public void set_data(String val) {
-               bindings.ErrorMessage_set_data(this.ptr, val);
-       }
-
-       public static ErrorMessage constructor_new(Uint8Array channel_id_arg, String data_arg) {
-               number ret = bindings.ErrorMessage_new(InternalUtils.check_arr_len(channel_id_arg, 32), data_arg);
-               const ret_hu_conv: ErrorMessage = new ErrorMessage(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.ErrorMessage_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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;
-       }
-
-       public static Result_ErrorMessageDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.ErrorMessage_read(ser);
-               Result_ErrorMessageDecodeErrorZ ret_hu_conv = Result_ErrorMessageDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/ErroringMessageHandler.ts b/ts/structs/ErroringMessageHandler.ts
deleted file mode 100644 (file)
index b5c2f8b..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ErroringMessageHandler extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ErroringMessageHandler_free(this.ptr);
-                    }
-                }
-       public static ErroringMessageHandler constructor_new() {
-               number ret = bindings.ErroringMessageHandler_new();
-               const ret_hu_conv: ErroringMessageHandler = new ErroringMessageHandler(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public MessageSendEventsProvider as_MessageSendEventsProvider() {
-               number ret = bindings.ErroringMessageHandler_as_MessageSendEventsProvider(this.ptr);
-               MessageSendEventsProvider ret_hu_conv = new MessageSendEventsProvider(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public ChannelMessageHandler as_ChannelMessageHandler() {
-               number ret = bindings.ErroringMessageHandler_as_ChannelMessageHandler(this.ptr);
-               ChannelMessageHandler ret_hu_conv = new ChannelMessageHandler(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Event.ts b/ts/structs/Event.ts
deleted file mode 100644 (file)
index a21ecbf..0000000
+++ /dev/null
@@ -1,310 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-export default class Event extends CommonBase {
-       protected constructor(_dummy: object, ptr: number) { super(ptr); }
-       protected finalize() {
-               super.finalize();
-               if (this.ptr != 0) { bindings.Event_free(this.ptr); }
-       }
-       static constr_from_ptr(ptr: number): Event {
-               const raw_val: bindings.LDKEvent = bindings.LDKEvent_ref_from_ptr(ptr);
-               if (raw_val instanceof bindings.LDKEvent.FundingGenerationReady) {
-                       return new FundingGenerationReady(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKEvent.PaymentReceived) {
-                       return new PaymentReceived(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKEvent.PaymentSent) {
-                       return new PaymentSent(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKEvent.PaymentPathFailed) {
-                       return new PaymentPathFailed(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKEvent.PaymentFailed) {
-                       return new PaymentFailed(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKEvent.PendingHTLCsForwardable) {
-                       return new PendingHTLCsForwardable(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKEvent.SpendableOutputs) {
-                       return new SpendableOutputs(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKEvent.PaymentForwarded) {
-                       return new PaymentForwarded(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKEvent.ChannelClosed) {
-                       return new ChannelClosed(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKEvent.DiscardFunding) {
-                       return new DiscardFunding(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKEvent.PaymentPathSuccessful) {
-                       return new PaymentPathSuccessful(this.ptr, raw_val);
-               }
-               throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
-       }
-
-}
-export class FundingGenerationReady extends Event {
-       public temporary_channel_id: Uint8Array;
-       public channel_value_satoshis: number;
-       public output_script: Uint8Array;
-       public user_channel_id: number;
-       private constructor(ptr: number, obj: bindings.LDKEvent.FundingGenerationReady) {
-               super(null, ptr);
-               this.temporary_channel_id = obj.temporary_channel_id;
-               this.channel_value_satoshis = obj.channel_value_satoshis;
-               this.output_script = obj.output_script;
-               this.user_channel_id = obj.user_channel_id;
-       }
-}
-export class PaymentReceived extends Event {
-       public payment_hash: Uint8Array;
-       public amt: number;
-       public purpose: PaymentPurpose;
-       private constructor(ptr: number, obj: bindings.LDKEvent.PaymentReceived) {
-               super(null, ptr);
-               this.payment_hash = obj.payment_hash;
-               this.amt = obj.amt;
-               const purpose: number = obj.purpose;
-               PaymentPurpose purpose_hu_conv = PaymentPurpose.constr_from_ptr(purpose);
-                       purpose_hu_conv.ptrs_to.add(this);
-               this.purpose = purpose_hu_conv;
-       }
-}
-export class PaymentSent extends Event {
-       public payment_id: Uint8Array;
-       public payment_preimage: Uint8Array;
-       public payment_hash: Uint8Array;
-       public fee_paid_msat: Option_u64Z;
-       private constructor(ptr: number, obj: bindings.LDKEvent.PaymentSent) {
-               super(null, ptr);
-               this.payment_id = obj.payment_id;
-               this.payment_preimage = obj.payment_preimage;
-               this.payment_hash = obj.payment_hash;
-               const fee_paid_msat: number = obj.fee_paid_msat;
-               Option_u64Z fee_paid_msat_hu_conv = Option_u64Z.constr_from_ptr(fee_paid_msat);
-                       fee_paid_msat_hu_conv.ptrs_to.add(this);
-               this.fee_paid_msat = fee_paid_msat_hu_conv;
-       }
-}
-export class PaymentPathFailed extends Event {
-       public payment_id: Uint8Array;
-       public payment_hash: Uint8Array;
-       public rejected_by_dest: boolean;
-       public network_update: Option_NetworkUpdateZ;
-       public all_paths_failed: boolean;
-       public path: RouteHop[];
-       public short_channel_id: Option_u64Z;
-       public retry: RouteParameters;
-       private constructor(ptr: number, obj: bindings.LDKEvent.PaymentPathFailed) {
-               super(null, ptr);
-               this.payment_id = obj.payment_id;
-               this.payment_hash = obj.payment_hash;
-               this.rejected_by_dest = obj.rejected_by_dest;
-               const network_update: number = obj.network_update;
-               Option_NetworkUpdateZ network_update_hu_conv = Option_NetworkUpdateZ.constr_from_ptr(network_update);
-                       network_update_hu_conv.ptrs_to.add(this);
-               this.network_update = network_update_hu_conv;
-               this.all_paths_failed = obj.all_paths_failed;
-               const path: number[] = obj.path;
-               RouteHop[] path_conv_10_arr = new RouteHop[path.length];
-                       for (int k = 0; k < path.length; k++) {
-                               number path_conv_10 = path[k];
-                               const path_conv_10_hu_conv: RouteHop = new RouteHop(null, path_conv_10);
-                               path_conv_10_hu_conv.ptrs_to.add(this);
-                               path_conv_10_arr[k] = path_conv_10_hu_conv;
-                       }
-               this.path = path_conv_10_arr;
-               const short_channel_id: number = obj.short_channel_id;
-               Option_u64Z short_channel_id_hu_conv = Option_u64Z.constr_from_ptr(short_channel_id);
-                       short_channel_id_hu_conv.ptrs_to.add(this);
-               this.short_channel_id = short_channel_id_hu_conv;
-               const retry: number = obj.retry;
-               const retry_hu_conv: RouteParameters = new RouteParameters(null, retry);
-                       retry_hu_conv.ptrs_to.add(this);
-               this.retry = retry_hu_conv;
-       }
-}
-export class PaymentFailed extends Event {
-       public payment_id: Uint8Array;
-       public payment_hash: Uint8Array;
-       private constructor(ptr: number, obj: bindings.LDKEvent.PaymentFailed) {
-               super(null, ptr);
-               this.payment_id = obj.payment_id;
-               this.payment_hash = obj.payment_hash;
-       }
-}
-export class PendingHTLCsForwardable extends Event {
-       public time_forwardable: number;
-       private constructor(ptr: number, obj: bindings.LDKEvent.PendingHTLCsForwardable) {
-               super(null, ptr);
-               this.time_forwardable = obj.time_forwardable;
-       }
-}
-export class SpendableOutputs extends Event {
-       public outputs: SpendableOutputDescriptor[];
-       private constructor(ptr: number, obj: bindings.LDKEvent.SpendableOutputs) {
-               super(null, ptr);
-               const outputs: number[] = obj.outputs;
-               SpendableOutputDescriptor[] outputs_conv_27_arr = new SpendableOutputDescriptor[outputs.length];
-                       for (int b = 0; b < outputs.length; b++) {
-                               number outputs_conv_27 = outputs[b];
-                               SpendableOutputDescriptor outputs_conv_27_hu_conv = SpendableOutputDescriptor.constr_from_ptr(outputs_conv_27);
-                               outputs_conv_27_hu_conv.ptrs_to.add(this);
-                               outputs_conv_27_arr[b] = outputs_conv_27_hu_conv;
-                       }
-               this.outputs = outputs_conv_27_arr;
-       }
-}
-export class PaymentForwarded extends Event {
-       public fee_earned_msat: Option_u64Z;
-       public claim_from_onchain_tx: boolean;
-       private constructor(ptr: number, obj: bindings.LDKEvent.PaymentForwarded) {
-               super(null, ptr);
-               const fee_earned_msat: number = obj.fee_earned_msat;
-               Option_u64Z fee_earned_msat_hu_conv = Option_u64Z.constr_from_ptr(fee_earned_msat);
-                       fee_earned_msat_hu_conv.ptrs_to.add(this);
-               this.fee_earned_msat = fee_earned_msat_hu_conv;
-               this.claim_from_onchain_tx = obj.claim_from_onchain_tx;
-       }
-}
-export class ChannelClosed extends Event {
-       public channel_id: Uint8Array;
-       public user_channel_id: number;
-       public reason: ClosureReason;
-       private constructor(ptr: number, obj: bindings.LDKEvent.ChannelClosed) {
-               super(null, ptr);
-               this.channel_id = obj.channel_id;
-               this.user_channel_id = obj.user_channel_id;
-               const reason: number = obj.reason;
-               ClosureReason reason_hu_conv = ClosureReason.constr_from_ptr(reason);
-                       reason_hu_conv.ptrs_to.add(this);
-               this.reason = reason_hu_conv;
-       }
-}
-export class DiscardFunding extends Event {
-       public channel_id: Uint8Array;
-       public transaction: Uint8Array;
-       private constructor(ptr: number, obj: bindings.LDKEvent.DiscardFunding) {
-               super(null, ptr);
-               this.channel_id = obj.channel_id;
-               this.transaction = obj.transaction;
-       }
-}
-export class PaymentPathSuccessful extends Event {
-       public payment_id: Uint8Array;
-       public payment_hash: Uint8Array;
-       public path: RouteHop[];
-       private constructor(ptr: number, obj: bindings.LDKEvent.PaymentPathSuccessful) {
-               super(null, ptr);
-               this.payment_id = obj.payment_id;
-               this.payment_hash = obj.payment_hash;
-               const path: number[] = obj.path;
-               RouteHop[] path_conv_10_arr = new RouteHop[path.length];
-                       for (int k = 0; k < path.length; k++) {
-                               number path_conv_10 = path[k];
-                               const path_conv_10_hu_conv: RouteHop = new RouteHop(null, path_conv_10);
-                               path_conv_10_hu_conv.ptrs_to.add(this);
-                               path_conv_10_arr[k] = path_conv_10_hu_conv;
-                       }
-               this.path = path_conv_10_arr;
-       }
-}
-       public number clone_ptr() {
-               number ret = bindings.Event_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Event clone() {
-               number ret = bindings.Event_clone(this.ptr);
-               Event ret_hu_conv = Event.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static Event constructor_funding_generation_ready(Uint8Array temporary_channel_id, number channel_value_satoshis, Uint8Array output_script, number user_channel_id) {
-               number ret = bindings.Event_funding_generation_ready(InternalUtils.check_arr_len(temporary_channel_id, 32), channel_value_satoshis, output_script, user_channel_id);
-               Event ret_hu_conv = Event.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static Event constructor_payment_received(Uint8Array payment_hash, number amt, PaymentPurpose purpose) {
-               number ret = bindings.Event_payment_received(InternalUtils.check_arr_len(payment_hash, 32), amt, purpose.ptr);
-               Event ret_hu_conv = Event.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static Event constructor_payment_sent(Uint8Array payment_id, Uint8Array payment_preimage, Uint8Array payment_hash, Option_u64Z fee_paid_msat) {
-               number ret = bindings.Event_payment_sent(InternalUtils.check_arr_len(payment_id, 32), InternalUtils.check_arr_len(payment_preimage, 32), InternalUtils.check_arr_len(payment_hash, 32), fee_paid_msat.ptr);
-               Event ret_hu_conv = Event.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static Event constructor_payment_path_failed(Uint8Array payment_id, Uint8Array payment_hash, boolean rejected_by_dest, Option_NetworkUpdateZ network_update, boolean all_paths_failed, RouteHop[] path, Option_u64Z short_channel_id, RouteParameters retry) {
-               number ret = bindings.Event_payment_path_failed(InternalUtils.check_arr_len(payment_id, 32), InternalUtils.check_arr_len(payment_hash, 32), rejected_by_dest, network_update.ptr, all_paths_failed, path != null ? Arrays.stream(path).map(path_conv_10 -> path_conv_10 == null ? 0 : path_conv_10.ptr & ~1).toArray(number[]::new) : null, short_channel_id.ptr, retry == null ? 0 : retry.ptr & ~1);
-               Event ret_hu_conv = Event.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static Event constructor_payment_failed(Uint8Array payment_id, Uint8Array payment_hash) {
-               number ret = bindings.Event_payment_failed(InternalUtils.check_arr_len(payment_id, 32), InternalUtils.check_arr_len(payment_hash, 32));
-               Event ret_hu_conv = Event.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static Event constructor_pending_htlcs_forwardable(number time_forwardable) {
-               number ret = bindings.Event_pending_htlcs_forwardable(time_forwardable);
-               Event ret_hu_conv = Event.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static Event constructor_spendable_outputs(SpendableOutputDescriptor[] outputs) {
-               number ret = bindings.Event_spendable_outputs(outputs != null ? Arrays.stream(outputs).map(outputs_conv_27 -> outputs_conv_27.ptr).toArray(number[]::new) : null);
-               Event ret_hu_conv = Event.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static Event constructor_payment_forwarded(Option_u64Z fee_earned_msat, boolean claim_from_onchain_tx) {
-               number ret = bindings.Event_payment_forwarded(fee_earned_msat.ptr, claim_from_onchain_tx);
-               Event ret_hu_conv = Event.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static Event constructor_channel_closed(Uint8Array channel_id, number user_channel_id, ClosureReason reason) {
-               number ret = bindings.Event_channel_closed(InternalUtils.check_arr_len(channel_id, 32), user_channel_id, reason.ptr);
-               Event ret_hu_conv = Event.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static Event constructor_discard_funding(Uint8Array channel_id, Uint8Array transaction) {
-               number ret = bindings.Event_discard_funding(InternalUtils.check_arr_len(channel_id, 32), transaction);
-               Event ret_hu_conv = Event.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static Event constructor_payment_path_successful(Uint8Array payment_id, Uint8Array payment_hash, RouteHop[] path) {
-               number ret = bindings.Event_payment_path_successful(InternalUtils.check_arr_len(payment_id, 32), InternalUtils.check_arr_len(payment_hash, 32), path != null ? Arrays.stream(path).map(path_conv_10 -> path_conv_10 == null ? 0 : path_conv_10.ptr & ~1).toArray(number[]::new) : null);
-               Event ret_hu_conv = Event.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.Event_write(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/EventHandler.ts b/ts/structs/EventHandler.ts
deleted file mode 100644 (file)
index 9179c44..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export class EventHandler extends CommonBase {
-
-                bindings_instance?: bindings.LDKEventHandler;
-
-                constructor(ptr?: number, arg?: bindings.LDKEventHandler) {
-                    if (Number.isFinite(ptr)) {
-                                       super(ptr);
-                                       this.bindings_instance = null;
-                                   } else {
-                                       // TODO: private constructor instantiation
-                                       super(bindings.LDKEventHandler_new(arg));
-                                       this.ptrs_to.push(arg);
-                                       
-                                   }
-                }
-
-                protected finalize() {
-                    if (this.ptr != 0) {
-                        bindings.EventHandler_free(this.ptr);
-                    }
-                    super.finalize();
-                }
-
-                static new_impl(arg: EventHandlerInterface): EventHandler {
-                    const impl_holder: LDKEventHandlerHolder = new LDKEventHandlerHolder();
-                    let structImplementation = <bindings.LDKEventHandler>{
-                        // todo: in-line interface filling
-                        handle_event (event: number): void {
-                                                       Event event_hu_conv = Event.constr_from_ptr(event);
-                                                       arg.handle_event(event_hu_conv);
-                                               },
-
-                                               
-                    };
-                    impl_holder.held = new EventHandler (null, structImplementation);
-                }
-            }
-
-            export interface EventHandlerInterface {
-                handle_event(event: Event): void;
-                               
-            }
-
-            class LDKEventHandlerHolder {
-                held: EventHandler;
-            }
-       public void handle_event(Event event) {
-               bindings.EventHandler_handle_event(this.ptr, event == null ? 0 : event.ptr & ~1);
-       }
-
-}
diff --git a/ts/structs/EventsProvider.ts b/ts/structs/EventsProvider.ts
deleted file mode 100644 (file)
index a47339b..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export class EventsProvider extends CommonBase {
-
-                bindings_instance?: bindings.LDKEventsProvider;
-
-                constructor(ptr?: number, arg?: bindings.LDKEventsProvider) {
-                    if (Number.isFinite(ptr)) {
-                                       super(ptr);
-                                       this.bindings_instance = null;
-                                   } else {
-                                       // TODO: private constructor instantiation
-                                       super(bindings.LDKEventsProvider_new(arg));
-                                       this.ptrs_to.push(arg);
-                                       
-                                   }
-                }
-
-                protected finalize() {
-                    if (this.ptr != 0) {
-                        bindings.EventsProvider_free(this.ptr);
-                    }
-                    super.finalize();
-                }
-
-                static new_impl(arg: EventsProviderInterface): EventsProvider {
-                    const impl_holder: LDKEventsProviderHolder = new LDKEventsProviderHolder();
-                    let structImplementation = <bindings.LDKEventsProvider>{
-                        // todo: in-line interface filling
-                        process_pending_events (handler: number): void {
-                                                       EventHandler ret_hu_conv = new EventHandler(null, handler);
-                               ret_hu_conv.ptrs_to.add(this);
-                                                       arg.process_pending_events(ret_hu_conv);
-                                               },
-
-                                               
-                    };
-                    impl_holder.held = new EventsProvider (null, structImplementation);
-                }
-            }
-
-            export interface EventsProviderInterface {
-                process_pending_events(handler: EventHandler): void;
-                               
-            }
-
-            class LDKEventsProviderHolder {
-                held: EventsProvider;
-            }
-       public void process_pending_events(EventHandler handler) {
-               bindings.EventsProvider_process_pending_events(this.ptr, handler == null ? 0 : handler.ptr);
-               this.ptrs_to.add(handler);
-       }
-
-}
diff --git a/ts/structs/ExpiryTime.ts b/ts/structs/ExpiryTime.ts
deleted file mode 100644 (file)
index 47b3210..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ExpiryTime extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ExpiryTime_free(this.ptr);
-                    }
-                }
-       public number clone_ptr() {
-               number ret = bindings.ExpiryTime_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public ExpiryTime clone() {
-               number ret = bindings.ExpiryTime_clone(this.ptr);
-               const ret_hu_conv: ExpiryTime = new ExpiryTime(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public number hash() {
-               number ret = bindings.ExpiryTime_hash(this.ptr);
-               return ret;
-       }
-
-       public boolean eq(ExpiryTime b) {
-               boolean ret = bindings.ExpiryTime_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
-               this.ptrs_to.add(b);
-               return ret;
-       }
-
-       public static Result_ExpiryTimeCreationErrorZ constructor_from_seconds(number seconds) {
-               number ret = bindings.ExpiryTime_from_seconds(seconds);
-               Result_ExpiryTimeCreationErrorZ ret_hu_conv = Result_ExpiryTimeCreationErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_ExpiryTimeCreationErrorZ constructor_from_duration(number duration) {
-               number ret = bindings.ExpiryTime_from_duration(duration);
-               Result_ExpiryTimeCreationErrorZ ret_hu_conv = Result_ExpiryTimeCreationErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public number as_seconds() {
-               number ret = bindings.ExpiryTime_as_seconds(this.ptr);
-               return ret;
-       }
-
-       public number as_duration() {
-               number ret = bindings.ExpiryTime_as_duration(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/Fallback.ts b/ts/structs/Fallback.ts
deleted file mode 100644 (file)
index 31845b1..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-export default class Fallback extends CommonBase {
-       protected constructor(_dummy: object, ptr: number) { super(ptr); }
-       protected finalize() {
-               super.finalize();
-               if (this.ptr != 0) { bindings.Fallback_free(this.ptr); }
-       }
-       static constr_from_ptr(ptr: number): Fallback {
-               const raw_val: bindings.LDKFallback = bindings.LDKFallback_ref_from_ptr(ptr);
-               if (raw_val instanceof bindings.LDKFallback.SegWitProgram) {
-                       return new SegWitProgram(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKFallback.PubKeyHash) {
-                       return new PubKeyHash(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKFallback.ScriptHash) {
-                       return new ScriptHash(this.ptr, raw_val);
-               }
-               throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
-       }
-
-}
-export class SegWitProgram extends Fallback {
-       public version: UInt5;
-       public program: Uint8Array;
-       private constructor(ptr: number, obj: bindings.LDKFallback.SegWitProgram) {
-               super(null, ptr);
-               const version: number = obj.version;
-               UInt5 version_conv = new UInt5(version);
-               this.version = version_conv;
-               this.program = obj.program;
-       }
-}
-export class PubKeyHash extends Fallback {
-       public pub_key_hash: Uint8Array;
-       private constructor(ptr: number, obj: bindings.LDKFallback.PubKeyHash) {
-               super(null, ptr);
-               this.pub_key_hash = obj.pub_key_hash;
-       }
-}
-export class ScriptHash extends Fallback {
-       public script_hash: Uint8Array;
-       private constructor(ptr: number, obj: bindings.LDKFallback.ScriptHash) {
-               super(null, ptr);
-               this.script_hash = obj.script_hash;
-       }
-}
-       public number clone_ptr() {
-               number ret = bindings.Fallback_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Fallback clone() {
-               number ret = bindings.Fallback_clone(this.ptr);
-               Fallback ret_hu_conv = Fallback.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static Fallback constructor_seg_wit_program(UInt5 version, Uint8Array program) {
-               number ret = bindings.Fallback_seg_wit_program(version.getVal(), program);
-               Fallback ret_hu_conv = Fallback.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static Fallback constructor_pub_key_hash(Uint8Array a) {
-               number ret = bindings.Fallback_pub_key_hash(InternalUtils.check_arr_len(a, 20));
-               Fallback ret_hu_conv = Fallback.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static Fallback constructor_script_hash(Uint8Array a) {
-               number ret = bindings.Fallback_script_hash(InternalUtils.check_arr_len(a, 20));
-               Fallback ret_hu_conv = Fallback.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number hash() {
-               number ret = bindings.Fallback_hash(this.ptr);
-               return ret;
-       }
-
-       public boolean eq(Fallback b) {
-               boolean ret = bindings.Fallback_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/FeeEstimator.ts b/ts/structs/FeeEstimator.ts
deleted file mode 100644 (file)
index 674833f..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export class FeeEstimator extends CommonBase {
-
-                bindings_instance?: bindings.LDKFeeEstimator;
-
-                constructor(ptr?: number, arg?: bindings.LDKFeeEstimator) {
-                    if (Number.isFinite(ptr)) {
-                                       super(ptr);
-                                       this.bindings_instance = null;
-                                   } else {
-                                       // TODO: private constructor instantiation
-                                       super(bindings.LDKFeeEstimator_new(arg));
-                                       this.ptrs_to.push(arg);
-                                       
-                                   }
-                }
-
-                protected finalize() {
-                    if (this.ptr != 0) {
-                        bindings.FeeEstimator_free(this.ptr);
-                    }
-                    super.finalize();
-                }
-
-                static new_impl(arg: FeeEstimatorInterface): FeeEstimator {
-                    const impl_holder: LDKFeeEstimatorHolder = new LDKFeeEstimatorHolder();
-                    let structImplementation = <bindings.LDKFeeEstimator>{
-                        // todo: in-line interface filling
-                        get_est_sat_per_1000_weight (confirmation_target: ConfirmationTarget): number {
-                                                       number ret = arg.get_est_sat_per_1000_weight(confirmation_target);
-                               return ret;
-                                               },
-
-                                               
-                    };
-                    impl_holder.held = new FeeEstimator (null, structImplementation);
-                }
-            }
-
-            export interface FeeEstimatorInterface {
-                get_est_sat_per_1000_weight(confirmation_target: ConfirmationTarget): number;
-                               
-            }
-
-            class LDKFeeEstimatorHolder {
-                held: FeeEstimator;
-            }
-       public number get_est_sat_per_1000_weight(ConfirmationTarget confirmation_target) {
-               number ret = bindings.FeeEstimator_get_est_sat_per_1000_weight(this.ptr, confirmation_target);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/FilesystemPersister.ts b/ts/structs/FilesystemPersister.ts
deleted file mode 100644 (file)
index 7c0e296..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class FilesystemPersister extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.FilesystemPersister_free(this.ptr);
-                    }
-                }
-       public static FilesystemPersister constructor_new(String path_to_channel_data) {
-               number ret = bindings.FilesystemPersister_new(path_to_channel_data);
-               const ret_hu_conv: FilesystemPersister = new FilesystemPersister(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public String get_data_dir() {
-               String ret = bindings.FilesystemPersister_get_data_dir(this.ptr);
-               return ret;
-       }
-
-       public Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ read_channelmonitors(KeysInterface keys_manager) {
-               number ret = bindings.FilesystemPersister_read_channelmonitors(this.ptr, keys_manager == null ? 0 : keys_manager.ptr);
-               Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ ret_hu_conv = Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ.constr_from_ptr(ret);
-               this.ptrs_to.add(keys_manager);
-               return ret_hu_conv;
-       }
-
-       public Persist as_Persist() {
-               number ret = bindings.FilesystemPersister_as_Persist(this.ptr);
-               Persist ret_hu_conv = new Persist(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Filter.ts b/ts/structs/Filter.ts
deleted file mode 100644 (file)
index 140d950..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export class Filter extends CommonBase {
-
-                bindings_instance?: bindings.LDKFilter;
-
-                constructor(ptr?: number, arg?: bindings.LDKFilter) {
-                    if (Number.isFinite(ptr)) {
-                                       super(ptr);
-                                       this.bindings_instance = null;
-                                   } else {
-                                       // TODO: private constructor instantiation
-                                       super(bindings.LDKFilter_new(arg));
-                                       this.ptrs_to.push(arg);
-                                       
-                                   }
-                }
-
-                protected finalize() {
-                    if (this.ptr != 0) {
-                        bindings.Filter_free(this.ptr);
-                    }
-                    super.finalize();
-                }
-
-                static new_impl(arg: FilterInterface): Filter {
-                    const impl_holder: LDKFilterHolder = new LDKFilterHolder();
-                    let structImplementation = <bindings.LDKFilter>{
-                        // todo: in-line interface filling
-                        register_tx (txid: Uint8Array, script_pubkey: Uint8Array): void {
-                                                       arg.register_tx(txid, script_pubkey);
-                                               },
-
-                                               register_output (output: number): number {
-                                                       const output_hu_conv: WatchedOutput = new WatchedOutput(null, output);
-                               output_hu_conv.ptrs_to.add(this);
-                                                       Option_C2Tuple_usizeTransactionZZ ret = arg.register_output(output_hu_conv);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               
-                    };
-                    impl_holder.held = new Filter (null, structImplementation);
-                }
-            }
-
-            export interface FilterInterface {
-                register_tx(txid: Uint8Array, script_pubkey: Uint8Array): void;
-                               register_output(output: WatchedOutput): Option_C2Tuple_usizeTransactionZZ;
-                               
-            }
-
-            class LDKFilterHolder {
-                held: Filter;
-            }
-       public void register_tx(Uint8Array txid, Uint8Array script_pubkey) {
-               bindings.Filter_register_tx(this.ptr, InternalUtils.check_arr_len(txid, 32), script_pubkey);
-       }
-
-       public Option_C2Tuple_usizeTransactionZZ register_output(WatchedOutput output) {
-               number ret = bindings.Filter_register_output(this.ptr, output == null ? 0 : output.ptr & ~1);
-               Option_C2Tuple_usizeTransactionZZ ret_hu_conv = Option_C2Tuple_usizeTransactionZZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/FundingCreated.ts b/ts/structs/FundingCreated.ts
deleted file mode 100644 (file)
index 6dd5936..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class FundingCreated extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.FundingCreated_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_temporary_channel_id() {
-               Uint8Array ret = bindings.FundingCreated_get_temporary_channel_id(this.ptr);
-               return ret;
-       }
-
-       public void set_temporary_channel_id(Uint8Array val) {
-               bindings.FundingCreated_set_temporary_channel_id(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public Uint8Array get_funding_txid() {
-               Uint8Array ret = bindings.FundingCreated_get_funding_txid(this.ptr);
-               return ret;
-       }
-
-       public void set_funding_txid(Uint8Array val) {
-               bindings.FundingCreated_set_funding_txid(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public number get_funding_output_index() {
-               number ret = bindings.FundingCreated_get_funding_output_index(this.ptr);
-               return ret;
-       }
-
-       public void set_funding_output_index(number val) {
-               bindings.FundingCreated_set_funding_output_index(this.ptr, val);
-       }
-
-       public Uint8Array get_signature() {
-               Uint8Array ret = bindings.FundingCreated_get_signature(this.ptr);
-               return ret;
-       }
-
-       public void set_signature(Uint8Array val) {
-               bindings.FundingCreated_set_signature(this.ptr, InternalUtils.check_arr_len(val, 64));
-       }
-
-       public static FundingCreated constructor_new(Uint8Array temporary_channel_id_arg, Uint8Array funding_txid_arg, number funding_output_index_arg, Uint8Array signature_arg) {
-               number ret = bindings.FundingCreated_new(InternalUtils.check_arr_len(temporary_channel_id_arg, 32), InternalUtils.check_arr_len(funding_txid_arg, 32), funding_output_index_arg, InternalUtils.check_arr_len(signature_arg, 64));
-               const ret_hu_conv: FundingCreated = new FundingCreated(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.FundingCreated_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 Result_FundingCreatedDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.FundingCreated_read(ser);
-               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
deleted file mode 100644 (file)
index e620101..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class FundingLocked extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.FundingLocked_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_channel_id() {
-               Uint8Array ret = bindings.FundingLocked_get_channel_id(this.ptr);
-               return ret;
-       }
-
-       public void set_channel_id(Uint8Array val) {
-               bindings.FundingLocked_set_channel_id(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public Uint8Array get_next_per_commitment_point() {
-               Uint8Array ret = bindings.FundingLocked_get_next_per_commitment_point(this.ptr);
-               return ret;
-       }
-
-       public void set_next_per_commitment_point(Uint8Array val) {
-               bindings.FundingLocked_set_next_per_commitment_point(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public static FundingLocked constructor_new(Uint8Array channel_id_arg, Uint8Array next_per_commitment_point_arg) {
-               number ret = bindings.FundingLocked_new(InternalUtils.check_arr_len(channel_id_arg, 32), InternalUtils.check_arr_len(next_per_commitment_point_arg, 33));
-               const ret_hu_conv: FundingLocked = new FundingLocked(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.FundingLocked_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 Result_FundingLockedDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.FundingLocked_read(ser);
-               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
deleted file mode 100644 (file)
index f9380e7..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class FundingSigned extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.FundingSigned_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_channel_id() {
-               Uint8Array ret = bindings.FundingSigned_get_channel_id(this.ptr);
-               return ret;
-       }
-
-       public void set_channel_id(Uint8Array val) {
-               bindings.FundingSigned_set_channel_id(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public Uint8Array get_signature() {
-               Uint8Array ret = bindings.FundingSigned_get_signature(this.ptr);
-               return ret;
-       }
-
-       public void set_signature(Uint8Array val) {
-               bindings.FundingSigned_set_signature(this.ptr, InternalUtils.check_arr_len(val, 64));
-       }
-
-       public static FundingSigned constructor_new(Uint8Array channel_id_arg, Uint8Array signature_arg) {
-               number ret = bindings.FundingSigned_new(InternalUtils.check_arr_len(channel_id_arg, 32), InternalUtils.check_arr_len(signature_arg, 64));
-               const ret_hu_conv: FundingSigned = new FundingSigned(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.FundingSigned_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 Result_FundingSignedDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.FundingSigned_read(ser);
-               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
deleted file mode 100644 (file)
index 2d1e9ae..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class GossipTimestampFilter extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.GossipTimestampFilter_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_chain_hash() {
-               Uint8Array ret = bindings.GossipTimestampFilter_get_chain_hash(this.ptr);
-               return ret;
-       }
-
-       public void set_chain_hash(Uint8Array val) {
-               bindings.GossipTimestampFilter_set_chain_hash(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public number get_first_timestamp() {
-               number ret = bindings.GossipTimestampFilter_get_first_timestamp(this.ptr);
-               return ret;
-       }
-
-       public void set_first_timestamp(number val) {
-               bindings.GossipTimestampFilter_set_first_timestamp(this.ptr, val);
-       }
-
-       public number get_timestamp_range() {
-               number ret = bindings.GossipTimestampFilter_get_timestamp_range(this.ptr);
-               return ret;
-       }
-
-       public void set_timestamp_range(number val) {
-               bindings.GossipTimestampFilter_set_timestamp_range(this.ptr, val);
-       }
-
-       public static GossipTimestampFilter constructor_new(Uint8Array chain_hash_arg, number first_timestamp_arg, number timestamp_range_arg) {
-               number ret = bindings.GossipTimestampFilter_new(InternalUtils.check_arr_len(chain_hash_arg, 32), first_timestamp_arg, timestamp_range_arg);
-               const ret_hu_conv: GossipTimestampFilter = new GossipTimestampFilter(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.GossipTimestampFilter_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 write() {
-               Uint8Array ret = bindings.GossipTimestampFilter_write(this.ptr);
-               return ret;
-       }
-
-       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);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/HTLCOutputInCommitment.ts b/ts/structs/HTLCOutputInCommitment.ts
deleted file mode 100644 (file)
index 3b93a6a..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class HTLCOutputInCommitment extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.HTLCOutputInCommitment_free(this.ptr);
-                    }
-                }
-       public boolean get_offered() {
-               boolean ret = bindings.HTLCOutputInCommitment_get_offered(this.ptr);
-               return ret;
-       }
-
-       public void set_offered(boolean val) {
-               bindings.HTLCOutputInCommitment_set_offered(this.ptr, val);
-       }
-
-       public number get_amount_msat() {
-               number ret = bindings.HTLCOutputInCommitment_get_amount_msat(this.ptr);
-               return ret;
-       }
-
-       public void set_amount_msat(number val) {
-               bindings.HTLCOutputInCommitment_set_amount_msat(this.ptr, val);
-       }
-
-       public number get_cltv_expiry() {
-               number ret = bindings.HTLCOutputInCommitment_get_cltv_expiry(this.ptr);
-               return ret;
-       }
-
-       public void set_cltv_expiry(number val) {
-               bindings.HTLCOutputInCommitment_set_cltv_expiry(this.ptr, val);
-       }
-
-       public Uint8Array get_payment_hash() {
-               Uint8Array ret = bindings.HTLCOutputInCommitment_get_payment_hash(this.ptr);
-               return ret;
-       }
-
-       public void set_payment_hash(Uint8Array val) {
-               bindings.HTLCOutputInCommitment_set_payment_hash(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public Option_u32Z get_transaction_output_index() {
-               number ret = bindings.HTLCOutputInCommitment_get_transaction_output_index(this.ptr);
-               Option_u32Z ret_hu_conv = Option_u32Z.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_transaction_output_index(Option_u32Z val) {
-               bindings.HTLCOutputInCommitment_set_transaction_output_index(this.ptr, val.ptr);
-       }
-
-       public static HTLCOutputInCommitment constructor_new(boolean offered_arg, number amount_msat_arg, number cltv_expiry_arg, Uint8Array payment_hash_arg, Option_u32Z transaction_output_index_arg) {
-               number ret = bindings.HTLCOutputInCommitment_new(offered_arg, amount_msat_arg, cltv_expiry_arg, InternalUtils.check_arr_len(payment_hash_arg, 32), transaction_output_index_arg.ptr);
-               const ret_hu_conv: HTLCOutputInCommitment = new HTLCOutputInCommitment(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.HTLCOutputInCommitment_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 Result_HTLCOutputInCommitmentDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.HTLCOutputInCommitment_read(ser);
-               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
deleted file mode 100644 (file)
index 23f9d9a..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class HTLCUpdate extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.HTLCUpdate_free(this.ptr);
-                    }
-                }
-       public number clone_ptr() {
-               number ret = bindings.HTLCUpdate_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public HTLCUpdate clone() {
-               number ret = bindings.HTLCUpdate_clone(this.ptr);
-               const ret_hu_conv: HTLCUpdate = new HTLCUpdate(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.HTLCUpdate_write(this.ptr);
-               return ret;
-       }
-
-       public static Result_HTLCUpdateDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.HTLCUpdate_read(ser);
-               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
deleted file mode 100644 (file)
index 1ece40c..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class HolderCommitmentTransaction extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.HolderCommitmentTransaction_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_counterparty_sig() {
-               Uint8Array ret = bindings.HolderCommitmentTransaction_get_counterparty_sig(this.ptr);
-               return ret;
-       }
-
-       public void set_counterparty_sig(Uint8Array val) {
-               bindings.HolderCommitmentTransaction_set_counterparty_sig(this.ptr, InternalUtils.check_arr_len(val, 64));
-       }
-
-       public void set_counterparty_htlc_sigs(Uint8Array[] val) {
-               bindings.HolderCommitmentTransaction_set_counterparty_htlc_sigs(this.ptr, val != null ? Arrays.stream(val).map(val_conv_12 -> InternalUtils.check_arr_len(val_conv_12, 64)).toArray(Uint8Array[]::new) : null);
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.HolderCommitmentTransaction_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 Result_HolderCommitmentTransactionDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.HolderCommitmentTransaction_read(ser);
-               Result_HolderCommitmentTransactionDecodeErrorZ ret_hu_conv = Result_HolderCommitmentTransactionDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static HolderCommitmentTransaction constructor_new(CommitmentTransaction commitment_tx, Uint8Array counterparty_sig, Uint8Array[] counterparty_htlc_sigs, Uint8Array holder_funding_key, Uint8Array counterparty_funding_key) {
-               number ret = bindings.HolderCommitmentTransaction_new(commitment_tx == null ? 0 : commitment_tx.ptr & ~1, InternalUtils.check_arr_len(counterparty_sig, 64), counterparty_htlc_sigs != null ? Arrays.stream(counterparty_htlc_sigs).map(counterparty_htlc_sigs_conv_12 -> InternalUtils.check_arr_len(counterparty_htlc_sigs_conv_12, 64)).toArray(Uint8Array[]::new) : null, InternalUtils.check_arr_len(holder_funding_key, 33), InternalUtils.check_arr_len(counterparty_funding_key, 33));
-               const ret_hu_conv: HolderCommitmentTransaction = new HolderCommitmentTransaction(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/IgnoringMessageHandler.ts b/ts/structs/IgnoringMessageHandler.ts
deleted file mode 100644 (file)
index 6505341..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class IgnoringMessageHandler extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.IgnoringMessageHandler_free(this.ptr);
-                    }
-                }
-       public static IgnoringMessageHandler constructor_new() {
-               number ret = bindings.IgnoringMessageHandler_new();
-               const ret_hu_conv: IgnoringMessageHandler = new IgnoringMessageHandler(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public MessageSendEventsProvider as_MessageSendEventsProvider() {
-               number ret = bindings.IgnoringMessageHandler_as_MessageSendEventsProvider(this.ptr);
-               MessageSendEventsProvider ret_hu_conv = new MessageSendEventsProvider(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public RoutingMessageHandler as_RoutingMessageHandler() {
-               number ret = bindings.IgnoringMessageHandler_as_RoutingMessageHandler(this.ptr);
-               RoutingMessageHandler ret_hu_conv = new RoutingMessageHandler(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public CustomMessageReader as_CustomMessageReader() {
-               number ret = bindings.IgnoringMessageHandler_as_CustomMessageReader(this.ptr);
-               CustomMessageReader ret_hu_conv = new CustomMessageReader(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public CustomMessageHandler as_CustomMessageHandler() {
-               number ret = bindings.IgnoringMessageHandler_as_CustomMessageHandler(this.ptr);
-               CustomMessageHandler ret_hu_conv = new CustomMessageHandler(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/InMemorySigner.ts b/ts/structs/InMemorySigner.ts
deleted file mode 100644 (file)
index ff323bb..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class InMemorySigner extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.InMemorySigner_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_funding_key() {
-               Uint8Array ret = bindings.InMemorySigner_get_funding_key(this.ptr);
-               return ret;
-       }
-
-       public void set_funding_key(Uint8Array val) {
-               bindings.InMemorySigner_set_funding_key(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public Uint8Array get_revocation_base_key() {
-               Uint8Array ret = bindings.InMemorySigner_get_revocation_base_key(this.ptr);
-               return ret;
-       }
-
-       public void set_revocation_base_key(Uint8Array val) {
-               bindings.InMemorySigner_set_revocation_base_key(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public Uint8Array get_payment_key() {
-               Uint8Array ret = bindings.InMemorySigner_get_payment_key(this.ptr);
-               return ret;
-       }
-
-       public void set_payment_key(Uint8Array val) {
-               bindings.InMemorySigner_set_payment_key(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public Uint8Array get_delayed_payment_base_key() {
-               Uint8Array ret = bindings.InMemorySigner_get_delayed_payment_base_key(this.ptr);
-               return ret;
-       }
-
-       public void set_delayed_payment_base_key(Uint8Array val) {
-               bindings.InMemorySigner_set_delayed_payment_base_key(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public Uint8Array get_htlc_base_key() {
-               Uint8Array ret = bindings.InMemorySigner_get_htlc_base_key(this.ptr);
-               return ret;
-       }
-
-       public void set_htlc_base_key(Uint8Array val) {
-               bindings.InMemorySigner_set_htlc_base_key(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public Uint8Array get_commitment_seed() {
-               Uint8Array ret = bindings.InMemorySigner_get_commitment_seed(this.ptr);
-               return ret;
-       }
-
-       public void set_commitment_seed(Uint8Array val) {
-               bindings.InMemorySigner_set_commitment_seed(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.InMemorySigner_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public InMemorySigner clone() {
-               number ret = bindings.InMemorySigner_clone(this.ptr);
-               const ret_hu_conv: InMemorySigner = new InMemorySigner(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static InMemorySigner 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, Uint8Array channel_keys_id) {
-               number ret = bindings.InMemorySigner_new(InternalUtils.check_arr_len(funding_key, 32), InternalUtils.check_arr_len(revocation_base_key, 32), InternalUtils.check_arr_len(payment_key, 32), InternalUtils.check_arr_len(delayed_payment_base_key, 32), InternalUtils.check_arr_len(htlc_base_key, 32), InternalUtils.check_arr_len(commitment_seed, 32), channel_value_satoshis, InternalUtils.check_arr_len(channel_keys_id, 32));
-               const ret_hu_conv: InMemorySigner = new InMemorySigner(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public ChannelPublicKeys counterparty_pubkeys() {
-               number ret = bindings.InMemorySigner_counterparty_pubkeys(this.ptr);
-               const ret_hu_conv: ChannelPublicKeys = new ChannelPublicKeys(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public number counterparty_selected_contest_delay() {
-               number ret = bindings.InMemorySigner_counterparty_selected_contest_delay(this.ptr);
-               return ret;
-       }
-
-       public number holder_selected_contest_delay() {
-               number ret = bindings.InMemorySigner_holder_selected_contest_delay(this.ptr);
-               return ret;
-       }
-
-       public boolean is_outbound() {
-               boolean ret = bindings.InMemorySigner_is_outbound(this.ptr);
-               return ret;
-       }
-
-       public OutPoint funding_outpoint() {
-               number ret = bindings.InMemorySigner_funding_outpoint(this.ptr);
-               const ret_hu_conv: OutPoint = new OutPoint(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public ChannelTransactionParameters get_channel_parameters() {
-               number ret = bindings.InMemorySigner_get_channel_parameters(this.ptr);
-               const ret_hu_conv: ChannelTransactionParameters = new ChannelTransactionParameters(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public boolean opt_anchors() {
-               boolean ret = bindings.InMemorySigner_opt_anchors(this.ptr);
-               return ret;
-       }
-
-       public Result_CVec_CVec_u8ZZNoneZ sign_counterparty_payment_input(Uint8Array spend_tx, number input_idx, StaticPaymentOutputDescriptor descriptor) {
-               number ret = bindings.InMemorySigner_sign_counterparty_payment_input(this.ptr, spend_tx, input_idx, descriptor == null ? 0 : descriptor.ptr & ~1);
-               Result_CVec_CVec_u8ZZNoneZ ret_hu_conv = Result_CVec_CVec_u8ZZNoneZ.constr_from_ptr(ret);
-               this.ptrs_to.add(descriptor);
-               return ret_hu_conv;
-       }
-
-       public Result_CVec_CVec_u8ZZNoneZ sign_dynamic_p2wsh_input(Uint8Array spend_tx, number input_idx, DelayedPaymentOutputDescriptor descriptor) {
-               number ret = bindings.InMemorySigner_sign_dynamic_p2wsh_input(this.ptr, spend_tx, input_idx, descriptor == null ? 0 : descriptor.ptr & ~1);
-               Result_CVec_CVec_u8ZZNoneZ ret_hu_conv = Result_CVec_CVec_u8ZZNoneZ.constr_from_ptr(ret);
-               this.ptrs_to.add(descriptor);
-               return ret_hu_conv;
-       }
-
-       public BaseSign as_BaseSign() {
-               number ret = bindings.InMemorySigner_as_BaseSign(this.ptr);
-               BaseSign ret_hu_conv = new BaseSign(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Sign as_Sign() {
-               number ret = bindings.InMemorySigner_as_Sign(this.ptr);
-               Sign ret_hu_conv = new Sign(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.InMemorySigner_write(this.ptr);
-               return ret;
-       }
-
-       public static Result_InMemorySignerDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.InMemorySigner_read(ser);
-               Result_InMemorySignerDecodeErrorZ ret_hu_conv = Result_InMemorySignerDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Init.ts b/ts/structs/Init.ts
deleted file mode 100644 (file)
index 94cd5d8..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class Init extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.Init_free(this.ptr);
-                    }
-                }
-       public InitFeatures get_features() {
-               number ret = bindings.Init_get_features(this.ptr);
-               const ret_hu_conv: InitFeatures = new InitFeatures(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_features(InitFeatures val) {
-               bindings.Init_set_features(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public static Init constructor_new(InitFeatures features_arg) {
-               number ret = bindings.Init_new(features_arg == null ? 0 : features_arg.ptr & ~1);
-               const ret_hu_conv: Init = new Init(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.Init_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Init clone() {
-               number ret = bindings.Init_clone(this.ptr);
-               const ret_hu_conv: Init = new Init(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.Init_write(this.ptr);
-               return ret;
-       }
-
-       public static Result_InitDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.Init_read(ser);
-               Result_InitDecodeErrorZ ret_hu_conv = Result_InitDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/InitFeatures.ts b/ts/structs/InitFeatures.ts
deleted file mode 100644 (file)
index ca4e1c3..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class InitFeatures extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.InitFeatures_free(this.ptr);
-                    }
-                }
-       public boolean eq(InitFeatures b) {
-               boolean ret = bindings.InitFeatures_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
-               this.ptrs_to.add(b);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.InitFeatures_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 boolean requires_unknown_bits() {
-               boolean ret = bindings.InitFeatures_requires_unknown_bits(this.ptr);
-               return ret;
-       }
-
-       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/InvalidShutdownScript.ts b/ts/structs/InvalidShutdownScript.ts
deleted file mode 100644 (file)
index 0f5a990..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class InvalidShutdownScript extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.InvalidShutdownScript_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_script() {
-               Uint8Array ret = bindings.InvalidShutdownScript_get_script(this.ptr);
-               return ret;
-       }
-
-       public void set_script(Uint8Array val) {
-               bindings.InvalidShutdownScript_set_script(this.ptr, val);
-       }
-
-       public static InvalidShutdownScript constructor_new(Uint8Array script_arg) {
-               number ret = bindings.InvalidShutdownScript_new(script_arg);
-               const ret_hu_conv: InvalidShutdownScript = new InvalidShutdownScript(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.InvalidShutdownScript_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public InvalidShutdownScript clone() {
-               number ret = bindings.InvalidShutdownScript_clone(this.ptr);
-               const ret_hu_conv: InvalidShutdownScript = new InvalidShutdownScript(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Invoice.ts b/ts/structs/Invoice.ts
deleted file mode 100644 (file)
index aa559f5..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class Invoice extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.Invoice_free(this.ptr);
-                    }
-                }
-       public boolean eq(Invoice b) {
-               boolean ret = bindings.Invoice_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
-               this.ptrs_to.add(b);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.Invoice_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Invoice clone() {
-               number ret = bindings.Invoice_clone(this.ptr);
-               const ret_hu_conv: Invoice = new Invoice(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public SignedRawInvoice into_signed_raw() {
-               number ret = bindings.Invoice_into_signed_raw(this.ptr);
-               const ret_hu_conv: SignedRawInvoice = new SignedRawInvoice(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Result_NoneSemanticErrorZ check_signature() {
-               number ret = bindings.Invoice_check_signature(this.ptr);
-               Result_NoneSemanticErrorZ ret_hu_conv = Result_NoneSemanticErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_InvoiceSemanticErrorZ constructor_from_signed(SignedRawInvoice signed_invoice) {
-               number ret = bindings.Invoice_from_signed(signed_invoice == null ? 0 : signed_invoice.ptr & ~1);
-               Result_InvoiceSemanticErrorZ ret_hu_conv = Result_InvoiceSemanticErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public number timestamp() {
-               number ret = bindings.Invoice_timestamp(this.ptr);
-               return ret;
-       }
-
-       public Uint8Array payment_hash() {
-               Uint8Array ret = bindings.Invoice_payment_hash(this.ptr);
-               return ret;
-       }
-
-       public Uint8Array payee_pub_key() {
-               Uint8Array ret = bindings.Invoice_payee_pub_key(this.ptr);
-               return ret;
-       }
-
-       public Uint8Array payment_secret() {
-               Uint8Array ret = bindings.Invoice_payment_secret(this.ptr);
-               return ret;
-       }
-
-       public InvoiceFeatures features() {
-               number ret = bindings.Invoice_features(this.ptr);
-               const ret_hu_conv: InvoiceFeatures = new InvoiceFeatures(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array recover_payee_pub_key() {
-               Uint8Array ret = bindings.Invoice_recover_payee_pub_key(this.ptr);
-               return ret;
-       }
-
-       public number expiry_time() {
-               number ret = bindings.Invoice_expiry_time(this.ptr);
-               return ret;
-       }
-
-       public boolean is_expired() {
-               boolean ret = bindings.Invoice_is_expired(this.ptr);
-               return ret;
-       }
-
-       public number min_final_cltv_expiry() {
-               number ret = bindings.Invoice_min_final_cltv_expiry(this.ptr);
-               return ret;
-       }
-
-       public PrivateRoute[] private_routes() {
-               number[] ret = bindings.Invoice_private_routes(this.ptr);
-               PrivateRoute[] ret_conv_14_arr = new PrivateRoute[ret.length];
-               for (int o = 0; o < ret.length; o++) {
-                       number ret_conv_14 = ret[o];
-                       const ret_conv_14_hu_conv: PrivateRoute = new PrivateRoute(null, ret_conv_14);
-                       ret_conv_14_hu_conv.ptrs_to.add(this);
-                       ret_conv_14_arr[o] = ret_conv_14_hu_conv;
-               }
-               return ret_conv_14_arr;
-       }
-
-       public RouteHint[] route_hints() {
-               number[] ret = bindings.Invoice_route_hints(this.ptr);
-               RouteHint[] ret_conv_11_arr = new RouteHint[ret.length];
-               for (int l = 0; l < ret.length; l++) {
-                       number ret_conv_11 = ret[l];
-                       const ret_conv_11_hu_conv: RouteHint = new RouteHint(null, ret_conv_11);
-                       ret_conv_11_hu_conv.ptrs_to.add(this);
-                       ret_conv_11_arr[l] = ret_conv_11_hu_conv;
-               }
-               return ret_conv_11_arr;
-       }
-
-       public Currency currency() {
-               Currency ret = bindings.Invoice_currency(this.ptr);
-               return ret;
-       }
-
-       public Option_u64Z amount_milli_satoshis() {
-               number ret = bindings.Invoice_amount_milli_satoshis(this.ptr);
-               Option_u64Z ret_hu_conv = Option_u64Z.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static Result_InvoiceNoneZ constructor_from_str(String s) {
-               number ret = bindings.Invoice_from_str(s);
-               Result_InvoiceNoneZ ret_hu_conv = Result_InvoiceNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public String to_str() {
-               String ret = bindings.Invoice_to_str(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/InvoiceFeatures.ts b/ts/structs/InvoiceFeatures.ts
deleted file mode 100644 (file)
index a184d7b..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class InvoiceFeatures extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.InvoiceFeatures_free(this.ptr);
-                    }
-                }
-       public boolean eq(InvoiceFeatures b) {
-               boolean ret = bindings.InvoiceFeatures_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
-               this.ptrs_to.add(b);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.InvoiceFeatures_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public InvoiceFeatures clone() {
-               number ret = bindings.InvoiceFeatures_clone(this.ptr);
-               const ret_hu_conv: InvoiceFeatures = new InvoiceFeatures(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static InvoiceFeatures constructor_empty() {
-               number ret = bindings.InvoiceFeatures_empty();
-               const ret_hu_conv: InvoiceFeatures = new InvoiceFeatures(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static InvoiceFeatures constructor_known() {
-               number ret = bindings.InvoiceFeatures_known();
-               const ret_hu_conv: InvoiceFeatures = new InvoiceFeatures(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public boolean requires_unknown_bits() {
-               boolean ret = bindings.InvoiceFeatures_requires_unknown_bits(this.ptr);
-               return ret;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.InvoiceFeatures_write(this.ptr);
-               return ret;
-       }
-
-       public static Result_InvoiceFeaturesDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.InvoiceFeatures_read(ser);
-               Result_InvoiceFeaturesDecodeErrorZ ret_hu_conv = Result_InvoiceFeaturesDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/InvoicePayer.ts b/ts/structs/InvoicePayer.ts
deleted file mode 100644 (file)
index a656a81..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class InvoicePayer extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.InvoicePayer_free(this.ptr);
-                    }
-                }
-       public static InvoicePayer constructor_new(Payer payer, Router router, MultiThreadedLockableScore scorer, Logger logger, EventHandler event_handler, RetryAttempts retry_attempts) {
-               number ret = bindings.InvoicePayer_new(payer == null ? 0 : payer.ptr, router == null ? 0 : router.ptr, scorer == null ? 0 : scorer.ptr & ~1, logger == null ? 0 : logger.ptr, event_handler == null ? 0 : event_handler.ptr, retry_attempts == null ? 0 : retry_attempts.ptr & ~1);
-               const ret_hu_conv: InvoicePayer = new InvoicePayer(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               ret_hu_conv.ptrs_to.add(payer);
-               ret_hu_conv.ptrs_to.add(router);
-               ret_hu_conv.ptrs_to.add(scorer);
-               ret_hu_conv.ptrs_to.add(logger);
-               ret_hu_conv.ptrs_to.add(event_handler);
-               return ret_hu_conv;
-       }
-
-       public Result_PaymentIdPaymentErrorZ pay_invoice(Invoice invoice) {
-               number ret = bindings.InvoicePayer_pay_invoice(this.ptr, invoice == null ? 0 : invoice.ptr & ~1);
-               Result_PaymentIdPaymentErrorZ ret_hu_conv = Result_PaymentIdPaymentErrorZ.constr_from_ptr(ret);
-               this.ptrs_to.add(invoice);
-               return ret_hu_conv;
-       }
-
-       public Result_PaymentIdPaymentErrorZ pay_zero_value_invoice(Invoice invoice, number amount_msats) {
-               number ret = bindings.InvoicePayer_pay_zero_value_invoice(this.ptr, invoice == null ? 0 : invoice.ptr & ~1, amount_msats);
-               Result_PaymentIdPaymentErrorZ ret_hu_conv = Result_PaymentIdPaymentErrorZ.constr_from_ptr(ret);
-               this.ptrs_to.add(invoice);
-               return ret_hu_conv;
-       }
-
-       public Result_PaymentIdPaymentErrorZ pay_pubkey(Uint8Array pubkey, Uint8Array payment_preimage, number amount_msats, number final_cltv_expiry_delta) {
-               number ret = bindings.InvoicePayer_pay_pubkey(this.ptr, InternalUtils.check_arr_len(pubkey, 33), InternalUtils.check_arr_len(payment_preimage, 32), amount_msats, final_cltv_expiry_delta);
-               Result_PaymentIdPaymentErrorZ ret_hu_conv = Result_PaymentIdPaymentErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public void remove_cached_payment(Uint8Array payment_hash) {
-               bindings.InvoicePayer_remove_cached_payment(this.ptr, InternalUtils.check_arr_len(payment_hash, 32));
-       }
-
-       public EventHandler as_EventHandler() {
-               number ret = bindings.InvoicePayer_as_EventHandler(this.ptr);
-               EventHandler ret_hu_conv = new EventHandler(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/InvoiceSignature.ts b/ts/structs/InvoiceSignature.ts
deleted file mode 100644 (file)
index 55643a4..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class InvoiceSignature extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.InvoiceSignature_free(this.ptr);
-                    }
-                }
-       public number clone_ptr() {
-               number ret = bindings.InvoiceSignature_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public InvoiceSignature clone() {
-               number ret = bindings.InvoiceSignature_clone(this.ptr);
-               const ret_hu_conv: InvoiceSignature = new InvoiceSignature(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public boolean eq(InvoiceSignature b) {
-               boolean ret = bindings.InvoiceSignature_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
-               this.ptrs_to.add(b);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/KeysInterface.ts b/ts/structs/KeysInterface.ts
deleted file mode 100644 (file)
index bfc1777..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export class KeysInterface extends CommonBase {
-
-                bindings_instance?: bindings.LDKKeysInterface;
-
-                constructor(ptr?: number, arg?: bindings.LDKKeysInterface) {
-                    if (Number.isFinite(ptr)) {
-                                       super(ptr);
-                                       this.bindings_instance = null;
-                                   } else {
-                                       // TODO: private constructor instantiation
-                                       super(bindings.LDKKeysInterface_new(arg));
-                                       this.ptrs_to.push(arg);
-                                       
-                                   }
-                }
-
-                protected finalize() {
-                    if (this.ptr != 0) {
-                        bindings.KeysInterface_free(this.ptr);
-                    }
-                    super.finalize();
-                }
-
-                static new_impl(arg: KeysInterfaceInterface): KeysInterface {
-                    const impl_holder: LDKKeysInterfaceHolder = new LDKKeysInterfaceHolder();
-                    let structImplementation = <bindings.LDKKeysInterface>{
-                        // todo: in-line interface filling
-                        get_node_secret (): Uint8Array {
-                                                       Uint8Array ret = arg.get_node_secret();
-                               result: Uint8Array = InternalUtils.check_arr_len(ret, 32);
-                               return result;
-                                               },
-
-                                               get_destination_script (): Uint8Array {
-                                                       Uint8Array ret = arg.get_destination_script();
-                               return ret;
-                                               },
-
-                                               get_shutdown_scriptpubkey (): number {
-                                                       ShutdownScript ret = arg.get_shutdown_scriptpubkey();
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               get_channel_signer (inbound: boolean, channel_value_satoshis: number): number {
-                                                       Sign ret = arg.get_channel_signer(inbound, channel_value_satoshis);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               impl_holder.held.ptrs_to.add(ret);
-                               return result;
-                                               },
-
-                                               get_secure_random_bytes (): Uint8Array {
-                                                       Uint8Array ret = arg.get_secure_random_bytes();
-                               result: Uint8Array = InternalUtils.check_arr_len(ret, 32);
-                               return result;
-                                               },
-
-                                               read_chan_signer (reader: Uint8Array): number {
-                                                       Result_SignDecodeErrorZ ret = arg.read_chan_signer(reader);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               sign_invoice (invoice_preimage: Uint8Array): number {
-                                                       Result_RecoverableSignatureNoneZ ret = arg.sign_invoice(invoice_preimage);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               get_inbound_payment_key_material (): Uint8Array {
-                                                       Uint8Array ret = arg.get_inbound_payment_key_material();
-                               result: Uint8Array = InternalUtils.check_arr_len(ret, 32);
-                               return result;
-                                               },
-
-                                               
-                    };
-                    impl_holder.held = new KeysInterface (null, structImplementation);
-                }
-            }
-
-            export interface KeysInterfaceInterface {
-                get_node_secret(): Uint8Array;
-                               get_destination_script(): Uint8Array;
-                               get_shutdown_scriptpubkey(): ShutdownScript;
-                               get_channel_signer(inbound: boolean, channel_value_satoshis: number): Sign;
-                               get_secure_random_bytes(): Uint8Array;
-                               read_chan_signer(reader: Uint8Array): Result_SignDecodeErrorZ;
-                               sign_invoice(invoice_preimage: Uint8Array): Result_RecoverableSignatureNoneZ;
-                               get_inbound_payment_key_material(): Uint8Array;
-                               
-            }
-
-            class LDKKeysInterfaceHolder {
-                held: KeysInterface;
-            }
-       public Uint8Array get_node_secret() {
-               Uint8Array ret = bindings.KeysInterface_get_node_secret(this.ptr);
-               return ret;
-       }
-
-       public Uint8Array get_destination_script() {
-               Uint8Array ret = bindings.KeysInterface_get_destination_script(this.ptr);
-               return ret;
-       }
-
-       public ShutdownScript get_shutdown_scriptpubkey() {
-               number ret = bindings.KeysInterface_get_shutdown_scriptpubkey(this.ptr);
-               const ret_hu_conv: ShutdownScript = new ShutdownScript(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Sign get_channel_signer(boolean inbound, number channel_value_satoshis) {
-               number ret = bindings.KeysInterface_get_channel_signer(this.ptr, inbound, channel_value_satoshis);
-               Sign ret_hu_conv = new Sign(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array get_secure_random_bytes() {
-               Uint8Array ret = bindings.KeysInterface_get_secure_random_bytes(this.ptr);
-               return ret;
-       }
-
-       public Result_SignDecodeErrorZ read_chan_signer(Uint8Array reader) {
-               number ret = bindings.KeysInterface_read_chan_signer(this.ptr, reader);
-               Result_SignDecodeErrorZ ret_hu_conv = Result_SignDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public Result_RecoverableSignatureNoneZ sign_invoice(Uint8Array invoice_preimage) {
-               number ret = bindings.KeysInterface_sign_invoice(this.ptr, invoice_preimage);
-               Result_RecoverableSignatureNoneZ ret_hu_conv = Result_RecoverableSignatureNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array get_inbound_payment_key_material() {
-               Uint8Array ret = bindings.KeysInterface_get_inbound_payment_key_material(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/KeysManager.ts b/ts/structs/KeysManager.ts
deleted file mode 100644 (file)
index 75ab015..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class KeysManager extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.KeysManager_free(this.ptr);
-                    }
-                }
-       public static KeysManager constructor_new(Uint8Array seed, number starting_time_secs, number starting_time_nanos) {
-               number ret = bindings.KeysManager_new(InternalUtils.check_arr_len(seed, 32), starting_time_secs, starting_time_nanos);
-               const ret_hu_conv: KeysManager = new KeysManager(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public InMemorySigner derive_channel_keys(number channel_value_satoshis, Uint8Array params) {
-               number ret = bindings.KeysManager_derive_channel_keys(this.ptr, channel_value_satoshis, InternalUtils.check_arr_len(params, 32));
-               const ret_hu_conv: InMemorySigner = new InMemorySigner(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Result_TransactionNoneZ spend_spendable_outputs(SpendableOutputDescriptor[] descriptors, TxOut[] outputs, Uint8Array change_destination_script, number feerate_sat_per_1000_weight) {
-               number ret = bindings.KeysManager_spend_spendable_outputs(this.ptr, descriptors != null ? Arrays.stream(descriptors).map(descriptors_conv_27 -> descriptors_conv_27.ptr).toArray(number[]::new) : null, outputs != null ? Arrays.stream(outputs).map(outputs_conv_7 -> outputs_conv_7.ptr).toArray(number[]::new) : null, change_destination_script, feerate_sat_per_1000_weight);
-               Result_TransactionNoneZ ret_hu_conv = Result_TransactionNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public KeysInterface as_KeysInterface() {
-               number ret = bindings.KeysManager_as_KeysInterface(this.ptr);
-               KeysInterface ret_hu_conv = new KeysInterface(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/LightningError.ts b/ts/structs/LightningError.ts
deleted file mode 100644 (file)
index 3cdedcc..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class LightningError extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.LightningError_free(this.ptr);
-                    }
-                }
-       public String get_err() {
-               String ret = bindings.LightningError_get_err(this.ptr);
-               return ret;
-       }
-
-       public void set_err(String val) {
-               bindings.LightningError_set_err(this.ptr, val);
-       }
-
-       public ErrorAction get_action() {
-               number ret = bindings.LightningError_get_action(this.ptr);
-               ErrorAction ret_hu_conv = ErrorAction.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_action(ErrorAction val) {
-               bindings.LightningError_set_action(this.ptr, val.ptr);
-       }
-
-       public static LightningError constructor_new(String err_arg, ErrorAction action_arg) {
-               number ret = bindings.LightningError_new(err_arg, action_arg.ptr);
-               const ret_hu_conv: LightningError = new LightningError(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.LightningError_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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/Listen.ts b/ts/structs/Listen.ts
deleted file mode 100644 (file)
index 15154c4..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export class Listen extends CommonBase {
-
-                bindings_instance?: bindings.LDKListen;
-
-                constructor(ptr?: number, arg?: bindings.LDKListen) {
-                    if (Number.isFinite(ptr)) {
-                                       super(ptr);
-                                       this.bindings_instance = null;
-                                   } else {
-                                       // TODO: private constructor instantiation
-                                       super(bindings.LDKListen_new(arg));
-                                       this.ptrs_to.push(arg);
-                                       
-                                   }
-                }
-
-                protected finalize() {
-                    if (this.ptr != 0) {
-                        bindings.Listen_free(this.ptr);
-                    }
-                    super.finalize();
-                }
-
-                static new_impl(arg: ListenInterface): Listen {
-                    const impl_holder: LDKListenHolder = new LDKListenHolder();
-                    let structImplementation = <bindings.LDKListen>{
-                        // todo: in-line interface filling
-                        block_connected (block: Uint8Array, height: number): void {
-                                                       arg.block_connected(block, height);
-                                               },
-
-                                               block_disconnected (header: Uint8Array, height: number): void {
-                                                       arg.block_disconnected(header, height);
-                                               },
-
-                                               
-                    };
-                    impl_holder.held = new Listen (null, structImplementation);
-                }
-            }
-
-            export interface ListenInterface {
-                block_connected(block: Uint8Array, height: number): void;
-                               block_disconnected(header: Uint8Array, height: number): void;
-                               
-            }
-
-            class LDKListenHolder {
-                held: Listen;
-            }
-       public void block_connected(Uint8Array block, number height) {
-               bindings.Listen_block_connected(this.ptr, block, height);
-       }
-
-       public void block_disconnected(Uint8Array header, number height) {
-               bindings.Listen_block_disconnected(this.ptr, InternalUtils.check_arr_len(header, 80), height);
-       }
-
-}
diff --git a/ts/structs/LockableScore.ts b/ts/structs/LockableScore.ts
deleted file mode 100644 (file)
index bc44054..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export class LockableScore extends CommonBase {
-
-                bindings_instance?: bindings.LDKLockableScore;
-
-                constructor(ptr?: number, arg?: bindings.LDKLockableScore) {
-                    if (Number.isFinite(ptr)) {
-                                       super(ptr);
-                                       this.bindings_instance = null;
-                                   } else {
-                                       // TODO: private constructor instantiation
-                                       super(bindings.LDKLockableScore_new(arg));
-                                       this.ptrs_to.push(arg);
-                                       
-                                   }
-                }
-
-                protected finalize() {
-                    if (this.ptr != 0) {
-                        bindings.LockableScore_free(this.ptr);
-                    }
-                    super.finalize();
-                }
-
-                static new_impl(arg: LockableScoreInterface): LockableScore {
-                    const impl_holder: LDKLockableScoreHolder = new LDKLockableScoreHolder();
-                    let structImplementation = <bindings.LDKLockableScore>{
-                        // todo: in-line interface filling
-                        lock (): number {
-                                                       Score ret = arg.lock();
-                               result: number = ret == null ? 0 : ret.ptr;
-                               impl_holder.held.ptrs_to.add(ret);
-                               return result;
-                                               },
-
-                                               
-                    };
-                    impl_holder.held = new LockableScore (null, structImplementation);
-                }
-            }
-
-            export interface LockableScoreInterface {
-                lock(): Score;
-                               
-            }
-
-            class LDKLockableScoreHolder {
-                held: LockableScore;
-            }
-       public Score lock() {
-               number ret = bindings.LockableScore_lock(this.ptr);
-               Score ret_hu_conv = new Score(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/LockedChannelMonitor.ts b/ts/structs/LockedChannelMonitor.ts
deleted file mode 100644 (file)
index e7f467e..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class LockedChannelMonitor extends CommonBase implements AutoCloseable {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                public close() {
-
-                    if (this.ptr != 0) {
-                        bindings.LockedChannelMonitor_free(this.ptr);
-                    }
-                }
-}
diff --git a/ts/structs/Logger.ts b/ts/structs/Logger.ts
deleted file mode 100644 (file)
index ffe8b3a..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export class Logger extends CommonBase {
-
-                bindings_instance?: bindings.LDKLogger;
-
-                constructor(ptr?: number, arg?: bindings.LDKLogger) {
-                    if (Number.isFinite(ptr)) {
-                                       super(ptr);
-                                       this.bindings_instance = null;
-                                   } else {
-                                       // TODO: private constructor instantiation
-                                       super(bindings.LDKLogger_new(arg));
-                                       this.ptrs_to.push(arg);
-                                       
-                                   }
-                }
-
-                protected finalize() {
-                    if (this.ptr != 0) {
-                        bindings.Logger_free(this.ptr);
-                    }
-                    super.finalize();
-                }
-
-                static new_impl(arg: LoggerInterface): Logger {
-                    const impl_holder: LDKLoggerHolder = new LDKLoggerHolder();
-                    let structImplementation = <bindings.LDKLogger>{
-                        // todo: in-line interface filling
-                        log (record: number): void {
-                                                       const record_hu_conv: Record = new Record(null, record);
-                                                       arg.log(record_hu_conv);
-                                               },
-
-                                               
-                    };
-                    impl_holder.held = new Logger (null, structImplementation);
-                }
-            }
-
-            export interface LoggerInterface {
-                log(record: Record): void;
-                               
-            }
-
-            class LDKLoggerHolder {
-                held: Logger;
-            }
-}
diff --git a/ts/structs/MessageHandler.ts b/ts/structs/MessageHandler.ts
deleted file mode 100644 (file)
index b356c76..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class MessageHandler extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.MessageHandler_free(this.ptr);
-                    }
-                }
-       public ChannelMessageHandler get_chan_handler() {
-               number ret = bindings.MessageHandler_get_chan_handler(this.ptr);
-               ChannelMessageHandler ret_hu_conv = new ChannelMessageHandler(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_chan_handler(ChannelMessageHandler val) {
-               bindings.MessageHandler_set_chan_handler(this.ptr, val == null ? 0 : val.ptr);
-               this.ptrs_to.add(val);
-       }
-
-       public RoutingMessageHandler get_route_handler() {
-               number ret = bindings.MessageHandler_get_route_handler(this.ptr);
-               RoutingMessageHandler ret_hu_conv = new RoutingMessageHandler(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_route_handler(RoutingMessageHandler val) {
-               bindings.MessageHandler_set_route_handler(this.ptr, val == null ? 0 : val.ptr);
-               this.ptrs_to.add(val);
-       }
-
-       public static MessageHandler constructor_new(ChannelMessageHandler chan_handler_arg, RoutingMessageHandler route_handler_arg) {
-               number ret = bindings.MessageHandler_new(chan_handler_arg == null ? 0 : chan_handler_arg.ptr, route_handler_arg == null ? 0 : route_handler_arg.ptr);
-               const ret_hu_conv: MessageHandler = new MessageHandler(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               ret_hu_conv.ptrs_to.add(chan_handler_arg);
-               ret_hu_conv.ptrs_to.add(route_handler_arg);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/MessageSendEvent.ts b/ts/structs/MessageSendEvent.ts
deleted file mode 100644 (file)
index c02e9e3..0000000
+++ /dev/null
@@ -1,446 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-export default class MessageSendEvent extends CommonBase {
-       protected constructor(_dummy: object, ptr: number) { super(ptr); }
-       protected finalize() {
-               super.finalize();
-               if (this.ptr != 0) { bindings.MessageSendEvent_free(this.ptr); }
-       }
-       static constr_from_ptr(ptr: number): MessageSendEvent {
-               const raw_val: bindings.LDKMessageSendEvent = bindings.LDKMessageSendEvent_ref_from_ptr(ptr);
-               if (raw_val instanceof bindings.LDKMessageSendEvent.SendAcceptChannel) {
-                       return new SendAcceptChannel(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKMessageSendEvent.SendOpenChannel) {
-                       return new SendOpenChannel(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKMessageSendEvent.SendFundingCreated) {
-                       return new SendFundingCreated(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKMessageSendEvent.SendFundingSigned) {
-                       return new SendFundingSigned(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKMessageSendEvent.SendFundingLocked) {
-                       return new SendFundingLocked(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKMessageSendEvent.SendAnnouncementSignatures) {
-                       return new SendAnnouncementSignatures(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKMessageSendEvent.UpdateHTLCs) {
-                       return new UpdateHTLCs(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKMessageSendEvent.SendRevokeAndACK) {
-                       return new SendRevokeAndACK(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKMessageSendEvent.SendClosingSigned) {
-                       return new SendClosingSigned(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKMessageSendEvent.SendShutdown) {
-                       return new SendShutdown(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKMessageSendEvent.SendChannelReestablish) {
-                       return new SendChannelReestablish(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKMessageSendEvent.BroadcastChannelAnnouncement) {
-                       return new BroadcastChannelAnnouncement(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKMessageSendEvent.BroadcastNodeAnnouncement) {
-                       return new BroadcastNodeAnnouncement(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKMessageSendEvent.BroadcastChannelUpdate) {
-                       return new BroadcastChannelUpdate(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKMessageSendEvent.SendChannelUpdate) {
-                       return new SendChannelUpdate(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKMessageSendEvent.HandleError) {
-                       return new HandleError(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKMessageSendEvent.SendChannelRangeQuery) {
-                       return new SendChannelRangeQuery(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKMessageSendEvent.SendShortIdsQuery) {
-                       return new SendShortIdsQuery(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKMessageSendEvent.SendReplyChannelRange) {
-                       return new SendReplyChannelRange(this.ptr, raw_val);
-               }
-               throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
-       }
-
-}
-export class SendAcceptChannel extends MessageSendEvent {
-       public node_id: Uint8Array;
-       public msg: AcceptChannel;
-       private constructor(ptr: number, obj: bindings.LDKMessageSendEvent.SendAcceptChannel) {
-               super(null, ptr);
-               this.node_id = obj.node_id;
-               const msg: number = obj.msg;
-               const msg_hu_conv: AcceptChannel = new AcceptChannel(null, msg);
-                       msg_hu_conv.ptrs_to.add(this);
-               this.msg = msg_hu_conv;
-       }
-}
-export class SendOpenChannel extends MessageSendEvent {
-       public node_id: Uint8Array;
-       public msg: OpenChannel;
-       private constructor(ptr: number, obj: bindings.LDKMessageSendEvent.SendOpenChannel) {
-               super(null, ptr);
-               this.node_id = obj.node_id;
-               const msg: number = obj.msg;
-               const msg_hu_conv: OpenChannel = new OpenChannel(null, msg);
-                       msg_hu_conv.ptrs_to.add(this);
-               this.msg = msg_hu_conv;
-       }
-}
-export class SendFundingCreated extends MessageSendEvent {
-       public node_id: Uint8Array;
-       public msg: FundingCreated;
-       private constructor(ptr: number, obj: bindings.LDKMessageSendEvent.SendFundingCreated) {
-               super(null, ptr);
-               this.node_id = obj.node_id;
-               const msg: number = obj.msg;
-               const msg_hu_conv: FundingCreated = new FundingCreated(null, msg);
-                       msg_hu_conv.ptrs_to.add(this);
-               this.msg = msg_hu_conv;
-       }
-}
-export class SendFundingSigned extends MessageSendEvent {
-       public node_id: Uint8Array;
-       public msg: FundingSigned;
-       private constructor(ptr: number, obj: bindings.LDKMessageSendEvent.SendFundingSigned) {
-               super(null, ptr);
-               this.node_id = obj.node_id;
-               const msg: number = obj.msg;
-               const msg_hu_conv: FundingSigned = new FundingSigned(null, msg);
-                       msg_hu_conv.ptrs_to.add(this);
-               this.msg = msg_hu_conv;
-       }
-}
-export class SendFundingLocked extends MessageSendEvent {
-       public node_id: Uint8Array;
-       public msg: FundingLocked;
-       private constructor(ptr: number, obj: bindings.LDKMessageSendEvent.SendFundingLocked) {
-               super(null, ptr);
-               this.node_id = obj.node_id;
-               const msg: number = obj.msg;
-               const msg_hu_conv: FundingLocked = new FundingLocked(null, msg);
-                       msg_hu_conv.ptrs_to.add(this);
-               this.msg = msg_hu_conv;
-       }
-}
-export class SendAnnouncementSignatures extends MessageSendEvent {
-       public node_id: Uint8Array;
-       public msg: AnnouncementSignatures;
-       private constructor(ptr: number, obj: bindings.LDKMessageSendEvent.SendAnnouncementSignatures) {
-               super(null, ptr);
-               this.node_id = obj.node_id;
-               const msg: number = obj.msg;
-               const msg_hu_conv: AnnouncementSignatures = new AnnouncementSignatures(null, msg);
-                       msg_hu_conv.ptrs_to.add(this);
-               this.msg = msg_hu_conv;
-       }
-}
-export class UpdateHTLCs extends MessageSendEvent {
-       public node_id: Uint8Array;
-       public updates: CommitmentUpdate;
-       private constructor(ptr: number, obj: bindings.LDKMessageSendEvent.UpdateHTLCs) {
-               super(null, ptr);
-               this.node_id = obj.node_id;
-               const updates: number = obj.updates;
-               const updates_hu_conv: CommitmentUpdate = new CommitmentUpdate(null, updates);
-                       updates_hu_conv.ptrs_to.add(this);
-               this.updates = updates_hu_conv;
-       }
-}
-export class SendRevokeAndACK extends MessageSendEvent {
-       public node_id: Uint8Array;
-       public msg: RevokeAndACK;
-       private constructor(ptr: number, obj: bindings.LDKMessageSendEvent.SendRevokeAndACK) {
-               super(null, ptr);
-               this.node_id = obj.node_id;
-               const msg: number = obj.msg;
-               const msg_hu_conv: RevokeAndACK = new RevokeAndACK(null, msg);
-                       msg_hu_conv.ptrs_to.add(this);
-               this.msg = msg_hu_conv;
-       }
-}
-export class SendClosingSigned extends MessageSendEvent {
-       public node_id: Uint8Array;
-       public msg: ClosingSigned;
-       private constructor(ptr: number, obj: bindings.LDKMessageSendEvent.SendClosingSigned) {
-               super(null, ptr);
-               this.node_id = obj.node_id;
-               const msg: number = obj.msg;
-               const msg_hu_conv: ClosingSigned = new ClosingSigned(null, msg);
-                       msg_hu_conv.ptrs_to.add(this);
-               this.msg = msg_hu_conv;
-       }
-}
-export class SendShutdown extends MessageSendEvent {
-       public node_id: Uint8Array;
-       public msg: Shutdown;
-       private constructor(ptr: number, obj: bindings.LDKMessageSendEvent.SendShutdown) {
-               super(null, ptr);
-               this.node_id = obj.node_id;
-               const msg: number = obj.msg;
-               const msg_hu_conv: Shutdown = new Shutdown(null, msg);
-                       msg_hu_conv.ptrs_to.add(this);
-               this.msg = msg_hu_conv;
-       }
-}
-export class SendChannelReestablish extends MessageSendEvent {
-       public node_id: Uint8Array;
-       public msg: ChannelReestablish;
-       private constructor(ptr: number, obj: bindings.LDKMessageSendEvent.SendChannelReestablish) {
-               super(null, ptr);
-               this.node_id = obj.node_id;
-               const msg: number = obj.msg;
-               const msg_hu_conv: ChannelReestablish = new ChannelReestablish(null, msg);
-                       msg_hu_conv.ptrs_to.add(this);
-               this.msg = msg_hu_conv;
-       }
-}
-export class BroadcastChannelAnnouncement extends MessageSendEvent {
-       public msg: ChannelAnnouncement;
-       public update_msg: ChannelUpdate;
-       private constructor(ptr: number, obj: bindings.LDKMessageSendEvent.BroadcastChannelAnnouncement) {
-               super(null, ptr);
-               const msg: number = obj.msg;
-               const msg_hu_conv: ChannelAnnouncement = new ChannelAnnouncement(null, msg);
-                       msg_hu_conv.ptrs_to.add(this);
-               this.msg = msg_hu_conv;
-               const update_msg: number = obj.update_msg;
-               const update_msg_hu_conv: ChannelUpdate = new ChannelUpdate(null, update_msg);
-                       update_msg_hu_conv.ptrs_to.add(this);
-               this.update_msg = update_msg_hu_conv;
-       }
-}
-export class BroadcastNodeAnnouncement extends MessageSendEvent {
-       public msg: NodeAnnouncement;
-       private constructor(ptr: number, obj: bindings.LDKMessageSendEvent.BroadcastNodeAnnouncement) {
-               super(null, ptr);
-               const msg: number = obj.msg;
-               const msg_hu_conv: NodeAnnouncement = new NodeAnnouncement(null, msg);
-                       msg_hu_conv.ptrs_to.add(this);
-               this.msg = msg_hu_conv;
-       }
-}
-export class BroadcastChannelUpdate extends MessageSendEvent {
-       public msg: ChannelUpdate;
-       private constructor(ptr: number, obj: bindings.LDKMessageSendEvent.BroadcastChannelUpdate) {
-               super(null, ptr);
-               const msg: number = obj.msg;
-               const msg_hu_conv: ChannelUpdate = new ChannelUpdate(null, msg);
-                       msg_hu_conv.ptrs_to.add(this);
-               this.msg = msg_hu_conv;
-       }
-}
-export class SendChannelUpdate extends MessageSendEvent {
-       public node_id: Uint8Array;
-       public msg: ChannelUpdate;
-       private constructor(ptr: number, obj: bindings.LDKMessageSendEvent.SendChannelUpdate) {
-               super(null, ptr);
-               this.node_id = obj.node_id;
-               const msg: number = obj.msg;
-               const msg_hu_conv: ChannelUpdate = new ChannelUpdate(null, msg);
-                       msg_hu_conv.ptrs_to.add(this);
-               this.msg = msg_hu_conv;
-       }
-}
-export class HandleError extends MessageSendEvent {
-       public node_id: Uint8Array;
-       public action: ErrorAction;
-       private constructor(ptr: number, obj: bindings.LDKMessageSendEvent.HandleError) {
-               super(null, ptr);
-               this.node_id = obj.node_id;
-               const action: number = obj.action;
-               ErrorAction action_hu_conv = ErrorAction.constr_from_ptr(action);
-                       action_hu_conv.ptrs_to.add(this);
-               this.action = action_hu_conv;
-       }
-}
-export class SendChannelRangeQuery extends MessageSendEvent {
-       public node_id: Uint8Array;
-       public msg: QueryChannelRange;
-       private constructor(ptr: number, obj: bindings.LDKMessageSendEvent.SendChannelRangeQuery) {
-               super(null, ptr);
-               this.node_id = obj.node_id;
-               const msg: number = obj.msg;
-               const msg_hu_conv: QueryChannelRange = new QueryChannelRange(null, msg);
-                       msg_hu_conv.ptrs_to.add(this);
-               this.msg = msg_hu_conv;
-       }
-}
-export class SendShortIdsQuery extends MessageSendEvent {
-       public node_id: Uint8Array;
-       public msg: QueryShortChannelIds;
-       private constructor(ptr: number, obj: bindings.LDKMessageSendEvent.SendShortIdsQuery) {
-               super(null, ptr);
-               this.node_id = obj.node_id;
-               const msg: number = obj.msg;
-               const msg_hu_conv: QueryShortChannelIds = new QueryShortChannelIds(null, msg);
-                       msg_hu_conv.ptrs_to.add(this);
-               this.msg = msg_hu_conv;
-       }
-}
-export class SendReplyChannelRange extends MessageSendEvent {
-       public node_id: Uint8Array;
-       public msg: ReplyChannelRange;
-       private constructor(ptr: number, obj: bindings.LDKMessageSendEvent.SendReplyChannelRange) {
-               super(null, ptr);
-               this.node_id = obj.node_id;
-               const msg: number = obj.msg;
-               const msg_hu_conv: ReplyChannelRange = new ReplyChannelRange(null, msg);
-                       msg_hu_conv.ptrs_to.add(this);
-               this.msg = msg_hu_conv;
-       }
-}
-       public number clone_ptr() {
-               number ret = bindings.MessageSendEvent_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public MessageSendEvent clone() {
-               number ret = bindings.MessageSendEvent_clone(this.ptr);
-               MessageSendEvent ret_hu_conv = MessageSendEvent.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static MessageSendEvent constructor_send_accept_channel(Uint8Array node_id, AcceptChannel msg) {
-               number ret = bindings.MessageSendEvent_send_accept_channel(InternalUtils.check_arr_len(node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               MessageSendEvent ret_hu_conv = MessageSendEvent.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static MessageSendEvent constructor_send_open_channel(Uint8Array node_id, OpenChannel msg) {
-               number ret = bindings.MessageSendEvent_send_open_channel(InternalUtils.check_arr_len(node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               MessageSendEvent ret_hu_conv = MessageSendEvent.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static MessageSendEvent constructor_send_funding_created(Uint8Array node_id, FundingCreated msg) {
-               number ret = bindings.MessageSendEvent_send_funding_created(InternalUtils.check_arr_len(node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               MessageSendEvent ret_hu_conv = MessageSendEvent.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static MessageSendEvent constructor_send_funding_signed(Uint8Array node_id, FundingSigned msg) {
-               number ret = bindings.MessageSendEvent_send_funding_signed(InternalUtils.check_arr_len(node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               MessageSendEvent ret_hu_conv = MessageSendEvent.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static MessageSendEvent constructor_send_funding_locked(Uint8Array node_id, FundingLocked msg) {
-               number ret = bindings.MessageSendEvent_send_funding_locked(InternalUtils.check_arr_len(node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               MessageSendEvent ret_hu_conv = MessageSendEvent.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static MessageSendEvent constructor_send_announcement_signatures(Uint8Array node_id, AnnouncementSignatures msg) {
-               number ret = bindings.MessageSendEvent_send_announcement_signatures(InternalUtils.check_arr_len(node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               MessageSendEvent ret_hu_conv = MessageSendEvent.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static MessageSendEvent constructor_update_htlcs(Uint8Array node_id, CommitmentUpdate updates) {
-               number ret = bindings.MessageSendEvent_update_htlcs(InternalUtils.check_arr_len(node_id, 33), updates == null ? 0 : updates.ptr & ~1);
-               MessageSendEvent ret_hu_conv = MessageSendEvent.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static MessageSendEvent constructor_send_revoke_and_ack(Uint8Array node_id, RevokeAndACK msg) {
-               number ret = bindings.MessageSendEvent_send_revoke_and_ack(InternalUtils.check_arr_len(node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               MessageSendEvent ret_hu_conv = MessageSendEvent.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static MessageSendEvent constructor_send_closing_signed(Uint8Array node_id, ClosingSigned msg) {
-               number ret = bindings.MessageSendEvent_send_closing_signed(InternalUtils.check_arr_len(node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               MessageSendEvent ret_hu_conv = MessageSendEvent.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static MessageSendEvent constructor_send_shutdown(Uint8Array node_id, Shutdown msg) {
-               number ret = bindings.MessageSendEvent_send_shutdown(InternalUtils.check_arr_len(node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               MessageSendEvent ret_hu_conv = MessageSendEvent.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static MessageSendEvent constructor_send_channel_reestablish(Uint8Array node_id, ChannelReestablish msg) {
-               number ret = bindings.MessageSendEvent_send_channel_reestablish(InternalUtils.check_arr_len(node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               MessageSendEvent ret_hu_conv = MessageSendEvent.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static MessageSendEvent constructor_broadcast_channel_announcement(ChannelAnnouncement msg, ChannelUpdate update_msg) {
-               number ret = bindings.MessageSendEvent_broadcast_channel_announcement(msg == null ? 0 : msg.ptr & ~1, update_msg == null ? 0 : update_msg.ptr & ~1);
-               MessageSendEvent ret_hu_conv = MessageSendEvent.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static MessageSendEvent constructor_broadcast_node_announcement(NodeAnnouncement msg) {
-               number ret = bindings.MessageSendEvent_broadcast_node_announcement(msg == null ? 0 : msg.ptr & ~1);
-               MessageSendEvent ret_hu_conv = MessageSendEvent.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static MessageSendEvent constructor_broadcast_channel_update(ChannelUpdate msg) {
-               number ret = bindings.MessageSendEvent_broadcast_channel_update(msg == null ? 0 : msg.ptr & ~1);
-               MessageSendEvent ret_hu_conv = MessageSendEvent.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static MessageSendEvent constructor_send_channel_update(Uint8Array node_id, ChannelUpdate msg) {
-               number ret = bindings.MessageSendEvent_send_channel_update(InternalUtils.check_arr_len(node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               MessageSendEvent ret_hu_conv = MessageSendEvent.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static MessageSendEvent constructor_handle_error(Uint8Array node_id, ErrorAction action) {
-               number ret = bindings.MessageSendEvent_handle_error(InternalUtils.check_arr_len(node_id, 33), action.ptr);
-               MessageSendEvent ret_hu_conv = MessageSendEvent.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static MessageSendEvent constructor_send_channel_range_query(Uint8Array node_id, QueryChannelRange msg) {
-               number ret = bindings.MessageSendEvent_send_channel_range_query(InternalUtils.check_arr_len(node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               MessageSendEvent ret_hu_conv = MessageSendEvent.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static MessageSendEvent constructor_send_short_ids_query(Uint8Array node_id, QueryShortChannelIds msg) {
-               number ret = bindings.MessageSendEvent_send_short_ids_query(InternalUtils.check_arr_len(node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               MessageSendEvent ret_hu_conv = MessageSendEvent.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static MessageSendEvent constructor_send_reply_channel_range(Uint8Array node_id, ReplyChannelRange msg) {
-               number ret = bindings.MessageSendEvent_send_reply_channel_range(InternalUtils.check_arr_len(node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               MessageSendEvent ret_hu_conv = MessageSendEvent.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/MessageSendEventsProvider.ts b/ts/structs/MessageSendEventsProvider.ts
deleted file mode 100644 (file)
index d4cb29a..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export class MessageSendEventsProvider extends CommonBase {
-
-                bindings_instance?: bindings.LDKMessageSendEventsProvider;
-
-                constructor(ptr?: number, arg?: bindings.LDKMessageSendEventsProvider) {
-                    if (Number.isFinite(ptr)) {
-                                       super(ptr);
-                                       this.bindings_instance = null;
-                                   } else {
-                                       // TODO: private constructor instantiation
-                                       super(bindings.LDKMessageSendEventsProvider_new(arg));
-                                       this.ptrs_to.push(arg);
-                                       
-                                   }
-                }
-
-                protected finalize() {
-                    if (this.ptr != 0) {
-                        bindings.MessageSendEventsProvider_free(this.ptr);
-                    }
-                    super.finalize();
-                }
-
-                static new_impl(arg: MessageSendEventsProviderInterface): MessageSendEventsProvider {
-                    const impl_holder: LDKMessageSendEventsProviderHolder = new LDKMessageSendEventsProviderHolder();
-                    let structImplementation = <bindings.LDKMessageSendEventsProvider>{
-                        // todo: in-line interface filling
-                        get_and_clear_pending_msg_events (): number[] {
-                                                       MessageSendEvent[] ret = arg.get_and_clear_pending_msg_events();
-                               result: number[] = ret != null ? Arrays.stream(ret).map(ret_conv_18 -> ret_conv_18 == null ? 0 : ret_conv_18.clone_ptr()).toArray(number[]::new) : null;
-                               return result;
-                                               },
-
-                                               
-                    };
-                    impl_holder.held = new MessageSendEventsProvider (null, structImplementation);
-                }
-            }
-
-            export interface MessageSendEventsProviderInterface {
-                get_and_clear_pending_msg_events(): MessageSendEvent[];
-                               
-            }
-
-            class LDKMessageSendEventsProviderHolder {
-                held: MessageSendEventsProvider;
-            }
-       public MessageSendEvent[] get_and_clear_pending_msg_events() {
-               number[] ret = bindings.MessageSendEventsProvider_get_and_clear_pending_msg_events(this.ptr);
-               MessageSendEvent[] ret_conv_18_arr = new MessageSendEvent[ret.length];
-               for (int s = 0; s < ret.length; s++) {
-                       number ret_conv_18 = ret[s];
-                       MessageSendEvent ret_conv_18_hu_conv = MessageSendEvent.constr_from_ptr(ret_conv_18);
-                       ret_conv_18_hu_conv.ptrs_to.add(this);
-                       ret_conv_18_arr[s] = ret_conv_18_hu_conv;
-               }
-               return ret_conv_18_arr;
-       }
-
-}
diff --git a/ts/structs/MinFinalCltvExpiry.ts b/ts/structs/MinFinalCltvExpiry.ts
deleted file mode 100644 (file)
index 709b178..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class MinFinalCltvExpiry extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.MinFinalCltvExpiry_free(this.ptr);
-                    }
-                }
-       public number get_a() {
-               number ret = bindings.MinFinalCltvExpiry_get_a(this.ptr);
-               return ret;
-       }
-
-       public void set_a(number val) {
-               bindings.MinFinalCltvExpiry_set_a(this.ptr, val);
-       }
-
-       public static MinFinalCltvExpiry constructor_new(number a_arg) {
-               number ret = bindings.MinFinalCltvExpiry_new(a_arg);
-               const ret_hu_conv: MinFinalCltvExpiry = new MinFinalCltvExpiry(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.MinFinalCltvExpiry_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public MinFinalCltvExpiry clone() {
-               number ret = bindings.MinFinalCltvExpiry_clone(this.ptr);
-               const ret_hu_conv: MinFinalCltvExpiry = new MinFinalCltvExpiry(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public number hash() {
-               number ret = bindings.MinFinalCltvExpiry_hash(this.ptr);
-               return ret;
-       }
-
-       public boolean eq(MinFinalCltvExpiry b) {
-               boolean ret = bindings.MinFinalCltvExpiry_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
-               this.ptrs_to.add(b);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/MonitorEvent.ts b/ts/structs/MonitorEvent.ts
deleted file mode 100644 (file)
index 40899fe..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-export default class MonitorEvent extends CommonBase {
-       protected constructor(_dummy: object, ptr: number) { super(ptr); }
-       protected finalize() {
-               super.finalize();
-               if (this.ptr != 0) { bindings.MonitorEvent_free(this.ptr); }
-       }
-       static constr_from_ptr(ptr: number): MonitorEvent {
-               const raw_val: bindings.LDKMonitorEvent = bindings.LDKMonitorEvent_ref_from_ptr(ptr);
-               if (raw_val instanceof bindings.LDKMonitorEvent.HTLCEvent) {
-                       return new HTLCEvent(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKMonitorEvent.CommitmentTxConfirmed) {
-                       return new CommitmentTxConfirmed(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKMonitorEvent.UpdateCompleted) {
-                       return new UpdateCompleted(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKMonitorEvent.UpdateFailed) {
-                       return new UpdateFailed(this.ptr, raw_val);
-               }
-               throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
-       }
-
-}
-export class HTLCEvent extends MonitorEvent {
-       public htlc_event: HTLCUpdate;
-       private constructor(ptr: number, obj: bindings.LDKMonitorEvent.HTLCEvent) {
-               super(null, ptr);
-               const htlc_event: number = obj.htlc_event;
-               const htlc_event_hu_conv: HTLCUpdate = new HTLCUpdate(null, htlc_event);
-                       htlc_event_hu_conv.ptrs_to.add(this);
-               this.htlc_event = htlc_event_hu_conv;
-       }
-}
-export class CommitmentTxConfirmed extends MonitorEvent {
-       public commitment_tx_confirmed: OutPoint;
-       private constructor(ptr: number, obj: bindings.LDKMonitorEvent.CommitmentTxConfirmed) {
-               super(null, ptr);
-               const commitment_tx_confirmed: number = obj.commitment_tx_confirmed;
-               const commitment_tx_confirmed_hu_conv: OutPoint = new OutPoint(null, commitment_tx_confirmed);
-                       commitment_tx_confirmed_hu_conv.ptrs_to.add(this);
-               this.commitment_tx_confirmed = commitment_tx_confirmed_hu_conv;
-       }
-}
-export class UpdateCompleted extends MonitorEvent {
-       public funding_txo: OutPoint;
-       public monitor_update_id: number;
-       private constructor(ptr: number, obj: bindings.LDKMonitorEvent.UpdateCompleted) {
-               super(null, ptr);
-               const funding_txo: number = obj.funding_txo;
-               const funding_txo_hu_conv: OutPoint = new OutPoint(null, funding_txo);
-                       funding_txo_hu_conv.ptrs_to.add(this);
-               this.funding_txo = funding_txo_hu_conv;
-               this.monitor_update_id = obj.monitor_update_id;
-       }
-}
-export class UpdateFailed extends MonitorEvent {
-       public update_failed: OutPoint;
-       private constructor(ptr: number, obj: bindings.LDKMonitorEvent.UpdateFailed) {
-               super(null, ptr);
-               const update_failed: number = obj.update_failed;
-               const update_failed_hu_conv: OutPoint = new OutPoint(null, update_failed);
-                       update_failed_hu_conv.ptrs_to.add(this);
-               this.update_failed = update_failed_hu_conv;
-       }
-}
-       public number clone_ptr() {
-               number ret = bindings.MonitorEvent_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public MonitorEvent clone() {
-               number ret = bindings.MonitorEvent_clone(this.ptr);
-               MonitorEvent ret_hu_conv = MonitorEvent.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static MonitorEvent constructor_htlcevent(HTLCUpdate a) {
-               number ret = bindings.MonitorEvent_htlcevent(a == null ? 0 : a.ptr & ~1);
-               MonitorEvent ret_hu_conv = MonitorEvent.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static MonitorEvent constructor_commitment_tx_confirmed(OutPoint a) {
-               number ret = bindings.MonitorEvent_commitment_tx_confirmed(a == null ? 0 : a.ptr & ~1);
-               MonitorEvent ret_hu_conv = MonitorEvent.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static MonitorEvent constructor_update_completed(OutPoint funding_txo, number monitor_update_id) {
-               number ret = bindings.MonitorEvent_update_completed(funding_txo == null ? 0 : funding_txo.ptr & ~1, monitor_update_id);
-               MonitorEvent ret_hu_conv = MonitorEvent.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static MonitorEvent constructor_update_failed(OutPoint a) {
-               number ret = bindings.MonitorEvent_update_failed(a == null ? 0 : a.ptr & ~1);
-               MonitorEvent ret_hu_conv = MonitorEvent.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.MonitorEvent_write(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/MonitorUpdateId.ts b/ts/structs/MonitorUpdateId.ts
deleted file mode 100644 (file)
index d9e6d3e..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class MonitorUpdateId extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.MonitorUpdateId_free(this.ptr);
-                    }
-                }
-       public number clone_ptr() {
-               number ret = bindings.MonitorUpdateId_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public MonitorUpdateId clone() {
-               number ret = bindings.MonitorUpdateId_clone(this.ptr);
-               const ret_hu_conv: MonitorUpdateId = new MonitorUpdateId(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public number hash() {
-               number ret = bindings.MonitorUpdateId_hash(this.ptr);
-               return ret;
-       }
-
-       public boolean eq(MonitorUpdateId b) {
-               boolean ret = bindings.MonitorUpdateId_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
-               this.ptrs_to.add(b);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/MultiThreadedLockableScore.ts b/ts/structs/MultiThreadedLockableScore.ts
deleted file mode 100644 (file)
index 07ea999..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class MultiThreadedLockableScore extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.MultiThreadedLockableScore_free(this.ptr);
-                    }
-                }
-       public static MultiThreadedLockableScore constructor_new(Score score) {
-               number ret = bindings.MultiThreadedLockableScore_new(score == null ? 0 : score.ptr);
-               const ret_hu_conv: MultiThreadedLockableScore = new MultiThreadedLockableScore(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               ret_hu_conv.ptrs_to.add(score);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/NetAddress.ts b/ts/structs/NetAddress.ts
deleted file mode 100644 (file)
index d80b518..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-export default class NetAddress extends CommonBase {
-       protected constructor(_dummy: object, ptr: number) { super(ptr); }
-       protected finalize() {
-               super.finalize();
-               if (this.ptr != 0) { bindings.NetAddress_free(this.ptr); }
-       }
-       static constr_from_ptr(ptr: number): NetAddress {
-               const raw_val: bindings.LDKNetAddress = bindings.LDKNetAddress_ref_from_ptr(ptr);
-               if (raw_val instanceof bindings.LDKNetAddress.IPv4) {
-                       return new IPv4(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKNetAddress.IPv6) {
-                       return new IPv6(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKNetAddress.OnionV2) {
-                       return new OnionV2(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKNetAddress.OnionV3) {
-                       return new OnionV3(this.ptr, raw_val);
-               }
-               throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
-       }
-
-}
-export class IPv4 extends NetAddress {
-       public addr: Uint8Array;
-       public port: number;
-       private constructor(ptr: number, obj: bindings.LDKNetAddress.IPv4) {
-               super(null, ptr);
-               this.addr = obj.addr;
-               this.port = obj.port;
-       }
-}
-export class IPv6 extends NetAddress {
-       public addr: Uint8Array;
-       public port: number;
-       private constructor(ptr: number, obj: bindings.LDKNetAddress.IPv6) {
-               super(null, ptr);
-               this.addr = obj.addr;
-               this.port = obj.port;
-       }
-}
-export class OnionV2 extends NetAddress {
-       public onion_v2: Uint8Array;
-       private constructor(ptr: number, obj: bindings.LDKNetAddress.OnionV2) {
-               super(null, ptr);
-               this.onion_v2 = obj.onion_v2;
-       }
-}
-export class OnionV3 extends NetAddress {
-       public ed25519_pubkey: Uint8Array;
-       public checksum: number;
-       public version: number;
-       public port: number;
-       private constructor(ptr: number, obj: bindings.LDKNetAddress.OnionV3) {
-               super(null, ptr);
-               this.ed25519_pubkey = obj.ed25519_pubkey;
-               this.checksum = obj.checksum;
-               this.version = obj.version;
-               this.port = obj.port;
-       }
-}
-       public number clone_ptr() {
-               number ret = bindings.NetAddress_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public NetAddress clone() {
-               number ret = bindings.NetAddress_clone(this.ptr);
-               NetAddress ret_hu_conv = NetAddress.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static NetAddress constructor_ipv4(Uint8Array addr, number port) {
-               number ret = bindings.NetAddress_ipv4(InternalUtils.check_arr_len(addr, 4), port);
-               NetAddress ret_hu_conv = NetAddress.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static NetAddress constructor_ipv6(Uint8Array addr, number port) {
-               number ret = bindings.NetAddress_ipv6(InternalUtils.check_arr_len(addr, 16), port);
-               NetAddress ret_hu_conv = NetAddress.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static NetAddress constructor_onion_v2(Uint8Array a) {
-               number ret = bindings.NetAddress_onion_v2(InternalUtils.check_arr_len(a, 12));
-               NetAddress ret_hu_conv = NetAddress.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static NetAddress constructor_onion_v3(Uint8Array ed25519_pubkey, number checksum, number version, number port) {
-               number ret = bindings.NetAddress_onion_v3(InternalUtils.check_arr_len(ed25519_pubkey, 32), checksum, version, port);
-               NetAddress ret_hu_conv = NetAddress.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.NetAddress_write(this.ptr);
-               return ret;
-       }
-
-       public static Result_NetAddressDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.NetAddress_read(ser);
-               Result_NetAddressDecodeErrorZ ret_hu_conv = Result_NetAddressDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/NetGraphMsgHandler.ts b/ts/structs/NetGraphMsgHandler.ts
deleted file mode 100644 (file)
index ee9659a..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class NetGraphMsgHandler extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.NetGraphMsgHandler_free(this.ptr);
-                    }
-                }
-       public EventHandler as_EventHandler() {
-               number ret = bindings.NetGraphMsgHandler_as_EventHandler(this.ptr);
-               EventHandler ret_hu_conv = new EventHandler(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static NetGraphMsgHandler constructor_new(NetworkGraph network_graph, Option_AccessZ chain_access, Logger logger) {
-               number ret = bindings.NetGraphMsgHandler_new(network_graph == null ? 0 : network_graph.ptr & ~1, chain_access.ptr, logger == null ? 0 : logger.ptr);
-               const ret_hu_conv: NetGraphMsgHandler = new NetGraphMsgHandler(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               ret_hu_conv.ptrs_to.add(network_graph);
-               ret_hu_conv.ptrs_to.add(chain_access);
-               ret_hu_conv.ptrs_to.add(logger);
-               return ret_hu_conv;
-       }
-
-       public void add_chain_access(Option_AccessZ chain_access) {
-               bindings.NetGraphMsgHandler_add_chain_access(this.ptr, chain_access.ptr);
-               this.ptrs_to.add(chain_access);
-       }
-
-       public RoutingMessageHandler as_RoutingMessageHandler() {
-               number ret = bindings.NetGraphMsgHandler_as_RoutingMessageHandler(this.ptr);
-               RoutingMessageHandler ret_hu_conv = new RoutingMessageHandler(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public MessageSendEventsProvider as_MessageSendEventsProvider() {
-               number ret = bindings.NetGraphMsgHandler_as_MessageSendEventsProvider(this.ptr);
-               MessageSendEventsProvider ret_hu_conv = new MessageSendEventsProvider(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/NetworkGraph.ts b/ts/structs/NetworkGraph.ts
deleted file mode 100644 (file)
index 4f33d5f..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class NetworkGraph extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.NetworkGraph_free(this.ptr);
-                    }
-                }
-       public number clone_ptr() {
-               number ret = bindings.NetworkGraph_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public NetworkGraph clone() {
-               number ret = bindings.NetworkGraph_clone(this.ptr);
-               const ret_hu_conv: NetworkGraph = new NetworkGraph(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.NetworkGraph_write(this.ptr);
-               return ret;
-       }
-
-       public static Result_NetworkGraphDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.NetworkGraph_read(ser);
-               Result_NetworkGraphDecodeErrorZ ret_hu_conv = Result_NetworkGraphDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static NetworkGraph constructor_new(Uint8Array genesis_hash) {
-               number ret = bindings.NetworkGraph_new(InternalUtils.check_arr_len(genesis_hash, 32));
-               const ret_hu_conv: NetworkGraph = new NetworkGraph(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public ReadOnlyNetworkGraph read_only() {
-               number ret = bindings.NetworkGraph_read_only(this.ptr);
-               const ret_hu_conv: ReadOnlyNetworkGraph = new ReadOnlyNetworkGraph(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Result_NoneLightningErrorZ update_node_from_announcement(NodeAnnouncement msg) {
-               number ret = bindings.NetworkGraph_update_node_from_announcement(this.ptr, msg == null ? 0 : msg.ptr & ~1);
-               Result_NoneLightningErrorZ ret_hu_conv = Result_NoneLightningErrorZ.constr_from_ptr(ret);
-               this.ptrs_to.add(msg);
-               return ret_hu_conv;
-       }
-
-       public Result_NoneLightningErrorZ update_node_from_unsigned_announcement(UnsignedNodeAnnouncement msg) {
-               number ret = bindings.NetworkGraph_update_node_from_unsigned_announcement(this.ptr, msg == null ? 0 : msg.ptr & ~1);
-               Result_NoneLightningErrorZ ret_hu_conv = Result_NoneLightningErrorZ.constr_from_ptr(ret);
-               this.ptrs_to.add(msg);
-               return ret_hu_conv;
-       }
-
-       public Result_NoneLightningErrorZ update_channel_from_announcement(ChannelAnnouncement msg, Option_AccessZ chain_access) {
-               number ret = bindings.NetworkGraph_update_channel_from_announcement(this.ptr, msg == null ? 0 : msg.ptr & ~1, chain_access.ptr);
-               Result_NoneLightningErrorZ ret_hu_conv = Result_NoneLightningErrorZ.constr_from_ptr(ret);
-               this.ptrs_to.add(msg);
-               this.ptrs_to.add(chain_access);
-               return ret_hu_conv;
-       }
-
-       public Result_NoneLightningErrorZ update_channel_from_unsigned_announcement(UnsignedChannelAnnouncement msg, Option_AccessZ chain_access) {
-               number ret = bindings.NetworkGraph_update_channel_from_unsigned_announcement(this.ptr, msg == null ? 0 : msg.ptr & ~1, chain_access.ptr);
-               Result_NoneLightningErrorZ ret_hu_conv = Result_NoneLightningErrorZ.constr_from_ptr(ret);
-               this.ptrs_to.add(msg);
-               this.ptrs_to.add(chain_access);
-               return ret_hu_conv;
-       }
-
-       public void close_channel_from_update(number short_channel_id, boolean is_permanent) {
-               bindings.NetworkGraph_close_channel_from_update(this.ptr, short_channel_id, is_permanent);
-       }
-
-       public void fail_node(Uint8Array _node_id, boolean is_permanent) {
-               bindings.NetworkGraph_fail_node(this.ptr, InternalUtils.check_arr_len(_node_id, 33), is_permanent);
-       }
-
-       public void remove_stale_channels_with_time(number current_time_unix) {
-               bindings.NetworkGraph_remove_stale_channels_with_time(this.ptr, current_time_unix);
-       }
-
-       public Result_NoneLightningErrorZ update_channel(ChannelUpdate msg) {
-               number ret = bindings.NetworkGraph_update_channel(this.ptr, msg == null ? 0 : msg.ptr & ~1);
-               Result_NoneLightningErrorZ ret_hu_conv = Result_NoneLightningErrorZ.constr_from_ptr(ret);
-               this.ptrs_to.add(msg);
-               return ret_hu_conv;
-       }
-
-       public Result_NoneLightningErrorZ update_channel_unsigned(UnsignedChannelUpdate msg) {
-               number ret = bindings.NetworkGraph_update_channel_unsigned(this.ptr, msg == null ? 0 : msg.ptr & ~1);
-               Result_NoneLightningErrorZ ret_hu_conv = Result_NoneLightningErrorZ.constr_from_ptr(ret);
-               this.ptrs_to.add(msg);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/NetworkUpdate.ts b/ts/structs/NetworkUpdate.ts
deleted file mode 100644 (file)
index 758e222..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-export default class NetworkUpdate extends CommonBase {
-       protected constructor(_dummy: object, ptr: number) { super(ptr); }
-       protected finalize() {
-               super.finalize();
-               if (this.ptr != 0) { bindings.NetworkUpdate_free(this.ptr); }
-       }
-       static constr_from_ptr(ptr: number): NetworkUpdate {
-               const raw_val: bindings.LDKNetworkUpdate = bindings.LDKNetworkUpdate_ref_from_ptr(ptr);
-               if (raw_val instanceof bindings.LDKNetworkUpdate.ChannelUpdateMessage) {
-                       return new ChannelUpdateMessage(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKNetworkUpdate.ChannelClosed) {
-                       return new ChannelClosed(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKNetworkUpdate.NodeFailure) {
-                       return new NodeFailure(this.ptr, raw_val);
-               }
-               throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
-       }
-
-}
-export class ChannelUpdateMessage extends NetworkUpdate {
-       public msg: ChannelUpdate;
-       private constructor(ptr: number, obj: bindings.LDKNetworkUpdate.ChannelUpdateMessage) {
-               super(null, ptr);
-               const msg: number = obj.msg;
-               const msg_hu_conv: ChannelUpdate = new ChannelUpdate(null, msg);
-                       msg_hu_conv.ptrs_to.add(this);
-               this.msg = msg_hu_conv;
-       }
-}
-export class ChannelClosed extends NetworkUpdate {
-       public short_channel_id: number;
-       public is_permanent: boolean;
-       private constructor(ptr: number, obj: bindings.LDKNetworkUpdate.ChannelClosed) {
-               super(null, ptr);
-               this.short_channel_id = obj.short_channel_id;
-               this.is_permanent = obj.is_permanent;
-       }
-}
-export class NodeFailure extends NetworkUpdate {
-       public node_id: Uint8Array;
-       public is_permanent: boolean;
-       private constructor(ptr: number, obj: bindings.LDKNetworkUpdate.NodeFailure) {
-               super(null, ptr);
-               this.node_id = obj.node_id;
-               this.is_permanent = obj.is_permanent;
-       }
-}
-       public number clone_ptr() {
-               number ret = bindings.NetworkUpdate_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public NetworkUpdate clone() {
-               number ret = bindings.NetworkUpdate_clone(this.ptr);
-               NetworkUpdate ret_hu_conv = NetworkUpdate.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static NetworkUpdate constructor_channel_update_message(ChannelUpdate msg) {
-               number ret = bindings.NetworkUpdate_channel_update_message(msg == null ? 0 : msg.ptr & ~1);
-               NetworkUpdate ret_hu_conv = NetworkUpdate.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static NetworkUpdate constructor_channel_closed(number short_channel_id, boolean is_permanent) {
-               number ret = bindings.NetworkUpdate_channel_closed(short_channel_id, is_permanent);
-               NetworkUpdate ret_hu_conv = NetworkUpdate.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static NetworkUpdate constructor_node_failure(Uint8Array node_id, boolean is_permanent) {
-               number ret = bindings.NetworkUpdate_node_failure(InternalUtils.check_arr_len(node_id, 33), is_permanent);
-               NetworkUpdate ret_hu_conv = NetworkUpdate.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.NetworkUpdate_write(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/NodeAnnouncement.ts b/ts/structs/NodeAnnouncement.ts
deleted file mode 100644 (file)
index e3087cd..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class NodeAnnouncement extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.NodeAnnouncement_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_signature() {
-               Uint8Array ret = bindings.NodeAnnouncement_get_signature(this.ptr);
-               return ret;
-       }
-
-       public void set_signature(Uint8Array val) {
-               bindings.NodeAnnouncement_set_signature(this.ptr, InternalUtils.check_arr_len(val, 64));
-       }
-
-       public UnsignedNodeAnnouncement get_contents() {
-               number ret = bindings.NodeAnnouncement_get_contents(this.ptr);
-               const ret_hu_conv: UnsignedNodeAnnouncement = new UnsignedNodeAnnouncement(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_contents(UnsignedNodeAnnouncement val) {
-               bindings.NodeAnnouncement_set_contents(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public static NodeAnnouncement constructor_new(Uint8Array signature_arg, UnsignedNodeAnnouncement contents_arg) {
-               number ret = bindings.NodeAnnouncement_new(InternalUtils.check_arr_len(signature_arg, 64), contents_arg == null ? 0 : contents_arg.ptr & ~1);
-               const ret_hu_conv: NodeAnnouncement = new NodeAnnouncement(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.NodeAnnouncement_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 Result_NodeAnnouncementDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.NodeAnnouncement_read(ser);
-               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
deleted file mode 100644 (file)
index a5cd228..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class NodeAnnouncementInfo extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.NodeAnnouncementInfo_free(this.ptr);
-                    }
-                }
-       public NodeFeatures get_features() {
-               number ret = bindings.NodeAnnouncementInfo_get_features(this.ptr);
-               const ret_hu_conv: NodeFeatures = new NodeFeatures(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_features(NodeFeatures val) {
-               bindings.NodeAnnouncementInfo_set_features(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public number get_last_update() {
-               number ret = bindings.NodeAnnouncementInfo_get_last_update(this.ptr);
-               return ret;
-       }
-
-       public void set_last_update(number val) {
-               bindings.NodeAnnouncementInfo_set_last_update(this.ptr, val);
-       }
-
-       public Uint8Array get_rgb() {
-               Uint8Array ret = bindings.NodeAnnouncementInfo_get_rgb(this.ptr);
-               return ret;
-       }
-
-       public void set_rgb(Uint8Array val) {
-               bindings.NodeAnnouncementInfo_set_rgb(this.ptr, InternalUtils.check_arr_len(val, 3));
-       }
-
-       public Uint8Array get_alias() {
-               Uint8Array ret = bindings.NodeAnnouncementInfo_get_alias(this.ptr);
-               return ret;
-       }
-
-       public void set_alias(Uint8Array val) {
-               bindings.NodeAnnouncementInfo_set_alias(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public void set_addresses(NetAddress[] val) {
-               bindings.NodeAnnouncementInfo_set_addresses(this.ptr, val != null ? Arrays.stream(val).map(val_conv_12 -> val_conv_12.ptr).toArray(number[]::new) : null);
-       }
-
-       public NodeAnnouncement get_announcement_message() {
-               number ret = bindings.NodeAnnouncementInfo_get_announcement_message(this.ptr);
-               const ret_hu_conv: NodeAnnouncement = new NodeAnnouncement(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_announcement_message(NodeAnnouncement val) {
-               bindings.NodeAnnouncementInfo_set_announcement_message(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       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, InternalUtils.check_arr_len(rgb_arg, 3), InternalUtils.check_arr_len(alias_arg, 32), addresses_arg != null ? Arrays.stream(addresses_arg).map(addresses_arg_conv_12 -> addresses_arg_conv_12.ptr).toArray(number[]::new) : null, 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);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.NodeAnnouncementInfo_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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;
-       }
-
-       public static Result_NodeAnnouncementInfoDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.NodeAnnouncementInfo_read(ser);
-               Result_NodeAnnouncementInfoDecodeErrorZ ret_hu_conv = Result_NodeAnnouncementInfoDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/NodeFeatures.ts b/ts/structs/NodeFeatures.ts
deleted file mode 100644 (file)
index f9a4c13..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class NodeFeatures extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.NodeFeatures_free(this.ptr);
-                    }
-                }
-       public boolean eq(NodeFeatures b) {
-               boolean ret = bindings.NodeFeatures_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
-               this.ptrs_to.add(b);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.NodeFeatures_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 boolean requires_unknown_bits() {
-               boolean ret = bindings.NodeFeatures_requires_unknown_bits(this.ptr);
-               return ret;
-       }
-
-       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/NodeId.ts b/ts/structs/NodeId.ts
deleted file mode 100644 (file)
index 9f288e0..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class NodeId extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.NodeId_free(this.ptr);
-                    }
-                }
-       public number clone_ptr() {
-               number ret = bindings.NodeId_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public NodeId clone() {
-               number ret = bindings.NodeId_clone(this.ptr);
-               const ret_hu_conv: NodeId = new NodeId(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static NodeId constructor_from_pubkey(Uint8Array pubkey) {
-               number ret = bindings.NodeId_from_pubkey(InternalUtils.check_arr_len(pubkey, 33));
-               const ret_hu_conv: NodeId = new NodeId(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array as_slice() {
-               Uint8Array ret = bindings.NodeId_as_slice(this.ptr);
-               return ret;
-       }
-
-       public number hash() {
-               number ret = bindings.NodeId_hash(this.ptr);
-               return ret;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.NodeId_write(this.ptr);
-               return ret;
-       }
-
-       public static Result_NodeIdDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.NodeId_read(ser);
-               Result_NodeIdDecodeErrorZ ret_hu_conv = Result_NodeIdDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/NodeInfo.ts b/ts/structs/NodeInfo.ts
deleted file mode 100644 (file)
index da17e06..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class NodeInfo extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.NodeInfo_free(this.ptr);
-                    }
-                }
-       public void set_channels(number[] val) {
-               bindings.NodeInfo_set_channels(this.ptr, val);
-       }
-
-       public RoutingFees get_lowest_inbound_channel_fees() {
-               number ret = bindings.NodeInfo_get_lowest_inbound_channel_fees(this.ptr);
-               const ret_hu_conv: RoutingFees = new RoutingFees(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_lowest_inbound_channel_fees(RoutingFees val) {
-               bindings.NodeInfo_set_lowest_inbound_channel_fees(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public NodeAnnouncementInfo get_announcement_info() {
-               number ret = bindings.NodeInfo_get_announcement_info(this.ptr);
-               const ret_hu_conv: NodeAnnouncementInfo = new NodeAnnouncementInfo(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_announcement_info(NodeAnnouncementInfo val) {
-               bindings.NodeInfo_set_announcement_info(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public static NodeInfo constructor_new(number[] channels_arg, RoutingFees lowest_inbound_channel_fees_arg, NodeAnnouncementInfo announcement_info_arg) {
-               number ret = bindings.NodeInfo_new(channels_arg, lowest_inbound_channel_fees_arg == null ? 0 : lowest_inbound_channel_fees_arg.ptr & ~1, announcement_info_arg == null ? 0 : announcement_info_arg.ptr & ~1);
-               const ret_hu_conv: NodeInfo = new NodeInfo(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.NodeInfo_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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;
-       }
-
-       public static Result_NodeInfoDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.NodeInfo_read(ser);
-               Result_NodeInfoDecodeErrorZ ret_hu_conv = Result_NodeInfoDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/OpenChannel.ts b/ts/structs/OpenChannel.ts
deleted file mode 100644 (file)
index 8088f78..0000000
+++ /dev/null
@@ -1,217 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class OpenChannel extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.OpenChannel_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_chain_hash() {
-               Uint8Array ret = bindings.OpenChannel_get_chain_hash(this.ptr);
-               return ret;
-       }
-
-       public void set_chain_hash(Uint8Array val) {
-               bindings.OpenChannel_set_chain_hash(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public Uint8Array get_temporary_channel_id() {
-               Uint8Array ret = bindings.OpenChannel_get_temporary_channel_id(this.ptr);
-               return ret;
-       }
-
-       public void set_temporary_channel_id(Uint8Array val) {
-               bindings.OpenChannel_set_temporary_channel_id(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public number get_funding_satoshis() {
-               number ret = bindings.OpenChannel_get_funding_satoshis(this.ptr);
-               return ret;
-       }
-
-       public void set_funding_satoshis(number val) {
-               bindings.OpenChannel_set_funding_satoshis(this.ptr, val);
-       }
-
-       public number get_push_msat() {
-               number ret = bindings.OpenChannel_get_push_msat(this.ptr);
-               return ret;
-       }
-
-       public void set_push_msat(number val) {
-               bindings.OpenChannel_set_push_msat(this.ptr, val);
-       }
-
-       public number get_dust_limit_satoshis() {
-               number ret = bindings.OpenChannel_get_dust_limit_satoshis(this.ptr);
-               return ret;
-       }
-
-       public void set_dust_limit_satoshis(number val) {
-               bindings.OpenChannel_set_dust_limit_satoshis(this.ptr, val);
-       }
-
-       public number get_max_htlc_value_in_flight_msat() {
-               number ret = bindings.OpenChannel_get_max_htlc_value_in_flight_msat(this.ptr);
-               return ret;
-       }
-
-       public void set_max_htlc_value_in_flight_msat(number val) {
-               bindings.OpenChannel_set_max_htlc_value_in_flight_msat(this.ptr, val);
-       }
-
-       public number get_channel_reserve_satoshis() {
-               number ret = bindings.OpenChannel_get_channel_reserve_satoshis(this.ptr);
-               return ret;
-       }
-
-       public void set_channel_reserve_satoshis(number val) {
-               bindings.OpenChannel_set_channel_reserve_satoshis(this.ptr, val);
-       }
-
-       public number get_htlc_minimum_msat() {
-               number ret = bindings.OpenChannel_get_htlc_minimum_msat(this.ptr);
-               return ret;
-       }
-
-       public void set_htlc_minimum_msat(number val) {
-               bindings.OpenChannel_set_htlc_minimum_msat(this.ptr, val);
-       }
-
-       public number get_feerate_per_kw() {
-               number ret = bindings.OpenChannel_get_feerate_per_kw(this.ptr);
-               return ret;
-       }
-
-       public void set_feerate_per_kw(number val) {
-               bindings.OpenChannel_set_feerate_per_kw(this.ptr, val);
-       }
-
-       public number get_to_self_delay() {
-               number ret = bindings.OpenChannel_get_to_self_delay(this.ptr);
-               return ret;
-       }
-
-       public void set_to_self_delay(number val) {
-               bindings.OpenChannel_set_to_self_delay(this.ptr, val);
-       }
-
-       public number get_max_accepted_htlcs() {
-               number ret = bindings.OpenChannel_get_max_accepted_htlcs(this.ptr);
-               return ret;
-       }
-
-       public void set_max_accepted_htlcs(number val) {
-               bindings.OpenChannel_set_max_accepted_htlcs(this.ptr, val);
-       }
-
-       public Uint8Array get_funding_pubkey() {
-               Uint8Array ret = bindings.OpenChannel_get_funding_pubkey(this.ptr);
-               return ret;
-       }
-
-       public void set_funding_pubkey(Uint8Array val) {
-               bindings.OpenChannel_set_funding_pubkey(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public Uint8Array get_revocation_basepoint() {
-               Uint8Array ret = bindings.OpenChannel_get_revocation_basepoint(this.ptr);
-               return ret;
-       }
-
-       public void set_revocation_basepoint(Uint8Array val) {
-               bindings.OpenChannel_set_revocation_basepoint(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public Uint8Array get_payment_point() {
-               Uint8Array ret = bindings.OpenChannel_get_payment_point(this.ptr);
-               return ret;
-       }
-
-       public void set_payment_point(Uint8Array val) {
-               bindings.OpenChannel_set_payment_point(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public Uint8Array get_delayed_payment_basepoint() {
-               Uint8Array ret = bindings.OpenChannel_get_delayed_payment_basepoint(this.ptr);
-               return ret;
-       }
-
-       public void set_delayed_payment_basepoint(Uint8Array val) {
-               bindings.OpenChannel_set_delayed_payment_basepoint(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public Uint8Array get_htlc_basepoint() {
-               Uint8Array ret = bindings.OpenChannel_get_htlc_basepoint(this.ptr);
-               return ret;
-       }
-
-       public void set_htlc_basepoint(Uint8Array val) {
-               bindings.OpenChannel_set_htlc_basepoint(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public Uint8Array get_first_per_commitment_point() {
-               Uint8Array ret = bindings.OpenChannel_get_first_per_commitment_point(this.ptr);
-               return ret;
-       }
-
-       public void set_first_per_commitment_point(Uint8Array val) {
-               bindings.OpenChannel_set_first_per_commitment_point(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public number get_channel_flags() {
-               number ret = bindings.OpenChannel_get_channel_flags(this.ptr);
-               return ret;
-       }
-
-       public void set_channel_flags(number val) {
-               bindings.OpenChannel_set_channel_flags(this.ptr, val);
-       }
-
-       public ChannelTypeFeatures get_channel_type() {
-               number ret = bindings.OpenChannel_get_channel_type(this.ptr);
-               const ret_hu_conv: ChannelTypeFeatures = new ChannelTypeFeatures(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_channel_type(ChannelTypeFeatures val) {
-               bindings.OpenChannel_set_channel_type(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.OpenChannel_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 Result_OpenChannelDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.OpenChannel_read(ser);
-               Result_OpenChannelDecodeErrorZ ret_hu_conv = Result_OpenChannelDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Option_AccessZ.ts b/ts/structs/Option_AccessZ.ts
deleted file mode 100644 (file)
index 4823565..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-export default class COption_AccessZ extends CommonBase {
-       protected constructor(_dummy: object, ptr: number) { super(ptr); }
-       protected finalize() {
-               super.finalize();
-               if (this.ptr != 0) { bindings.COption_AccessZ_free(this.ptr); }
-       }
-       static constr_from_ptr(ptr: number): COption_AccessZ {
-               const raw_val: bindings.LDKCOption_AccessZ = bindings.LDKCOption_AccessZ_ref_from_ptr(ptr);
-               if (raw_val instanceof bindings.LDKCOption_AccessZ.Some) {
-                       return new Some(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKCOption_AccessZ.None) {
-                       return new None(this.ptr, raw_val);
-               }
-               throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
-       }
-
-}
-export class Some extends COption_AccessZ {
-       public some: Access;
-       private constructor(ptr: number, obj: bindings.LDKCOption_AccessZ.Some) {
-               super(null, ptr);
-               const some: number = obj.some;
-               Access ret_hu_conv = new Access(null, some);
-                       ret_hu_conv.ptrs_to.add(this);
-               this.some = ret_hu_conv;
-       }
-}
-export class None extends COption_AccessZ {
-       private constructor(ptr: number, obj: bindings.LDKCOption_AccessZ.None) {
-               super(null, ptr);
-       }
-}
-       public static Option_AccessZ constructor_some(Access o) {
-               number ret = bindings.COption_AccessZ_some(o == null ? 0 : o.ptr);
-               Option_AccessZ ret_hu_conv = Option_AccessZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               ret_hu_conv.ptrs_to.add(o);
-               return ret_hu_conv;
-       }
-
-       public static Option_AccessZ constructor_none() {
-               number ret = bindings.COption_AccessZ_none();
-               Option_AccessZ ret_hu_conv = Option_AccessZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Option_C2Tuple_usizeTransactionZZ.ts b/ts/structs/Option_C2Tuple_usizeTransactionZZ.ts
deleted file mode 100644 (file)
index a3cb741..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-export default class COption_C2Tuple_usizeTransactionZZ extends CommonBase {
-       protected constructor(_dummy: object, ptr: number) { super(ptr); }
-       protected finalize() {
-               super.finalize();
-               if (this.ptr != 0) { bindings.COption_C2Tuple_usizeTransactionZZ_free(this.ptr); }
-       }
-       static constr_from_ptr(ptr: number): COption_C2Tuple_usizeTransactionZZ {
-               const raw_val: bindings.LDKCOption_C2Tuple_usizeTransactionZZ = bindings.LDKCOption_C2Tuple_usizeTransactionZZ_ref_from_ptr(ptr);
-               if (raw_val instanceof bindings.LDKCOption_C2Tuple_usizeTransactionZZ.Some) {
-                       return new Some(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKCOption_C2Tuple_usizeTransactionZZ.None) {
-                       return new None(this.ptr, raw_val);
-               }
-               throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
-       }
-
-}
-export class Some extends COption_C2Tuple_usizeTransactionZZ {
-       public some: TwoTuple_usizeTransactionZ;
-       private constructor(ptr: number, obj: bindings.LDKCOption_C2Tuple_usizeTransactionZZ.Some) {
-               super(null, ptr);
-               const some: number = obj.some;
-               TwoTuple_usizeTransactionZ some_hu_conv = new TwoTuple_usizeTransactionZ(null, some);
-                       some_hu_conv.ptrs_to.add(this);
-               this.some = some_hu_conv;
-       }
-}
-export class None extends COption_C2Tuple_usizeTransactionZZ {
-       private constructor(ptr: number, obj: bindings.LDKCOption_C2Tuple_usizeTransactionZZ.None) {
-               super(null, ptr);
-       }
-}
-       public static Option_C2Tuple_usizeTransactionZZ constructor_some(TwoTuple_usizeTransactionZ o) {
-               number ret = bindings.COption_C2Tuple_usizeTransactionZZ_some(o != null ? o.ptr : 0);
-               Option_C2Tuple_usizeTransactionZZ ret_hu_conv = Option_C2Tuple_usizeTransactionZZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static Option_C2Tuple_usizeTransactionZZ constructor_none() {
-               number ret = bindings.COption_C2Tuple_usizeTransactionZZ_none();
-               Option_C2Tuple_usizeTransactionZZ ret_hu_conv = Option_C2Tuple_usizeTransactionZZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.COption_C2Tuple_usizeTransactionZZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Option_C2Tuple_usizeTransactionZZ clone() {
-               number ret = bindings.COption_C2Tuple_usizeTransactionZZ_clone(this.ptr);
-               Option_C2Tuple_usizeTransactionZZ ret_hu_conv = Option_C2Tuple_usizeTransactionZZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Option_CVec_NetAddressZZ.ts b/ts/structs/Option_CVec_NetAddressZZ.ts
deleted file mode 100644 (file)
index 9cbac12..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-export default class COption_CVec_NetAddressZZ extends CommonBase {
-       protected constructor(_dummy: object, ptr: number) { super(ptr); }
-       protected finalize() {
-               super.finalize();
-               if (this.ptr != 0) { bindings.COption_CVec_NetAddressZZ_free(this.ptr); }
-       }
-       static constr_from_ptr(ptr: number): COption_CVec_NetAddressZZ {
-               const raw_val: bindings.LDKCOption_CVec_NetAddressZZ = bindings.LDKCOption_CVec_NetAddressZZ_ref_from_ptr(ptr);
-               if (raw_val instanceof bindings.LDKCOption_CVec_NetAddressZZ.Some) {
-                       return new Some(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKCOption_CVec_NetAddressZZ.None) {
-                       return new None(this.ptr, raw_val);
-               }
-               throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
-       }
-
-}
-export class Some extends COption_CVec_NetAddressZZ {
-       public some: NetAddress[];
-       private constructor(ptr: number, obj: bindings.LDKCOption_CVec_NetAddressZZ.Some) {
-               super(null, ptr);
-               const some: number[] = obj.some;
-               NetAddress[] some_conv_12_arr = new NetAddress[some.length];
-                       for (int m = 0; m < some.length; m++) {
-                               number some_conv_12 = some[m];
-                               NetAddress some_conv_12_hu_conv = NetAddress.constr_from_ptr(some_conv_12);
-                               some_conv_12_hu_conv.ptrs_to.add(this);
-                               some_conv_12_arr[m] = some_conv_12_hu_conv;
-                       }
-               this.some = some_conv_12_arr;
-       }
-}
-export class None extends COption_CVec_NetAddressZZ {
-       private constructor(ptr: number, obj: bindings.LDKCOption_CVec_NetAddressZZ.None) {
-               super(null, ptr);
-       }
-}
-       public static Option_CVec_NetAddressZZ constructor_some(NetAddress[] o) {
-               number ret = bindings.COption_CVec_NetAddressZZ_some(o != null ? Arrays.stream(o).map(o_conv_12 -> o_conv_12.ptr).toArray(number[]::new) : null);
-               Option_CVec_NetAddressZZ ret_hu_conv = Option_CVec_NetAddressZZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static Option_CVec_NetAddressZZ constructor_none() {
-               number ret = bindings.COption_CVec_NetAddressZZ_none();
-               Option_CVec_NetAddressZZ ret_hu_conv = Option_CVec_NetAddressZZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.COption_CVec_NetAddressZZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Option_CVec_NetAddressZZ clone() {
-               number ret = bindings.COption_CVec_NetAddressZZ_clone(this.ptr);
-               Option_CVec_NetAddressZZ ret_hu_conv = Option_CVec_NetAddressZZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Option_ClosureReasonZ.ts b/ts/structs/Option_ClosureReasonZ.ts
deleted file mode 100644 (file)
index c77ca35..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-export default class COption_ClosureReasonZ extends CommonBase {
-       protected constructor(_dummy: object, ptr: number) { super(ptr); }
-       protected finalize() {
-               super.finalize();
-               if (this.ptr != 0) { bindings.COption_ClosureReasonZ_free(this.ptr); }
-       }
-       static constr_from_ptr(ptr: number): COption_ClosureReasonZ {
-               const raw_val: bindings.LDKCOption_ClosureReasonZ = bindings.LDKCOption_ClosureReasonZ_ref_from_ptr(ptr);
-               if (raw_val instanceof bindings.LDKCOption_ClosureReasonZ.Some) {
-                       return new Some(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKCOption_ClosureReasonZ.None) {
-                       return new None(this.ptr, raw_val);
-               }
-               throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
-       }
-
-}
-export class Some extends COption_ClosureReasonZ {
-       public some: ClosureReason;
-       private constructor(ptr: number, obj: bindings.LDKCOption_ClosureReasonZ.Some) {
-               super(null, ptr);
-               const some: number = obj.some;
-               ClosureReason some_hu_conv = ClosureReason.constr_from_ptr(some);
-                       some_hu_conv.ptrs_to.add(this);
-               this.some = some_hu_conv;
-       }
-}
-export class None extends COption_ClosureReasonZ {
-       private constructor(ptr: number, obj: bindings.LDKCOption_ClosureReasonZ.None) {
-               super(null, ptr);
-       }
-}
-       public static Option_ClosureReasonZ constructor_some(ClosureReason o) {
-               number ret = bindings.COption_ClosureReasonZ_some(o.ptr);
-               Option_ClosureReasonZ ret_hu_conv = Option_ClosureReasonZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static Option_ClosureReasonZ constructor_none() {
-               number ret = bindings.COption_ClosureReasonZ_none();
-               Option_ClosureReasonZ ret_hu_conv = Option_ClosureReasonZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.COption_ClosureReasonZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Option_ClosureReasonZ clone() {
-               number ret = bindings.COption_ClosureReasonZ_clone(this.ptr);
-               Option_ClosureReasonZ ret_hu_conv = Option_ClosureReasonZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Option_EventZ.ts b/ts/structs/Option_EventZ.ts
deleted file mode 100644 (file)
index a1a60c1..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-export default class COption_EventZ extends CommonBase {
-       protected constructor(_dummy: object, ptr: number) { super(ptr); }
-       protected finalize() {
-               super.finalize();
-               if (this.ptr != 0) { bindings.COption_EventZ_free(this.ptr); }
-       }
-       static constr_from_ptr(ptr: number): COption_EventZ {
-               const raw_val: bindings.LDKCOption_EventZ = bindings.LDKCOption_EventZ_ref_from_ptr(ptr);
-               if (raw_val instanceof bindings.LDKCOption_EventZ.Some) {
-                       return new Some(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKCOption_EventZ.None) {
-                       return new None(this.ptr, raw_val);
-               }
-               throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
-       }
-
-}
-export class Some extends COption_EventZ {
-       public some: Event;
-       private constructor(ptr: number, obj: bindings.LDKCOption_EventZ.Some) {
-               super(null, ptr);
-               const some: number = obj.some;
-               Event some_hu_conv = Event.constr_from_ptr(some);
-                       some_hu_conv.ptrs_to.add(this);
-               this.some = some_hu_conv;
-       }
-}
-export class None extends COption_EventZ {
-       private constructor(ptr: number, obj: bindings.LDKCOption_EventZ.None) {
-               super(null, ptr);
-       }
-}
-       public static Option_EventZ constructor_some(Event o) {
-               number ret = bindings.COption_EventZ_some(o.ptr);
-               Option_EventZ ret_hu_conv = Option_EventZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static Option_EventZ constructor_none() {
-               number ret = bindings.COption_EventZ_none();
-               Option_EventZ ret_hu_conv = Option_EventZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.COption_EventZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Option_EventZ clone() {
-               number ret = bindings.COption_EventZ_clone(this.ptr);
-               Option_EventZ ret_hu_conv = Option_EventZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Option_FilterZ.ts b/ts/structs/Option_FilterZ.ts
deleted file mode 100644 (file)
index a9b7699..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-export default class COption_FilterZ extends CommonBase {
-       protected constructor(_dummy: object, ptr: number) { super(ptr); }
-       protected finalize() {
-               super.finalize();
-               if (this.ptr != 0) { bindings.COption_FilterZ_free(this.ptr); }
-       }
-       static constr_from_ptr(ptr: number): COption_FilterZ {
-               const raw_val: bindings.LDKCOption_FilterZ = bindings.LDKCOption_FilterZ_ref_from_ptr(ptr);
-               if (raw_val instanceof bindings.LDKCOption_FilterZ.Some) {
-                       return new Some(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKCOption_FilterZ.None) {
-                       return new None(this.ptr, raw_val);
-               }
-               throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
-       }
-
-}
-export class Some extends COption_FilterZ {
-       public some: Filter;
-       private constructor(ptr: number, obj: bindings.LDKCOption_FilterZ.Some) {
-               super(null, ptr);
-               const some: number = obj.some;
-               Filter ret_hu_conv = new Filter(null, some);
-                       ret_hu_conv.ptrs_to.add(this);
-               this.some = ret_hu_conv;
-       }
-}
-export class None extends COption_FilterZ {
-       private constructor(ptr: number, obj: bindings.LDKCOption_FilterZ.None) {
-               super(null, ptr);
-       }
-}
-       public static Option_FilterZ constructor_some(Filter o) {
-               number ret = bindings.COption_FilterZ_some(o == null ? 0 : o.ptr);
-               Option_FilterZ ret_hu_conv = Option_FilterZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               ret_hu_conv.ptrs_to.add(o);
-               return ret_hu_conv;
-       }
-
-       public static Option_FilterZ constructor_none() {
-               number ret = bindings.COption_FilterZ_none();
-               Option_FilterZ ret_hu_conv = Option_FilterZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Option_MonitorEventZ.ts b/ts/structs/Option_MonitorEventZ.ts
deleted file mode 100644 (file)
index 143df5c..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-export default class COption_MonitorEventZ extends CommonBase {
-       protected constructor(_dummy: object, ptr: number) { super(ptr); }
-       protected finalize() {
-               super.finalize();
-               if (this.ptr != 0) { bindings.COption_MonitorEventZ_free(this.ptr); }
-       }
-       static constr_from_ptr(ptr: number): COption_MonitorEventZ {
-               const raw_val: bindings.LDKCOption_MonitorEventZ = bindings.LDKCOption_MonitorEventZ_ref_from_ptr(ptr);
-               if (raw_val instanceof bindings.LDKCOption_MonitorEventZ.Some) {
-                       return new Some(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKCOption_MonitorEventZ.None) {
-                       return new None(this.ptr, raw_val);
-               }
-               throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
-       }
-
-}
-export class Some extends COption_MonitorEventZ {
-       public some: MonitorEvent;
-       private constructor(ptr: number, obj: bindings.LDKCOption_MonitorEventZ.Some) {
-               super(null, ptr);
-               const some: number = obj.some;
-               MonitorEvent some_hu_conv = MonitorEvent.constr_from_ptr(some);
-                       some_hu_conv.ptrs_to.add(this);
-               this.some = some_hu_conv;
-       }
-}
-export class None extends COption_MonitorEventZ {
-       private constructor(ptr: number, obj: bindings.LDKCOption_MonitorEventZ.None) {
-               super(null, ptr);
-       }
-}
-       public static Option_MonitorEventZ constructor_some(MonitorEvent o) {
-               number ret = bindings.COption_MonitorEventZ_some(o.ptr);
-               Option_MonitorEventZ ret_hu_conv = Option_MonitorEventZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static Option_MonitorEventZ constructor_none() {
-               number ret = bindings.COption_MonitorEventZ_none();
-               Option_MonitorEventZ ret_hu_conv = Option_MonitorEventZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.COption_MonitorEventZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Option_MonitorEventZ clone() {
-               number ret = bindings.COption_MonitorEventZ_clone(this.ptr);
-               Option_MonitorEventZ ret_hu_conv = Option_MonitorEventZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Option_NetworkUpdateZ.ts b/ts/structs/Option_NetworkUpdateZ.ts
deleted file mode 100644 (file)
index 959f0c4..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-export default class COption_NetworkUpdateZ extends CommonBase {
-       protected constructor(_dummy: object, ptr: number) { super(ptr); }
-       protected finalize() {
-               super.finalize();
-               if (this.ptr != 0) { bindings.COption_NetworkUpdateZ_free(this.ptr); }
-       }
-       static constr_from_ptr(ptr: number): COption_NetworkUpdateZ {
-               const raw_val: bindings.LDKCOption_NetworkUpdateZ = bindings.LDKCOption_NetworkUpdateZ_ref_from_ptr(ptr);
-               if (raw_val instanceof bindings.LDKCOption_NetworkUpdateZ.Some) {
-                       return new Some(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKCOption_NetworkUpdateZ.None) {
-                       return new None(this.ptr, raw_val);
-               }
-               throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
-       }
-
-}
-export class Some extends COption_NetworkUpdateZ {
-       public some: NetworkUpdate;
-       private constructor(ptr: number, obj: bindings.LDKCOption_NetworkUpdateZ.Some) {
-               super(null, ptr);
-               const some: number = obj.some;
-               NetworkUpdate some_hu_conv = NetworkUpdate.constr_from_ptr(some);
-                       some_hu_conv.ptrs_to.add(this);
-               this.some = some_hu_conv;
-       }
-}
-export class None extends COption_NetworkUpdateZ {
-       private constructor(ptr: number, obj: bindings.LDKCOption_NetworkUpdateZ.None) {
-               super(null, ptr);
-       }
-}
-       public static Option_NetworkUpdateZ constructor_some(NetworkUpdate o) {
-               number ret = bindings.COption_NetworkUpdateZ_some(o.ptr);
-               Option_NetworkUpdateZ ret_hu_conv = Option_NetworkUpdateZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static Option_NetworkUpdateZ constructor_none() {
-               number ret = bindings.COption_NetworkUpdateZ_none();
-               Option_NetworkUpdateZ ret_hu_conv = Option_NetworkUpdateZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.COption_NetworkUpdateZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Option_NetworkUpdateZ clone() {
-               number ret = bindings.COption_NetworkUpdateZ_clone(this.ptr);
-               Option_NetworkUpdateZ ret_hu_conv = Option_NetworkUpdateZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Option_TypeZ.ts b/ts/structs/Option_TypeZ.ts
deleted file mode 100644 (file)
index b691928..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-export default class COption_TypeZ extends CommonBase {
-       protected constructor(_dummy: object, ptr: number) { super(ptr); }
-       protected finalize() {
-               super.finalize();
-               if (this.ptr != 0) { bindings.COption_TypeZ_free(this.ptr); }
-       }
-       static constr_from_ptr(ptr: number): COption_TypeZ {
-               const raw_val: bindings.LDKCOption_TypeZ = bindings.LDKCOption_TypeZ_ref_from_ptr(ptr);
-               if (raw_val instanceof bindings.LDKCOption_TypeZ.Some) {
-                       return new Some(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKCOption_TypeZ.None) {
-                       return new None(this.ptr, raw_val);
-               }
-               throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
-       }
-
-}
-export class Some extends COption_TypeZ {
-       public some: Type;
-       private constructor(ptr: number, obj: bindings.LDKCOption_TypeZ.Some) {
-               super(null, ptr);
-               const some: number = obj.some;
-               Type ret_hu_conv = new Type(null, some);
-                       ret_hu_conv.ptrs_to.add(this);
-               this.some = ret_hu_conv;
-       }
-}
-export class None extends COption_TypeZ {
-       private constructor(ptr: number, obj: bindings.LDKCOption_TypeZ.None) {
-               super(null, ptr);
-       }
-}
-       public static Option_TypeZ constructor_some(Type o) {
-               number ret = bindings.COption_TypeZ_some(o == null ? 0 : o.ptr);
-               Option_TypeZ ret_hu_conv = Option_TypeZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               ret_hu_conv.ptrs_to.add(o);
-               return ret_hu_conv;
-       }
-
-       public static Option_TypeZ constructor_none() {
-               number ret = bindings.COption_TypeZ_none();
-               Option_TypeZ ret_hu_conv = Option_TypeZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.COption_TypeZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Option_TypeZ clone() {
-               number ret = bindings.COption_TypeZ_clone(this.ptr);
-               Option_TypeZ ret_hu_conv = Option_TypeZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Option_u16Z.ts b/ts/structs/Option_u16Z.ts
deleted file mode 100644 (file)
index 0c7441d..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-export default class COption_u16Z extends CommonBase {
-       protected constructor(_dummy: object, ptr: number) { super(ptr); }
-       protected finalize() {
-               super.finalize();
-               if (this.ptr != 0) { bindings.COption_u16Z_free(this.ptr); }
-       }
-       static constr_from_ptr(ptr: number): COption_u16Z {
-               const raw_val: bindings.LDKCOption_u16Z = bindings.LDKCOption_u16Z_ref_from_ptr(ptr);
-               if (raw_val instanceof bindings.LDKCOption_u16Z.Some) {
-                       return new Some(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKCOption_u16Z.None) {
-                       return new None(this.ptr, raw_val);
-               }
-               throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
-       }
-
-}
-export class Some extends COption_u16Z {
-       public some: number;
-       private constructor(ptr: number, obj: bindings.LDKCOption_u16Z.Some) {
-               super(null, ptr);
-               this.some = obj.some;
-       }
-}
-export class None extends COption_u16Z {
-       private constructor(ptr: number, obj: bindings.LDKCOption_u16Z.None) {
-               super(null, ptr);
-       }
-}
-       public static Option_u16Z constructor_some(number o) {
-               number ret = bindings.COption_u16Z_some(o);
-               Option_u16Z ret_hu_conv = Option_u16Z.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static Option_u16Z constructor_none() {
-               number ret = bindings.COption_u16Z_none();
-               Option_u16Z ret_hu_conv = Option_u16Z.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.COption_u16Z_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Option_u16Z clone() {
-               number ret = bindings.COption_u16Z_clone(this.ptr);
-               Option_u16Z ret_hu_conv = Option_u16Z.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Option_u32Z.ts b/ts/structs/Option_u32Z.ts
deleted file mode 100644 (file)
index a91f74c..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-export default class COption_u32Z extends CommonBase {
-       protected constructor(_dummy: object, ptr: number) { super(ptr); }
-       protected finalize() {
-               super.finalize();
-               if (this.ptr != 0) { bindings.COption_u32Z_free(this.ptr); }
-       }
-       static constr_from_ptr(ptr: number): COption_u32Z {
-               const raw_val: bindings.LDKCOption_u32Z = bindings.LDKCOption_u32Z_ref_from_ptr(ptr);
-               if (raw_val instanceof bindings.LDKCOption_u32Z.Some) {
-                       return new Some(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKCOption_u32Z.None) {
-                       return new None(this.ptr, raw_val);
-               }
-               throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
-       }
-
-}
-export class Some extends COption_u32Z {
-       public some: number;
-       private constructor(ptr: number, obj: bindings.LDKCOption_u32Z.Some) {
-               super(null, ptr);
-               this.some = obj.some;
-       }
-}
-export class None extends COption_u32Z {
-       private constructor(ptr: number, obj: bindings.LDKCOption_u32Z.None) {
-               super(null, ptr);
-       }
-}
-       public static Option_u32Z constructor_some(number o) {
-               number ret = bindings.COption_u32Z_some(o);
-               Option_u32Z ret_hu_conv = Option_u32Z.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static Option_u32Z constructor_none() {
-               number ret = bindings.COption_u32Z_none();
-               Option_u32Z ret_hu_conv = Option_u32Z.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.COption_u32Z_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Option_u32Z clone() {
-               number ret = bindings.COption_u32Z_clone(this.ptr);
-               Option_u32Z ret_hu_conv = Option_u32Z.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Option_u64Z.ts b/ts/structs/Option_u64Z.ts
deleted file mode 100644 (file)
index 92aa678..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-export default class COption_u64Z extends CommonBase {
-       protected constructor(_dummy: object, ptr: number) { super(ptr); }
-       protected finalize() {
-               super.finalize();
-               if (this.ptr != 0) { bindings.COption_u64Z_free(this.ptr); }
-       }
-       static constr_from_ptr(ptr: number): COption_u64Z {
-               const raw_val: bindings.LDKCOption_u64Z = bindings.LDKCOption_u64Z_ref_from_ptr(ptr);
-               if (raw_val instanceof bindings.LDKCOption_u64Z.Some) {
-                       return new Some(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKCOption_u64Z.None) {
-                       return new None(this.ptr, raw_val);
-               }
-               throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
-       }
-
-}
-export class Some extends COption_u64Z {
-       public some: number;
-       private constructor(ptr: number, obj: bindings.LDKCOption_u64Z.Some) {
-               super(null, ptr);
-               this.some = obj.some;
-       }
-}
-export class None extends COption_u64Z {
-       private constructor(ptr: number, obj: bindings.LDKCOption_u64Z.None) {
-               super(null, ptr);
-       }
-}
-       public static Option_u64Z constructor_some(number o) {
-               number ret = bindings.COption_u64Z_some(o);
-               Option_u64Z ret_hu_conv = Option_u64Z.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static Option_u64Z constructor_none() {
-               number ret = bindings.COption_u64Z_none();
-               Option_u64Z ret_hu_conv = Option_u64Z.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.COption_u64Z_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Option_u64Z clone() {
-               number ret = bindings.COption_u64Z_clone(this.ptr);
-               Option_u64Z ret_hu_conv = Option_u64Z.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/OutPoint.ts b/ts/structs/OutPoint.ts
deleted file mode 100644 (file)
index 2900522..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class OutPoint extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.OutPoint_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_txid() {
-               Uint8Array ret = bindings.OutPoint_get_txid(this.ptr);
-               return ret;
-       }
-
-       public void set_txid(Uint8Array val) {
-               bindings.OutPoint_set_txid(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public number get_index() {
-               number ret = bindings.OutPoint_get_index(this.ptr);
-               return ret;
-       }
-
-       public void set_index(number val) {
-               bindings.OutPoint_set_index(this.ptr, val);
-       }
-
-       public static OutPoint constructor_new(Uint8Array txid_arg, number index_arg) {
-               number ret = bindings.OutPoint_new(InternalUtils.check_arr_len(txid_arg, 32), index_arg);
-               const ret_hu_conv: OutPoint = new OutPoint(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.OutPoint_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 boolean eq(OutPoint b) {
-               boolean ret = bindings.OutPoint_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
-               this.ptrs_to.add(b);
-               return ret;
-       }
-
-       public number hash() {
-               number ret = bindings.OutPoint_hash(this.ptr);
-               return ret;
-       }
-
-       public Uint8Array to_channel_id() {
-               Uint8Array ret = bindings.OutPoint_to_channel_id(this.ptr);
-               return ret;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.OutPoint_write(this.ptr);
-               return ret;
-       }
-
-       public static Result_OutPointDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.OutPoint_read(ser);
-               Result_OutPointDecodeErrorZ ret_hu_conv = Result_OutPointDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Payee.ts b/ts/structs/Payee.ts
deleted file mode 100644 (file)
index a981e13..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class Payee extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.Payee_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_pubkey() {
-               Uint8Array ret = bindings.Payee_get_pubkey(this.ptr);
-               return ret;
-       }
-
-       public void set_pubkey(Uint8Array val) {
-               bindings.Payee_set_pubkey(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public InvoiceFeatures get_features() {
-               number ret = bindings.Payee_get_features(this.ptr);
-               const ret_hu_conv: InvoiceFeatures = new InvoiceFeatures(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_features(InvoiceFeatures val) {
-               bindings.Payee_set_features(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public RouteHint[] get_route_hints() {
-               number[] ret = bindings.Payee_get_route_hints(this.ptr);
-               RouteHint[] ret_conv_11_arr = new RouteHint[ret.length];
-               for (int l = 0; l < ret.length; l++) {
-                       number ret_conv_11 = ret[l];
-                       const ret_conv_11_hu_conv: RouteHint = new RouteHint(null, ret_conv_11);
-                       ret_conv_11_hu_conv.ptrs_to.add(this);
-                       ret_conv_11_arr[l] = ret_conv_11_hu_conv;
-               }
-               return ret_conv_11_arr;
-       }
-
-       public void set_route_hints(RouteHint[] val) {
-               bindings.Payee_set_route_hints(this.ptr, val != null ? Arrays.stream(val).map(val_conv_11 -> val_conv_11 == null ? 0 : val_conv_11.ptr & ~1).toArray(number[]::new) : null);
-       }
-
-       public Option_u64Z get_expiry_time() {
-               number ret = bindings.Payee_get_expiry_time(this.ptr);
-               Option_u64Z ret_hu_conv = Option_u64Z.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_expiry_time(Option_u64Z val) {
-               bindings.Payee_set_expiry_time(this.ptr, val.ptr);
-       }
-
-       public static Payee constructor_new(Uint8Array pubkey_arg, InvoiceFeatures features_arg, RouteHint[] route_hints_arg, Option_u64Z expiry_time_arg) {
-               number ret = bindings.Payee_new(InternalUtils.check_arr_len(pubkey_arg, 33), features_arg == null ? 0 : features_arg.ptr & ~1, route_hints_arg != null ? Arrays.stream(route_hints_arg).map(route_hints_arg_conv_11 -> route_hints_arg_conv_11 == null ? 0 : route_hints_arg_conv_11.ptr & ~1).toArray(number[]::new) : null, expiry_time_arg.ptr);
-               const ret_hu_conv: Payee = new Payee(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.Payee_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Payee clone() {
-               number ret = bindings.Payee_clone(this.ptr);
-               const ret_hu_conv: Payee = new Payee(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public number hash() {
-               number ret = bindings.Payee_hash(this.ptr);
-               return ret;
-       }
-
-       public boolean eq(Payee b) {
-               boolean ret = bindings.Payee_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
-               this.ptrs_to.add(b);
-               return ret;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.Payee_write(this.ptr);
-               return ret;
-       }
-
-       public static Result_PayeeDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.Payee_read(ser);
-               Result_PayeeDecodeErrorZ ret_hu_conv = Result_PayeeDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Payee constructor_from_node_id(Uint8Array pubkey) {
-               number ret = bindings.Payee_from_node_id(InternalUtils.check_arr_len(pubkey, 33));
-               const ret_hu_conv: Payee = new Payee(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static Payee constructor_for_keysend(Uint8Array pubkey) {
-               number ret = bindings.Payee_for_keysend(InternalUtils.check_arr_len(pubkey, 33));
-               const ret_hu_conv: Payee = new Payee(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/PayeePubKey.ts b/ts/structs/PayeePubKey.ts
deleted file mode 100644 (file)
index e7d9c93..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class PayeePubKey extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.PayeePubKey_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_a() {
-               Uint8Array ret = bindings.PayeePubKey_get_a(this.ptr);
-               return ret;
-       }
-
-       public void set_a(Uint8Array val) {
-               bindings.PayeePubKey_set_a(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public static PayeePubKey constructor_new(Uint8Array a_arg) {
-               number ret = bindings.PayeePubKey_new(InternalUtils.check_arr_len(a_arg, 33));
-               const ret_hu_conv: PayeePubKey = new PayeePubKey(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.PayeePubKey_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public PayeePubKey clone() {
-               number ret = bindings.PayeePubKey_clone(this.ptr);
-               const ret_hu_conv: PayeePubKey = new PayeePubKey(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public number hash() {
-               number ret = bindings.PayeePubKey_hash(this.ptr);
-               return ret;
-       }
-
-       public boolean eq(PayeePubKey b) {
-               boolean ret = bindings.PayeePubKey_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
-               this.ptrs_to.add(b);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/Payer.ts b/ts/structs/Payer.ts
deleted file mode 100644 (file)
index cab5397..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export class Payer extends CommonBase {
-
-                bindings_instance?: bindings.LDKPayer;
-
-                constructor(ptr?: number, arg?: bindings.LDKPayer) {
-                    if (Number.isFinite(ptr)) {
-                                       super(ptr);
-                                       this.bindings_instance = null;
-                                   } else {
-                                       // TODO: private constructor instantiation
-                                       super(bindings.LDKPayer_new(arg));
-                                       this.ptrs_to.push(arg);
-                                       
-                                   }
-                }
-
-                protected finalize() {
-                    if (this.ptr != 0) {
-                        bindings.Payer_free(this.ptr);
-                    }
-                    super.finalize();
-                }
-
-                static new_impl(arg: PayerInterface): Payer {
-                    const impl_holder: LDKPayerHolder = new LDKPayerHolder();
-                    let structImplementation = <bindings.LDKPayer>{
-                        // todo: in-line interface filling
-                        node_id (): Uint8Array {
-                                                       Uint8Array ret = arg.node_id();
-                               result: Uint8Array = InternalUtils.check_arr_len(ret, 33);
-                               return result;
-                                               },
-
-                                               first_hops (): number[] {
-                                                       ChannelDetails[] ret = arg.first_hops();
-                               result: number[] = ret != null ? Arrays.stream(ret).map(ret_conv_16 -> ret_conv_16 == null ? 0 : ret_conv_16.clone_ptr()).toArray(number[]::new) : null;
-                               return result;
-                                               },
-
-                                               send_payment (route: number, payment_hash: Uint8Array, payment_secret: Uint8Array): number {
-                                                       const route_hu_conv: Route = new Route(null, route);
-                                                       Result_PaymentIdPaymentSendFailureZ ret = arg.send_payment(route_hu_conv, payment_hash, payment_secret);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               send_spontaneous_payment (route: number, payment_preimage: Uint8Array): number {
-                                                       const route_hu_conv: Route = new Route(null, route);
-                                                       Result_PaymentIdPaymentSendFailureZ ret = arg.send_spontaneous_payment(route_hu_conv, payment_preimage);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               retry_payment (route: number, payment_id: Uint8Array): number {
-                                                       const route_hu_conv: Route = new Route(null, route);
-                                                       Result_NonePaymentSendFailureZ ret = arg.retry_payment(route_hu_conv, payment_id);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               abandon_payment (payment_id: Uint8Array): void {
-                                                       arg.abandon_payment(payment_id);
-                                               },
-
-                                               
-                    };
-                    impl_holder.held = new Payer (null, structImplementation);
-                }
-            }
-
-            export interface PayerInterface {
-                node_id(): Uint8Array;
-                               first_hops(): ChannelDetails[];
-                               send_payment(route: Route, payment_hash: Uint8Array, payment_secret: Uint8Array): Result_PaymentIdPaymentSendFailureZ;
-                               send_spontaneous_payment(route: Route, payment_preimage: Uint8Array): Result_PaymentIdPaymentSendFailureZ;
-                               retry_payment(route: Route, payment_id: Uint8Array): Result_NonePaymentSendFailureZ;
-                               abandon_payment(payment_id: Uint8Array): void;
-                               
-            }
-
-            class LDKPayerHolder {
-                held: Payer;
-            }
-       public Uint8Array node_id() {
-               Uint8Array ret = bindings.Payer_node_id(this.ptr);
-               return ret;
-       }
-
-       public ChannelDetails[] first_hops() {
-               number[] ret = bindings.Payer_first_hops(this.ptr);
-               ChannelDetails[] ret_conv_16_arr = new ChannelDetails[ret.length];
-               for (int q = 0; q < ret.length; q++) {
-                       number ret_conv_16 = ret[q];
-                       const ret_conv_16_hu_conv: ChannelDetails = new ChannelDetails(null, ret_conv_16);
-                       ret_conv_16_hu_conv.ptrs_to.add(this);
-                       ret_conv_16_arr[q] = ret_conv_16_hu_conv;
-               }
-               return ret_conv_16_arr;
-       }
-
-       public Result_PaymentIdPaymentSendFailureZ send_payment(Route route, Uint8Array payment_hash, Uint8Array payment_secret) {
-               number ret = bindings.Payer_send_payment(this.ptr, route == null ? 0 : route.ptr & ~1, InternalUtils.check_arr_len(payment_hash, 32), InternalUtils.check_arr_len(payment_secret, 32));
-               Result_PaymentIdPaymentSendFailureZ ret_hu_conv = Result_PaymentIdPaymentSendFailureZ.constr_from_ptr(ret);
-               this.ptrs_to.add(route);
-               return ret_hu_conv;
-       }
-
-       public Result_PaymentIdPaymentSendFailureZ send_spontaneous_payment(Route route, Uint8Array payment_preimage) {
-               number ret = bindings.Payer_send_spontaneous_payment(this.ptr, route == null ? 0 : route.ptr & ~1, InternalUtils.check_arr_len(payment_preimage, 32));
-               Result_PaymentIdPaymentSendFailureZ ret_hu_conv = Result_PaymentIdPaymentSendFailureZ.constr_from_ptr(ret);
-               this.ptrs_to.add(route);
-               return ret_hu_conv;
-       }
-
-       public Result_NonePaymentSendFailureZ retry_payment(Route route, Uint8Array payment_id) {
-               number ret = bindings.Payer_retry_payment(this.ptr, route == null ? 0 : route.ptr & ~1, InternalUtils.check_arr_len(payment_id, 32));
-               Result_NonePaymentSendFailureZ ret_hu_conv = Result_NonePaymentSendFailureZ.constr_from_ptr(ret);
-               this.ptrs_to.add(route);
-               return ret_hu_conv;
-       }
-
-       public void abandon_payment(Uint8Array payment_id) {
-               bindings.Payer_abandon_payment(this.ptr, InternalUtils.check_arr_len(payment_id, 32));
-       }
-
-}
diff --git a/ts/structs/PaymentError.ts b/ts/structs/PaymentError.ts
deleted file mode 100644 (file)
index 37ee22e..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-export default class PaymentError extends CommonBase {
-       protected constructor(_dummy: object, ptr: number) { super(ptr); }
-       protected finalize() {
-               super.finalize();
-               if (this.ptr != 0) { bindings.PaymentError_free(this.ptr); }
-       }
-       static constr_from_ptr(ptr: number): PaymentError {
-               const raw_val: bindings.LDKPaymentError = bindings.LDKPaymentError_ref_from_ptr(ptr);
-               if (raw_val instanceof bindings.LDKPaymentError.Invoice) {
-                       return new Invoice(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKPaymentError.Routing) {
-                       return new Routing(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKPaymentError.Sending) {
-                       return new Sending(this.ptr, raw_val);
-               }
-               throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
-       }
-
-}
-export class Invoice extends PaymentError {
-       public invoice: String;
-       private constructor(ptr: number, obj: bindings.LDKPaymentError.Invoice) {
-               super(null, ptr);
-               this.invoice = obj.invoice;
-       }
-}
-export class Routing extends PaymentError {
-       public routing: LightningError;
-       private constructor(ptr: number, obj: bindings.LDKPaymentError.Routing) {
-               super(null, ptr);
-               const routing: number = obj.routing;
-               const routing_hu_conv: LightningError = new LightningError(null, routing);
-                       routing_hu_conv.ptrs_to.add(this);
-               this.routing = routing_hu_conv;
-       }
-}
-export class Sending extends PaymentError {
-       public sending: PaymentSendFailure;
-       private constructor(ptr: number, obj: bindings.LDKPaymentError.Sending) {
-               super(null, ptr);
-               const sending: number = obj.sending;
-               PaymentSendFailure sending_hu_conv = PaymentSendFailure.constr_from_ptr(sending);
-                       sending_hu_conv.ptrs_to.add(this);
-               this.sending = sending_hu_conv;
-       }
-}
-       public number clone_ptr() {
-               number ret = bindings.PaymentError_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public PaymentError clone() {
-               number ret = bindings.PaymentError_clone(this.ptr);
-               PaymentError ret_hu_conv = PaymentError.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static PaymentError constructor_invoice(String a) {
-               number ret = bindings.PaymentError_invoice(a);
-               PaymentError ret_hu_conv = PaymentError.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static PaymentError constructor_routing(LightningError a) {
-               number ret = bindings.PaymentError_routing(a == null ? 0 : a.ptr & ~1);
-               PaymentError ret_hu_conv = PaymentError.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static PaymentError constructor_sending(PaymentSendFailure a) {
-               number ret = bindings.PaymentError_sending(a.ptr);
-               PaymentError ret_hu_conv = PaymentError.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/PaymentPurpose.ts b/ts/structs/PaymentPurpose.ts
deleted file mode 100644 (file)
index a71834b..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-export default class PaymentPurpose extends CommonBase {
-       protected constructor(_dummy: object, ptr: number) { super(ptr); }
-       protected finalize() {
-               super.finalize();
-               if (this.ptr != 0) { bindings.PaymentPurpose_free(this.ptr); }
-       }
-       static constr_from_ptr(ptr: number): PaymentPurpose {
-               const raw_val: bindings.LDKPaymentPurpose = bindings.LDKPaymentPurpose_ref_from_ptr(ptr);
-               if (raw_val instanceof bindings.LDKPaymentPurpose.InvoicePayment) {
-                       return new InvoicePayment(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKPaymentPurpose.SpontaneousPayment) {
-                       return new SpontaneousPayment(this.ptr, raw_val);
-               }
-               throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
-       }
-
-}
-export class InvoicePayment extends PaymentPurpose {
-       public payment_preimage: Uint8Array;
-       public payment_secret: Uint8Array;
-       private constructor(ptr: number, obj: bindings.LDKPaymentPurpose.InvoicePayment) {
-               super(null, ptr);
-               this.payment_preimage = obj.payment_preimage;
-               this.payment_secret = obj.payment_secret;
-       }
-}
-export class SpontaneousPayment extends PaymentPurpose {
-       public spontaneous_payment: Uint8Array;
-       private constructor(ptr: number, obj: bindings.LDKPaymentPurpose.SpontaneousPayment) {
-               super(null, ptr);
-               this.spontaneous_payment = obj.spontaneous_payment;
-       }
-}
-       public number clone_ptr() {
-               number ret = bindings.PaymentPurpose_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public PaymentPurpose clone() {
-               number ret = bindings.PaymentPurpose_clone(this.ptr);
-               PaymentPurpose ret_hu_conv = PaymentPurpose.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static PaymentPurpose constructor_invoice_payment(Uint8Array payment_preimage, Uint8Array payment_secret) {
-               number ret = bindings.PaymentPurpose_invoice_payment(InternalUtils.check_arr_len(payment_preimage, 32), InternalUtils.check_arr_len(payment_secret, 32));
-               PaymentPurpose ret_hu_conv = PaymentPurpose.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static PaymentPurpose constructor_spontaneous_payment(Uint8Array a) {
-               number ret = bindings.PaymentPurpose_spontaneous_payment(InternalUtils.check_arr_len(a, 32));
-               PaymentPurpose ret_hu_conv = PaymentPurpose.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/PaymentSendFailure.ts b/ts/structs/PaymentSendFailure.ts
deleted file mode 100644 (file)
index 8255368..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-export default class PaymentSendFailure extends CommonBase {
-       protected constructor(_dummy: object, ptr: number) { super(ptr); }
-       protected finalize() {
-               super.finalize();
-               if (this.ptr != 0) { bindings.PaymentSendFailure_free(this.ptr); }
-       }
-       static constr_from_ptr(ptr: number): PaymentSendFailure {
-               const raw_val: bindings.LDKPaymentSendFailure = bindings.LDKPaymentSendFailure_ref_from_ptr(ptr);
-               if (raw_val instanceof bindings.LDKPaymentSendFailure.ParameterError) {
-                       return new ParameterError(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKPaymentSendFailure.PathParameterError) {
-                       return new PathParameterError(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKPaymentSendFailure.AllFailedRetrySafe) {
-                       return new AllFailedRetrySafe(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKPaymentSendFailure.PartialFailure) {
-                       return new PartialFailure(this.ptr, raw_val);
-               }
-               throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
-       }
-
-}
-export class ParameterError extends PaymentSendFailure {
-       public parameter_error: APIError;
-       private constructor(ptr: number, obj: bindings.LDKPaymentSendFailure.ParameterError) {
-               super(null, ptr);
-               const parameter_error: number = obj.parameter_error;
-               APIError parameter_error_hu_conv = APIError.constr_from_ptr(parameter_error);
-                       parameter_error_hu_conv.ptrs_to.add(this);
-               this.parameter_error = parameter_error_hu_conv;
-       }
-}
-export class PathParameterError extends PaymentSendFailure {
-       public path_parameter_error: Result_NoneAPIErrorZ[];
-       private constructor(ptr: number, obj: bindings.LDKPaymentSendFailure.PathParameterError) {
-               super(null, ptr);
-               const path_parameter_error: number[] = obj.path_parameter_error;
-               Result_NoneAPIErrorZ[] path_parameter_error_conv_22_arr = new Result_NoneAPIErrorZ[path_parameter_error.length];
-                       for (int w = 0; w < path_parameter_error.length; w++) {
-                               number path_parameter_error_conv_22 = path_parameter_error[w];
-                               Result_NoneAPIErrorZ path_parameter_error_conv_22_hu_conv = Result_NoneAPIErrorZ.constr_from_ptr(path_parameter_error_conv_22);
-                               path_parameter_error_conv_22_arr[w] = path_parameter_error_conv_22_hu_conv;
-                       }
-               this.path_parameter_error = path_parameter_error_conv_22_arr;
-       }
-}
-export class AllFailedRetrySafe extends PaymentSendFailure {
-       public all_failed_retry_safe: APIError[];
-       private constructor(ptr: number, obj: bindings.LDKPaymentSendFailure.AllFailedRetrySafe) {
-               super(null, ptr);
-               const all_failed_retry_safe: number[] = obj.all_failed_retry_safe;
-               APIError[] all_failed_retry_safe_conv_10_arr = new APIError[all_failed_retry_safe.length];
-                       for (int k = 0; k < all_failed_retry_safe.length; k++) {
-                               number all_failed_retry_safe_conv_10 = all_failed_retry_safe[k];
-                               APIError all_failed_retry_safe_conv_10_hu_conv = APIError.constr_from_ptr(all_failed_retry_safe_conv_10);
-                               all_failed_retry_safe_conv_10_hu_conv.ptrs_to.add(this);
-                               all_failed_retry_safe_conv_10_arr[k] = all_failed_retry_safe_conv_10_hu_conv;
-                       }
-               this.all_failed_retry_safe = all_failed_retry_safe_conv_10_arr;
-       }
-}
-export class PartialFailure extends PaymentSendFailure {
-       public results: Result_NoneAPIErrorZ[];
-       public failed_paths_retry: RouteParameters;
-       public payment_id: Uint8Array;
-       private constructor(ptr: number, obj: bindings.LDKPaymentSendFailure.PartialFailure) {
-               super(null, ptr);
-               const results: number[] = obj.results;
-               Result_NoneAPIErrorZ[] results_conv_22_arr = new Result_NoneAPIErrorZ[results.length];
-                       for (int w = 0; w < results.length; w++) {
-                               number results_conv_22 = results[w];
-                               Result_NoneAPIErrorZ results_conv_22_hu_conv = Result_NoneAPIErrorZ.constr_from_ptr(results_conv_22);
-                               results_conv_22_arr[w] = results_conv_22_hu_conv;
-                       }
-               this.results = results_conv_22_arr;
-               const failed_paths_retry: number = obj.failed_paths_retry;
-               const failed_paths_retry_hu_conv: RouteParameters = new RouteParameters(null, failed_paths_retry);
-                       failed_paths_retry_hu_conv.ptrs_to.add(this);
-               this.failed_paths_retry = failed_paths_retry_hu_conv;
-               this.payment_id = obj.payment_id;
-       }
-}
-       public number clone_ptr() {
-               number ret = bindings.PaymentSendFailure_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public PaymentSendFailure clone() {
-               number ret = bindings.PaymentSendFailure_clone(this.ptr);
-               PaymentSendFailure ret_hu_conv = PaymentSendFailure.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static PaymentSendFailure constructor_parameter_error(APIError a) {
-               number ret = bindings.PaymentSendFailure_parameter_error(a.ptr);
-               PaymentSendFailure ret_hu_conv = PaymentSendFailure.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static PaymentSendFailure constructor_path_parameter_error(Result_NoneAPIErrorZ[] a) {
-               number ret = bindings.PaymentSendFailure_path_parameter_error(a != null ? Arrays.stream(a).map(a_conv_22 -> a_conv_22 != null ? a_conv_22.ptr : 0).toArray(number[]::new) : null);
-               PaymentSendFailure ret_hu_conv = PaymentSendFailure.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static PaymentSendFailure constructor_all_failed_retry_safe(APIError[] a) {
-               number ret = bindings.PaymentSendFailure_all_failed_retry_safe(a != null ? Arrays.stream(a).map(a_conv_10 -> a_conv_10.ptr).toArray(number[]::new) : null);
-               PaymentSendFailure ret_hu_conv = PaymentSendFailure.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static PaymentSendFailure constructor_partial_failure(Result_NoneAPIErrorZ[] results, RouteParameters failed_paths_retry, Uint8Array payment_id) {
-               number ret = bindings.PaymentSendFailure_partial_failure(results != null ? Arrays.stream(results).map(results_conv_22 -> results_conv_22 != null ? results_conv_22.ptr : 0).toArray(number[]::new) : null, failed_paths_retry == null ? 0 : failed_paths_retry.ptr & ~1, InternalUtils.check_arr_len(payment_id, 32));
-               PaymentSendFailure ret_hu_conv = PaymentSendFailure.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/PeerHandleError.ts b/ts/structs/PeerHandleError.ts
deleted file mode 100644 (file)
index 7e80b4b..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class PeerHandleError extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.PeerHandleError_free(this.ptr);
-                    }
-                }
-       public boolean get_no_connection_possible() {
-               boolean ret = bindings.PeerHandleError_get_no_connection_possible(this.ptr);
-               return ret;
-       }
-
-       public void set_no_connection_possible(boolean val) {
-               bindings.PeerHandleError_set_no_connection_possible(this.ptr, val);
-       }
-
-       public static PeerHandleError constructor_new(boolean no_connection_possible_arg) {
-               number ret = bindings.PeerHandleError_new(no_connection_possible_arg);
-               const ret_hu_conv: PeerHandleError = new PeerHandleError(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.PeerHandleError_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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/PeerManager.ts b/ts/structs/PeerManager.ts
deleted file mode 100644 (file)
index 1900a95..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class PeerManager extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.PeerManager_free(this.ptr);
-                    }
-                }
-       public static PeerManager constructor_new(ChannelMessageHandler message_handler_chan_handler_arg, RoutingMessageHandler message_handler_route_handler_arg, Uint8Array our_node_secret, Uint8Array ephemeral_random_data, Logger logger, CustomMessageHandler custom_message_handler) {
-               number ret = bindings.PeerManager_new(bindings.MessageHandler_new(message_handler_chan_handler_arg == null ? 0 : message_handler_chan_handler_arg.ptr, message_handler_route_handler_arg == null ? 0 : message_handler_route_handler_arg.ptr), InternalUtils.check_arr_len(our_node_secret, 32), InternalUtils.check_arr_len(ephemeral_random_data, 32), logger == null ? 0 : logger.ptr, custom_message_handler == null ? 0 : custom_message_handler.ptr);
-               const ret_hu_conv: PeerManager = new PeerManager(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               ret_hu_conv.ptrs_to.add(message_handler_chan_handler_arg);
-               ret_hu_conv.ptrs_to.add(message_handler_route_handler_arg);
-               ret_hu_conv.ptrs_to.add(logger);
-               ret_hu_conv.ptrs_to.add(custom_message_handler);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array[] get_peer_node_ids() {
-               Uint8Array[] ret = bindings.PeerManager_get_peer_node_ids(this.ptr);
-               return ret;
-       }
-
-       public Result_CVec_u8ZPeerHandleErrorZ new_outbound_connection(Uint8Array their_node_id, SocketDescriptor descriptor) {
-               number ret = bindings.PeerManager_new_outbound_connection(this.ptr, InternalUtils.check_arr_len(their_node_id, 33), descriptor == null ? 0 : descriptor.ptr);
-               Result_CVec_u8ZPeerHandleErrorZ ret_hu_conv = Result_CVec_u8ZPeerHandleErrorZ.constr_from_ptr(ret);
-               this.ptrs_to.add(descriptor);
-               return ret_hu_conv;
-       }
-
-       public Result_NonePeerHandleErrorZ new_inbound_connection(SocketDescriptor descriptor) {
-               number ret = bindings.PeerManager_new_inbound_connection(this.ptr, descriptor == null ? 0 : descriptor.ptr);
-               Result_NonePeerHandleErrorZ ret_hu_conv = Result_NonePeerHandleErrorZ.constr_from_ptr(ret);
-               this.ptrs_to.add(descriptor);
-               return ret_hu_conv;
-       }
-
-       public Result_NonePeerHandleErrorZ write_buffer_space_avail(SocketDescriptor descriptor) {
-               number ret = bindings.PeerManager_write_buffer_space_avail(this.ptr, descriptor == null ? 0 : descriptor.ptr);
-               Result_NonePeerHandleErrorZ ret_hu_conv = Result_NonePeerHandleErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public Result_boolPeerHandleErrorZ read_event(SocketDescriptor peer_descriptor, Uint8Array data) {
-               number ret = bindings.PeerManager_read_event(this.ptr, peer_descriptor == null ? 0 : peer_descriptor.ptr, data);
-               Result_boolPeerHandleErrorZ ret_hu_conv = Result_boolPeerHandleErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public void process_events() {
-               bindings.PeerManager_process_events(this.ptr);
-       }
-
-       public void socket_disconnected(SocketDescriptor descriptor) {
-               bindings.PeerManager_socket_disconnected(this.ptr, descriptor == null ? 0 : descriptor.ptr);
-       }
-
-       public void disconnect_by_node_id(Uint8Array node_id, boolean no_connection_possible) {
-               bindings.PeerManager_disconnect_by_node_id(this.ptr, InternalUtils.check_arr_len(node_id, 33), no_connection_possible);
-       }
-
-       public void disconnect_all_peers() {
-               bindings.PeerManager_disconnect_all_peers(this.ptr);
-       }
-
-       public void timer_tick_occurred() {
-               bindings.PeerManager_timer_tick_occurred(this.ptr);
-       }
-
-}
diff --git a/ts/structs/Persist.ts b/ts/structs/Persist.ts
deleted file mode 100644 (file)
index 3a4b734..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export class Persist extends CommonBase {
-
-                bindings_instance?: bindings.LDKPersist;
-
-                constructor(ptr?: number, arg?: bindings.LDKPersist) {
-                    if (Number.isFinite(ptr)) {
-                                       super(ptr);
-                                       this.bindings_instance = null;
-                                   } else {
-                                       // TODO: private constructor instantiation
-                                       super(bindings.LDKPersist_new(arg));
-                                       this.ptrs_to.push(arg);
-                                       
-                                   }
-                }
-
-                protected finalize() {
-                    if (this.ptr != 0) {
-                        bindings.Persist_free(this.ptr);
-                    }
-                    super.finalize();
-                }
-
-                static new_impl(arg: PersistInterface): Persist {
-                    const impl_holder: LDKPersistHolder = new LDKPersistHolder();
-                    let structImplementation = <bindings.LDKPersist>{
-                        // todo: in-line interface filling
-                        persist_new_channel (channel_id: number, data: number, update_id: number): number {
-                                                       const channel_id_hu_conv: OutPoint = new OutPoint(null, channel_id);
-                               channel_id_hu_conv.ptrs_to.add(this);
-                                                       const data_hu_conv: ChannelMonitor = new ChannelMonitor(null, data);
-                                                       const update_id_hu_conv: MonitorUpdateId = new MonitorUpdateId(null, update_id);
-                               update_id_hu_conv.ptrs_to.add(this);
-                                                       Result_NoneChannelMonitorUpdateErrZ ret = arg.persist_new_channel(channel_id_hu_conv, data_hu_conv, update_id_hu_conv);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               update_persisted_channel (channel_id: number, update: number, data: number, update_id: number): number {
-                                                       const channel_id_hu_conv: OutPoint = new OutPoint(null, channel_id);
-                               channel_id_hu_conv.ptrs_to.add(this);
-                                                       const update_hu_conv: ChannelMonitorUpdate = new ChannelMonitorUpdate(null, update);
-                                                       const data_hu_conv: ChannelMonitor = new ChannelMonitor(null, data);
-                                                       const update_id_hu_conv: MonitorUpdateId = new MonitorUpdateId(null, update_id);
-                               update_id_hu_conv.ptrs_to.add(this);
-                                                       Result_NoneChannelMonitorUpdateErrZ ret = arg.update_persisted_channel(channel_id_hu_conv, update_hu_conv, data_hu_conv, update_id_hu_conv);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               
-                    };
-                    impl_holder.held = new Persist (null, structImplementation);
-                }
-            }
-
-            export interface PersistInterface {
-                persist_new_channel(channel_id: OutPoint, data: ChannelMonitor, update_id: MonitorUpdateId): Result_NoneChannelMonitorUpdateErrZ;
-                               update_persisted_channel(channel_id: OutPoint, update: ChannelMonitorUpdate, data: ChannelMonitor, update_id: MonitorUpdateId): Result_NoneChannelMonitorUpdateErrZ;
-                               
-            }
-
-            class LDKPersistHolder {
-                held: Persist;
-            }
-       public Result_NoneChannelMonitorUpdateErrZ persist_new_channel(OutPoint channel_id, ChannelMonitor data, MonitorUpdateId update_id) {
-               number ret = bindings.Persist_persist_new_channel(this.ptr, channel_id == null ? 0 : channel_id.ptr & ~1, data == null ? 0 : data.ptr & ~1, update_id == null ? 0 : update_id.ptr & ~1);
-               Result_NoneChannelMonitorUpdateErrZ ret_hu_conv = Result_NoneChannelMonitorUpdateErrZ.constr_from_ptr(ret);
-               this.ptrs_to.add(data);
-               return ret_hu_conv;
-       }
-
-       public Result_NoneChannelMonitorUpdateErrZ update_persisted_channel(OutPoint channel_id, ChannelMonitorUpdate update, ChannelMonitor data, MonitorUpdateId update_id) {
-               number ret = bindings.Persist_update_persisted_channel(this.ptr, channel_id == null ? 0 : channel_id.ptr & ~1, update == null ? 0 : update.ptr & ~1, data == null ? 0 : data.ptr & ~1, update_id == null ? 0 : update_id.ptr & ~1);
-               Result_NoneChannelMonitorUpdateErrZ ret_hu_conv = Result_NoneChannelMonitorUpdateErrZ.constr_from_ptr(ret);
-               this.ptrs_to.add(update);
-               this.ptrs_to.add(data);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Ping.ts b/ts/structs/Ping.ts
deleted file mode 100644 (file)
index e1a0a84..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class Ping extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.Ping_free(this.ptr);
-                    }
-                }
-       public number get_ponglen() {
-               number ret = bindings.Ping_get_ponglen(this.ptr);
-               return ret;
-       }
-
-       public void set_ponglen(number val) {
-               bindings.Ping_set_ponglen(this.ptr, val);
-       }
-
-       public number get_byteslen() {
-               number ret = bindings.Ping_get_byteslen(this.ptr);
-               return ret;
-       }
-
-       public void set_byteslen(number val) {
-               bindings.Ping_set_byteslen(this.ptr, val);
-       }
-
-       public static Ping constructor_new(number ponglen_arg, number byteslen_arg) {
-               number ret = bindings.Ping_new(ponglen_arg, byteslen_arg);
-               const ret_hu_conv: Ping = new Ping(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.Ping_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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;
-       }
-
-       public static Result_PingDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.Ping_read(ser);
-               Result_PingDecodeErrorZ ret_hu_conv = Result_PingDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Pong.ts b/ts/structs/Pong.ts
deleted file mode 100644 (file)
index c4749eb..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class Pong extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.Pong_free(this.ptr);
-                    }
-                }
-       public number get_byteslen() {
-               number ret = bindings.Pong_get_byteslen(this.ptr);
-               return ret;
-       }
-
-       public void set_byteslen(number val) {
-               bindings.Pong_set_byteslen(this.ptr, val);
-       }
-
-       public static Pong constructor_new(number byteslen_arg) {
-               number ret = bindings.Pong_new(byteslen_arg);
-               const ret_hu_conv: Pong = new Pong(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.Pong_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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;
-       }
-
-       public static Result_PongDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.Pong_read(ser);
-               Result_PongDecodeErrorZ ret_hu_conv = Result_PongDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/PositiveTimestamp.ts b/ts/structs/PositiveTimestamp.ts
deleted file mode 100644 (file)
index de2bdce..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class PositiveTimestamp extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.PositiveTimestamp_free(this.ptr);
-                    }
-                }
-       public boolean eq(PositiveTimestamp b) {
-               boolean ret = bindings.PositiveTimestamp_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
-               this.ptrs_to.add(b);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.PositiveTimestamp_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public PositiveTimestamp clone() {
-               number ret = bindings.PositiveTimestamp_clone(this.ptr);
-               const ret_hu_conv: PositiveTimestamp = new PositiveTimestamp(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static Result_PositiveTimestampCreationErrorZ constructor_from_unix_timestamp(number unix_seconds) {
-               number ret = bindings.PositiveTimestamp_from_unix_timestamp(unix_seconds);
-               Result_PositiveTimestampCreationErrorZ ret_hu_conv = Result_PositiveTimestampCreationErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_PositiveTimestampCreationErrorZ constructor_from_system_time(number time) {
-               number ret = bindings.PositiveTimestamp_from_system_time(time);
-               Result_PositiveTimestampCreationErrorZ ret_hu_conv = Result_PositiveTimestampCreationErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public number as_unix_timestamp() {
-               number ret = bindings.PositiveTimestamp_as_unix_timestamp(this.ptr);
-               return ret;
-       }
-
-       public number as_time() {
-               number ret = bindings.PositiveTimestamp_as_time(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/PrivateRoute.ts b/ts/structs/PrivateRoute.ts
deleted file mode 100644 (file)
index fc53d04..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class PrivateRoute extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.PrivateRoute_free(this.ptr);
-                    }
-                }
-       public number clone_ptr() {
-               number ret = bindings.PrivateRoute_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public PrivateRoute clone() {
-               number ret = bindings.PrivateRoute_clone(this.ptr);
-               const ret_hu_conv: PrivateRoute = new PrivateRoute(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public number hash() {
-               number ret = bindings.PrivateRoute_hash(this.ptr);
-               return ret;
-       }
-
-       public boolean eq(PrivateRoute b) {
-               boolean ret = bindings.PrivateRoute_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
-               this.ptrs_to.add(b);
-               return ret;
-       }
-
-       public static Result_PrivateRouteCreationErrorZ constructor_new(RouteHint hops) {
-               number ret = bindings.PrivateRoute_new(hops == null ? 0 : hops.ptr & ~1);
-               Result_PrivateRouteCreationErrorZ ret_hu_conv = Result_PrivateRouteCreationErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public RouteHint into_inner() {
-               number ret = bindings.PrivateRoute_into_inner(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/QueryChannelRange.ts b/ts/structs/QueryChannelRange.ts
deleted file mode 100644 (file)
index 11c394b..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class QueryChannelRange extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.QueryChannelRange_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_chain_hash() {
-               Uint8Array ret = bindings.QueryChannelRange_get_chain_hash(this.ptr);
-               return ret;
-       }
-
-       public void set_chain_hash(Uint8Array val) {
-               bindings.QueryChannelRange_set_chain_hash(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public number get_first_blocknum() {
-               number ret = bindings.QueryChannelRange_get_first_blocknum(this.ptr);
-               return ret;
-       }
-
-       public void set_first_blocknum(number val) {
-               bindings.QueryChannelRange_set_first_blocknum(this.ptr, val);
-       }
-
-       public number get_number_of_blocks() {
-               number ret = bindings.QueryChannelRange_get_number_of_blocks(this.ptr);
-               return ret;
-       }
-
-       public void set_number_of_blocks(number val) {
-               bindings.QueryChannelRange_set_number_of_blocks(this.ptr, val);
-       }
-
-       public static QueryChannelRange constructor_new(Uint8Array chain_hash_arg, number first_blocknum_arg, number number_of_blocks_arg) {
-               number ret = bindings.QueryChannelRange_new(InternalUtils.check_arr_len(chain_hash_arg, 32), first_blocknum_arg, number_of_blocks_arg);
-               const ret_hu_conv: QueryChannelRange = new QueryChannelRange(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.QueryChannelRange_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 number end_blocknum() {
-               number ret = bindings.QueryChannelRange_end_blocknum(this.ptr);
-               return ret;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.QueryChannelRange_write(this.ptr);
-               return ret;
-       }
-
-       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);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/QueryShortChannelIds.ts b/ts/structs/QueryShortChannelIds.ts
deleted file mode 100644 (file)
index 5afafcf..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class QueryShortChannelIds extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.QueryShortChannelIds_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_chain_hash() {
-               Uint8Array ret = bindings.QueryShortChannelIds_get_chain_hash(this.ptr);
-               return ret;
-       }
-
-       public void set_chain_hash(Uint8Array val) {
-               bindings.QueryShortChannelIds_set_chain_hash(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public void set_short_channel_ids(number[] val) {
-               bindings.QueryShortChannelIds_set_short_channel_ids(this.ptr, val);
-       }
-
-       public static QueryShortChannelIds constructor_new(Uint8Array chain_hash_arg, number[] short_channel_ids_arg) {
-               number ret = bindings.QueryShortChannelIds_new(InternalUtils.check_arr_len(chain_hash_arg, 32), short_channel_ids_arg);
-               const ret_hu_conv: QueryShortChannelIds = new QueryShortChannelIds(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.QueryShortChannelIds_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.QueryShortChannelIds_write(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/RawDataPart.ts b/ts/structs/RawDataPart.ts
deleted file mode 100644 (file)
index c453737..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class RawDataPart extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.RawDataPart_free(this.ptr);
-                    }
-                }
-       public PositiveTimestamp get_timestamp() {
-               number ret = bindings.RawDataPart_get_timestamp(this.ptr);
-               const ret_hu_conv: PositiveTimestamp = new PositiveTimestamp(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_timestamp(PositiveTimestamp val) {
-               bindings.RawDataPart_set_timestamp(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public boolean eq(RawDataPart b) {
-               boolean ret = bindings.RawDataPart_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
-               this.ptrs_to.add(b);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.RawDataPart_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public RawDataPart clone() {
-               number ret = bindings.RawDataPart_clone(this.ptr);
-               const ret_hu_conv: RawDataPart = new RawDataPart(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/RawInvoice.ts b/ts/structs/RawInvoice.ts
deleted file mode 100644 (file)
index 3cd1b04..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class RawInvoice extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.RawInvoice_free(this.ptr);
-                    }
-                }
-       public RawDataPart get_data() {
-               number ret = bindings.RawInvoice_get_data(this.ptr);
-               const ret_hu_conv: RawDataPart = new RawDataPart(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_data(RawDataPart val) {
-               bindings.RawInvoice_set_data(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public boolean eq(RawInvoice b) {
-               boolean ret = bindings.RawInvoice_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
-               this.ptrs_to.add(b);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.RawInvoice_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public RawInvoice clone() {
-               number ret = bindings.RawInvoice_clone(this.ptr);
-               const ret_hu_conv: RawInvoice = new RawInvoice(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array hash() {
-               Uint8Array ret = bindings.RawInvoice_hash(this.ptr);
-               return ret;
-       }
-
-       public Sha256 payment_hash() {
-               number ret = bindings.RawInvoice_payment_hash(this.ptr);
-               const ret_hu_conv: Sha256 = new Sha256(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Description description() {
-               number ret = bindings.RawInvoice_description(this.ptr);
-               const ret_hu_conv: Description = new Description(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public PayeePubKey payee_pub_key() {
-               number ret = bindings.RawInvoice_payee_pub_key(this.ptr);
-               const ret_hu_conv: PayeePubKey = new PayeePubKey(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Sha256 description_hash() {
-               number ret = bindings.RawInvoice_description_hash(this.ptr);
-               const ret_hu_conv: Sha256 = new Sha256(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public ExpiryTime expiry_time() {
-               number ret = bindings.RawInvoice_expiry_time(this.ptr);
-               const ret_hu_conv: ExpiryTime = new ExpiryTime(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public MinFinalCltvExpiry min_final_cltv_expiry() {
-               number ret = bindings.RawInvoice_min_final_cltv_expiry(this.ptr);
-               const ret_hu_conv: MinFinalCltvExpiry = new MinFinalCltvExpiry(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array payment_secret() {
-               Uint8Array ret = bindings.RawInvoice_payment_secret(this.ptr);
-               return ret;
-       }
-
-       public InvoiceFeatures features() {
-               number ret = bindings.RawInvoice_features(this.ptr);
-               const ret_hu_conv: InvoiceFeatures = new InvoiceFeatures(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public PrivateRoute[] private_routes() {
-               number[] ret = bindings.RawInvoice_private_routes(this.ptr);
-               PrivateRoute[] ret_conv_14_arr = new PrivateRoute[ret.length];
-               for (int o = 0; o < ret.length; o++) {
-                       number ret_conv_14 = ret[o];
-                       const ret_conv_14_hu_conv: PrivateRoute = new PrivateRoute(null, ret_conv_14);
-                       ret_conv_14_hu_conv.ptrs_to.add(this);
-                       ret_conv_14_arr[o] = ret_conv_14_hu_conv;
-               }
-               return ret_conv_14_arr;
-       }
-
-       public Option_u64Z amount_pico_btc() {
-               number ret = bindings.RawInvoice_amount_pico_btc(this.ptr);
-               Option_u64Z ret_hu_conv = Option_u64Z.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Currency currency() {
-               Currency ret = bindings.RawInvoice_currency(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/ReadOnlyNetworkGraph.ts b/ts/structs/ReadOnlyNetworkGraph.ts
deleted file mode 100644 (file)
index b0a1e25..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ReadOnlyNetworkGraph extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ReadOnlyNetworkGraph_free(this.ptr);
-                    }
-                }
-       public Option_CVec_NetAddressZZ get_addresses(Uint8Array pubkey) {
-               number ret = bindings.ReadOnlyNetworkGraph_get_addresses(this.ptr, InternalUtils.check_arr_len(pubkey, 33));
-               Option_CVec_NetAddressZZ ret_hu_conv = Option_CVec_NetAddressZZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Record.ts b/ts/structs/Record.ts
deleted file mode 100644 (file)
index 95fc0e2..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class Record extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.Record_free(this.ptr);
-                    }
-                }
-       public Level get_level() {
-               Level ret = bindings.Record_get_level(this.ptr);
-               return ret;
-       }
-
-       public void set_level(Level val) {
-               bindings.Record_set_level(this.ptr, val);
-       }
-
-       public String get_args() {
-               String ret = bindings.Record_get_args(this.ptr);
-               return ret;
-       }
-
-       public void set_args(String val) {
-               bindings.Record_set_args(this.ptr, val);
-       }
-
-       public String get_module_path() {
-               String ret = bindings.Record_get_module_path(this.ptr);
-               return ret;
-       }
-
-       public void set_module_path(String val) {
-               bindings.Record_set_module_path(this.ptr, val);
-       }
-
-       public String get_file() {
-               String ret = bindings.Record_get_file(this.ptr);
-               return ret;
-       }
-
-       public void set_file(String val) {
-               bindings.Record_set_file(this.ptr, val);
-       }
-
-       public number get_line() {
-               number ret = bindings.Record_get_line(this.ptr);
-               return ret;
-       }
-
-       public void set_line(number val) {
-               bindings.Record_set_line(this.ptr, val);
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.Record_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Record clone() {
-               number ret = bindings.Record_clone(this.ptr);
-               const ret_hu_conv: Record = new Record(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/ReplyChannelRange.ts b/ts/structs/ReplyChannelRange.ts
deleted file mode 100644 (file)
index 9d3ec28..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ReplyChannelRange extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ReplyChannelRange_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_chain_hash() {
-               Uint8Array ret = bindings.ReplyChannelRange_get_chain_hash(this.ptr);
-               return ret;
-       }
-
-       public void set_chain_hash(Uint8Array val) {
-               bindings.ReplyChannelRange_set_chain_hash(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public number get_first_blocknum() {
-               number ret = bindings.ReplyChannelRange_get_first_blocknum(this.ptr);
-               return ret;
-       }
-
-       public void set_first_blocknum(number val) {
-               bindings.ReplyChannelRange_set_first_blocknum(this.ptr, val);
-       }
-
-       public number get_number_of_blocks() {
-               number ret = bindings.ReplyChannelRange_get_number_of_blocks(this.ptr);
-               return ret;
-       }
-
-       public void set_number_of_blocks(number val) {
-               bindings.ReplyChannelRange_set_number_of_blocks(this.ptr, val);
-       }
-
-       public boolean get_sync_complete() {
-               boolean ret = bindings.ReplyChannelRange_get_sync_complete(this.ptr);
-               return ret;
-       }
-
-       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 sync_complete_arg, number[] short_channel_ids_arg) {
-               number ret = bindings.ReplyChannelRange_new(InternalUtils.check_arr_len(chain_hash_arg, 32), 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 number clone_ptr() {
-               number ret = bindings.ReplyChannelRange_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.ReplyChannelRange_write(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/ReplyShortChannelIdsEnd.ts b/ts/structs/ReplyShortChannelIdsEnd.ts
deleted file mode 100644 (file)
index 9c3d288..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ReplyShortChannelIdsEnd extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ReplyShortChannelIdsEnd_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_chain_hash() {
-               Uint8Array ret = bindings.ReplyShortChannelIdsEnd_get_chain_hash(this.ptr);
-               return ret;
-       }
-
-       public void set_chain_hash(Uint8Array val) {
-               bindings.ReplyShortChannelIdsEnd_set_chain_hash(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public boolean get_full_information() {
-               boolean ret = bindings.ReplyShortChannelIdsEnd_get_full_information(this.ptr);
-               return ret;
-       }
-
-       public void set_full_information(boolean val) {
-               bindings.ReplyShortChannelIdsEnd_set_full_information(this.ptr, val);
-       }
-
-       public static ReplyShortChannelIdsEnd constructor_new(Uint8Array chain_hash_arg, boolean full_information_arg) {
-               number ret = bindings.ReplyShortChannelIdsEnd_new(InternalUtils.check_arr_len(chain_hash_arg, 32), full_information_arg);
-               const ret_hu_conv: ReplyShortChannelIdsEnd = new ReplyShortChannelIdsEnd(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.ReplyShortChannelIdsEnd_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 write() {
-               Uint8Array ret = bindings.ReplyShortChannelIdsEnd_write(this.ptr);
-               return ret;
-       }
-
-       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);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_AcceptChannelDecodeErrorZ.ts b/ts/structs/Result_AcceptChannelDecodeErrorZ.ts
deleted file mode 100644 (file)
index f8dd75b..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_AcceptChannelDecodeErrorZ extends CommonBase {
-       private Result_AcceptChannelDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_AcceptChannelDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_AcceptChannelDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_AcceptChannelDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_AcceptChannelDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_AcceptChannelDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_AcceptChannelDecodeErrorZ_OK extends Result_AcceptChannelDecodeErrorZ {
-               public final AcceptChannel res;
-               private Result_AcceptChannelDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_AcceptChannelDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: AcceptChannel = new AcceptChannel(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_AcceptChannelDecodeErrorZ_Err extends Result_AcceptChannelDecodeErrorZ {
-               public final DecodeError err;
-               private Result_AcceptChannelDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_AcceptChannelDecodeErrorZ_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 static Result_AcceptChannelDecodeErrorZ constructor_ok(AcceptChannel o) {
-               number ret = bindings.CResult_AcceptChannelDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_AcceptChannelDecodeErrorZ ret_hu_conv = Result_AcceptChannelDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_AcceptChannelDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_AcceptChannelDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_AcceptChannelDecodeErrorZ ret_hu_conv = Result_AcceptChannelDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_AcceptChannelDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_AcceptChannelDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_AcceptChannelDecodeErrorZ clone() {
-               number ret = bindings.CResult_AcceptChannelDecodeErrorZ_clone(this.ptr);
-               Result_AcceptChannelDecodeErrorZ ret_hu_conv = Result_AcceptChannelDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_AnnouncementSignaturesDecodeErrorZ.ts b/ts/structs/Result_AnnouncementSignaturesDecodeErrorZ.ts
deleted file mode 100644 (file)
index 745f0e4..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_AnnouncementSignaturesDecodeErrorZ extends CommonBase {
-       private Result_AnnouncementSignaturesDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_AnnouncementSignaturesDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_AnnouncementSignaturesDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_AnnouncementSignaturesDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_AnnouncementSignaturesDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_AnnouncementSignaturesDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_AnnouncementSignaturesDecodeErrorZ_OK extends Result_AnnouncementSignaturesDecodeErrorZ {
-               public final AnnouncementSignatures res;
-               private Result_AnnouncementSignaturesDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_AnnouncementSignaturesDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: AnnouncementSignatures = new AnnouncementSignatures(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_AnnouncementSignaturesDecodeErrorZ_Err extends Result_AnnouncementSignaturesDecodeErrorZ {
-               public final DecodeError err;
-               private Result_AnnouncementSignaturesDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_AnnouncementSignaturesDecodeErrorZ_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 static Result_AnnouncementSignaturesDecodeErrorZ constructor_ok(AnnouncementSignatures o) {
-               number ret = bindings.CResult_AnnouncementSignaturesDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_AnnouncementSignaturesDecodeErrorZ ret_hu_conv = Result_AnnouncementSignaturesDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_AnnouncementSignaturesDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_AnnouncementSignaturesDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_AnnouncementSignaturesDecodeErrorZ ret_hu_conv = Result_AnnouncementSignaturesDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_AnnouncementSignaturesDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_AnnouncementSignaturesDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_AnnouncementSignaturesDecodeErrorZ clone() {
-               number ret = bindings.CResult_AnnouncementSignaturesDecodeErrorZ_clone(this.ptr);
-               Result_AnnouncementSignaturesDecodeErrorZ ret_hu_conv = Result_AnnouncementSignaturesDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_BuiltCommitmentTransactionDecodeErrorZ.ts b/ts/structs/Result_BuiltCommitmentTransactionDecodeErrorZ.ts
deleted file mode 100644 (file)
index 5aef308..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_BuiltCommitmentTransactionDecodeErrorZ extends CommonBase {
-       private Result_BuiltCommitmentTransactionDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_BuiltCommitmentTransactionDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_BuiltCommitmentTransactionDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_BuiltCommitmentTransactionDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_BuiltCommitmentTransactionDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_BuiltCommitmentTransactionDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_BuiltCommitmentTransactionDecodeErrorZ_OK extends Result_BuiltCommitmentTransactionDecodeErrorZ {
-               public final BuiltCommitmentTransaction res;
-               private Result_BuiltCommitmentTransactionDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_BuiltCommitmentTransactionDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: BuiltCommitmentTransaction = new BuiltCommitmentTransaction(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_BuiltCommitmentTransactionDecodeErrorZ_Err extends Result_BuiltCommitmentTransactionDecodeErrorZ {
-               public final DecodeError err;
-               private Result_BuiltCommitmentTransactionDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_BuiltCommitmentTransactionDecodeErrorZ_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 static Result_BuiltCommitmentTransactionDecodeErrorZ constructor_ok(BuiltCommitmentTransaction o) {
-               number ret = bindings.CResult_BuiltCommitmentTransactionDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_BuiltCommitmentTransactionDecodeErrorZ ret_hu_conv = Result_BuiltCommitmentTransactionDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_BuiltCommitmentTransactionDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_BuiltCommitmentTransactionDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_BuiltCommitmentTransactionDecodeErrorZ ret_hu_conv = Result_BuiltCommitmentTransactionDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_BuiltCommitmentTransactionDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_BuiltCommitmentTransactionDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_BuiltCommitmentTransactionDecodeErrorZ clone() {
-               number ret = bindings.CResult_BuiltCommitmentTransactionDecodeErrorZ_clone(this.ptr);
-               Result_BuiltCommitmentTransactionDecodeErrorZ ret_hu_conv = Result_BuiltCommitmentTransactionDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.ts b/ts/structs/Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.ts
deleted file mode 100644 (file)
index 91789ad..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ extends CommonBase {
-       private Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_OK extends Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ {
-               public final TwoTuple_BlockHashChannelManagerZ res;
-               private Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_ok(ptr);
-                       TwoTuple_BlockHashChannelManagerZ res_hu_conv = new TwoTuple_BlockHashChannelManagerZ(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_Err extends Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ {
-               public final DecodeError err;
-               private Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_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 static Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ constructor_ok(TwoTuple_BlockHashChannelManagerZ o) {
-               number ret = bindings.CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(o != null ? o.ptr : 0);
-               Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ ret_hu_conv = Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ ret_hu_conv = Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ.ts b/ts/structs/Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ.ts
deleted file mode 100644 (file)
index 3a2f12c..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ extends CommonBase {
-       private Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_OK extends Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ {
-               public final TwoTuple_BlockHashChannelMonitorZ res;
-               private Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_ok(ptr);
-                       TwoTuple_BlockHashChannelMonitorZ res_hu_conv = new TwoTuple_BlockHashChannelMonitorZ(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_Err extends Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ {
-               public final DecodeError err;
-               private Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_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 static Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ constructor_ok(TwoTuple_BlockHashChannelMonitorZ o) {
-               number ret = bindings.CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(o != null ? o.ptr : 0);
-               Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ ret_hu_conv = Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ ret_hu_conv = Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ clone() {
-               number ret = bindings.CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone(this.ptr);
-               Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ ret_hu_conv = Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ.ts b/ts/structs/Result_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ.ts
deleted file mode 100644 (file)
index 5708e41..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ extends CommonBase {
-       private Result_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(ptr); } super.finalize();
-       }
-
-       static Result_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_is_ok(ptr)) {
-                       return new Result_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_OK(null, ptr);
-               } else {
-                       return new Result_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_OK extends Result_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ {
-               public final TwoTuple_PaymentHashPaymentIdZ res;
-               private Result_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_ok(ptr);
-                       TwoTuple_PaymentHashPaymentIdZ res_hu_conv = new TwoTuple_PaymentHashPaymentIdZ(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_Err extends Result_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ {
-               public final PaymentSendFailure err;
-               private Result_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_err(ptr);
-                       PaymentSendFailure err_hu_conv = PaymentSendFailure.constr_from_ptr(err);
-                       err_hu_conv.ptrs_to.add(this);
-                       this.err = err_hu_conv;
-               }
-       }
-
-       public static Result_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ constructor_ok(TwoTuple_PaymentHashPaymentIdZ o) {
-               number ret = bindings.CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_ok(o != null ? o.ptr : 0);
-               Result_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ ret_hu_conv = Result_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ constructor_err(PaymentSendFailure e) {
-               number ret = bindings.CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_err(e.ptr);
-               Result_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ ret_hu_conv = Result_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ clone() {
-               number ret = bindings.CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone(this.ptr);
-               Result_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ ret_hu_conv = Result_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ.ts b/ts/structs/Result_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ.ts
deleted file mode 100644 (file)
index 26e3a96..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ extends CommonBase {
-       private Result_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_is_ok(ptr)) {
-                       return new Result_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_OK extends Result_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ {
-               public final TwoTuple_PaymentHashPaymentSecretZ res;
-               private Result_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_ok(ptr);
-                       TwoTuple_PaymentHashPaymentSecretZ res_hu_conv = new TwoTuple_PaymentHashPaymentSecretZ(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_Err extends Result_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ {
-               public final APIError err;
-               private Result_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_get_err(ptr);
-                       APIError err_hu_conv = APIError.constr_from_ptr(err);
-                       err_hu_conv.ptrs_to.add(this);
-                       this.err = err_hu_conv;
-               }
-       }
-
-       public static Result_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ constructor_ok(TwoTuple_PaymentHashPaymentSecretZ o) {
-               number ret = bindings.CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_ok(o != null ? o.ptr : 0);
-               Result_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ ret_hu_conv = Result_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ constructor_err(APIError e) {
-               number ret = bindings.CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_err(e.ptr);
-               Result_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ ret_hu_conv = Result_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ clone() {
-               number ret = bindings.CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone(this.ptr);
-               Result_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ ret_hu_conv = Result_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_C2Tuple_PaymentHashPaymentSecretZNoneZ.ts b/ts/structs/Result_C2Tuple_PaymentHashPaymentSecretZNoneZ.ts
deleted file mode 100644 (file)
index 290ae95..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_C2Tuple_PaymentHashPaymentSecretZNoneZ extends CommonBase {
-       private Result_C2Tuple_PaymentHashPaymentSecretZNoneZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(ptr); } super.finalize();
-       }
-
-       static Result_C2Tuple_PaymentHashPaymentSecretZNoneZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_is_ok(ptr)) {
-                       return new Result_C2Tuple_PaymentHashPaymentSecretZNoneZ_OK(null, ptr);
-               } else {
-                       return new Result_C2Tuple_PaymentHashPaymentSecretZNoneZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_C2Tuple_PaymentHashPaymentSecretZNoneZ_OK extends Result_C2Tuple_PaymentHashPaymentSecretZNoneZ {
-               public final TwoTuple_PaymentHashPaymentSecretZ res;
-               private Result_C2Tuple_PaymentHashPaymentSecretZNoneZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_get_ok(ptr);
-                       TwoTuple_PaymentHashPaymentSecretZ res_hu_conv = new TwoTuple_PaymentHashPaymentSecretZ(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_C2Tuple_PaymentHashPaymentSecretZNoneZ_Err extends Result_C2Tuple_PaymentHashPaymentSecretZNoneZ {
-               private Result_C2Tuple_PaymentHashPaymentSecretZNoneZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-               }
-       }
-
-       public static Result_C2Tuple_PaymentHashPaymentSecretZNoneZ constructor_ok(TwoTuple_PaymentHashPaymentSecretZ o) {
-               number ret = bindings.CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_ok(o != null ? o.ptr : 0);
-               Result_C2Tuple_PaymentHashPaymentSecretZNoneZ ret_hu_conv = Result_C2Tuple_PaymentHashPaymentSecretZNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_C2Tuple_PaymentHashPaymentSecretZNoneZ constructor_err() {
-               number ret = bindings.CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_err();
-               Result_C2Tuple_PaymentHashPaymentSecretZNoneZ ret_hu_conv = Result_C2Tuple_PaymentHashPaymentSecretZNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_C2Tuple_PaymentHashPaymentSecretZNoneZ clone() {
-               number ret = bindings.CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone(this.ptr);
-               Result_C2Tuple_PaymentHashPaymentSecretZNoneZ ret_hu_conv = Result_C2Tuple_PaymentHashPaymentSecretZNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_C2Tuple_SignatureCVec_SignatureZZNoneZ.ts b/ts/structs/Result_C2Tuple_SignatureCVec_SignatureZZNoneZ.ts
deleted file mode 100644 (file)
index 5ff71a0..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_C2Tuple_SignatureCVec_SignatureZZNoneZ extends CommonBase {
-       private Result_C2Tuple_SignatureCVec_SignatureZZNoneZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(ptr); } super.finalize();
-       }
-
-       static Result_C2Tuple_SignatureCVec_SignatureZZNoneZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_is_ok(ptr)) {
-                       return new Result_C2Tuple_SignatureCVec_SignatureZZNoneZ_OK(null, ptr);
-               } else {
-                       return new Result_C2Tuple_SignatureCVec_SignatureZZNoneZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_C2Tuple_SignatureCVec_SignatureZZNoneZ_OK extends Result_C2Tuple_SignatureCVec_SignatureZZNoneZ {
-               public final TwoTuple_SignatureCVec_SignatureZZ res;
-               private Result_C2Tuple_SignatureCVec_SignatureZZNoneZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_ok(ptr);
-                       TwoTuple_SignatureCVec_SignatureZZ res_hu_conv = new TwoTuple_SignatureCVec_SignatureZZ(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_C2Tuple_SignatureCVec_SignatureZZNoneZ_Err extends Result_C2Tuple_SignatureCVec_SignatureZZNoneZ {
-               private Result_C2Tuple_SignatureCVec_SignatureZZNoneZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-               }
-       }
-
-       public static Result_C2Tuple_SignatureCVec_SignatureZZNoneZ constructor_ok(TwoTuple_SignatureCVec_SignatureZZ o) {
-               number ret = bindings.CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(o != null ? o.ptr : 0);
-               Result_C2Tuple_SignatureCVec_SignatureZZNoneZ ret_hu_conv = Result_C2Tuple_SignatureCVec_SignatureZZNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_C2Tuple_SignatureCVec_SignatureZZNoneZ constructor_err() {
-               number ret = bindings.CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err();
-               Result_C2Tuple_SignatureCVec_SignatureZZNoneZ ret_hu_conv = Result_C2Tuple_SignatureCVec_SignatureZZNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_C2Tuple_SignatureCVec_SignatureZZNoneZ clone() {
-               number ret = bindings.CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(this.ptr);
-               Result_C2Tuple_SignatureCVec_SignatureZZNoneZ ret_hu_conv = Result_C2Tuple_SignatureCVec_SignatureZZNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_COption_ClosureReasonZDecodeErrorZ.ts b/ts/structs/Result_COption_ClosureReasonZDecodeErrorZ.ts
deleted file mode 100644 (file)
index c526901..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_COption_ClosureReasonZDecodeErrorZ extends CommonBase {
-       private Result_COption_ClosureReasonZDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_COption_ClosureReasonZDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_COption_ClosureReasonZDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_COption_ClosureReasonZDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_COption_ClosureReasonZDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_COption_ClosureReasonZDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_COption_ClosureReasonZDecodeErrorZ_OK extends Result_COption_ClosureReasonZDecodeErrorZ {
-               public final Option_ClosureReasonZ res;
-               private Result_COption_ClosureReasonZDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_COption_ClosureReasonZDecodeErrorZ_get_ok(ptr);
-                       Option_ClosureReasonZ res_hu_conv = Option_ClosureReasonZ.constr_from_ptr(res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_COption_ClosureReasonZDecodeErrorZ_Err extends Result_COption_ClosureReasonZDecodeErrorZ {
-               public final DecodeError err;
-               private Result_COption_ClosureReasonZDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_COption_ClosureReasonZDecodeErrorZ_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 static Result_COption_ClosureReasonZDecodeErrorZ constructor_ok(Option_ClosureReasonZ o) {
-               number ret = bindings.CResult_COption_ClosureReasonZDecodeErrorZ_ok(o.ptr);
-               Result_COption_ClosureReasonZDecodeErrorZ ret_hu_conv = Result_COption_ClosureReasonZDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_COption_ClosureReasonZDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_COption_ClosureReasonZDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_COption_ClosureReasonZDecodeErrorZ ret_hu_conv = Result_COption_ClosureReasonZDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_COption_ClosureReasonZDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_COption_ClosureReasonZDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_COption_ClosureReasonZDecodeErrorZ clone() {
-               number ret = bindings.CResult_COption_ClosureReasonZDecodeErrorZ_clone(this.ptr);
-               Result_COption_ClosureReasonZDecodeErrorZ ret_hu_conv = Result_COption_ClosureReasonZDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_COption_EventZDecodeErrorZ.ts b/ts/structs/Result_COption_EventZDecodeErrorZ.ts
deleted file mode 100644 (file)
index b346fc2..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_COption_EventZDecodeErrorZ extends CommonBase {
-       private Result_COption_EventZDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_COption_EventZDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_COption_EventZDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_COption_EventZDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_COption_EventZDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_COption_EventZDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_COption_EventZDecodeErrorZ_OK extends Result_COption_EventZDecodeErrorZ {
-               public final Option_EventZ res;
-               private Result_COption_EventZDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_COption_EventZDecodeErrorZ_get_ok(ptr);
-                       Option_EventZ res_hu_conv = Option_EventZ.constr_from_ptr(res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_COption_EventZDecodeErrorZ_Err extends Result_COption_EventZDecodeErrorZ {
-               public final DecodeError err;
-               private Result_COption_EventZDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_COption_EventZDecodeErrorZ_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 static Result_COption_EventZDecodeErrorZ constructor_ok(Option_EventZ o) {
-               number ret = bindings.CResult_COption_EventZDecodeErrorZ_ok(o.ptr);
-               Result_COption_EventZDecodeErrorZ ret_hu_conv = Result_COption_EventZDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_COption_EventZDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_COption_EventZDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_COption_EventZDecodeErrorZ ret_hu_conv = Result_COption_EventZDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_COption_EventZDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_COption_EventZDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_COption_EventZDecodeErrorZ clone() {
-               number ret = bindings.CResult_COption_EventZDecodeErrorZ_clone(this.ptr);
-               Result_COption_EventZDecodeErrorZ ret_hu_conv = Result_COption_EventZDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_COption_MonitorEventZDecodeErrorZ.ts b/ts/structs/Result_COption_MonitorEventZDecodeErrorZ.ts
deleted file mode 100644 (file)
index af7855e..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_COption_MonitorEventZDecodeErrorZ extends CommonBase {
-       private Result_COption_MonitorEventZDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_COption_MonitorEventZDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_COption_MonitorEventZDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_COption_MonitorEventZDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_COption_MonitorEventZDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_COption_MonitorEventZDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_COption_MonitorEventZDecodeErrorZ_OK extends Result_COption_MonitorEventZDecodeErrorZ {
-               public final Option_MonitorEventZ res;
-               private Result_COption_MonitorEventZDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_COption_MonitorEventZDecodeErrorZ_get_ok(ptr);
-                       Option_MonitorEventZ res_hu_conv = Option_MonitorEventZ.constr_from_ptr(res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_COption_MonitorEventZDecodeErrorZ_Err extends Result_COption_MonitorEventZDecodeErrorZ {
-               public final DecodeError err;
-               private Result_COption_MonitorEventZDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_COption_MonitorEventZDecodeErrorZ_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 static Result_COption_MonitorEventZDecodeErrorZ constructor_ok(Option_MonitorEventZ o) {
-               number ret = bindings.CResult_COption_MonitorEventZDecodeErrorZ_ok(o.ptr);
-               Result_COption_MonitorEventZDecodeErrorZ ret_hu_conv = Result_COption_MonitorEventZDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_COption_MonitorEventZDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_COption_MonitorEventZDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_COption_MonitorEventZDecodeErrorZ ret_hu_conv = Result_COption_MonitorEventZDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_COption_MonitorEventZDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_COption_MonitorEventZDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_COption_MonitorEventZDecodeErrorZ clone() {
-               number ret = bindings.CResult_COption_MonitorEventZDecodeErrorZ_clone(this.ptr);
-               Result_COption_MonitorEventZDecodeErrorZ ret_hu_conv = Result_COption_MonitorEventZDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_COption_NetworkUpdateZDecodeErrorZ.ts b/ts/structs/Result_COption_NetworkUpdateZDecodeErrorZ.ts
deleted file mode 100644 (file)
index 970174c..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_COption_NetworkUpdateZDecodeErrorZ extends CommonBase {
-       private Result_COption_NetworkUpdateZDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_COption_NetworkUpdateZDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_COption_NetworkUpdateZDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_COption_NetworkUpdateZDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_COption_NetworkUpdateZDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_COption_NetworkUpdateZDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_COption_NetworkUpdateZDecodeErrorZ_OK extends Result_COption_NetworkUpdateZDecodeErrorZ {
-               public final Option_NetworkUpdateZ res;
-               private Result_COption_NetworkUpdateZDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_COption_NetworkUpdateZDecodeErrorZ_get_ok(ptr);
-                       Option_NetworkUpdateZ res_hu_conv = Option_NetworkUpdateZ.constr_from_ptr(res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_COption_NetworkUpdateZDecodeErrorZ_Err extends Result_COption_NetworkUpdateZDecodeErrorZ {
-               public final DecodeError err;
-               private Result_COption_NetworkUpdateZDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_COption_NetworkUpdateZDecodeErrorZ_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 static Result_COption_NetworkUpdateZDecodeErrorZ constructor_ok(Option_NetworkUpdateZ o) {
-               number ret = bindings.CResult_COption_NetworkUpdateZDecodeErrorZ_ok(o.ptr);
-               Result_COption_NetworkUpdateZDecodeErrorZ ret_hu_conv = Result_COption_NetworkUpdateZDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_COption_NetworkUpdateZDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_COption_NetworkUpdateZDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_COption_NetworkUpdateZDecodeErrorZ ret_hu_conv = Result_COption_NetworkUpdateZDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_COption_NetworkUpdateZDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_COption_NetworkUpdateZDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_COption_NetworkUpdateZDecodeErrorZ clone() {
-               number ret = bindings.CResult_COption_NetworkUpdateZDecodeErrorZ_clone(this.ptr);
-               Result_COption_NetworkUpdateZDecodeErrorZ ret_hu_conv = Result_COption_NetworkUpdateZDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_COption_TypeZDecodeErrorZ.ts b/ts/structs/Result_COption_TypeZDecodeErrorZ.ts
deleted file mode 100644 (file)
index 3207ea4..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_COption_TypeZDecodeErrorZ extends CommonBase {
-       private Result_COption_TypeZDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_COption_TypeZDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_COption_TypeZDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_COption_TypeZDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_COption_TypeZDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_COption_TypeZDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_COption_TypeZDecodeErrorZ_OK extends Result_COption_TypeZDecodeErrorZ {
-               public final Option_TypeZ res;
-               private Result_COption_TypeZDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_COption_TypeZDecodeErrorZ_get_ok(ptr);
-                       Option_TypeZ res_hu_conv = Option_TypeZ.constr_from_ptr(res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_COption_TypeZDecodeErrorZ_Err extends Result_COption_TypeZDecodeErrorZ {
-               public final DecodeError err;
-               private Result_COption_TypeZDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_COption_TypeZDecodeErrorZ_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 static Result_COption_TypeZDecodeErrorZ constructor_ok(Option_TypeZ o) {
-               number ret = bindings.CResult_COption_TypeZDecodeErrorZ_ok(o.ptr);
-               Result_COption_TypeZDecodeErrorZ ret_hu_conv = Result_COption_TypeZDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_COption_TypeZDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_COption_TypeZDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_COption_TypeZDecodeErrorZ ret_hu_conv = Result_COption_TypeZDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_COption_TypeZDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_COption_TypeZDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_COption_TypeZDecodeErrorZ clone() {
-               number ret = bindings.CResult_COption_TypeZDecodeErrorZ_clone(this.ptr);
-               Result_COption_TypeZDecodeErrorZ ret_hu_conv = Result_COption_TypeZDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ.ts b/ts/structs/Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ.ts
deleted file mode 100644 (file)
index e211d81..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ extends CommonBase {
-       private Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_is_ok(ptr)) {
-                       return new Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_OK extends Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ {
-               public final TwoTuple_BlockHashChannelMonitorZ[] res;
-               private Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number[] res = bindings.LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_get_ok(ptr);
-                       TwoTuple_BlockHashChannelMonitorZ[] res_conv_35_arr = new TwoTuple_BlockHashChannelMonitorZ[res.length];
-                       for (int j = 0; j < res.length; j++) {
-                               number res_conv_35 = res[j];
-                               TwoTuple_BlockHashChannelMonitorZ res_conv_35_hu_conv = new TwoTuple_BlockHashChannelMonitorZ(null, res_conv_35);
-                               res_conv_35_hu_conv.ptrs_to.add(this);
-                               res_conv_35_arr[j] = res_conv_35_hu_conv;
-                       }
-                       this.res = res_conv_35_arr;
-               }
-       }
-
-       public static final class Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_Err extends Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ {
-               public final IOError err;
-               private Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.err = bindings.LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_get_err(ptr);
-               }
-       }
-
-       public static Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ constructor_ok(TwoTuple_BlockHashChannelMonitorZ[] o) {
-               number ret = bindings.CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_ok(o != null ? Arrays.stream(o).map(o_conv_35 -> o_conv_35 != null ? o_conv_35.ptr : 0).toArray(number[]::new) : null);
-               Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ ret_hu_conv = Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ constructor_err(IOError e) {
-               number ret = bindings.CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_err(e);
-               Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ ret_hu_conv = Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ clone() {
-               number ret = bindings.CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_clone(this.ptr);
-               Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ ret_hu_conv = Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_CVec_CVec_u8ZZNoneZ.ts b/ts/structs/Result_CVec_CVec_u8ZZNoneZ.ts
deleted file mode 100644 (file)
index 25385d1..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_CVec_CVec_u8ZZNoneZ extends CommonBase {
-       private Result_CVec_CVec_u8ZZNoneZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_CVec_CVec_u8ZZNoneZ_free(ptr); } super.finalize();
-       }
-
-       static Result_CVec_CVec_u8ZZNoneZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_CVec_CVec_u8ZZNoneZ_is_ok(ptr)) {
-                       return new Result_CVec_CVec_u8ZZNoneZ_OK(null, ptr);
-               } else {
-                       return new Result_CVec_CVec_u8ZZNoneZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_CVec_CVec_u8ZZNoneZ_OK extends Result_CVec_CVec_u8ZZNoneZ {
-               public final Uint8Array[] res;
-               private Result_CVec_CVec_u8ZZNoneZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.res = bindings.LDKCResult_CVec_CVec_u8ZZNoneZ_get_ok(ptr);
-               }
-       }
-
-       public static final class Result_CVec_CVec_u8ZZNoneZ_Err extends Result_CVec_CVec_u8ZZNoneZ {
-               private Result_CVec_CVec_u8ZZNoneZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-               }
-       }
-
-       public static Result_CVec_CVec_u8ZZNoneZ constructor_ok(Uint8Array[] o) {
-               number ret = bindings.CResult_CVec_CVec_u8ZZNoneZ_ok(o);
-               Result_CVec_CVec_u8ZZNoneZ ret_hu_conv = Result_CVec_CVec_u8ZZNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_CVec_CVec_u8ZZNoneZ constructor_err() {
-               number ret = bindings.CResult_CVec_CVec_u8ZZNoneZ_err();
-               Result_CVec_CVec_u8ZZNoneZ ret_hu_conv = Result_CVec_CVec_u8ZZNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_CVec_CVec_u8ZZNoneZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_CVec_CVec_u8ZZNoneZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_CVec_CVec_u8ZZNoneZ clone() {
-               number ret = bindings.CResult_CVec_CVec_u8ZZNoneZ_clone(this.ptr);
-               Result_CVec_CVec_u8ZZNoneZ ret_hu_conv = Result_CVec_CVec_u8ZZNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_CVec_SignatureZNoneZ.ts b/ts/structs/Result_CVec_SignatureZNoneZ.ts
deleted file mode 100644 (file)
index bb52620..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_CVec_SignatureZNoneZ extends CommonBase {
-       private Result_CVec_SignatureZNoneZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_CVec_SignatureZNoneZ_free(ptr); } super.finalize();
-       }
-
-       static Result_CVec_SignatureZNoneZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_CVec_SignatureZNoneZ_is_ok(ptr)) {
-                       return new Result_CVec_SignatureZNoneZ_OK(null, ptr);
-               } else {
-                       return new Result_CVec_SignatureZNoneZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_CVec_SignatureZNoneZ_OK extends Result_CVec_SignatureZNoneZ {
-               public final Uint8Array[] res;
-               private Result_CVec_SignatureZNoneZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.res = bindings.LDKCResult_CVec_SignatureZNoneZ_get_ok(ptr);
-               }
-       }
-
-       public static final class Result_CVec_SignatureZNoneZ_Err extends Result_CVec_SignatureZNoneZ {
-               private Result_CVec_SignatureZNoneZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-               }
-       }
-
-       public static Result_CVec_SignatureZNoneZ constructor_ok(Uint8Array[] o) {
-               number ret = bindings.CResult_CVec_SignatureZNoneZ_ok(o != null ? Arrays.stream(o).map(o_conv_12 -> InternalUtils.check_arr_len(o_conv_12, 64)).toArray(Uint8Array[]::new) : null);
-               Result_CVec_SignatureZNoneZ ret_hu_conv = Result_CVec_SignatureZNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_CVec_SignatureZNoneZ constructor_err() {
-               number ret = bindings.CResult_CVec_SignatureZNoneZ_err();
-               Result_CVec_SignatureZNoneZ ret_hu_conv = Result_CVec_SignatureZNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_CVec_SignatureZNoneZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_CVec_SignatureZNoneZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_CVec_SignatureZNoneZ clone() {
-               number ret = bindings.CResult_CVec_SignatureZNoneZ_clone(this.ptr);
-               Result_CVec_SignatureZNoneZ ret_hu_conv = Result_CVec_SignatureZNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_CVec_u8ZPeerHandleErrorZ.ts b/ts/structs/Result_CVec_u8ZPeerHandleErrorZ.ts
deleted file mode 100644 (file)
index e4ff80b..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_CVec_u8ZPeerHandleErrorZ extends CommonBase {
-       private Result_CVec_u8ZPeerHandleErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_CVec_u8ZPeerHandleErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_CVec_u8ZPeerHandleErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_CVec_u8ZPeerHandleErrorZ_is_ok(ptr)) {
-                       return new Result_CVec_u8ZPeerHandleErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_CVec_u8ZPeerHandleErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_CVec_u8ZPeerHandleErrorZ_OK extends Result_CVec_u8ZPeerHandleErrorZ {
-               public final Uint8Array res;
-               private Result_CVec_u8ZPeerHandleErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.res = bindings.LDKCResult_CVec_u8ZPeerHandleErrorZ_get_ok(ptr);
-               }
-       }
-
-       public static final class Result_CVec_u8ZPeerHandleErrorZ_Err extends Result_CVec_u8ZPeerHandleErrorZ {
-               public final PeerHandleError err;
-               private Result_CVec_u8ZPeerHandleErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_CVec_u8ZPeerHandleErrorZ_get_err(ptr);
-                       const err_hu_conv: PeerHandleError = new PeerHandleError(null, err);
-                       err_hu_conv.ptrs_to.add(this);
-                       this.err = err_hu_conv;
-               }
-       }
-
-       public static Result_CVec_u8ZPeerHandleErrorZ constructor_ok(Uint8Array o) {
-               number ret = bindings.CResult_CVec_u8ZPeerHandleErrorZ_ok(o);
-               Result_CVec_u8ZPeerHandleErrorZ ret_hu_conv = Result_CVec_u8ZPeerHandleErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_CVec_u8ZPeerHandleErrorZ constructor_err(PeerHandleError e) {
-               number ret = bindings.CResult_CVec_u8ZPeerHandleErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_CVec_u8ZPeerHandleErrorZ ret_hu_conv = Result_CVec_u8ZPeerHandleErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_CVec_u8ZPeerHandleErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_CVec_u8ZPeerHandleErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_CVec_u8ZPeerHandleErrorZ clone() {
-               number ret = bindings.CResult_CVec_u8ZPeerHandleErrorZ_clone(this.ptr);
-               Result_CVec_u8ZPeerHandleErrorZ ret_hu_conv = Result_CVec_u8ZPeerHandleErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_ChannelAnnouncementDecodeErrorZ.ts b/ts/structs/Result_ChannelAnnouncementDecodeErrorZ.ts
deleted file mode 100644 (file)
index bc1cf7d..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_ChannelAnnouncementDecodeErrorZ extends CommonBase {
-       private Result_ChannelAnnouncementDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_ChannelAnnouncementDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_ChannelAnnouncementDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_ChannelAnnouncementDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_ChannelAnnouncementDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_ChannelAnnouncementDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_ChannelAnnouncementDecodeErrorZ_OK extends Result_ChannelAnnouncementDecodeErrorZ {
-               public final ChannelAnnouncement res;
-               private Result_ChannelAnnouncementDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_ChannelAnnouncementDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: ChannelAnnouncement = new ChannelAnnouncement(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_ChannelAnnouncementDecodeErrorZ_Err extends Result_ChannelAnnouncementDecodeErrorZ {
-               public final DecodeError err;
-               private Result_ChannelAnnouncementDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_ChannelAnnouncementDecodeErrorZ_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 static Result_ChannelAnnouncementDecodeErrorZ constructor_ok(ChannelAnnouncement o) {
-               number ret = bindings.CResult_ChannelAnnouncementDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_ChannelAnnouncementDecodeErrorZ ret_hu_conv = Result_ChannelAnnouncementDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_ChannelAnnouncementDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_ChannelAnnouncementDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_ChannelAnnouncementDecodeErrorZ ret_hu_conv = Result_ChannelAnnouncementDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_ChannelAnnouncementDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_ChannelAnnouncementDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_ChannelAnnouncementDecodeErrorZ clone() {
-               number ret = bindings.CResult_ChannelAnnouncementDecodeErrorZ_clone(this.ptr);
-               Result_ChannelAnnouncementDecodeErrorZ ret_hu_conv = Result_ChannelAnnouncementDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_ChannelConfigDecodeErrorZ.ts b/ts/structs/Result_ChannelConfigDecodeErrorZ.ts
deleted file mode 100644 (file)
index ec5ec37..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_ChannelConfigDecodeErrorZ extends CommonBase {
-       private Result_ChannelConfigDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_ChannelConfigDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_ChannelConfigDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_ChannelConfigDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_ChannelConfigDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_ChannelConfigDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_ChannelConfigDecodeErrorZ_OK extends Result_ChannelConfigDecodeErrorZ {
-               public final ChannelConfig res;
-               private Result_ChannelConfigDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_ChannelConfigDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: ChannelConfig = new ChannelConfig(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_ChannelConfigDecodeErrorZ_Err extends Result_ChannelConfigDecodeErrorZ {
-               public final DecodeError err;
-               private Result_ChannelConfigDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_ChannelConfigDecodeErrorZ_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 static Result_ChannelConfigDecodeErrorZ constructor_ok(ChannelConfig o) {
-               number ret = bindings.CResult_ChannelConfigDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_ChannelConfigDecodeErrorZ ret_hu_conv = Result_ChannelConfigDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_ChannelConfigDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_ChannelConfigDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_ChannelConfigDecodeErrorZ ret_hu_conv = Result_ChannelConfigDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_ChannelConfigDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_ChannelConfigDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_ChannelConfigDecodeErrorZ clone() {
-               number ret = bindings.CResult_ChannelConfigDecodeErrorZ_clone(this.ptr);
-               Result_ChannelConfigDecodeErrorZ ret_hu_conv = Result_ChannelConfigDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_ChannelFeaturesDecodeErrorZ.ts b/ts/structs/Result_ChannelFeaturesDecodeErrorZ.ts
deleted file mode 100644 (file)
index 7864a54..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_ChannelFeaturesDecodeErrorZ extends CommonBase {
-       private Result_ChannelFeaturesDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_ChannelFeaturesDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_ChannelFeaturesDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_ChannelFeaturesDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_ChannelFeaturesDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_ChannelFeaturesDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_ChannelFeaturesDecodeErrorZ_OK extends Result_ChannelFeaturesDecodeErrorZ {
-               public final ChannelFeatures res;
-               private Result_ChannelFeaturesDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_ChannelFeaturesDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: ChannelFeatures = new ChannelFeatures(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_ChannelFeaturesDecodeErrorZ_Err extends Result_ChannelFeaturesDecodeErrorZ {
-               public final DecodeError err;
-               private Result_ChannelFeaturesDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_ChannelFeaturesDecodeErrorZ_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 static Result_ChannelFeaturesDecodeErrorZ constructor_ok(ChannelFeatures o) {
-               number ret = bindings.CResult_ChannelFeaturesDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_ChannelFeaturesDecodeErrorZ ret_hu_conv = Result_ChannelFeaturesDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_ChannelFeaturesDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_ChannelFeaturesDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_ChannelFeaturesDecodeErrorZ ret_hu_conv = Result_ChannelFeaturesDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_ChannelFeaturesDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/Result_ChannelInfoDecodeErrorZ.ts b/ts/structs/Result_ChannelInfoDecodeErrorZ.ts
deleted file mode 100644 (file)
index c8d36ec..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_ChannelInfoDecodeErrorZ extends CommonBase {
-       private Result_ChannelInfoDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_ChannelInfoDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_ChannelInfoDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_ChannelInfoDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_ChannelInfoDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_ChannelInfoDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_ChannelInfoDecodeErrorZ_OK extends Result_ChannelInfoDecodeErrorZ {
-               public final ChannelInfo res;
-               private Result_ChannelInfoDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_ChannelInfoDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: ChannelInfo = new ChannelInfo(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_ChannelInfoDecodeErrorZ_Err extends Result_ChannelInfoDecodeErrorZ {
-               public final DecodeError err;
-               private Result_ChannelInfoDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_ChannelInfoDecodeErrorZ_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 static Result_ChannelInfoDecodeErrorZ constructor_ok(ChannelInfo o) {
-               number ret = bindings.CResult_ChannelInfoDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_ChannelInfoDecodeErrorZ ret_hu_conv = Result_ChannelInfoDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_ChannelInfoDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_ChannelInfoDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_ChannelInfoDecodeErrorZ ret_hu_conv = Result_ChannelInfoDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_ChannelInfoDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_ChannelInfoDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_ChannelInfoDecodeErrorZ clone() {
-               number ret = bindings.CResult_ChannelInfoDecodeErrorZ_clone(this.ptr);
-               Result_ChannelInfoDecodeErrorZ ret_hu_conv = Result_ChannelInfoDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_ChannelMonitorUpdateDecodeErrorZ.ts b/ts/structs/Result_ChannelMonitorUpdateDecodeErrorZ.ts
deleted file mode 100644 (file)
index fedae20..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_ChannelMonitorUpdateDecodeErrorZ extends CommonBase {
-       private Result_ChannelMonitorUpdateDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_ChannelMonitorUpdateDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_ChannelMonitorUpdateDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_ChannelMonitorUpdateDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_ChannelMonitorUpdateDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_ChannelMonitorUpdateDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_ChannelMonitorUpdateDecodeErrorZ_OK extends Result_ChannelMonitorUpdateDecodeErrorZ {
-               public final ChannelMonitorUpdate res;
-               private Result_ChannelMonitorUpdateDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_ChannelMonitorUpdateDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: ChannelMonitorUpdate = new ChannelMonitorUpdate(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_ChannelMonitorUpdateDecodeErrorZ_Err extends Result_ChannelMonitorUpdateDecodeErrorZ {
-               public final DecodeError err;
-               private Result_ChannelMonitorUpdateDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_ChannelMonitorUpdateDecodeErrorZ_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 static Result_ChannelMonitorUpdateDecodeErrorZ constructor_ok(ChannelMonitorUpdate o) {
-               number ret = bindings.CResult_ChannelMonitorUpdateDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_ChannelMonitorUpdateDecodeErrorZ ret_hu_conv = Result_ChannelMonitorUpdateDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_ChannelMonitorUpdateDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_ChannelMonitorUpdateDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_ChannelMonitorUpdateDecodeErrorZ ret_hu_conv = Result_ChannelMonitorUpdateDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_ChannelMonitorUpdateDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_ChannelMonitorUpdateDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_ChannelMonitorUpdateDecodeErrorZ clone() {
-               number ret = bindings.CResult_ChannelMonitorUpdateDecodeErrorZ_clone(this.ptr);
-               Result_ChannelMonitorUpdateDecodeErrorZ ret_hu_conv = Result_ChannelMonitorUpdateDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_ChannelPublicKeysDecodeErrorZ.ts b/ts/structs/Result_ChannelPublicKeysDecodeErrorZ.ts
deleted file mode 100644 (file)
index feccedd..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_ChannelPublicKeysDecodeErrorZ extends CommonBase {
-       private Result_ChannelPublicKeysDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_ChannelPublicKeysDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_ChannelPublicKeysDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_ChannelPublicKeysDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_ChannelPublicKeysDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_ChannelPublicKeysDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_ChannelPublicKeysDecodeErrorZ_OK extends Result_ChannelPublicKeysDecodeErrorZ {
-               public final ChannelPublicKeys res;
-               private Result_ChannelPublicKeysDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_ChannelPublicKeysDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: ChannelPublicKeys = new ChannelPublicKeys(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_ChannelPublicKeysDecodeErrorZ_Err extends Result_ChannelPublicKeysDecodeErrorZ {
-               public final DecodeError err;
-               private Result_ChannelPublicKeysDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_ChannelPublicKeysDecodeErrorZ_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 static Result_ChannelPublicKeysDecodeErrorZ constructor_ok(ChannelPublicKeys o) {
-               number ret = bindings.CResult_ChannelPublicKeysDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_ChannelPublicKeysDecodeErrorZ ret_hu_conv = Result_ChannelPublicKeysDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_ChannelPublicKeysDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_ChannelPublicKeysDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_ChannelPublicKeysDecodeErrorZ ret_hu_conv = Result_ChannelPublicKeysDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_ChannelPublicKeysDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_ChannelPublicKeysDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_ChannelPublicKeysDecodeErrorZ clone() {
-               number ret = bindings.CResult_ChannelPublicKeysDecodeErrorZ_clone(this.ptr);
-               Result_ChannelPublicKeysDecodeErrorZ ret_hu_conv = Result_ChannelPublicKeysDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_ChannelReestablishDecodeErrorZ.ts b/ts/structs/Result_ChannelReestablishDecodeErrorZ.ts
deleted file mode 100644 (file)
index 32ad42d..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_ChannelReestablishDecodeErrorZ extends CommonBase {
-       private Result_ChannelReestablishDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_ChannelReestablishDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_ChannelReestablishDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_ChannelReestablishDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_ChannelReestablishDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_ChannelReestablishDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_ChannelReestablishDecodeErrorZ_OK extends Result_ChannelReestablishDecodeErrorZ {
-               public final ChannelReestablish res;
-               private Result_ChannelReestablishDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_ChannelReestablishDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: ChannelReestablish = new ChannelReestablish(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_ChannelReestablishDecodeErrorZ_Err extends Result_ChannelReestablishDecodeErrorZ {
-               public final DecodeError err;
-               private Result_ChannelReestablishDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_ChannelReestablishDecodeErrorZ_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 static Result_ChannelReestablishDecodeErrorZ constructor_ok(ChannelReestablish o) {
-               number ret = bindings.CResult_ChannelReestablishDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_ChannelReestablishDecodeErrorZ ret_hu_conv = Result_ChannelReestablishDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_ChannelReestablishDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_ChannelReestablishDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_ChannelReestablishDecodeErrorZ ret_hu_conv = Result_ChannelReestablishDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_ChannelReestablishDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_ChannelReestablishDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_ChannelReestablishDecodeErrorZ clone() {
-               number ret = bindings.CResult_ChannelReestablishDecodeErrorZ_clone(this.ptr);
-               Result_ChannelReestablishDecodeErrorZ ret_hu_conv = Result_ChannelReestablishDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_ChannelTransactionParametersDecodeErrorZ.ts b/ts/structs/Result_ChannelTransactionParametersDecodeErrorZ.ts
deleted file mode 100644 (file)
index a8151fa..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_ChannelTransactionParametersDecodeErrorZ extends CommonBase {
-       private Result_ChannelTransactionParametersDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_ChannelTransactionParametersDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_ChannelTransactionParametersDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_ChannelTransactionParametersDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_ChannelTransactionParametersDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_ChannelTransactionParametersDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_ChannelTransactionParametersDecodeErrorZ_OK extends Result_ChannelTransactionParametersDecodeErrorZ {
-               public final ChannelTransactionParameters res;
-               private Result_ChannelTransactionParametersDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_ChannelTransactionParametersDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: ChannelTransactionParameters = new ChannelTransactionParameters(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_ChannelTransactionParametersDecodeErrorZ_Err extends Result_ChannelTransactionParametersDecodeErrorZ {
-               public final DecodeError err;
-               private Result_ChannelTransactionParametersDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_ChannelTransactionParametersDecodeErrorZ_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 static Result_ChannelTransactionParametersDecodeErrorZ constructor_ok(ChannelTransactionParameters o) {
-               number ret = bindings.CResult_ChannelTransactionParametersDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_ChannelTransactionParametersDecodeErrorZ ret_hu_conv = Result_ChannelTransactionParametersDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_ChannelTransactionParametersDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_ChannelTransactionParametersDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_ChannelTransactionParametersDecodeErrorZ ret_hu_conv = Result_ChannelTransactionParametersDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_ChannelTransactionParametersDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_ChannelTransactionParametersDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_ChannelTransactionParametersDecodeErrorZ clone() {
-               number ret = bindings.CResult_ChannelTransactionParametersDecodeErrorZ_clone(this.ptr);
-               Result_ChannelTransactionParametersDecodeErrorZ ret_hu_conv = Result_ChannelTransactionParametersDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_ChannelTypeFeaturesDecodeErrorZ.ts b/ts/structs/Result_ChannelTypeFeaturesDecodeErrorZ.ts
deleted file mode 100644 (file)
index 5a202a5..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_ChannelTypeFeaturesDecodeErrorZ extends CommonBase {
-       private Result_ChannelTypeFeaturesDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_ChannelTypeFeaturesDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_ChannelTypeFeaturesDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_ChannelTypeFeaturesDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_ChannelTypeFeaturesDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_ChannelTypeFeaturesDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_ChannelTypeFeaturesDecodeErrorZ_OK extends Result_ChannelTypeFeaturesDecodeErrorZ {
-               public final ChannelTypeFeatures res;
-               private Result_ChannelTypeFeaturesDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_ChannelTypeFeaturesDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: ChannelTypeFeatures = new ChannelTypeFeatures(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_ChannelTypeFeaturesDecodeErrorZ_Err extends Result_ChannelTypeFeaturesDecodeErrorZ {
-               public final DecodeError err;
-               private Result_ChannelTypeFeaturesDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_ChannelTypeFeaturesDecodeErrorZ_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 static Result_ChannelTypeFeaturesDecodeErrorZ constructor_ok(ChannelTypeFeatures o) {
-               number ret = bindings.CResult_ChannelTypeFeaturesDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_ChannelTypeFeaturesDecodeErrorZ ret_hu_conv = Result_ChannelTypeFeaturesDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_ChannelTypeFeaturesDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_ChannelTypeFeaturesDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_ChannelTypeFeaturesDecodeErrorZ ret_hu_conv = Result_ChannelTypeFeaturesDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_ChannelTypeFeaturesDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/Result_ChannelUpdateDecodeErrorZ.ts b/ts/structs/Result_ChannelUpdateDecodeErrorZ.ts
deleted file mode 100644 (file)
index 0ed98e4..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_ChannelUpdateDecodeErrorZ extends CommonBase {
-       private Result_ChannelUpdateDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_ChannelUpdateDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_ChannelUpdateDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_ChannelUpdateDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_ChannelUpdateDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_ChannelUpdateDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_ChannelUpdateDecodeErrorZ_OK extends Result_ChannelUpdateDecodeErrorZ {
-               public final ChannelUpdate res;
-               private Result_ChannelUpdateDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_ChannelUpdateDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: ChannelUpdate = new ChannelUpdate(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_ChannelUpdateDecodeErrorZ_Err extends Result_ChannelUpdateDecodeErrorZ {
-               public final DecodeError err;
-               private Result_ChannelUpdateDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_ChannelUpdateDecodeErrorZ_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 static Result_ChannelUpdateDecodeErrorZ constructor_ok(ChannelUpdate o) {
-               number ret = bindings.CResult_ChannelUpdateDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_ChannelUpdateDecodeErrorZ ret_hu_conv = Result_ChannelUpdateDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_ChannelUpdateDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_ChannelUpdateDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_ChannelUpdateDecodeErrorZ ret_hu_conv = Result_ChannelUpdateDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_ChannelUpdateDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_ChannelUpdateDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_ChannelUpdateDecodeErrorZ clone() {
-               number ret = bindings.CResult_ChannelUpdateDecodeErrorZ_clone(this.ptr);
-               Result_ChannelUpdateDecodeErrorZ ret_hu_conv = Result_ChannelUpdateDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_ClosingSignedDecodeErrorZ.ts b/ts/structs/Result_ClosingSignedDecodeErrorZ.ts
deleted file mode 100644 (file)
index d3ab079..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_ClosingSignedDecodeErrorZ extends CommonBase {
-       private Result_ClosingSignedDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_ClosingSignedDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_ClosingSignedDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_ClosingSignedDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_ClosingSignedDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_ClosingSignedDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_ClosingSignedDecodeErrorZ_OK extends Result_ClosingSignedDecodeErrorZ {
-               public final ClosingSigned res;
-               private Result_ClosingSignedDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_ClosingSignedDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: ClosingSigned = new ClosingSigned(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_ClosingSignedDecodeErrorZ_Err extends Result_ClosingSignedDecodeErrorZ {
-               public final DecodeError err;
-               private Result_ClosingSignedDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_ClosingSignedDecodeErrorZ_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 static Result_ClosingSignedDecodeErrorZ constructor_ok(ClosingSigned o) {
-               number ret = bindings.CResult_ClosingSignedDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_ClosingSignedDecodeErrorZ ret_hu_conv = Result_ClosingSignedDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_ClosingSignedDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_ClosingSignedDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_ClosingSignedDecodeErrorZ ret_hu_conv = Result_ClosingSignedDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_ClosingSignedDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_ClosingSignedDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_ClosingSignedDecodeErrorZ clone() {
-               number ret = bindings.CResult_ClosingSignedDecodeErrorZ_clone(this.ptr);
-               Result_ClosingSignedDecodeErrorZ ret_hu_conv = Result_ClosingSignedDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_ClosingSignedFeeRangeDecodeErrorZ.ts b/ts/structs/Result_ClosingSignedFeeRangeDecodeErrorZ.ts
deleted file mode 100644 (file)
index bf3bc07..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_ClosingSignedFeeRangeDecodeErrorZ extends CommonBase {
-       private Result_ClosingSignedFeeRangeDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_ClosingSignedFeeRangeDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_ClosingSignedFeeRangeDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_ClosingSignedFeeRangeDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_ClosingSignedFeeRangeDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_ClosingSignedFeeRangeDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_ClosingSignedFeeRangeDecodeErrorZ_OK extends Result_ClosingSignedFeeRangeDecodeErrorZ {
-               public final ClosingSignedFeeRange res;
-               private Result_ClosingSignedFeeRangeDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_ClosingSignedFeeRangeDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: ClosingSignedFeeRange = new ClosingSignedFeeRange(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_ClosingSignedFeeRangeDecodeErrorZ_Err extends Result_ClosingSignedFeeRangeDecodeErrorZ {
-               public final DecodeError err;
-               private Result_ClosingSignedFeeRangeDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_ClosingSignedFeeRangeDecodeErrorZ_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 static Result_ClosingSignedFeeRangeDecodeErrorZ constructor_ok(ClosingSignedFeeRange o) {
-               number ret = bindings.CResult_ClosingSignedFeeRangeDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_ClosingSignedFeeRangeDecodeErrorZ ret_hu_conv = Result_ClosingSignedFeeRangeDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_ClosingSignedFeeRangeDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_ClosingSignedFeeRangeDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_ClosingSignedFeeRangeDecodeErrorZ ret_hu_conv = Result_ClosingSignedFeeRangeDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_ClosingSignedFeeRangeDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_ClosingSignedFeeRangeDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_ClosingSignedFeeRangeDecodeErrorZ clone() {
-               number ret = bindings.CResult_ClosingSignedFeeRangeDecodeErrorZ_clone(this.ptr);
-               Result_ClosingSignedFeeRangeDecodeErrorZ ret_hu_conv = Result_ClosingSignedFeeRangeDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_CommitmentSignedDecodeErrorZ.ts b/ts/structs/Result_CommitmentSignedDecodeErrorZ.ts
deleted file mode 100644 (file)
index 69ee597..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_CommitmentSignedDecodeErrorZ extends CommonBase {
-       private Result_CommitmentSignedDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_CommitmentSignedDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_CommitmentSignedDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_CommitmentSignedDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_CommitmentSignedDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_CommitmentSignedDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_CommitmentSignedDecodeErrorZ_OK extends Result_CommitmentSignedDecodeErrorZ {
-               public final CommitmentSigned res;
-               private Result_CommitmentSignedDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_CommitmentSignedDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: CommitmentSigned = new CommitmentSigned(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_CommitmentSignedDecodeErrorZ_Err extends Result_CommitmentSignedDecodeErrorZ {
-               public final DecodeError err;
-               private Result_CommitmentSignedDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_CommitmentSignedDecodeErrorZ_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 static Result_CommitmentSignedDecodeErrorZ constructor_ok(CommitmentSigned o) {
-               number ret = bindings.CResult_CommitmentSignedDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_CommitmentSignedDecodeErrorZ ret_hu_conv = Result_CommitmentSignedDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_CommitmentSignedDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_CommitmentSignedDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_CommitmentSignedDecodeErrorZ ret_hu_conv = Result_CommitmentSignedDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_CommitmentSignedDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_CommitmentSignedDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_CommitmentSignedDecodeErrorZ clone() {
-               number ret = bindings.CResult_CommitmentSignedDecodeErrorZ_clone(this.ptr);
-               Result_CommitmentSignedDecodeErrorZ ret_hu_conv = Result_CommitmentSignedDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_CommitmentTransactionDecodeErrorZ.ts b/ts/structs/Result_CommitmentTransactionDecodeErrorZ.ts
deleted file mode 100644 (file)
index de0ee7c..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_CommitmentTransactionDecodeErrorZ extends CommonBase {
-       private Result_CommitmentTransactionDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_CommitmentTransactionDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_CommitmentTransactionDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_CommitmentTransactionDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_CommitmentTransactionDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_CommitmentTransactionDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_CommitmentTransactionDecodeErrorZ_OK extends Result_CommitmentTransactionDecodeErrorZ {
-               public final CommitmentTransaction res;
-               private Result_CommitmentTransactionDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_CommitmentTransactionDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: CommitmentTransaction = new CommitmentTransaction(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_CommitmentTransactionDecodeErrorZ_Err extends Result_CommitmentTransactionDecodeErrorZ {
-               public final DecodeError err;
-               private Result_CommitmentTransactionDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_CommitmentTransactionDecodeErrorZ_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 static Result_CommitmentTransactionDecodeErrorZ constructor_ok(CommitmentTransaction o) {
-               number ret = bindings.CResult_CommitmentTransactionDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_CommitmentTransactionDecodeErrorZ ret_hu_conv = Result_CommitmentTransactionDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_CommitmentTransactionDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_CommitmentTransactionDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_CommitmentTransactionDecodeErrorZ ret_hu_conv = Result_CommitmentTransactionDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_CommitmentTransactionDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_CommitmentTransactionDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_CommitmentTransactionDecodeErrorZ clone() {
-               number ret = bindings.CResult_CommitmentTransactionDecodeErrorZ_clone(this.ptr);
-               Result_CommitmentTransactionDecodeErrorZ ret_hu_conv = Result_CommitmentTransactionDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_CounterpartyChannelTransactionParametersDecodeErrorZ.ts b/ts/structs/Result_CounterpartyChannelTransactionParametersDecodeErrorZ.ts
deleted file mode 100644 (file)
index 2ba9e59..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_CounterpartyChannelTransactionParametersDecodeErrorZ extends CommonBase {
-       private Result_CounterpartyChannelTransactionParametersDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_CounterpartyChannelTransactionParametersDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_CounterpartyChannelTransactionParametersDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_CounterpartyChannelTransactionParametersDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_CounterpartyChannelTransactionParametersDecodeErrorZ_OK extends Result_CounterpartyChannelTransactionParametersDecodeErrorZ {
-               public final CounterpartyChannelTransactionParameters res;
-               private Result_CounterpartyChannelTransactionParametersDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: CounterpartyChannelTransactionParameters = new CounterpartyChannelTransactionParameters(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_CounterpartyChannelTransactionParametersDecodeErrorZ_Err extends Result_CounterpartyChannelTransactionParametersDecodeErrorZ {
-               public final DecodeError err;
-               private Result_CounterpartyChannelTransactionParametersDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ_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 static Result_CounterpartyChannelTransactionParametersDecodeErrorZ constructor_ok(CounterpartyChannelTransactionParameters o) {
-               number ret = bindings.CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_CounterpartyChannelTransactionParametersDecodeErrorZ ret_hu_conv = Result_CounterpartyChannelTransactionParametersDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_CounterpartyChannelTransactionParametersDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_CounterpartyChannelTransactionParametersDecodeErrorZ ret_hu_conv = Result_CounterpartyChannelTransactionParametersDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_CounterpartyChannelTransactionParametersDecodeErrorZ clone() {
-               number ret = bindings.CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone(this.ptr);
-               Result_CounterpartyChannelTransactionParametersDecodeErrorZ ret_hu_conv = Result_CounterpartyChannelTransactionParametersDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_DelayedPaymentOutputDescriptorDecodeErrorZ.ts b/ts/structs/Result_DelayedPaymentOutputDescriptorDecodeErrorZ.ts
deleted file mode 100644 (file)
index 2a64ba0..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_DelayedPaymentOutputDescriptorDecodeErrorZ extends CommonBase {
-       private Result_DelayedPaymentOutputDescriptorDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_DelayedPaymentOutputDescriptorDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_DelayedPaymentOutputDescriptorDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_DelayedPaymentOutputDescriptorDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_DelayedPaymentOutputDescriptorDecodeErrorZ_OK extends Result_DelayedPaymentOutputDescriptorDecodeErrorZ {
-               public final DelayedPaymentOutputDescriptor res;
-               private Result_DelayedPaymentOutputDescriptorDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: DelayedPaymentOutputDescriptor = new DelayedPaymentOutputDescriptor(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_DelayedPaymentOutputDescriptorDecodeErrorZ_Err extends Result_DelayedPaymentOutputDescriptorDecodeErrorZ {
-               public final DecodeError err;
-               private Result_DelayedPaymentOutputDescriptorDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ_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 static Result_DelayedPaymentOutputDescriptorDecodeErrorZ constructor_ok(DelayedPaymentOutputDescriptor o) {
-               number ret = bindings.CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_DelayedPaymentOutputDescriptorDecodeErrorZ ret_hu_conv = Result_DelayedPaymentOutputDescriptorDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_DelayedPaymentOutputDescriptorDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_DelayedPaymentOutputDescriptorDecodeErrorZ ret_hu_conv = Result_DelayedPaymentOutputDescriptorDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_DelayedPaymentOutputDescriptorDecodeErrorZ clone() {
-               number ret = bindings.CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone(this.ptr);
-               Result_DelayedPaymentOutputDescriptorDecodeErrorZ ret_hu_conv = Result_DelayedPaymentOutputDescriptorDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_DescriptionCreationErrorZ.ts b/ts/structs/Result_DescriptionCreationErrorZ.ts
deleted file mode 100644 (file)
index f68ac0f..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_DescriptionCreationErrorZ extends CommonBase {
-       private Result_DescriptionCreationErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_DescriptionCreationErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_DescriptionCreationErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_DescriptionCreationErrorZ_is_ok(ptr)) {
-                       return new Result_DescriptionCreationErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_DescriptionCreationErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_DescriptionCreationErrorZ_OK extends Result_DescriptionCreationErrorZ {
-               public final Description res;
-               private Result_DescriptionCreationErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_DescriptionCreationErrorZ_get_ok(ptr);
-                       const res_hu_conv: Description = new Description(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_DescriptionCreationErrorZ_Err extends Result_DescriptionCreationErrorZ {
-               public final CreationError err;
-               private Result_DescriptionCreationErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.err = bindings.LDKCResult_DescriptionCreationErrorZ_get_err(ptr);
-               }
-       }
-
-       public static Result_DescriptionCreationErrorZ constructor_ok(Description o) {
-               number ret = bindings.CResult_DescriptionCreationErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_DescriptionCreationErrorZ ret_hu_conv = Result_DescriptionCreationErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_DescriptionCreationErrorZ constructor_err(CreationError e) {
-               number ret = bindings.CResult_DescriptionCreationErrorZ_err(e);
-               Result_DescriptionCreationErrorZ ret_hu_conv = Result_DescriptionCreationErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_DescriptionCreationErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_DescriptionCreationErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_DescriptionCreationErrorZ clone() {
-               number ret = bindings.CResult_DescriptionCreationErrorZ_clone(this.ptr);
-               Result_DescriptionCreationErrorZ ret_hu_conv = Result_DescriptionCreationErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_DirectionalChannelInfoDecodeErrorZ.ts b/ts/structs/Result_DirectionalChannelInfoDecodeErrorZ.ts
deleted file mode 100644 (file)
index 352ddcb..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_DirectionalChannelInfoDecodeErrorZ extends CommonBase {
-       private Result_DirectionalChannelInfoDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_DirectionalChannelInfoDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_DirectionalChannelInfoDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_DirectionalChannelInfoDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_DirectionalChannelInfoDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_DirectionalChannelInfoDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_DirectionalChannelInfoDecodeErrorZ_OK extends Result_DirectionalChannelInfoDecodeErrorZ {
-               public final DirectionalChannelInfo res;
-               private Result_DirectionalChannelInfoDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_DirectionalChannelInfoDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: DirectionalChannelInfo = new DirectionalChannelInfo(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_DirectionalChannelInfoDecodeErrorZ_Err extends Result_DirectionalChannelInfoDecodeErrorZ {
-               public final DecodeError err;
-               private Result_DirectionalChannelInfoDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_DirectionalChannelInfoDecodeErrorZ_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 static Result_DirectionalChannelInfoDecodeErrorZ constructor_ok(DirectionalChannelInfo o) {
-               number ret = bindings.CResult_DirectionalChannelInfoDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_DirectionalChannelInfoDecodeErrorZ ret_hu_conv = Result_DirectionalChannelInfoDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_DirectionalChannelInfoDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_DirectionalChannelInfoDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_DirectionalChannelInfoDecodeErrorZ ret_hu_conv = Result_DirectionalChannelInfoDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_DirectionalChannelInfoDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_DirectionalChannelInfoDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_DirectionalChannelInfoDecodeErrorZ clone() {
-               number ret = bindings.CResult_DirectionalChannelInfoDecodeErrorZ_clone(this.ptr);
-               Result_DirectionalChannelInfoDecodeErrorZ ret_hu_conv = Result_DirectionalChannelInfoDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_ErrorMessageDecodeErrorZ.ts b/ts/structs/Result_ErrorMessageDecodeErrorZ.ts
deleted file mode 100644 (file)
index 15912b0..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_ErrorMessageDecodeErrorZ extends CommonBase {
-       private Result_ErrorMessageDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_ErrorMessageDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_ErrorMessageDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_ErrorMessageDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_ErrorMessageDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_ErrorMessageDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_ErrorMessageDecodeErrorZ_OK extends Result_ErrorMessageDecodeErrorZ {
-               public final ErrorMessage res;
-               private Result_ErrorMessageDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_ErrorMessageDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: ErrorMessage = new ErrorMessage(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_ErrorMessageDecodeErrorZ_Err extends Result_ErrorMessageDecodeErrorZ {
-               public final DecodeError err;
-               private Result_ErrorMessageDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_ErrorMessageDecodeErrorZ_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 static Result_ErrorMessageDecodeErrorZ constructor_ok(ErrorMessage o) {
-               number ret = bindings.CResult_ErrorMessageDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_ErrorMessageDecodeErrorZ ret_hu_conv = Result_ErrorMessageDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_ErrorMessageDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_ErrorMessageDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_ErrorMessageDecodeErrorZ ret_hu_conv = Result_ErrorMessageDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_ErrorMessageDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_ErrorMessageDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_ErrorMessageDecodeErrorZ clone() {
-               number ret = bindings.CResult_ErrorMessageDecodeErrorZ_clone(this.ptr);
-               Result_ErrorMessageDecodeErrorZ ret_hu_conv = Result_ErrorMessageDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_ExpiryTimeCreationErrorZ.ts b/ts/structs/Result_ExpiryTimeCreationErrorZ.ts
deleted file mode 100644 (file)
index 6e62bef..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_ExpiryTimeCreationErrorZ extends CommonBase {
-       private Result_ExpiryTimeCreationErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_ExpiryTimeCreationErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_ExpiryTimeCreationErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_ExpiryTimeCreationErrorZ_is_ok(ptr)) {
-                       return new Result_ExpiryTimeCreationErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_ExpiryTimeCreationErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_ExpiryTimeCreationErrorZ_OK extends Result_ExpiryTimeCreationErrorZ {
-               public final ExpiryTime res;
-               private Result_ExpiryTimeCreationErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_ExpiryTimeCreationErrorZ_get_ok(ptr);
-                       const res_hu_conv: ExpiryTime = new ExpiryTime(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_ExpiryTimeCreationErrorZ_Err extends Result_ExpiryTimeCreationErrorZ {
-               public final CreationError err;
-               private Result_ExpiryTimeCreationErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.err = bindings.LDKCResult_ExpiryTimeCreationErrorZ_get_err(ptr);
-               }
-       }
-
-       public static Result_ExpiryTimeCreationErrorZ constructor_ok(ExpiryTime o) {
-               number ret = bindings.CResult_ExpiryTimeCreationErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_ExpiryTimeCreationErrorZ ret_hu_conv = Result_ExpiryTimeCreationErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_ExpiryTimeCreationErrorZ constructor_err(CreationError e) {
-               number ret = bindings.CResult_ExpiryTimeCreationErrorZ_err(e);
-               Result_ExpiryTimeCreationErrorZ ret_hu_conv = Result_ExpiryTimeCreationErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_ExpiryTimeCreationErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_ExpiryTimeCreationErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_ExpiryTimeCreationErrorZ clone() {
-               number ret = bindings.CResult_ExpiryTimeCreationErrorZ_clone(this.ptr);
-               Result_ExpiryTimeCreationErrorZ ret_hu_conv = Result_ExpiryTimeCreationErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_FundingCreatedDecodeErrorZ.ts b/ts/structs/Result_FundingCreatedDecodeErrorZ.ts
deleted file mode 100644 (file)
index 07ab44e..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_FundingCreatedDecodeErrorZ extends CommonBase {
-       private Result_FundingCreatedDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_FundingCreatedDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_FundingCreatedDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_FundingCreatedDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_FundingCreatedDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_FundingCreatedDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_FundingCreatedDecodeErrorZ_OK extends Result_FundingCreatedDecodeErrorZ {
-               public final FundingCreated res;
-               private Result_FundingCreatedDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_FundingCreatedDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: FundingCreated = new FundingCreated(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_FundingCreatedDecodeErrorZ_Err extends Result_FundingCreatedDecodeErrorZ {
-               public final DecodeError err;
-               private Result_FundingCreatedDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_FundingCreatedDecodeErrorZ_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 static Result_FundingCreatedDecodeErrorZ constructor_ok(FundingCreated o) {
-               number ret = bindings.CResult_FundingCreatedDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_FundingCreatedDecodeErrorZ ret_hu_conv = Result_FundingCreatedDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_FundingCreatedDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_FundingCreatedDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_FundingCreatedDecodeErrorZ ret_hu_conv = Result_FundingCreatedDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_FundingCreatedDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_FundingCreatedDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_FundingCreatedDecodeErrorZ clone() {
-               number ret = bindings.CResult_FundingCreatedDecodeErrorZ_clone(this.ptr);
-               Result_FundingCreatedDecodeErrorZ ret_hu_conv = Result_FundingCreatedDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_FundingLockedDecodeErrorZ.ts b/ts/structs/Result_FundingLockedDecodeErrorZ.ts
deleted file mode 100644 (file)
index a2432d0..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_FundingLockedDecodeErrorZ extends CommonBase {
-       private Result_FundingLockedDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_FundingLockedDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_FundingLockedDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_FundingLockedDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_FundingLockedDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_FundingLockedDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_FundingLockedDecodeErrorZ_OK extends Result_FundingLockedDecodeErrorZ {
-               public final FundingLocked res;
-               private Result_FundingLockedDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_FundingLockedDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: FundingLocked = new FundingLocked(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_FundingLockedDecodeErrorZ_Err extends Result_FundingLockedDecodeErrorZ {
-               public final DecodeError err;
-               private Result_FundingLockedDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_FundingLockedDecodeErrorZ_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 static Result_FundingLockedDecodeErrorZ constructor_ok(FundingLocked o) {
-               number ret = bindings.CResult_FundingLockedDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_FundingLockedDecodeErrorZ ret_hu_conv = Result_FundingLockedDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_FundingLockedDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_FundingLockedDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_FundingLockedDecodeErrorZ ret_hu_conv = Result_FundingLockedDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_FundingLockedDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_FundingLockedDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_FundingLockedDecodeErrorZ clone() {
-               number ret = bindings.CResult_FundingLockedDecodeErrorZ_clone(this.ptr);
-               Result_FundingLockedDecodeErrorZ ret_hu_conv = Result_FundingLockedDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_FundingSignedDecodeErrorZ.ts b/ts/structs/Result_FundingSignedDecodeErrorZ.ts
deleted file mode 100644 (file)
index 112ad99..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_FundingSignedDecodeErrorZ extends CommonBase {
-       private Result_FundingSignedDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_FundingSignedDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_FundingSignedDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_FundingSignedDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_FundingSignedDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_FundingSignedDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_FundingSignedDecodeErrorZ_OK extends Result_FundingSignedDecodeErrorZ {
-               public final FundingSigned res;
-               private Result_FundingSignedDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_FundingSignedDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: FundingSigned = new FundingSigned(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_FundingSignedDecodeErrorZ_Err extends Result_FundingSignedDecodeErrorZ {
-               public final DecodeError err;
-               private Result_FundingSignedDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_FundingSignedDecodeErrorZ_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 static Result_FundingSignedDecodeErrorZ constructor_ok(FundingSigned o) {
-               number ret = bindings.CResult_FundingSignedDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_FundingSignedDecodeErrorZ ret_hu_conv = Result_FundingSignedDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_FundingSignedDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_FundingSignedDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_FundingSignedDecodeErrorZ ret_hu_conv = Result_FundingSignedDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_FundingSignedDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_FundingSignedDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_FundingSignedDecodeErrorZ clone() {
-               number ret = bindings.CResult_FundingSignedDecodeErrorZ_clone(this.ptr);
-               Result_FundingSignedDecodeErrorZ ret_hu_conv = Result_FundingSignedDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_GossipTimestampFilterDecodeErrorZ.ts b/ts/structs/Result_GossipTimestampFilterDecodeErrorZ.ts
deleted file mode 100644 (file)
index e867ead..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_GossipTimestampFilterDecodeErrorZ extends CommonBase {
-       private Result_GossipTimestampFilterDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_GossipTimestampFilterDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_GossipTimestampFilterDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_GossipTimestampFilterDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_GossipTimestampFilterDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_GossipTimestampFilterDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_GossipTimestampFilterDecodeErrorZ_OK extends Result_GossipTimestampFilterDecodeErrorZ {
-               public final GossipTimestampFilter res;
-               private Result_GossipTimestampFilterDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_GossipTimestampFilterDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: GossipTimestampFilter = new GossipTimestampFilter(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_GossipTimestampFilterDecodeErrorZ_Err extends Result_GossipTimestampFilterDecodeErrorZ {
-               public final DecodeError err;
-               private Result_GossipTimestampFilterDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_GossipTimestampFilterDecodeErrorZ_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 static Result_GossipTimestampFilterDecodeErrorZ constructor_ok(GossipTimestampFilter o) {
-               number ret = bindings.CResult_GossipTimestampFilterDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_GossipTimestampFilterDecodeErrorZ ret_hu_conv = Result_GossipTimestampFilterDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_GossipTimestampFilterDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_GossipTimestampFilterDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_GossipTimestampFilterDecodeErrorZ ret_hu_conv = Result_GossipTimestampFilterDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_GossipTimestampFilterDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_GossipTimestampFilterDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_GossipTimestampFilterDecodeErrorZ clone() {
-               number ret = bindings.CResult_GossipTimestampFilterDecodeErrorZ_clone(this.ptr);
-               Result_GossipTimestampFilterDecodeErrorZ ret_hu_conv = Result_GossipTimestampFilterDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_HTLCOutputInCommitmentDecodeErrorZ.ts b/ts/structs/Result_HTLCOutputInCommitmentDecodeErrorZ.ts
deleted file mode 100644 (file)
index 8bcc7e1..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_HTLCOutputInCommitmentDecodeErrorZ extends CommonBase {
-       private Result_HTLCOutputInCommitmentDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_HTLCOutputInCommitmentDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_HTLCOutputInCommitmentDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_HTLCOutputInCommitmentDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_HTLCOutputInCommitmentDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_HTLCOutputInCommitmentDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_HTLCOutputInCommitmentDecodeErrorZ_OK extends Result_HTLCOutputInCommitmentDecodeErrorZ {
-               public final HTLCOutputInCommitment res;
-               private Result_HTLCOutputInCommitmentDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_HTLCOutputInCommitmentDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: HTLCOutputInCommitment = new HTLCOutputInCommitment(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_HTLCOutputInCommitmentDecodeErrorZ_Err extends Result_HTLCOutputInCommitmentDecodeErrorZ {
-               public final DecodeError err;
-               private Result_HTLCOutputInCommitmentDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_HTLCOutputInCommitmentDecodeErrorZ_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 static Result_HTLCOutputInCommitmentDecodeErrorZ constructor_ok(HTLCOutputInCommitment o) {
-               number ret = bindings.CResult_HTLCOutputInCommitmentDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_HTLCOutputInCommitmentDecodeErrorZ ret_hu_conv = Result_HTLCOutputInCommitmentDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_HTLCOutputInCommitmentDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_HTLCOutputInCommitmentDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_HTLCOutputInCommitmentDecodeErrorZ ret_hu_conv = Result_HTLCOutputInCommitmentDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_HTLCOutputInCommitmentDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_HTLCOutputInCommitmentDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_HTLCOutputInCommitmentDecodeErrorZ clone() {
-               number ret = bindings.CResult_HTLCOutputInCommitmentDecodeErrorZ_clone(this.ptr);
-               Result_HTLCOutputInCommitmentDecodeErrorZ ret_hu_conv = Result_HTLCOutputInCommitmentDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_HTLCUpdateDecodeErrorZ.ts b/ts/structs/Result_HTLCUpdateDecodeErrorZ.ts
deleted file mode 100644 (file)
index e950edf..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_HTLCUpdateDecodeErrorZ extends CommonBase {
-       private Result_HTLCUpdateDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_HTLCUpdateDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_HTLCUpdateDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_HTLCUpdateDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_HTLCUpdateDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_HTLCUpdateDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_HTLCUpdateDecodeErrorZ_OK extends Result_HTLCUpdateDecodeErrorZ {
-               public final HTLCUpdate res;
-               private Result_HTLCUpdateDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_HTLCUpdateDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: HTLCUpdate = new HTLCUpdate(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_HTLCUpdateDecodeErrorZ_Err extends Result_HTLCUpdateDecodeErrorZ {
-               public final DecodeError err;
-               private Result_HTLCUpdateDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_HTLCUpdateDecodeErrorZ_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 static Result_HTLCUpdateDecodeErrorZ constructor_ok(HTLCUpdate o) {
-               number ret = bindings.CResult_HTLCUpdateDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_HTLCUpdateDecodeErrorZ ret_hu_conv = Result_HTLCUpdateDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_HTLCUpdateDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_HTLCUpdateDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_HTLCUpdateDecodeErrorZ ret_hu_conv = Result_HTLCUpdateDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_HTLCUpdateDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_HTLCUpdateDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_HTLCUpdateDecodeErrorZ clone() {
-               number ret = bindings.CResult_HTLCUpdateDecodeErrorZ_clone(this.ptr);
-               Result_HTLCUpdateDecodeErrorZ ret_hu_conv = Result_HTLCUpdateDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_HolderCommitmentTransactionDecodeErrorZ.ts b/ts/structs/Result_HolderCommitmentTransactionDecodeErrorZ.ts
deleted file mode 100644 (file)
index 4326618..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_HolderCommitmentTransactionDecodeErrorZ extends CommonBase {
-       private Result_HolderCommitmentTransactionDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_HolderCommitmentTransactionDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_HolderCommitmentTransactionDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_HolderCommitmentTransactionDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_HolderCommitmentTransactionDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_HolderCommitmentTransactionDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_HolderCommitmentTransactionDecodeErrorZ_OK extends Result_HolderCommitmentTransactionDecodeErrorZ {
-               public final HolderCommitmentTransaction res;
-               private Result_HolderCommitmentTransactionDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_HolderCommitmentTransactionDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: HolderCommitmentTransaction = new HolderCommitmentTransaction(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_HolderCommitmentTransactionDecodeErrorZ_Err extends Result_HolderCommitmentTransactionDecodeErrorZ {
-               public final DecodeError err;
-               private Result_HolderCommitmentTransactionDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_HolderCommitmentTransactionDecodeErrorZ_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 static Result_HolderCommitmentTransactionDecodeErrorZ constructor_ok(HolderCommitmentTransaction o) {
-               number ret = bindings.CResult_HolderCommitmentTransactionDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_HolderCommitmentTransactionDecodeErrorZ ret_hu_conv = Result_HolderCommitmentTransactionDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_HolderCommitmentTransactionDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_HolderCommitmentTransactionDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_HolderCommitmentTransactionDecodeErrorZ ret_hu_conv = Result_HolderCommitmentTransactionDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_HolderCommitmentTransactionDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_HolderCommitmentTransactionDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_HolderCommitmentTransactionDecodeErrorZ clone() {
-               number ret = bindings.CResult_HolderCommitmentTransactionDecodeErrorZ_clone(this.ptr);
-               Result_HolderCommitmentTransactionDecodeErrorZ ret_hu_conv = Result_HolderCommitmentTransactionDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_InMemorySignerDecodeErrorZ.ts b/ts/structs/Result_InMemorySignerDecodeErrorZ.ts
deleted file mode 100644 (file)
index 15c4b73..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_InMemorySignerDecodeErrorZ extends CommonBase {
-       private Result_InMemorySignerDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_InMemorySignerDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_InMemorySignerDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_InMemorySignerDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_InMemorySignerDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_InMemorySignerDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_InMemorySignerDecodeErrorZ_OK extends Result_InMemorySignerDecodeErrorZ {
-               public final InMemorySigner res;
-               private Result_InMemorySignerDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_InMemorySignerDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: InMemorySigner = new InMemorySigner(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_InMemorySignerDecodeErrorZ_Err extends Result_InMemorySignerDecodeErrorZ {
-               public final DecodeError err;
-               private Result_InMemorySignerDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_InMemorySignerDecodeErrorZ_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 static Result_InMemorySignerDecodeErrorZ constructor_ok(InMemorySigner o) {
-               number ret = bindings.CResult_InMemorySignerDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_InMemorySignerDecodeErrorZ ret_hu_conv = Result_InMemorySignerDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_InMemorySignerDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_InMemorySignerDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_InMemorySignerDecodeErrorZ ret_hu_conv = Result_InMemorySignerDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_InMemorySignerDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_InMemorySignerDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_InMemorySignerDecodeErrorZ clone() {
-               number ret = bindings.CResult_InMemorySignerDecodeErrorZ_clone(this.ptr);
-               Result_InMemorySignerDecodeErrorZ ret_hu_conv = Result_InMemorySignerDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_InitDecodeErrorZ.ts b/ts/structs/Result_InitDecodeErrorZ.ts
deleted file mode 100644 (file)
index ef549f0..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_InitDecodeErrorZ extends CommonBase {
-       private Result_InitDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_InitDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_InitDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_InitDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_InitDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_InitDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_InitDecodeErrorZ_OK extends Result_InitDecodeErrorZ {
-               public final Init res;
-               private Result_InitDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_InitDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: Init = new Init(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_InitDecodeErrorZ_Err extends Result_InitDecodeErrorZ {
-               public final DecodeError err;
-               private Result_InitDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_InitDecodeErrorZ_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 static Result_InitDecodeErrorZ constructor_ok(Init o) {
-               number ret = bindings.CResult_InitDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_InitDecodeErrorZ ret_hu_conv = Result_InitDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_InitDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_InitDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_InitDecodeErrorZ ret_hu_conv = Result_InitDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_InitDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_InitDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_InitDecodeErrorZ clone() {
-               number ret = bindings.CResult_InitDecodeErrorZ_clone(this.ptr);
-               Result_InitDecodeErrorZ ret_hu_conv = Result_InitDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_InitFeaturesDecodeErrorZ.ts b/ts/structs/Result_InitFeaturesDecodeErrorZ.ts
deleted file mode 100644 (file)
index d3adc29..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_InitFeaturesDecodeErrorZ extends CommonBase {
-       private Result_InitFeaturesDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_InitFeaturesDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_InitFeaturesDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_InitFeaturesDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_InitFeaturesDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_InitFeaturesDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_InitFeaturesDecodeErrorZ_OK extends Result_InitFeaturesDecodeErrorZ {
-               public final InitFeatures res;
-               private Result_InitFeaturesDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_InitFeaturesDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: InitFeatures = new InitFeatures(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_InitFeaturesDecodeErrorZ_Err extends Result_InitFeaturesDecodeErrorZ {
-               public final DecodeError err;
-               private Result_InitFeaturesDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_InitFeaturesDecodeErrorZ_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 static Result_InitFeaturesDecodeErrorZ constructor_ok(InitFeatures o) {
-               number ret = bindings.CResult_InitFeaturesDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_InitFeaturesDecodeErrorZ ret_hu_conv = Result_InitFeaturesDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_InitFeaturesDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_InitFeaturesDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_InitFeaturesDecodeErrorZ ret_hu_conv = Result_InitFeaturesDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_InitFeaturesDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/Result_InvoiceFeaturesDecodeErrorZ.ts b/ts/structs/Result_InvoiceFeaturesDecodeErrorZ.ts
deleted file mode 100644 (file)
index e86d913..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_InvoiceFeaturesDecodeErrorZ extends CommonBase {
-       private Result_InvoiceFeaturesDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_InvoiceFeaturesDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_InvoiceFeaturesDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_InvoiceFeaturesDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_InvoiceFeaturesDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_InvoiceFeaturesDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_InvoiceFeaturesDecodeErrorZ_OK extends Result_InvoiceFeaturesDecodeErrorZ {
-               public final InvoiceFeatures res;
-               private Result_InvoiceFeaturesDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_InvoiceFeaturesDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: InvoiceFeatures = new InvoiceFeatures(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_InvoiceFeaturesDecodeErrorZ_Err extends Result_InvoiceFeaturesDecodeErrorZ {
-               public final DecodeError err;
-               private Result_InvoiceFeaturesDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_InvoiceFeaturesDecodeErrorZ_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 static Result_InvoiceFeaturesDecodeErrorZ constructor_ok(InvoiceFeatures o) {
-               number ret = bindings.CResult_InvoiceFeaturesDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_InvoiceFeaturesDecodeErrorZ ret_hu_conv = Result_InvoiceFeaturesDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_InvoiceFeaturesDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_InvoiceFeaturesDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_InvoiceFeaturesDecodeErrorZ ret_hu_conv = Result_InvoiceFeaturesDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_InvoiceFeaturesDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/Result_InvoiceNoneZ.ts b/ts/structs/Result_InvoiceNoneZ.ts
deleted file mode 100644 (file)
index 689e5ca..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_InvoiceNoneZ extends CommonBase {
-       private Result_InvoiceNoneZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_InvoiceNoneZ_free(ptr); } super.finalize();
-       }
-
-       static Result_InvoiceNoneZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_InvoiceNoneZ_is_ok(ptr)) {
-                       return new Result_InvoiceNoneZ_OK(null, ptr);
-               } else {
-                       return new Result_InvoiceNoneZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_InvoiceNoneZ_OK extends Result_InvoiceNoneZ {
-               public final Invoice res;
-               private Result_InvoiceNoneZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_InvoiceNoneZ_get_ok(ptr);
-                       const res_hu_conv: Invoice = new Invoice(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_InvoiceNoneZ_Err extends Result_InvoiceNoneZ {
-               private Result_InvoiceNoneZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-               }
-       }
-
-       public static Result_InvoiceNoneZ constructor_ok(Invoice o) {
-               number ret = bindings.CResult_InvoiceNoneZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_InvoiceNoneZ ret_hu_conv = Result_InvoiceNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_InvoiceNoneZ constructor_err() {
-               number ret = bindings.CResult_InvoiceNoneZ_err();
-               Result_InvoiceNoneZ ret_hu_conv = Result_InvoiceNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_InvoiceNoneZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_InvoiceNoneZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_InvoiceNoneZ clone() {
-               number ret = bindings.CResult_InvoiceNoneZ_clone(this.ptr);
-               Result_InvoiceNoneZ ret_hu_conv = Result_InvoiceNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_InvoiceSemanticErrorZ.ts b/ts/structs/Result_InvoiceSemanticErrorZ.ts
deleted file mode 100644 (file)
index 86271c3..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_InvoiceSemanticErrorZ extends CommonBase {
-       private Result_InvoiceSemanticErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_InvoiceSemanticErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_InvoiceSemanticErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_InvoiceSemanticErrorZ_is_ok(ptr)) {
-                       return new Result_InvoiceSemanticErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_InvoiceSemanticErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_InvoiceSemanticErrorZ_OK extends Result_InvoiceSemanticErrorZ {
-               public final Invoice res;
-               private Result_InvoiceSemanticErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_InvoiceSemanticErrorZ_get_ok(ptr);
-                       const res_hu_conv: Invoice = new Invoice(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_InvoiceSemanticErrorZ_Err extends Result_InvoiceSemanticErrorZ {
-               public final SemanticError err;
-               private Result_InvoiceSemanticErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.err = bindings.LDKCResult_InvoiceSemanticErrorZ_get_err(ptr);
-               }
-       }
-
-       public static Result_InvoiceSemanticErrorZ constructor_ok(Invoice o) {
-               number ret = bindings.CResult_InvoiceSemanticErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_InvoiceSemanticErrorZ ret_hu_conv = Result_InvoiceSemanticErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_InvoiceSemanticErrorZ constructor_err(SemanticError e) {
-               number ret = bindings.CResult_InvoiceSemanticErrorZ_err(e);
-               Result_InvoiceSemanticErrorZ ret_hu_conv = Result_InvoiceSemanticErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_InvoiceSemanticErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_InvoiceSemanticErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_InvoiceSemanticErrorZ clone() {
-               number ret = bindings.CResult_InvoiceSemanticErrorZ_clone(this.ptr);
-               Result_InvoiceSemanticErrorZ ret_hu_conv = Result_InvoiceSemanticErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_InvoiceSignOrCreationErrorZ.ts b/ts/structs/Result_InvoiceSignOrCreationErrorZ.ts
deleted file mode 100644 (file)
index c9e7ff5..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_InvoiceSignOrCreationErrorZ extends CommonBase {
-       private Result_InvoiceSignOrCreationErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_InvoiceSignOrCreationErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_InvoiceSignOrCreationErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_InvoiceSignOrCreationErrorZ_is_ok(ptr)) {
-                       return new Result_InvoiceSignOrCreationErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_InvoiceSignOrCreationErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_InvoiceSignOrCreationErrorZ_OK extends Result_InvoiceSignOrCreationErrorZ {
-               public final Invoice res;
-               private Result_InvoiceSignOrCreationErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_InvoiceSignOrCreationErrorZ_get_ok(ptr);
-                       const res_hu_conv: Invoice = new Invoice(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_InvoiceSignOrCreationErrorZ_Err extends Result_InvoiceSignOrCreationErrorZ {
-               public final SignOrCreationError err;
-               private Result_InvoiceSignOrCreationErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_InvoiceSignOrCreationErrorZ_get_err(ptr);
-                       SignOrCreationError err_hu_conv = SignOrCreationError.constr_from_ptr(err);
-                       err_hu_conv.ptrs_to.add(this);
-                       this.err = err_hu_conv;
-               }
-       }
-
-       public static Result_InvoiceSignOrCreationErrorZ constructor_ok(Invoice o) {
-               number ret = bindings.CResult_InvoiceSignOrCreationErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_InvoiceSignOrCreationErrorZ ret_hu_conv = Result_InvoiceSignOrCreationErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_InvoiceSignOrCreationErrorZ constructor_err(SignOrCreationError e) {
-               number ret = bindings.CResult_InvoiceSignOrCreationErrorZ_err(e.ptr);
-               Result_InvoiceSignOrCreationErrorZ ret_hu_conv = Result_InvoiceSignOrCreationErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_InvoiceSignOrCreationErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_InvoiceSignOrCreationErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_InvoiceSignOrCreationErrorZ clone() {
-               number ret = bindings.CResult_InvoiceSignOrCreationErrorZ_clone(this.ptr);
-               Result_InvoiceSignOrCreationErrorZ ret_hu_conv = Result_InvoiceSignOrCreationErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_LockedChannelMonitorNoneZ.ts b/ts/structs/Result_LockedChannelMonitorNoneZ.ts
deleted file mode 100644 (file)
index 28eac64..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_LockedChannelMonitorNoneZ extends CommonBase {
-       private Result_LockedChannelMonitorNoneZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_LockedChannelMonitorNoneZ_free(ptr); } super.finalize();
-       }
-
-       static Result_LockedChannelMonitorNoneZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_LockedChannelMonitorNoneZ_is_ok(ptr)) {
-                       return new Result_LockedChannelMonitorNoneZ_OK(null, ptr);
-               } else {
-                       return new Result_LockedChannelMonitorNoneZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_LockedChannelMonitorNoneZ_OK extends Result_LockedChannelMonitorNoneZ {
-               public final LockedChannelMonitor res;
-               private Result_LockedChannelMonitorNoneZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_LockedChannelMonitorNoneZ_get_ok(ptr);
-                       const res_hu_conv: LockedChannelMonitor = new LockedChannelMonitor(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_LockedChannelMonitorNoneZ_Err extends Result_LockedChannelMonitorNoneZ {
-               private Result_LockedChannelMonitorNoneZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-               }
-       }
-
-       public static Result_LockedChannelMonitorNoneZ constructor_ok(LockedChannelMonitor o) {
-               number ret = bindings.CResult_LockedChannelMonitorNoneZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_LockedChannelMonitorNoneZ ret_hu_conv = Result_LockedChannelMonitorNoneZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(o);
-               // 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, o is reset to null and is now a dummy object.
-               o.ptr = 0;
-               return ret_hu_conv;
-       }
-
-       public static Result_LockedChannelMonitorNoneZ constructor_err() {
-               number ret = bindings.CResult_LockedChannelMonitorNoneZ_err();
-               Result_LockedChannelMonitorNoneZ ret_hu_conv = Result_LockedChannelMonitorNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_LockedChannelMonitorNoneZ_is_ok(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/Result_NetAddressDecodeErrorZ.ts b/ts/structs/Result_NetAddressDecodeErrorZ.ts
deleted file mode 100644 (file)
index 044797e..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_NetAddressDecodeErrorZ extends CommonBase {
-       private Result_NetAddressDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_NetAddressDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_NetAddressDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_NetAddressDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_NetAddressDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_NetAddressDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_NetAddressDecodeErrorZ_OK extends Result_NetAddressDecodeErrorZ {
-               public final NetAddress res;
-               private Result_NetAddressDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_NetAddressDecodeErrorZ_get_ok(ptr);
-                       NetAddress res_hu_conv = NetAddress.constr_from_ptr(res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_NetAddressDecodeErrorZ_Err extends Result_NetAddressDecodeErrorZ {
-               public final DecodeError err;
-               private Result_NetAddressDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_NetAddressDecodeErrorZ_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 static Result_NetAddressDecodeErrorZ constructor_ok(NetAddress o) {
-               number ret = bindings.CResult_NetAddressDecodeErrorZ_ok(o.ptr);
-               Result_NetAddressDecodeErrorZ ret_hu_conv = Result_NetAddressDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_NetAddressDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_NetAddressDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_NetAddressDecodeErrorZ ret_hu_conv = Result_NetAddressDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_NetAddressDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_NetAddressDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_NetAddressDecodeErrorZ clone() {
-               number ret = bindings.CResult_NetAddressDecodeErrorZ_clone(this.ptr);
-               Result_NetAddressDecodeErrorZ ret_hu_conv = Result_NetAddressDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_NetworkGraphDecodeErrorZ.ts b/ts/structs/Result_NetworkGraphDecodeErrorZ.ts
deleted file mode 100644 (file)
index 1118841..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_NetworkGraphDecodeErrorZ extends CommonBase {
-       private Result_NetworkGraphDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_NetworkGraphDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_NetworkGraphDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_NetworkGraphDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_NetworkGraphDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_NetworkGraphDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_NetworkGraphDecodeErrorZ_OK extends Result_NetworkGraphDecodeErrorZ {
-               public final NetworkGraph res;
-               private Result_NetworkGraphDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_NetworkGraphDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: NetworkGraph = new NetworkGraph(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_NetworkGraphDecodeErrorZ_Err extends Result_NetworkGraphDecodeErrorZ {
-               public final DecodeError err;
-               private Result_NetworkGraphDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_NetworkGraphDecodeErrorZ_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 static Result_NetworkGraphDecodeErrorZ constructor_ok(NetworkGraph o) {
-               number ret = bindings.CResult_NetworkGraphDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_NetworkGraphDecodeErrorZ ret_hu_conv = Result_NetworkGraphDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_NetworkGraphDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_NetworkGraphDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_NetworkGraphDecodeErrorZ ret_hu_conv = Result_NetworkGraphDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_NetworkGraphDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_NetworkGraphDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_NetworkGraphDecodeErrorZ clone() {
-               number ret = bindings.CResult_NetworkGraphDecodeErrorZ_clone(this.ptr);
-               Result_NetworkGraphDecodeErrorZ ret_hu_conv = Result_NetworkGraphDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_NodeAnnouncementDecodeErrorZ.ts b/ts/structs/Result_NodeAnnouncementDecodeErrorZ.ts
deleted file mode 100644 (file)
index aaab5e9..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_NodeAnnouncementDecodeErrorZ extends CommonBase {
-       private Result_NodeAnnouncementDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_NodeAnnouncementDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_NodeAnnouncementDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_NodeAnnouncementDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_NodeAnnouncementDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_NodeAnnouncementDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_NodeAnnouncementDecodeErrorZ_OK extends Result_NodeAnnouncementDecodeErrorZ {
-               public final NodeAnnouncement res;
-               private Result_NodeAnnouncementDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_NodeAnnouncementDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: NodeAnnouncement = new NodeAnnouncement(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_NodeAnnouncementDecodeErrorZ_Err extends Result_NodeAnnouncementDecodeErrorZ {
-               public final DecodeError err;
-               private Result_NodeAnnouncementDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_NodeAnnouncementDecodeErrorZ_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 static Result_NodeAnnouncementDecodeErrorZ constructor_ok(NodeAnnouncement o) {
-               number ret = bindings.CResult_NodeAnnouncementDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_NodeAnnouncementDecodeErrorZ ret_hu_conv = Result_NodeAnnouncementDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_NodeAnnouncementDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_NodeAnnouncementDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_NodeAnnouncementDecodeErrorZ ret_hu_conv = Result_NodeAnnouncementDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_NodeAnnouncementDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_NodeAnnouncementDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_NodeAnnouncementDecodeErrorZ clone() {
-               number ret = bindings.CResult_NodeAnnouncementDecodeErrorZ_clone(this.ptr);
-               Result_NodeAnnouncementDecodeErrorZ ret_hu_conv = Result_NodeAnnouncementDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_NodeAnnouncementInfoDecodeErrorZ.ts b/ts/structs/Result_NodeAnnouncementInfoDecodeErrorZ.ts
deleted file mode 100644 (file)
index b8ee77f..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_NodeAnnouncementInfoDecodeErrorZ extends CommonBase {
-       private Result_NodeAnnouncementInfoDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_NodeAnnouncementInfoDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_NodeAnnouncementInfoDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_NodeAnnouncementInfoDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_NodeAnnouncementInfoDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_NodeAnnouncementInfoDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_NodeAnnouncementInfoDecodeErrorZ_OK extends Result_NodeAnnouncementInfoDecodeErrorZ {
-               public final NodeAnnouncementInfo res;
-               private Result_NodeAnnouncementInfoDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_NodeAnnouncementInfoDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: NodeAnnouncementInfo = new NodeAnnouncementInfo(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_NodeAnnouncementInfoDecodeErrorZ_Err extends Result_NodeAnnouncementInfoDecodeErrorZ {
-               public final DecodeError err;
-               private Result_NodeAnnouncementInfoDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_NodeAnnouncementInfoDecodeErrorZ_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 static Result_NodeAnnouncementInfoDecodeErrorZ constructor_ok(NodeAnnouncementInfo o) {
-               number ret = bindings.CResult_NodeAnnouncementInfoDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_NodeAnnouncementInfoDecodeErrorZ ret_hu_conv = Result_NodeAnnouncementInfoDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_NodeAnnouncementInfoDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_NodeAnnouncementInfoDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_NodeAnnouncementInfoDecodeErrorZ ret_hu_conv = Result_NodeAnnouncementInfoDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_NodeAnnouncementInfoDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_NodeAnnouncementInfoDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_NodeAnnouncementInfoDecodeErrorZ clone() {
-               number ret = bindings.CResult_NodeAnnouncementInfoDecodeErrorZ_clone(this.ptr);
-               Result_NodeAnnouncementInfoDecodeErrorZ ret_hu_conv = Result_NodeAnnouncementInfoDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_NodeFeaturesDecodeErrorZ.ts b/ts/structs/Result_NodeFeaturesDecodeErrorZ.ts
deleted file mode 100644 (file)
index 64a8e63..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_NodeFeaturesDecodeErrorZ extends CommonBase {
-       private Result_NodeFeaturesDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_NodeFeaturesDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_NodeFeaturesDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_NodeFeaturesDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_NodeFeaturesDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_NodeFeaturesDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_NodeFeaturesDecodeErrorZ_OK extends Result_NodeFeaturesDecodeErrorZ {
-               public final NodeFeatures res;
-               private Result_NodeFeaturesDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_NodeFeaturesDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: NodeFeatures = new NodeFeatures(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_NodeFeaturesDecodeErrorZ_Err extends Result_NodeFeaturesDecodeErrorZ {
-               public final DecodeError err;
-               private Result_NodeFeaturesDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_NodeFeaturesDecodeErrorZ_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 static Result_NodeFeaturesDecodeErrorZ constructor_ok(NodeFeatures o) {
-               number ret = bindings.CResult_NodeFeaturesDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_NodeFeaturesDecodeErrorZ ret_hu_conv = Result_NodeFeaturesDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_NodeFeaturesDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_NodeFeaturesDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_NodeFeaturesDecodeErrorZ ret_hu_conv = Result_NodeFeaturesDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_NodeFeaturesDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/Result_NodeIdDecodeErrorZ.ts b/ts/structs/Result_NodeIdDecodeErrorZ.ts
deleted file mode 100644 (file)
index 5fb82dc..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_NodeIdDecodeErrorZ extends CommonBase {
-       private Result_NodeIdDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_NodeIdDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_NodeIdDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_NodeIdDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_NodeIdDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_NodeIdDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_NodeIdDecodeErrorZ_OK extends Result_NodeIdDecodeErrorZ {
-               public final NodeId res;
-               private Result_NodeIdDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_NodeIdDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: NodeId = new NodeId(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_NodeIdDecodeErrorZ_Err extends Result_NodeIdDecodeErrorZ {
-               public final DecodeError err;
-               private Result_NodeIdDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_NodeIdDecodeErrorZ_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 static Result_NodeIdDecodeErrorZ constructor_ok(NodeId o) {
-               number ret = bindings.CResult_NodeIdDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_NodeIdDecodeErrorZ ret_hu_conv = Result_NodeIdDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_NodeIdDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_NodeIdDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_NodeIdDecodeErrorZ ret_hu_conv = Result_NodeIdDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_NodeIdDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_NodeIdDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_NodeIdDecodeErrorZ clone() {
-               number ret = bindings.CResult_NodeIdDecodeErrorZ_clone(this.ptr);
-               Result_NodeIdDecodeErrorZ ret_hu_conv = Result_NodeIdDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_NodeInfoDecodeErrorZ.ts b/ts/structs/Result_NodeInfoDecodeErrorZ.ts
deleted file mode 100644 (file)
index 3f785d2..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_NodeInfoDecodeErrorZ extends CommonBase {
-       private Result_NodeInfoDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_NodeInfoDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_NodeInfoDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_NodeInfoDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_NodeInfoDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_NodeInfoDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_NodeInfoDecodeErrorZ_OK extends Result_NodeInfoDecodeErrorZ {
-               public final NodeInfo res;
-               private Result_NodeInfoDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_NodeInfoDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: NodeInfo = new NodeInfo(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_NodeInfoDecodeErrorZ_Err extends Result_NodeInfoDecodeErrorZ {
-               public final DecodeError err;
-               private Result_NodeInfoDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_NodeInfoDecodeErrorZ_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 static Result_NodeInfoDecodeErrorZ constructor_ok(NodeInfo o) {
-               number ret = bindings.CResult_NodeInfoDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_NodeInfoDecodeErrorZ ret_hu_conv = Result_NodeInfoDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_NodeInfoDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_NodeInfoDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_NodeInfoDecodeErrorZ ret_hu_conv = Result_NodeInfoDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_NodeInfoDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_NodeInfoDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_NodeInfoDecodeErrorZ clone() {
-               number ret = bindings.CResult_NodeInfoDecodeErrorZ_clone(this.ptr);
-               Result_NodeInfoDecodeErrorZ ret_hu_conv = Result_NodeInfoDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_NoneAPIErrorZ.ts b/ts/structs/Result_NoneAPIErrorZ.ts
deleted file mode 100644 (file)
index 76b4608..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_NoneAPIErrorZ extends CommonBase {
-       private Result_NoneAPIErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_NoneAPIErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_NoneAPIErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_NoneAPIErrorZ_is_ok(ptr)) {
-                       return new Result_NoneAPIErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_NoneAPIErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_NoneAPIErrorZ_OK extends Result_NoneAPIErrorZ {
-               private Result_NoneAPIErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-               }
-       }
-
-       public static final class Result_NoneAPIErrorZ_Err extends Result_NoneAPIErrorZ {
-               public final APIError err;
-               private Result_NoneAPIErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_NoneAPIErrorZ_get_err(ptr);
-                       APIError err_hu_conv = APIError.constr_from_ptr(err);
-                       err_hu_conv.ptrs_to.add(this);
-                       this.err = err_hu_conv;
-               }
-       }
-
-       public static Result_NoneAPIErrorZ constructor_ok() {
-               number ret = bindings.CResult_NoneAPIErrorZ_ok();
-               Result_NoneAPIErrorZ ret_hu_conv = Result_NoneAPIErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_NoneAPIErrorZ constructor_err(APIError e) {
-               number ret = bindings.CResult_NoneAPIErrorZ_err(e.ptr);
-               Result_NoneAPIErrorZ ret_hu_conv = Result_NoneAPIErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_NoneAPIErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_NoneAPIErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_NoneAPIErrorZ clone() {
-               number ret = bindings.CResult_NoneAPIErrorZ_clone(this.ptr);
-               Result_NoneAPIErrorZ ret_hu_conv = Result_NoneAPIErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_NoneChannelMonitorUpdateErrZ.ts b/ts/structs/Result_NoneChannelMonitorUpdateErrZ.ts
deleted file mode 100644 (file)
index 3bfe878..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_NoneChannelMonitorUpdateErrZ extends CommonBase {
-       private Result_NoneChannelMonitorUpdateErrZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_NoneChannelMonitorUpdateErrZ_free(ptr); } super.finalize();
-       }
-
-       static Result_NoneChannelMonitorUpdateErrZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_NoneChannelMonitorUpdateErrZ_is_ok(ptr)) {
-                       return new Result_NoneChannelMonitorUpdateErrZ_OK(null, ptr);
-               } else {
-                       return new Result_NoneChannelMonitorUpdateErrZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_NoneChannelMonitorUpdateErrZ_OK extends Result_NoneChannelMonitorUpdateErrZ {
-               private Result_NoneChannelMonitorUpdateErrZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-               }
-       }
-
-       public static final class Result_NoneChannelMonitorUpdateErrZ_Err extends Result_NoneChannelMonitorUpdateErrZ {
-               public final ChannelMonitorUpdateErr err;
-               private Result_NoneChannelMonitorUpdateErrZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.err = bindings.LDKCResult_NoneChannelMonitorUpdateErrZ_get_err(ptr);
-               }
-       }
-
-       public static Result_NoneChannelMonitorUpdateErrZ constructor_ok() {
-               number ret = bindings.CResult_NoneChannelMonitorUpdateErrZ_ok();
-               Result_NoneChannelMonitorUpdateErrZ ret_hu_conv = Result_NoneChannelMonitorUpdateErrZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_NoneChannelMonitorUpdateErrZ constructor_err(ChannelMonitorUpdateErr e) {
-               number ret = bindings.CResult_NoneChannelMonitorUpdateErrZ_err(e);
-               Result_NoneChannelMonitorUpdateErrZ ret_hu_conv = Result_NoneChannelMonitorUpdateErrZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_NoneChannelMonitorUpdateErrZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_NoneChannelMonitorUpdateErrZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_NoneChannelMonitorUpdateErrZ clone() {
-               number ret = bindings.CResult_NoneChannelMonitorUpdateErrZ_clone(this.ptr);
-               Result_NoneChannelMonitorUpdateErrZ ret_hu_conv = Result_NoneChannelMonitorUpdateErrZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_NoneErrorZ.ts b/ts/structs/Result_NoneErrorZ.ts
deleted file mode 100644 (file)
index 7e8df21..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_NoneErrorZ extends CommonBase {
-       private Result_NoneErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_NoneErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_NoneErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_NoneErrorZ_is_ok(ptr)) {
-                       return new Result_NoneErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_NoneErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_NoneErrorZ_OK extends Result_NoneErrorZ {
-               private Result_NoneErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-               }
-       }
-
-       public static final class Result_NoneErrorZ_Err extends Result_NoneErrorZ {
-               public final IOError err;
-               private Result_NoneErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.err = bindings.LDKCResult_NoneErrorZ_get_err(ptr);
-               }
-       }
-
-       public static Result_NoneErrorZ constructor_ok() {
-               number ret = bindings.CResult_NoneErrorZ_ok();
-               Result_NoneErrorZ ret_hu_conv = Result_NoneErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_NoneErrorZ constructor_err(IOError e) {
-               number ret = bindings.CResult_NoneErrorZ_err(e);
-               Result_NoneErrorZ ret_hu_conv = Result_NoneErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_NoneErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_NoneErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_NoneErrorZ clone() {
-               number ret = bindings.CResult_NoneErrorZ_clone(this.ptr);
-               Result_NoneErrorZ ret_hu_conv = Result_NoneErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_NoneLightningErrorZ.ts b/ts/structs/Result_NoneLightningErrorZ.ts
deleted file mode 100644 (file)
index 8630f41..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_NoneLightningErrorZ extends CommonBase {
-       private Result_NoneLightningErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_NoneLightningErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_NoneLightningErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_NoneLightningErrorZ_is_ok(ptr)) {
-                       return new Result_NoneLightningErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_NoneLightningErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_NoneLightningErrorZ_OK extends Result_NoneLightningErrorZ {
-               private Result_NoneLightningErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-               }
-       }
-
-       public static final class Result_NoneLightningErrorZ_Err extends Result_NoneLightningErrorZ {
-               public final LightningError err;
-               private Result_NoneLightningErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_NoneLightningErrorZ_get_err(ptr);
-                       const err_hu_conv: LightningError = new LightningError(null, err);
-                       err_hu_conv.ptrs_to.add(this);
-                       this.err = err_hu_conv;
-               }
-       }
-
-       public static Result_NoneLightningErrorZ constructor_ok() {
-               number ret = bindings.CResult_NoneLightningErrorZ_ok();
-               Result_NoneLightningErrorZ ret_hu_conv = Result_NoneLightningErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_NoneLightningErrorZ constructor_err(LightningError e) {
-               number ret = bindings.CResult_NoneLightningErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_NoneLightningErrorZ ret_hu_conv = Result_NoneLightningErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_NoneLightningErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_NoneLightningErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_NoneLightningErrorZ clone() {
-               number ret = bindings.CResult_NoneLightningErrorZ_clone(this.ptr);
-               Result_NoneLightningErrorZ ret_hu_conv = Result_NoneLightningErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_NoneNoneZ.ts b/ts/structs/Result_NoneNoneZ.ts
deleted file mode 100644 (file)
index 4beac56..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_NoneNoneZ extends CommonBase {
-       private Result_NoneNoneZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_NoneNoneZ_free(ptr); } super.finalize();
-       }
-
-       static Result_NoneNoneZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_NoneNoneZ_is_ok(ptr)) {
-                       return new Result_NoneNoneZ_OK(null, ptr);
-               } else {
-                       return new Result_NoneNoneZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_NoneNoneZ_OK extends Result_NoneNoneZ {
-               private Result_NoneNoneZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-               }
-       }
-
-       public static final class Result_NoneNoneZ_Err extends Result_NoneNoneZ {
-               private Result_NoneNoneZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-               }
-       }
-
-       public static Result_NoneNoneZ constructor_ok() {
-               number ret = bindings.CResult_NoneNoneZ_ok();
-               Result_NoneNoneZ ret_hu_conv = Result_NoneNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_NoneNoneZ constructor_err() {
-               number ret = bindings.CResult_NoneNoneZ_err();
-               Result_NoneNoneZ ret_hu_conv = Result_NoneNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_NoneNoneZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_NoneNoneZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_NoneNoneZ clone() {
-               number ret = bindings.CResult_NoneNoneZ_clone(this.ptr);
-               Result_NoneNoneZ ret_hu_conv = Result_NoneNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_NonePaymentSendFailureZ.ts b/ts/structs/Result_NonePaymentSendFailureZ.ts
deleted file mode 100644 (file)
index 73dd48e..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_NonePaymentSendFailureZ extends CommonBase {
-       private Result_NonePaymentSendFailureZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_NonePaymentSendFailureZ_free(ptr); } super.finalize();
-       }
-
-       static Result_NonePaymentSendFailureZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_NonePaymentSendFailureZ_is_ok(ptr)) {
-                       return new Result_NonePaymentSendFailureZ_OK(null, ptr);
-               } else {
-                       return new Result_NonePaymentSendFailureZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_NonePaymentSendFailureZ_OK extends Result_NonePaymentSendFailureZ {
-               private Result_NonePaymentSendFailureZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-               }
-       }
-
-       public static final class Result_NonePaymentSendFailureZ_Err extends Result_NonePaymentSendFailureZ {
-               public final PaymentSendFailure err;
-               private Result_NonePaymentSendFailureZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_NonePaymentSendFailureZ_get_err(ptr);
-                       PaymentSendFailure err_hu_conv = PaymentSendFailure.constr_from_ptr(err);
-                       err_hu_conv.ptrs_to.add(this);
-                       this.err = err_hu_conv;
-               }
-       }
-
-       public static Result_NonePaymentSendFailureZ constructor_ok() {
-               number ret = bindings.CResult_NonePaymentSendFailureZ_ok();
-               Result_NonePaymentSendFailureZ ret_hu_conv = Result_NonePaymentSendFailureZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_NonePaymentSendFailureZ constructor_err(PaymentSendFailure e) {
-               number ret = bindings.CResult_NonePaymentSendFailureZ_err(e.ptr);
-               Result_NonePaymentSendFailureZ ret_hu_conv = Result_NonePaymentSendFailureZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_NonePaymentSendFailureZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_NonePaymentSendFailureZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_NonePaymentSendFailureZ clone() {
-               number ret = bindings.CResult_NonePaymentSendFailureZ_clone(this.ptr);
-               Result_NonePaymentSendFailureZ ret_hu_conv = Result_NonePaymentSendFailureZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_NonePeerHandleErrorZ.ts b/ts/structs/Result_NonePeerHandleErrorZ.ts
deleted file mode 100644 (file)
index 1da48f8..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_NonePeerHandleErrorZ extends CommonBase {
-       private Result_NonePeerHandleErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_NonePeerHandleErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_NonePeerHandleErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_NonePeerHandleErrorZ_is_ok(ptr)) {
-                       return new Result_NonePeerHandleErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_NonePeerHandleErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_NonePeerHandleErrorZ_OK extends Result_NonePeerHandleErrorZ {
-               private Result_NonePeerHandleErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-               }
-       }
-
-       public static final class Result_NonePeerHandleErrorZ_Err extends Result_NonePeerHandleErrorZ {
-               public final PeerHandleError err;
-               private Result_NonePeerHandleErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_NonePeerHandleErrorZ_get_err(ptr);
-                       const err_hu_conv: PeerHandleError = new PeerHandleError(null, err);
-                       err_hu_conv.ptrs_to.add(this);
-                       this.err = err_hu_conv;
-               }
-       }
-
-       public static Result_NonePeerHandleErrorZ constructor_ok() {
-               number ret = bindings.CResult_NonePeerHandleErrorZ_ok();
-               Result_NonePeerHandleErrorZ ret_hu_conv = Result_NonePeerHandleErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_NonePeerHandleErrorZ constructor_err(PeerHandleError e) {
-               number ret = bindings.CResult_NonePeerHandleErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_NonePeerHandleErrorZ ret_hu_conv = Result_NonePeerHandleErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_NonePeerHandleErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_NonePeerHandleErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_NonePeerHandleErrorZ clone() {
-               number ret = bindings.CResult_NonePeerHandleErrorZ_clone(this.ptr);
-               Result_NonePeerHandleErrorZ ret_hu_conv = Result_NonePeerHandleErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_NoneSemanticErrorZ.ts b/ts/structs/Result_NoneSemanticErrorZ.ts
deleted file mode 100644 (file)
index ec49cdb..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_NoneSemanticErrorZ extends CommonBase {
-       private Result_NoneSemanticErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_NoneSemanticErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_NoneSemanticErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_NoneSemanticErrorZ_is_ok(ptr)) {
-                       return new Result_NoneSemanticErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_NoneSemanticErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_NoneSemanticErrorZ_OK extends Result_NoneSemanticErrorZ {
-               private Result_NoneSemanticErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-               }
-       }
-
-       public static final class Result_NoneSemanticErrorZ_Err extends Result_NoneSemanticErrorZ {
-               public final SemanticError err;
-               private Result_NoneSemanticErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.err = bindings.LDKCResult_NoneSemanticErrorZ_get_err(ptr);
-               }
-       }
-
-       public static Result_NoneSemanticErrorZ constructor_ok() {
-               number ret = bindings.CResult_NoneSemanticErrorZ_ok();
-               Result_NoneSemanticErrorZ ret_hu_conv = Result_NoneSemanticErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_NoneSemanticErrorZ constructor_err(SemanticError e) {
-               number ret = bindings.CResult_NoneSemanticErrorZ_err(e);
-               Result_NoneSemanticErrorZ ret_hu_conv = Result_NoneSemanticErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_NoneSemanticErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_NoneSemanticErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_NoneSemanticErrorZ clone() {
-               number ret = bindings.CResult_NoneSemanticErrorZ_clone(this.ptr);
-               Result_NoneSemanticErrorZ ret_hu_conv = Result_NoneSemanticErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_OpenChannelDecodeErrorZ.ts b/ts/structs/Result_OpenChannelDecodeErrorZ.ts
deleted file mode 100644 (file)
index fa1c638..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_OpenChannelDecodeErrorZ extends CommonBase {
-       private Result_OpenChannelDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_OpenChannelDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_OpenChannelDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_OpenChannelDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_OpenChannelDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_OpenChannelDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_OpenChannelDecodeErrorZ_OK extends Result_OpenChannelDecodeErrorZ {
-               public final OpenChannel res;
-               private Result_OpenChannelDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_OpenChannelDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: OpenChannel = new OpenChannel(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_OpenChannelDecodeErrorZ_Err extends Result_OpenChannelDecodeErrorZ {
-               public final DecodeError err;
-               private Result_OpenChannelDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_OpenChannelDecodeErrorZ_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 static Result_OpenChannelDecodeErrorZ constructor_ok(OpenChannel o) {
-               number ret = bindings.CResult_OpenChannelDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_OpenChannelDecodeErrorZ ret_hu_conv = Result_OpenChannelDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_OpenChannelDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_OpenChannelDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_OpenChannelDecodeErrorZ ret_hu_conv = Result_OpenChannelDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_OpenChannelDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_OpenChannelDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_OpenChannelDecodeErrorZ clone() {
-               number ret = bindings.CResult_OpenChannelDecodeErrorZ_clone(this.ptr);
-               Result_OpenChannelDecodeErrorZ ret_hu_conv = Result_OpenChannelDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_OutPointDecodeErrorZ.ts b/ts/structs/Result_OutPointDecodeErrorZ.ts
deleted file mode 100644 (file)
index 97099d7..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_OutPointDecodeErrorZ extends CommonBase {
-       private Result_OutPointDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_OutPointDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_OutPointDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_OutPointDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_OutPointDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_OutPointDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_OutPointDecodeErrorZ_OK extends Result_OutPointDecodeErrorZ {
-               public final OutPoint res;
-               private Result_OutPointDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_OutPointDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: OutPoint = new OutPoint(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_OutPointDecodeErrorZ_Err extends Result_OutPointDecodeErrorZ {
-               public final DecodeError err;
-               private Result_OutPointDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_OutPointDecodeErrorZ_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 static Result_OutPointDecodeErrorZ constructor_ok(OutPoint o) {
-               number ret = bindings.CResult_OutPointDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_OutPointDecodeErrorZ ret_hu_conv = Result_OutPointDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_OutPointDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_OutPointDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_OutPointDecodeErrorZ ret_hu_conv = Result_OutPointDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_OutPointDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_OutPointDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_OutPointDecodeErrorZ clone() {
-               number ret = bindings.CResult_OutPointDecodeErrorZ_clone(this.ptr);
-               Result_OutPointDecodeErrorZ ret_hu_conv = Result_OutPointDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_PayeeDecodeErrorZ.ts b/ts/structs/Result_PayeeDecodeErrorZ.ts
deleted file mode 100644 (file)
index 4a1cf86..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_PayeeDecodeErrorZ extends CommonBase {
-       private Result_PayeeDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_PayeeDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_PayeeDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_PayeeDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_PayeeDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_PayeeDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_PayeeDecodeErrorZ_OK extends Result_PayeeDecodeErrorZ {
-               public final Payee res;
-               private Result_PayeeDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_PayeeDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: Payee = new Payee(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_PayeeDecodeErrorZ_Err extends Result_PayeeDecodeErrorZ {
-               public final DecodeError err;
-               private Result_PayeeDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_PayeeDecodeErrorZ_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 static Result_PayeeDecodeErrorZ constructor_ok(Payee o) {
-               number ret = bindings.CResult_PayeeDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_PayeeDecodeErrorZ ret_hu_conv = Result_PayeeDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_PayeeDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_PayeeDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_PayeeDecodeErrorZ ret_hu_conv = Result_PayeeDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_PayeeDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_PayeeDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_PayeeDecodeErrorZ clone() {
-               number ret = bindings.CResult_PayeeDecodeErrorZ_clone(this.ptr);
-               Result_PayeeDecodeErrorZ ret_hu_conv = Result_PayeeDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_PayeePubKeyErrorZ.ts b/ts/structs/Result_PayeePubKeyErrorZ.ts
deleted file mode 100644 (file)
index 1a5c93c..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_PayeePubKeyErrorZ extends CommonBase {
-       private Result_PayeePubKeyErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_PayeePubKeyErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_PayeePubKeyErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_PayeePubKeyErrorZ_is_ok(ptr)) {
-                       return new Result_PayeePubKeyErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_PayeePubKeyErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_PayeePubKeyErrorZ_OK extends Result_PayeePubKeyErrorZ {
-               public final PayeePubKey res;
-               private Result_PayeePubKeyErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_PayeePubKeyErrorZ_get_ok(ptr);
-                       const res_hu_conv: PayeePubKey = new PayeePubKey(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_PayeePubKeyErrorZ_Err extends Result_PayeePubKeyErrorZ {
-               public final Secp256k1Error err;
-               private Result_PayeePubKeyErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.err = bindings.LDKCResult_PayeePubKeyErrorZ_get_err(ptr);
-               }
-       }
-
-       public static Result_PayeePubKeyErrorZ constructor_ok(PayeePubKey o) {
-               number ret = bindings.CResult_PayeePubKeyErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_PayeePubKeyErrorZ ret_hu_conv = Result_PayeePubKeyErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_PayeePubKeyErrorZ constructor_err(Secp256k1Error e) {
-               number ret = bindings.CResult_PayeePubKeyErrorZ_err(e);
-               Result_PayeePubKeyErrorZ ret_hu_conv = Result_PayeePubKeyErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_PayeePubKeyErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_PayeePubKeyErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_PayeePubKeyErrorZ clone() {
-               number ret = bindings.CResult_PayeePubKeyErrorZ_clone(this.ptr);
-               Result_PayeePubKeyErrorZ ret_hu_conv = Result_PayeePubKeyErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_PaymentIdPaymentErrorZ.ts b/ts/structs/Result_PaymentIdPaymentErrorZ.ts
deleted file mode 100644 (file)
index 31efaae..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_PaymentIdPaymentErrorZ extends CommonBase {
-       private Result_PaymentIdPaymentErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_PaymentIdPaymentErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_PaymentIdPaymentErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_PaymentIdPaymentErrorZ_is_ok(ptr)) {
-                       return new Result_PaymentIdPaymentErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_PaymentIdPaymentErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_PaymentIdPaymentErrorZ_OK extends Result_PaymentIdPaymentErrorZ {
-               public final Uint8Array res;
-               private Result_PaymentIdPaymentErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.res = bindings.LDKCResult_PaymentIdPaymentErrorZ_get_ok(ptr);
-               }
-       }
-
-       public static final class Result_PaymentIdPaymentErrorZ_Err extends Result_PaymentIdPaymentErrorZ {
-               public final PaymentError err;
-               private Result_PaymentIdPaymentErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_PaymentIdPaymentErrorZ_get_err(ptr);
-                       PaymentError err_hu_conv = PaymentError.constr_from_ptr(err);
-                       err_hu_conv.ptrs_to.add(this);
-                       this.err = err_hu_conv;
-               }
-       }
-
-       public static Result_PaymentIdPaymentErrorZ constructor_ok(Uint8Array o) {
-               number ret = bindings.CResult_PaymentIdPaymentErrorZ_ok(InternalUtils.check_arr_len(o, 32));
-               Result_PaymentIdPaymentErrorZ ret_hu_conv = Result_PaymentIdPaymentErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_PaymentIdPaymentErrorZ constructor_err(PaymentError e) {
-               number ret = bindings.CResult_PaymentIdPaymentErrorZ_err(e.ptr);
-               Result_PaymentIdPaymentErrorZ ret_hu_conv = Result_PaymentIdPaymentErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_PaymentIdPaymentErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_PaymentIdPaymentErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_PaymentIdPaymentErrorZ clone() {
-               number ret = bindings.CResult_PaymentIdPaymentErrorZ_clone(this.ptr);
-               Result_PaymentIdPaymentErrorZ ret_hu_conv = Result_PaymentIdPaymentErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_PaymentIdPaymentSendFailureZ.ts b/ts/structs/Result_PaymentIdPaymentSendFailureZ.ts
deleted file mode 100644 (file)
index c1331d0..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_PaymentIdPaymentSendFailureZ extends CommonBase {
-       private Result_PaymentIdPaymentSendFailureZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_PaymentIdPaymentSendFailureZ_free(ptr); } super.finalize();
-       }
-
-       static Result_PaymentIdPaymentSendFailureZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_PaymentIdPaymentSendFailureZ_is_ok(ptr)) {
-                       return new Result_PaymentIdPaymentSendFailureZ_OK(null, ptr);
-               } else {
-                       return new Result_PaymentIdPaymentSendFailureZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_PaymentIdPaymentSendFailureZ_OK extends Result_PaymentIdPaymentSendFailureZ {
-               public final Uint8Array res;
-               private Result_PaymentIdPaymentSendFailureZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.res = bindings.LDKCResult_PaymentIdPaymentSendFailureZ_get_ok(ptr);
-               }
-       }
-
-       public static final class Result_PaymentIdPaymentSendFailureZ_Err extends Result_PaymentIdPaymentSendFailureZ {
-               public final PaymentSendFailure err;
-               private Result_PaymentIdPaymentSendFailureZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_PaymentIdPaymentSendFailureZ_get_err(ptr);
-                       PaymentSendFailure err_hu_conv = PaymentSendFailure.constr_from_ptr(err);
-                       err_hu_conv.ptrs_to.add(this);
-                       this.err = err_hu_conv;
-               }
-       }
-
-       public static Result_PaymentIdPaymentSendFailureZ constructor_ok(Uint8Array o) {
-               number ret = bindings.CResult_PaymentIdPaymentSendFailureZ_ok(InternalUtils.check_arr_len(o, 32));
-               Result_PaymentIdPaymentSendFailureZ ret_hu_conv = Result_PaymentIdPaymentSendFailureZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_PaymentIdPaymentSendFailureZ constructor_err(PaymentSendFailure e) {
-               number ret = bindings.CResult_PaymentIdPaymentSendFailureZ_err(e.ptr);
-               Result_PaymentIdPaymentSendFailureZ ret_hu_conv = Result_PaymentIdPaymentSendFailureZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_PaymentIdPaymentSendFailureZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_PaymentIdPaymentSendFailureZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_PaymentIdPaymentSendFailureZ clone() {
-               number ret = bindings.CResult_PaymentIdPaymentSendFailureZ_clone(this.ptr);
-               Result_PaymentIdPaymentSendFailureZ ret_hu_conv = Result_PaymentIdPaymentSendFailureZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_PaymentPreimageAPIErrorZ.ts b/ts/structs/Result_PaymentPreimageAPIErrorZ.ts
deleted file mode 100644 (file)
index 88f80e1..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_PaymentPreimageAPIErrorZ extends CommonBase {
-       private Result_PaymentPreimageAPIErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_PaymentPreimageAPIErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_PaymentPreimageAPIErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_PaymentPreimageAPIErrorZ_is_ok(ptr)) {
-                       return new Result_PaymentPreimageAPIErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_PaymentPreimageAPIErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_PaymentPreimageAPIErrorZ_OK extends Result_PaymentPreimageAPIErrorZ {
-               public final Uint8Array res;
-               private Result_PaymentPreimageAPIErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.res = bindings.LDKCResult_PaymentPreimageAPIErrorZ_get_ok(ptr);
-               }
-       }
-
-       public static final class Result_PaymentPreimageAPIErrorZ_Err extends Result_PaymentPreimageAPIErrorZ {
-               public final APIError err;
-               private Result_PaymentPreimageAPIErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_PaymentPreimageAPIErrorZ_get_err(ptr);
-                       APIError err_hu_conv = APIError.constr_from_ptr(err);
-                       err_hu_conv.ptrs_to.add(this);
-                       this.err = err_hu_conv;
-               }
-       }
-
-       public static Result_PaymentPreimageAPIErrorZ constructor_ok(Uint8Array o) {
-               number ret = bindings.CResult_PaymentPreimageAPIErrorZ_ok(InternalUtils.check_arr_len(o, 32));
-               Result_PaymentPreimageAPIErrorZ ret_hu_conv = Result_PaymentPreimageAPIErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_PaymentPreimageAPIErrorZ constructor_err(APIError e) {
-               number ret = bindings.CResult_PaymentPreimageAPIErrorZ_err(e.ptr);
-               Result_PaymentPreimageAPIErrorZ ret_hu_conv = Result_PaymentPreimageAPIErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_PaymentPreimageAPIErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_PaymentPreimageAPIErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_PaymentPreimageAPIErrorZ clone() {
-               number ret = bindings.CResult_PaymentPreimageAPIErrorZ_clone(this.ptr);
-               Result_PaymentPreimageAPIErrorZ ret_hu_conv = Result_PaymentPreimageAPIErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_PaymentSecretAPIErrorZ.ts b/ts/structs/Result_PaymentSecretAPIErrorZ.ts
deleted file mode 100644 (file)
index 906f575..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_PaymentSecretAPIErrorZ extends CommonBase {
-       private Result_PaymentSecretAPIErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_PaymentSecretAPIErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_PaymentSecretAPIErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_PaymentSecretAPIErrorZ_is_ok(ptr)) {
-                       return new Result_PaymentSecretAPIErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_PaymentSecretAPIErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_PaymentSecretAPIErrorZ_OK extends Result_PaymentSecretAPIErrorZ {
-               public final Uint8Array res;
-               private Result_PaymentSecretAPIErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.res = bindings.LDKCResult_PaymentSecretAPIErrorZ_get_ok(ptr);
-               }
-       }
-
-       public static final class Result_PaymentSecretAPIErrorZ_Err extends Result_PaymentSecretAPIErrorZ {
-               public final APIError err;
-               private Result_PaymentSecretAPIErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_PaymentSecretAPIErrorZ_get_err(ptr);
-                       APIError err_hu_conv = APIError.constr_from_ptr(err);
-                       err_hu_conv.ptrs_to.add(this);
-                       this.err = err_hu_conv;
-               }
-       }
-
-       public static Result_PaymentSecretAPIErrorZ constructor_ok(Uint8Array o) {
-               number ret = bindings.CResult_PaymentSecretAPIErrorZ_ok(InternalUtils.check_arr_len(o, 32));
-               Result_PaymentSecretAPIErrorZ ret_hu_conv = Result_PaymentSecretAPIErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_PaymentSecretAPIErrorZ constructor_err(APIError e) {
-               number ret = bindings.CResult_PaymentSecretAPIErrorZ_err(e.ptr);
-               Result_PaymentSecretAPIErrorZ ret_hu_conv = Result_PaymentSecretAPIErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_PaymentSecretAPIErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_PaymentSecretAPIErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_PaymentSecretAPIErrorZ clone() {
-               number ret = bindings.CResult_PaymentSecretAPIErrorZ_clone(this.ptr);
-               Result_PaymentSecretAPIErrorZ ret_hu_conv = Result_PaymentSecretAPIErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_PaymentSecretNoneZ.ts b/ts/structs/Result_PaymentSecretNoneZ.ts
deleted file mode 100644 (file)
index 6178ba6..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_PaymentSecretNoneZ extends CommonBase {
-       private Result_PaymentSecretNoneZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_PaymentSecretNoneZ_free(ptr); } super.finalize();
-       }
-
-       static Result_PaymentSecretNoneZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_PaymentSecretNoneZ_is_ok(ptr)) {
-                       return new Result_PaymentSecretNoneZ_OK(null, ptr);
-               } else {
-                       return new Result_PaymentSecretNoneZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_PaymentSecretNoneZ_OK extends Result_PaymentSecretNoneZ {
-               public final Uint8Array res;
-               private Result_PaymentSecretNoneZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.res = bindings.LDKCResult_PaymentSecretNoneZ_get_ok(ptr);
-               }
-       }
-
-       public static final class Result_PaymentSecretNoneZ_Err extends Result_PaymentSecretNoneZ {
-               private Result_PaymentSecretNoneZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-               }
-       }
-
-       public static Result_PaymentSecretNoneZ constructor_ok(Uint8Array o) {
-               number ret = bindings.CResult_PaymentSecretNoneZ_ok(InternalUtils.check_arr_len(o, 32));
-               Result_PaymentSecretNoneZ ret_hu_conv = Result_PaymentSecretNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_PaymentSecretNoneZ constructor_err() {
-               number ret = bindings.CResult_PaymentSecretNoneZ_err();
-               Result_PaymentSecretNoneZ ret_hu_conv = Result_PaymentSecretNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_PaymentSecretNoneZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_PaymentSecretNoneZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_PaymentSecretNoneZ clone() {
-               number ret = bindings.CResult_PaymentSecretNoneZ_clone(this.ptr);
-               Result_PaymentSecretNoneZ ret_hu_conv = Result_PaymentSecretNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_PingDecodeErrorZ.ts b/ts/structs/Result_PingDecodeErrorZ.ts
deleted file mode 100644 (file)
index 5351a3c..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_PingDecodeErrorZ extends CommonBase {
-       private Result_PingDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_PingDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_PingDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_PingDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_PingDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_PingDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_PingDecodeErrorZ_OK extends Result_PingDecodeErrorZ {
-               public final Ping res;
-               private Result_PingDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_PingDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: Ping = new Ping(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_PingDecodeErrorZ_Err extends Result_PingDecodeErrorZ {
-               public final DecodeError err;
-               private Result_PingDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_PingDecodeErrorZ_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 static Result_PingDecodeErrorZ constructor_ok(Ping o) {
-               number ret = bindings.CResult_PingDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_PingDecodeErrorZ ret_hu_conv = Result_PingDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_PingDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_PingDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_PingDecodeErrorZ ret_hu_conv = Result_PingDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_PingDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_PingDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_PingDecodeErrorZ clone() {
-               number ret = bindings.CResult_PingDecodeErrorZ_clone(this.ptr);
-               Result_PingDecodeErrorZ ret_hu_conv = Result_PingDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_PongDecodeErrorZ.ts b/ts/structs/Result_PongDecodeErrorZ.ts
deleted file mode 100644 (file)
index 10a2eb7..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_PongDecodeErrorZ extends CommonBase {
-       private Result_PongDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_PongDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_PongDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_PongDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_PongDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_PongDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_PongDecodeErrorZ_OK extends Result_PongDecodeErrorZ {
-               public final Pong res;
-               private Result_PongDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_PongDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: Pong = new Pong(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_PongDecodeErrorZ_Err extends Result_PongDecodeErrorZ {
-               public final DecodeError err;
-               private Result_PongDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_PongDecodeErrorZ_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 static Result_PongDecodeErrorZ constructor_ok(Pong o) {
-               number ret = bindings.CResult_PongDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_PongDecodeErrorZ ret_hu_conv = Result_PongDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_PongDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_PongDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_PongDecodeErrorZ ret_hu_conv = Result_PongDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_PongDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_PongDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_PongDecodeErrorZ clone() {
-               number ret = bindings.CResult_PongDecodeErrorZ_clone(this.ptr);
-               Result_PongDecodeErrorZ ret_hu_conv = Result_PongDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_PositiveTimestampCreationErrorZ.ts b/ts/structs/Result_PositiveTimestampCreationErrorZ.ts
deleted file mode 100644 (file)
index 8d5dc04..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_PositiveTimestampCreationErrorZ extends CommonBase {
-       private Result_PositiveTimestampCreationErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_PositiveTimestampCreationErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_PositiveTimestampCreationErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_PositiveTimestampCreationErrorZ_is_ok(ptr)) {
-                       return new Result_PositiveTimestampCreationErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_PositiveTimestampCreationErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_PositiveTimestampCreationErrorZ_OK extends Result_PositiveTimestampCreationErrorZ {
-               public final PositiveTimestamp res;
-               private Result_PositiveTimestampCreationErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_PositiveTimestampCreationErrorZ_get_ok(ptr);
-                       const res_hu_conv: PositiveTimestamp = new PositiveTimestamp(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_PositiveTimestampCreationErrorZ_Err extends Result_PositiveTimestampCreationErrorZ {
-               public final CreationError err;
-               private Result_PositiveTimestampCreationErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.err = bindings.LDKCResult_PositiveTimestampCreationErrorZ_get_err(ptr);
-               }
-       }
-
-       public static Result_PositiveTimestampCreationErrorZ constructor_ok(PositiveTimestamp o) {
-               number ret = bindings.CResult_PositiveTimestampCreationErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_PositiveTimestampCreationErrorZ ret_hu_conv = Result_PositiveTimestampCreationErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_PositiveTimestampCreationErrorZ constructor_err(CreationError e) {
-               number ret = bindings.CResult_PositiveTimestampCreationErrorZ_err(e);
-               Result_PositiveTimestampCreationErrorZ ret_hu_conv = Result_PositiveTimestampCreationErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_PositiveTimestampCreationErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_PositiveTimestampCreationErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_PositiveTimestampCreationErrorZ clone() {
-               number ret = bindings.CResult_PositiveTimestampCreationErrorZ_clone(this.ptr);
-               Result_PositiveTimestampCreationErrorZ ret_hu_conv = Result_PositiveTimestampCreationErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_PrivateRouteCreationErrorZ.ts b/ts/structs/Result_PrivateRouteCreationErrorZ.ts
deleted file mode 100644 (file)
index 4cfd7ba..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_PrivateRouteCreationErrorZ extends CommonBase {
-       private Result_PrivateRouteCreationErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_PrivateRouteCreationErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_PrivateRouteCreationErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_PrivateRouteCreationErrorZ_is_ok(ptr)) {
-                       return new Result_PrivateRouteCreationErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_PrivateRouteCreationErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_PrivateRouteCreationErrorZ_OK extends Result_PrivateRouteCreationErrorZ {
-               public final PrivateRoute res;
-               private Result_PrivateRouteCreationErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_PrivateRouteCreationErrorZ_get_ok(ptr);
-                       const res_hu_conv: PrivateRoute = new PrivateRoute(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_PrivateRouteCreationErrorZ_Err extends Result_PrivateRouteCreationErrorZ {
-               public final CreationError err;
-               private Result_PrivateRouteCreationErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.err = bindings.LDKCResult_PrivateRouteCreationErrorZ_get_err(ptr);
-               }
-       }
-
-       public static Result_PrivateRouteCreationErrorZ constructor_ok(PrivateRoute o) {
-               number ret = bindings.CResult_PrivateRouteCreationErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_PrivateRouteCreationErrorZ ret_hu_conv = Result_PrivateRouteCreationErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_PrivateRouteCreationErrorZ constructor_err(CreationError e) {
-               number ret = bindings.CResult_PrivateRouteCreationErrorZ_err(e);
-               Result_PrivateRouteCreationErrorZ ret_hu_conv = Result_PrivateRouteCreationErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_PrivateRouteCreationErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_PrivateRouteCreationErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_PrivateRouteCreationErrorZ clone() {
-               number ret = bindings.CResult_PrivateRouteCreationErrorZ_clone(this.ptr);
-               Result_PrivateRouteCreationErrorZ ret_hu_conv = Result_PrivateRouteCreationErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_PublicKeyErrorZ.ts b/ts/structs/Result_PublicKeyErrorZ.ts
deleted file mode 100644 (file)
index 303de7b..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_PublicKeyErrorZ extends CommonBase {
-       private Result_PublicKeyErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_PublicKeyErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_PublicKeyErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_PublicKeyErrorZ_is_ok(ptr)) {
-                       return new Result_PublicKeyErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_PublicKeyErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_PublicKeyErrorZ_OK extends Result_PublicKeyErrorZ {
-               public final Uint8Array res;
-               private Result_PublicKeyErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.res = bindings.LDKCResult_PublicKeyErrorZ_get_ok(ptr);
-               }
-       }
-
-       public static final class Result_PublicKeyErrorZ_Err extends Result_PublicKeyErrorZ {
-               public final Secp256k1Error err;
-               private Result_PublicKeyErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.err = bindings.LDKCResult_PublicKeyErrorZ_get_err(ptr);
-               }
-       }
-
-       public static Result_PublicKeyErrorZ constructor_ok(Uint8Array o) {
-               number ret = bindings.CResult_PublicKeyErrorZ_ok(InternalUtils.check_arr_len(o, 33));
-               Result_PublicKeyErrorZ ret_hu_conv = Result_PublicKeyErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_PublicKeyErrorZ constructor_err(Secp256k1Error e) {
-               number ret = bindings.CResult_PublicKeyErrorZ_err(e);
-               Result_PublicKeyErrorZ ret_hu_conv = Result_PublicKeyErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_PublicKeyErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_PublicKeyErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_PublicKeyErrorZ clone() {
-               number ret = bindings.CResult_PublicKeyErrorZ_clone(this.ptr);
-               Result_PublicKeyErrorZ ret_hu_conv = Result_PublicKeyErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_QueryChannelRangeDecodeErrorZ.ts b/ts/structs/Result_QueryChannelRangeDecodeErrorZ.ts
deleted file mode 100644 (file)
index 7769569..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_QueryChannelRangeDecodeErrorZ extends CommonBase {
-       private Result_QueryChannelRangeDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_QueryChannelRangeDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_QueryChannelRangeDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_QueryChannelRangeDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_QueryChannelRangeDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_QueryChannelRangeDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_QueryChannelRangeDecodeErrorZ_OK extends Result_QueryChannelRangeDecodeErrorZ {
-               public final QueryChannelRange res;
-               private Result_QueryChannelRangeDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_QueryChannelRangeDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: QueryChannelRange = new QueryChannelRange(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_QueryChannelRangeDecodeErrorZ_Err extends Result_QueryChannelRangeDecodeErrorZ {
-               public final DecodeError err;
-               private Result_QueryChannelRangeDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_QueryChannelRangeDecodeErrorZ_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 static Result_QueryChannelRangeDecodeErrorZ constructor_ok(QueryChannelRange o) {
-               number ret = bindings.CResult_QueryChannelRangeDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_QueryChannelRangeDecodeErrorZ ret_hu_conv = Result_QueryChannelRangeDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_QueryChannelRangeDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_QueryChannelRangeDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_QueryChannelRangeDecodeErrorZ ret_hu_conv = Result_QueryChannelRangeDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_QueryChannelRangeDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_QueryChannelRangeDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_QueryChannelRangeDecodeErrorZ clone() {
-               number ret = bindings.CResult_QueryChannelRangeDecodeErrorZ_clone(this.ptr);
-               Result_QueryChannelRangeDecodeErrorZ ret_hu_conv = Result_QueryChannelRangeDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_QueryShortChannelIdsDecodeErrorZ.ts b/ts/structs/Result_QueryShortChannelIdsDecodeErrorZ.ts
deleted file mode 100644 (file)
index 7df1f39..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_QueryShortChannelIdsDecodeErrorZ extends CommonBase {
-       private Result_QueryShortChannelIdsDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_QueryShortChannelIdsDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_QueryShortChannelIdsDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_QueryShortChannelIdsDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_QueryShortChannelIdsDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_QueryShortChannelIdsDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_QueryShortChannelIdsDecodeErrorZ_OK extends Result_QueryShortChannelIdsDecodeErrorZ {
-               public final QueryShortChannelIds res;
-               private Result_QueryShortChannelIdsDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_QueryShortChannelIdsDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: QueryShortChannelIds = new QueryShortChannelIds(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_QueryShortChannelIdsDecodeErrorZ_Err extends Result_QueryShortChannelIdsDecodeErrorZ {
-               public final DecodeError err;
-               private Result_QueryShortChannelIdsDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_QueryShortChannelIdsDecodeErrorZ_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 static Result_QueryShortChannelIdsDecodeErrorZ constructor_ok(QueryShortChannelIds o) {
-               number ret = bindings.CResult_QueryShortChannelIdsDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_QueryShortChannelIdsDecodeErrorZ ret_hu_conv = Result_QueryShortChannelIdsDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_QueryShortChannelIdsDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_QueryShortChannelIdsDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_QueryShortChannelIdsDecodeErrorZ ret_hu_conv = Result_QueryShortChannelIdsDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_QueryShortChannelIdsDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_QueryShortChannelIdsDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_QueryShortChannelIdsDecodeErrorZ clone() {
-               number ret = bindings.CResult_QueryShortChannelIdsDecodeErrorZ_clone(this.ptr);
-               Result_QueryShortChannelIdsDecodeErrorZ ret_hu_conv = Result_QueryShortChannelIdsDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_RecoverableSignatureNoneZ.ts b/ts/structs/Result_RecoverableSignatureNoneZ.ts
deleted file mode 100644 (file)
index 413ac73..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_RecoverableSignatureNoneZ extends CommonBase {
-       private Result_RecoverableSignatureNoneZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_RecoverableSignatureNoneZ_free(ptr); } super.finalize();
-       }
-
-       static Result_RecoverableSignatureNoneZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_RecoverableSignatureNoneZ_is_ok(ptr)) {
-                       return new Result_RecoverableSignatureNoneZ_OK(null, ptr);
-               } else {
-                       return new Result_RecoverableSignatureNoneZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_RecoverableSignatureNoneZ_OK extends Result_RecoverableSignatureNoneZ {
-               public final Uint8Array res;
-               private Result_RecoverableSignatureNoneZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.res = bindings.LDKCResult_RecoverableSignatureNoneZ_get_ok(ptr);
-               }
-       }
-
-       public static final class Result_RecoverableSignatureNoneZ_Err extends Result_RecoverableSignatureNoneZ {
-               private Result_RecoverableSignatureNoneZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-               }
-       }
-
-       public static Result_RecoverableSignatureNoneZ constructor_ok(Uint8Array arg) {
-               number ret = bindings.CResult_RecoverableSignatureNoneZ_ok(InternalUtils.check_arr_len(arg, 68));
-               Result_RecoverableSignatureNoneZ ret_hu_conv = Result_RecoverableSignatureNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_RecoverableSignatureNoneZ constructor_err() {
-               number ret = bindings.CResult_RecoverableSignatureNoneZ_err();
-               Result_RecoverableSignatureNoneZ ret_hu_conv = Result_RecoverableSignatureNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_RecoverableSignatureNoneZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_RecoverableSignatureNoneZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_RecoverableSignatureNoneZ clone() {
-               number ret = bindings.CResult_RecoverableSignatureNoneZ_clone(this.ptr);
-               Result_RecoverableSignatureNoneZ ret_hu_conv = Result_RecoverableSignatureNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_ReplyChannelRangeDecodeErrorZ.ts b/ts/structs/Result_ReplyChannelRangeDecodeErrorZ.ts
deleted file mode 100644 (file)
index b5af32a..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_ReplyChannelRangeDecodeErrorZ extends CommonBase {
-       private Result_ReplyChannelRangeDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_ReplyChannelRangeDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_ReplyChannelRangeDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_ReplyChannelRangeDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_ReplyChannelRangeDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_ReplyChannelRangeDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_ReplyChannelRangeDecodeErrorZ_OK extends Result_ReplyChannelRangeDecodeErrorZ {
-               public final ReplyChannelRange res;
-               private Result_ReplyChannelRangeDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_ReplyChannelRangeDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: ReplyChannelRange = new ReplyChannelRange(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_ReplyChannelRangeDecodeErrorZ_Err extends Result_ReplyChannelRangeDecodeErrorZ {
-               public final DecodeError err;
-               private Result_ReplyChannelRangeDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_ReplyChannelRangeDecodeErrorZ_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 static Result_ReplyChannelRangeDecodeErrorZ constructor_ok(ReplyChannelRange o) {
-               number ret = bindings.CResult_ReplyChannelRangeDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_ReplyChannelRangeDecodeErrorZ ret_hu_conv = Result_ReplyChannelRangeDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_ReplyChannelRangeDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_ReplyChannelRangeDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_ReplyChannelRangeDecodeErrorZ ret_hu_conv = Result_ReplyChannelRangeDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_ReplyChannelRangeDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_ReplyChannelRangeDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_ReplyChannelRangeDecodeErrorZ clone() {
-               number ret = bindings.CResult_ReplyChannelRangeDecodeErrorZ_clone(this.ptr);
-               Result_ReplyChannelRangeDecodeErrorZ ret_hu_conv = Result_ReplyChannelRangeDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_ReplyShortChannelIdsEndDecodeErrorZ.ts b/ts/structs/Result_ReplyShortChannelIdsEndDecodeErrorZ.ts
deleted file mode 100644 (file)
index 9467038..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_ReplyShortChannelIdsEndDecodeErrorZ extends CommonBase {
-       private Result_ReplyShortChannelIdsEndDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_ReplyShortChannelIdsEndDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_ReplyShortChannelIdsEndDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_ReplyShortChannelIdsEndDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_ReplyShortChannelIdsEndDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_ReplyShortChannelIdsEndDecodeErrorZ_OK extends Result_ReplyShortChannelIdsEndDecodeErrorZ {
-               public final ReplyShortChannelIdsEnd res;
-               private Result_ReplyShortChannelIdsEndDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: ReplyShortChannelIdsEnd = new ReplyShortChannelIdsEnd(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_ReplyShortChannelIdsEndDecodeErrorZ_Err extends Result_ReplyShortChannelIdsEndDecodeErrorZ {
-               public final DecodeError err;
-               private Result_ReplyShortChannelIdsEndDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ_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 static Result_ReplyShortChannelIdsEndDecodeErrorZ constructor_ok(ReplyShortChannelIdsEnd o) {
-               number ret = bindings.CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_ReplyShortChannelIdsEndDecodeErrorZ ret_hu_conv = Result_ReplyShortChannelIdsEndDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_ReplyShortChannelIdsEndDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_ReplyShortChannelIdsEndDecodeErrorZ ret_hu_conv = Result_ReplyShortChannelIdsEndDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_ReplyShortChannelIdsEndDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_ReplyShortChannelIdsEndDecodeErrorZ clone() {
-               number ret = bindings.CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone(this.ptr);
-               Result_ReplyShortChannelIdsEndDecodeErrorZ ret_hu_conv = Result_ReplyShortChannelIdsEndDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_RevokeAndACKDecodeErrorZ.ts b/ts/structs/Result_RevokeAndACKDecodeErrorZ.ts
deleted file mode 100644 (file)
index 7764c36..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_RevokeAndACKDecodeErrorZ extends CommonBase {
-       private Result_RevokeAndACKDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_RevokeAndACKDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_RevokeAndACKDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_RevokeAndACKDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_RevokeAndACKDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_RevokeAndACKDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_RevokeAndACKDecodeErrorZ_OK extends Result_RevokeAndACKDecodeErrorZ {
-               public final RevokeAndACK res;
-               private Result_RevokeAndACKDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_RevokeAndACKDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: RevokeAndACK = new RevokeAndACK(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_RevokeAndACKDecodeErrorZ_Err extends Result_RevokeAndACKDecodeErrorZ {
-               public final DecodeError err;
-               private Result_RevokeAndACKDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_RevokeAndACKDecodeErrorZ_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 static Result_RevokeAndACKDecodeErrorZ constructor_ok(RevokeAndACK o) {
-               number ret = bindings.CResult_RevokeAndACKDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_RevokeAndACKDecodeErrorZ ret_hu_conv = Result_RevokeAndACKDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_RevokeAndACKDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_RevokeAndACKDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_RevokeAndACKDecodeErrorZ ret_hu_conv = Result_RevokeAndACKDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_RevokeAndACKDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_RevokeAndACKDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_RevokeAndACKDecodeErrorZ clone() {
-               number ret = bindings.CResult_RevokeAndACKDecodeErrorZ_clone(this.ptr);
-               Result_RevokeAndACKDecodeErrorZ ret_hu_conv = Result_RevokeAndACKDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_RouteDecodeErrorZ.ts b/ts/structs/Result_RouteDecodeErrorZ.ts
deleted file mode 100644 (file)
index 99794ce..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_RouteDecodeErrorZ extends CommonBase {
-       private Result_RouteDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_RouteDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_RouteDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_RouteDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_RouteDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_RouteDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_RouteDecodeErrorZ_OK extends Result_RouteDecodeErrorZ {
-               public final Route res;
-               private Result_RouteDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_RouteDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: Route = new Route(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_RouteDecodeErrorZ_Err extends Result_RouteDecodeErrorZ {
-               public final DecodeError err;
-               private Result_RouteDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_RouteDecodeErrorZ_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 static Result_RouteDecodeErrorZ constructor_ok(Route o) {
-               number ret = bindings.CResult_RouteDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_RouteDecodeErrorZ ret_hu_conv = Result_RouteDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_RouteDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_RouteDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_RouteDecodeErrorZ ret_hu_conv = Result_RouteDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_RouteDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_RouteDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_RouteDecodeErrorZ clone() {
-               number ret = bindings.CResult_RouteDecodeErrorZ_clone(this.ptr);
-               Result_RouteDecodeErrorZ ret_hu_conv = Result_RouteDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_RouteHintDecodeErrorZ.ts b/ts/structs/Result_RouteHintDecodeErrorZ.ts
deleted file mode 100644 (file)
index 3b62271..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_RouteHintDecodeErrorZ extends CommonBase {
-       private Result_RouteHintDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_RouteHintDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_RouteHintDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_RouteHintDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_RouteHintDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_RouteHintDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_RouteHintDecodeErrorZ_OK extends Result_RouteHintDecodeErrorZ {
-               public final RouteHint res;
-               private Result_RouteHintDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_RouteHintDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: RouteHint = new RouteHint(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_RouteHintDecodeErrorZ_Err extends Result_RouteHintDecodeErrorZ {
-               public final DecodeError err;
-               private Result_RouteHintDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_RouteHintDecodeErrorZ_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 static Result_RouteHintDecodeErrorZ constructor_ok(RouteHint o) {
-               number ret = bindings.CResult_RouteHintDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_RouteHintDecodeErrorZ ret_hu_conv = Result_RouteHintDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_RouteHintDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_RouteHintDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_RouteHintDecodeErrorZ ret_hu_conv = Result_RouteHintDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_RouteHintDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_RouteHintDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_RouteHintDecodeErrorZ clone() {
-               number ret = bindings.CResult_RouteHintDecodeErrorZ_clone(this.ptr);
-               Result_RouteHintDecodeErrorZ ret_hu_conv = Result_RouteHintDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_RouteHintHopDecodeErrorZ.ts b/ts/structs/Result_RouteHintHopDecodeErrorZ.ts
deleted file mode 100644 (file)
index 35c280c..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_RouteHintHopDecodeErrorZ extends CommonBase {
-       private Result_RouteHintHopDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_RouteHintHopDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_RouteHintHopDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_RouteHintHopDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_RouteHintHopDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_RouteHintHopDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_RouteHintHopDecodeErrorZ_OK extends Result_RouteHintHopDecodeErrorZ {
-               public final RouteHintHop res;
-               private Result_RouteHintHopDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_RouteHintHopDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: RouteHintHop = new RouteHintHop(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_RouteHintHopDecodeErrorZ_Err extends Result_RouteHintHopDecodeErrorZ {
-               public final DecodeError err;
-               private Result_RouteHintHopDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_RouteHintHopDecodeErrorZ_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 static Result_RouteHintHopDecodeErrorZ constructor_ok(RouteHintHop o) {
-               number ret = bindings.CResult_RouteHintHopDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_RouteHintHopDecodeErrorZ ret_hu_conv = Result_RouteHintHopDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_RouteHintHopDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_RouteHintHopDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_RouteHintHopDecodeErrorZ ret_hu_conv = Result_RouteHintHopDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_RouteHintHopDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_RouteHintHopDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_RouteHintHopDecodeErrorZ clone() {
-               number ret = bindings.CResult_RouteHintHopDecodeErrorZ_clone(this.ptr);
-               Result_RouteHintHopDecodeErrorZ ret_hu_conv = Result_RouteHintHopDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_RouteHopDecodeErrorZ.ts b/ts/structs/Result_RouteHopDecodeErrorZ.ts
deleted file mode 100644 (file)
index a4a3e32..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_RouteHopDecodeErrorZ extends CommonBase {
-       private Result_RouteHopDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_RouteHopDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_RouteHopDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_RouteHopDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_RouteHopDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_RouteHopDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_RouteHopDecodeErrorZ_OK extends Result_RouteHopDecodeErrorZ {
-               public final RouteHop res;
-               private Result_RouteHopDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_RouteHopDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: RouteHop = new RouteHop(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_RouteHopDecodeErrorZ_Err extends Result_RouteHopDecodeErrorZ {
-               public final DecodeError err;
-               private Result_RouteHopDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_RouteHopDecodeErrorZ_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 static Result_RouteHopDecodeErrorZ constructor_ok(RouteHop o) {
-               number ret = bindings.CResult_RouteHopDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_RouteHopDecodeErrorZ ret_hu_conv = Result_RouteHopDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_RouteHopDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_RouteHopDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_RouteHopDecodeErrorZ ret_hu_conv = Result_RouteHopDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_RouteHopDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_RouteHopDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_RouteHopDecodeErrorZ clone() {
-               number ret = bindings.CResult_RouteHopDecodeErrorZ_clone(this.ptr);
-               Result_RouteHopDecodeErrorZ ret_hu_conv = Result_RouteHopDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_RouteLightningErrorZ.ts b/ts/structs/Result_RouteLightningErrorZ.ts
deleted file mode 100644 (file)
index 33dc74b..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_RouteLightningErrorZ extends CommonBase {
-       private Result_RouteLightningErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_RouteLightningErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_RouteLightningErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_RouteLightningErrorZ_is_ok(ptr)) {
-                       return new Result_RouteLightningErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_RouteLightningErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_RouteLightningErrorZ_OK extends Result_RouteLightningErrorZ {
-               public final Route res;
-               private Result_RouteLightningErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_RouteLightningErrorZ_get_ok(ptr);
-                       const res_hu_conv: Route = new Route(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_RouteLightningErrorZ_Err extends Result_RouteLightningErrorZ {
-               public final LightningError err;
-               private Result_RouteLightningErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_RouteLightningErrorZ_get_err(ptr);
-                       const err_hu_conv: LightningError = new LightningError(null, err);
-                       err_hu_conv.ptrs_to.add(this);
-                       this.err = err_hu_conv;
-               }
-       }
-
-       public static Result_RouteLightningErrorZ constructor_ok(Route o) {
-               number ret = bindings.CResult_RouteLightningErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_RouteLightningErrorZ ret_hu_conv = Result_RouteLightningErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_RouteLightningErrorZ constructor_err(LightningError e) {
-               number ret = bindings.CResult_RouteLightningErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_RouteLightningErrorZ ret_hu_conv = Result_RouteLightningErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_RouteLightningErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_RouteLightningErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_RouteLightningErrorZ clone() {
-               number ret = bindings.CResult_RouteLightningErrorZ_clone(this.ptr);
-               Result_RouteLightningErrorZ ret_hu_conv = Result_RouteLightningErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_RouteParametersDecodeErrorZ.ts b/ts/structs/Result_RouteParametersDecodeErrorZ.ts
deleted file mode 100644 (file)
index 78480fe..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_RouteParametersDecodeErrorZ extends CommonBase {
-       private Result_RouteParametersDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_RouteParametersDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_RouteParametersDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_RouteParametersDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_RouteParametersDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_RouteParametersDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_RouteParametersDecodeErrorZ_OK extends Result_RouteParametersDecodeErrorZ {
-               public final RouteParameters res;
-               private Result_RouteParametersDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_RouteParametersDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: RouteParameters = new RouteParameters(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_RouteParametersDecodeErrorZ_Err extends Result_RouteParametersDecodeErrorZ {
-               public final DecodeError err;
-               private Result_RouteParametersDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_RouteParametersDecodeErrorZ_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 static Result_RouteParametersDecodeErrorZ constructor_ok(RouteParameters o) {
-               number ret = bindings.CResult_RouteParametersDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_RouteParametersDecodeErrorZ ret_hu_conv = Result_RouteParametersDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_RouteParametersDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_RouteParametersDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_RouteParametersDecodeErrorZ ret_hu_conv = Result_RouteParametersDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_RouteParametersDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_RouteParametersDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_RouteParametersDecodeErrorZ clone() {
-               number ret = bindings.CResult_RouteParametersDecodeErrorZ_clone(this.ptr);
-               Result_RouteParametersDecodeErrorZ ret_hu_conv = Result_RouteParametersDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_RoutingFeesDecodeErrorZ.ts b/ts/structs/Result_RoutingFeesDecodeErrorZ.ts
deleted file mode 100644 (file)
index 4c272df..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_RoutingFeesDecodeErrorZ extends CommonBase {
-       private Result_RoutingFeesDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_RoutingFeesDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_RoutingFeesDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_RoutingFeesDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_RoutingFeesDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_RoutingFeesDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_RoutingFeesDecodeErrorZ_OK extends Result_RoutingFeesDecodeErrorZ {
-               public final RoutingFees res;
-               private Result_RoutingFeesDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_RoutingFeesDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: RoutingFees = new RoutingFees(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_RoutingFeesDecodeErrorZ_Err extends Result_RoutingFeesDecodeErrorZ {
-               public final DecodeError err;
-               private Result_RoutingFeesDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_RoutingFeesDecodeErrorZ_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 static Result_RoutingFeesDecodeErrorZ constructor_ok(RoutingFees o) {
-               number ret = bindings.CResult_RoutingFeesDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_RoutingFeesDecodeErrorZ ret_hu_conv = Result_RoutingFeesDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_RoutingFeesDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_RoutingFeesDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_RoutingFeesDecodeErrorZ ret_hu_conv = Result_RoutingFeesDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_RoutingFeesDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_RoutingFeesDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_RoutingFeesDecodeErrorZ clone() {
-               number ret = bindings.CResult_RoutingFeesDecodeErrorZ_clone(this.ptr);
-               Result_RoutingFeesDecodeErrorZ ret_hu_conv = Result_RoutingFeesDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_ScorerDecodeErrorZ.ts b/ts/structs/Result_ScorerDecodeErrorZ.ts
deleted file mode 100644 (file)
index 843568b..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_ScorerDecodeErrorZ extends CommonBase {
-       private Result_ScorerDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_ScorerDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_ScorerDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_ScorerDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_ScorerDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_ScorerDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_ScorerDecodeErrorZ_OK extends Result_ScorerDecodeErrorZ {
-               public final Scorer res;
-               private Result_ScorerDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_ScorerDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: Scorer = new Scorer(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_ScorerDecodeErrorZ_Err extends Result_ScorerDecodeErrorZ {
-               public final DecodeError err;
-               private Result_ScorerDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_ScorerDecodeErrorZ_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 static Result_ScorerDecodeErrorZ constructor_ok(ScoringParameters o_params) {
-               number ret = bindings.CResult_ScorerDecodeErrorZ_ok(bindings.Scorer_new(o_params == null ? 0 : o_params.ptr & ~1));
-               Result_ScorerDecodeErrorZ ret_hu_conv = Result_ScorerDecodeErrorZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(o_params);
-// 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, o_params is reset to null and is now a dummy object.
-o_params.ptr = 0;
-               return ret_hu_conv;
-       }
-
-       public static Result_ScorerDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_ScorerDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_ScorerDecodeErrorZ ret_hu_conv = Result_ScorerDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_ScorerDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/Result_ScoringParametersDecodeErrorZ.ts b/ts/structs/Result_ScoringParametersDecodeErrorZ.ts
deleted file mode 100644 (file)
index ba11e64..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_ScoringParametersDecodeErrorZ extends CommonBase {
-       private Result_ScoringParametersDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_ScoringParametersDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_ScoringParametersDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_ScoringParametersDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_ScoringParametersDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_ScoringParametersDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_ScoringParametersDecodeErrorZ_OK extends Result_ScoringParametersDecodeErrorZ {
-               public final ScoringParameters res;
-               private Result_ScoringParametersDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_ScoringParametersDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: ScoringParameters = new ScoringParameters(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_ScoringParametersDecodeErrorZ_Err extends Result_ScoringParametersDecodeErrorZ {
-               public final DecodeError err;
-               private Result_ScoringParametersDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_ScoringParametersDecodeErrorZ_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 static Result_ScoringParametersDecodeErrorZ constructor_ok(number o_base_penalty_msat_arg, number o_failure_penalty_msat_arg, number o_overuse_penalty_start_1024th_arg, number o_overuse_penalty_msat_per_1024th_arg, number o_failure_penalty_half_life_arg) {
-               number ret = bindings.CResult_ScoringParametersDecodeErrorZ_ok(bindings.ScoringParameters_new(o_base_penalty_msat_arg, o_failure_penalty_msat_arg, o_overuse_penalty_start_1024th_arg, o_overuse_penalty_msat_per_1024th_arg, o_failure_penalty_half_life_arg));
-               Result_ScoringParametersDecodeErrorZ ret_hu_conv = Result_ScoringParametersDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_ScoringParametersDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_ScoringParametersDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_ScoringParametersDecodeErrorZ ret_hu_conv = Result_ScoringParametersDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_ScoringParametersDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/Result_SecretKeyErrorZ.ts b/ts/structs/Result_SecretKeyErrorZ.ts
deleted file mode 100644 (file)
index ae21d63..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_SecretKeyErrorZ extends CommonBase {
-       private Result_SecretKeyErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_SecretKeyErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_SecretKeyErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_SecretKeyErrorZ_is_ok(ptr)) {
-                       return new Result_SecretKeyErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_SecretKeyErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_SecretKeyErrorZ_OK extends Result_SecretKeyErrorZ {
-               public final Uint8Array res;
-               private Result_SecretKeyErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.res = bindings.LDKCResult_SecretKeyErrorZ_get_ok(ptr);
-               }
-       }
-
-       public static final class Result_SecretKeyErrorZ_Err extends Result_SecretKeyErrorZ {
-               public final Secp256k1Error err;
-               private Result_SecretKeyErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.err = bindings.LDKCResult_SecretKeyErrorZ_get_err(ptr);
-               }
-       }
-
-       public static Result_SecretKeyErrorZ constructor_ok(Uint8Array o) {
-               number ret = bindings.CResult_SecretKeyErrorZ_ok(InternalUtils.check_arr_len(o, 32));
-               Result_SecretKeyErrorZ ret_hu_conv = Result_SecretKeyErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_SecretKeyErrorZ constructor_err(Secp256k1Error e) {
-               number ret = bindings.CResult_SecretKeyErrorZ_err(e);
-               Result_SecretKeyErrorZ ret_hu_conv = Result_SecretKeyErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_SecretKeyErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/Result_ShutdownDecodeErrorZ.ts b/ts/structs/Result_ShutdownDecodeErrorZ.ts
deleted file mode 100644 (file)
index 6eaa72b..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_ShutdownDecodeErrorZ extends CommonBase {
-       private Result_ShutdownDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_ShutdownDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_ShutdownDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_ShutdownDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_ShutdownDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_ShutdownDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_ShutdownDecodeErrorZ_OK extends Result_ShutdownDecodeErrorZ {
-               public final Shutdown res;
-               private Result_ShutdownDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_ShutdownDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: Shutdown = new Shutdown(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_ShutdownDecodeErrorZ_Err extends Result_ShutdownDecodeErrorZ {
-               public final DecodeError err;
-               private Result_ShutdownDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_ShutdownDecodeErrorZ_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 static Result_ShutdownDecodeErrorZ constructor_ok(Shutdown o) {
-               number ret = bindings.CResult_ShutdownDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_ShutdownDecodeErrorZ ret_hu_conv = Result_ShutdownDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_ShutdownDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_ShutdownDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_ShutdownDecodeErrorZ ret_hu_conv = Result_ShutdownDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_ShutdownDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_ShutdownDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_ShutdownDecodeErrorZ clone() {
-               number ret = bindings.CResult_ShutdownDecodeErrorZ_clone(this.ptr);
-               Result_ShutdownDecodeErrorZ ret_hu_conv = Result_ShutdownDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_ShutdownScriptDecodeErrorZ.ts b/ts/structs/Result_ShutdownScriptDecodeErrorZ.ts
deleted file mode 100644 (file)
index 067d8ff..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_ShutdownScriptDecodeErrorZ extends CommonBase {
-       private Result_ShutdownScriptDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_ShutdownScriptDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_ShutdownScriptDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_ShutdownScriptDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_ShutdownScriptDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_ShutdownScriptDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_ShutdownScriptDecodeErrorZ_OK extends Result_ShutdownScriptDecodeErrorZ {
-               public final ShutdownScript res;
-               private Result_ShutdownScriptDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_ShutdownScriptDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: ShutdownScript = new ShutdownScript(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_ShutdownScriptDecodeErrorZ_Err extends Result_ShutdownScriptDecodeErrorZ {
-               public final DecodeError err;
-               private Result_ShutdownScriptDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_ShutdownScriptDecodeErrorZ_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 static Result_ShutdownScriptDecodeErrorZ constructor_ok(ShutdownScript o) {
-               number ret = bindings.CResult_ShutdownScriptDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_ShutdownScriptDecodeErrorZ ret_hu_conv = Result_ShutdownScriptDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_ShutdownScriptDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_ShutdownScriptDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_ShutdownScriptDecodeErrorZ ret_hu_conv = Result_ShutdownScriptDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_ShutdownScriptDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_ShutdownScriptDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_ShutdownScriptDecodeErrorZ clone() {
-               number ret = bindings.CResult_ShutdownScriptDecodeErrorZ_clone(this.ptr);
-               Result_ShutdownScriptDecodeErrorZ ret_hu_conv = Result_ShutdownScriptDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_ShutdownScriptInvalidShutdownScriptZ.ts b/ts/structs/Result_ShutdownScriptInvalidShutdownScriptZ.ts
deleted file mode 100644 (file)
index 7fae6c5..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_ShutdownScriptInvalidShutdownScriptZ extends CommonBase {
-       private Result_ShutdownScriptInvalidShutdownScriptZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_ShutdownScriptInvalidShutdownScriptZ_free(ptr); } super.finalize();
-       }
-
-       static Result_ShutdownScriptInvalidShutdownScriptZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_ShutdownScriptInvalidShutdownScriptZ_is_ok(ptr)) {
-                       return new Result_ShutdownScriptInvalidShutdownScriptZ_OK(null, ptr);
-               } else {
-                       return new Result_ShutdownScriptInvalidShutdownScriptZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_ShutdownScriptInvalidShutdownScriptZ_OK extends Result_ShutdownScriptInvalidShutdownScriptZ {
-               public final ShutdownScript res;
-               private Result_ShutdownScriptInvalidShutdownScriptZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_ShutdownScriptInvalidShutdownScriptZ_get_ok(ptr);
-                       const res_hu_conv: ShutdownScript = new ShutdownScript(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_ShutdownScriptInvalidShutdownScriptZ_Err extends Result_ShutdownScriptInvalidShutdownScriptZ {
-               public final InvalidShutdownScript err;
-               private Result_ShutdownScriptInvalidShutdownScriptZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_ShutdownScriptInvalidShutdownScriptZ_get_err(ptr);
-                       const err_hu_conv: InvalidShutdownScript = new InvalidShutdownScript(null, err);
-                       err_hu_conv.ptrs_to.add(this);
-                       this.err = err_hu_conv;
-               }
-       }
-
-       public static Result_ShutdownScriptInvalidShutdownScriptZ constructor_ok(ShutdownScript o) {
-               number ret = bindings.CResult_ShutdownScriptInvalidShutdownScriptZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_ShutdownScriptInvalidShutdownScriptZ ret_hu_conv = Result_ShutdownScriptInvalidShutdownScriptZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_ShutdownScriptInvalidShutdownScriptZ constructor_err(InvalidShutdownScript e) {
-               number ret = bindings.CResult_ShutdownScriptInvalidShutdownScriptZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_ShutdownScriptInvalidShutdownScriptZ ret_hu_conv = Result_ShutdownScriptInvalidShutdownScriptZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_ShutdownScriptInvalidShutdownScriptZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_ShutdownScriptInvalidShutdownScriptZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_ShutdownScriptInvalidShutdownScriptZ clone() {
-               number ret = bindings.CResult_ShutdownScriptInvalidShutdownScriptZ_clone(this.ptr);
-               Result_ShutdownScriptInvalidShutdownScriptZ ret_hu_conv = Result_ShutdownScriptInvalidShutdownScriptZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_SiPrefixNoneZ.ts b/ts/structs/Result_SiPrefixNoneZ.ts
deleted file mode 100644 (file)
index 950fe42..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_SiPrefixNoneZ extends CommonBase {
-       private Result_SiPrefixNoneZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_SiPrefixNoneZ_free(ptr); } super.finalize();
-       }
-
-       static Result_SiPrefixNoneZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_SiPrefixNoneZ_is_ok(ptr)) {
-                       return new Result_SiPrefixNoneZ_OK(null, ptr);
-               } else {
-                       return new Result_SiPrefixNoneZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_SiPrefixNoneZ_OK extends Result_SiPrefixNoneZ {
-               public final SiPrefix res;
-               private Result_SiPrefixNoneZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.res = bindings.LDKCResult_SiPrefixNoneZ_get_ok(ptr);
-               }
-       }
-
-       public static final class Result_SiPrefixNoneZ_Err extends Result_SiPrefixNoneZ {
-               private Result_SiPrefixNoneZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-               }
-       }
-
-       public static Result_SiPrefixNoneZ constructor_ok(SiPrefix o) {
-               number ret = bindings.CResult_SiPrefixNoneZ_ok(o);
-               Result_SiPrefixNoneZ ret_hu_conv = Result_SiPrefixNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_SiPrefixNoneZ constructor_err() {
-               number ret = bindings.CResult_SiPrefixNoneZ_err();
-               Result_SiPrefixNoneZ ret_hu_conv = Result_SiPrefixNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_SiPrefixNoneZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_SiPrefixNoneZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_SiPrefixNoneZ clone() {
-               number ret = bindings.CResult_SiPrefixNoneZ_clone(this.ptr);
-               Result_SiPrefixNoneZ ret_hu_conv = Result_SiPrefixNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_SignDecodeErrorZ.ts b/ts/structs/Result_SignDecodeErrorZ.ts
deleted file mode 100644 (file)
index ff486f6..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_SignDecodeErrorZ extends CommonBase {
-       private Result_SignDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_SignDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_SignDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_SignDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_SignDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_SignDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_SignDecodeErrorZ_OK extends Result_SignDecodeErrorZ {
-               public final Sign res;
-               private Result_SignDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_SignDecodeErrorZ_get_ok(ptr);
-                       Sign ret_hu_conv = new Sign(null, res);
-                       ret_hu_conv.ptrs_to.add(this);
-                       this.res = ret_hu_conv;
-               }
-       }
-
-       public static final class Result_SignDecodeErrorZ_Err extends Result_SignDecodeErrorZ {
-               public final DecodeError err;
-               private Result_SignDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_SignDecodeErrorZ_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 static Result_SignDecodeErrorZ constructor_ok(Sign o) {
-               number ret = bindings.CResult_SignDecodeErrorZ_ok(o == null ? 0 : o.ptr);
-               Result_SignDecodeErrorZ ret_hu_conv = Result_SignDecodeErrorZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(o);
-               return ret_hu_conv;
-       }
-
-       public static Result_SignDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_SignDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_SignDecodeErrorZ ret_hu_conv = Result_SignDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_SignDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_SignDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_SignDecodeErrorZ clone() {
-               number ret = bindings.CResult_SignDecodeErrorZ_clone(this.ptr);
-               Result_SignDecodeErrorZ ret_hu_conv = Result_SignDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_SignatureNoneZ.ts b/ts/structs/Result_SignatureNoneZ.ts
deleted file mode 100644 (file)
index 7f1c5a6..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_SignatureNoneZ extends CommonBase {
-       private Result_SignatureNoneZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_SignatureNoneZ_free(ptr); } super.finalize();
-       }
-
-       static Result_SignatureNoneZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_SignatureNoneZ_is_ok(ptr)) {
-                       return new Result_SignatureNoneZ_OK(null, ptr);
-               } else {
-                       return new Result_SignatureNoneZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_SignatureNoneZ_OK extends Result_SignatureNoneZ {
-               public final Uint8Array res;
-               private Result_SignatureNoneZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.res = bindings.LDKCResult_SignatureNoneZ_get_ok(ptr);
-               }
-       }
-
-       public static final class Result_SignatureNoneZ_Err extends Result_SignatureNoneZ {
-               private Result_SignatureNoneZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-               }
-       }
-
-       public static Result_SignatureNoneZ constructor_ok(Uint8Array o) {
-               number ret = bindings.CResult_SignatureNoneZ_ok(InternalUtils.check_arr_len(o, 64));
-               Result_SignatureNoneZ ret_hu_conv = Result_SignatureNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_SignatureNoneZ constructor_err() {
-               number ret = bindings.CResult_SignatureNoneZ_err();
-               Result_SignatureNoneZ ret_hu_conv = Result_SignatureNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_SignatureNoneZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_SignatureNoneZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_SignatureNoneZ clone() {
-               number ret = bindings.CResult_SignatureNoneZ_clone(this.ptr);
-               Result_SignatureNoneZ ret_hu_conv = Result_SignatureNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_SignedRawInvoiceNoneZ.ts b/ts/structs/Result_SignedRawInvoiceNoneZ.ts
deleted file mode 100644 (file)
index 6b3da46..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_SignedRawInvoiceNoneZ extends CommonBase {
-       private Result_SignedRawInvoiceNoneZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_SignedRawInvoiceNoneZ_free(ptr); } super.finalize();
-       }
-
-       static Result_SignedRawInvoiceNoneZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_SignedRawInvoiceNoneZ_is_ok(ptr)) {
-                       return new Result_SignedRawInvoiceNoneZ_OK(null, ptr);
-               } else {
-                       return new Result_SignedRawInvoiceNoneZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_SignedRawInvoiceNoneZ_OK extends Result_SignedRawInvoiceNoneZ {
-               public final SignedRawInvoice res;
-               private Result_SignedRawInvoiceNoneZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_SignedRawInvoiceNoneZ_get_ok(ptr);
-                       const res_hu_conv: SignedRawInvoice = new SignedRawInvoice(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_SignedRawInvoiceNoneZ_Err extends Result_SignedRawInvoiceNoneZ {
-               private Result_SignedRawInvoiceNoneZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-               }
-       }
-
-       public static Result_SignedRawInvoiceNoneZ constructor_ok(SignedRawInvoice o) {
-               number ret = bindings.CResult_SignedRawInvoiceNoneZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_SignedRawInvoiceNoneZ ret_hu_conv = Result_SignedRawInvoiceNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_SignedRawInvoiceNoneZ constructor_err() {
-               number ret = bindings.CResult_SignedRawInvoiceNoneZ_err();
-               Result_SignedRawInvoiceNoneZ ret_hu_conv = Result_SignedRawInvoiceNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_SignedRawInvoiceNoneZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_SignedRawInvoiceNoneZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_SignedRawInvoiceNoneZ clone() {
-               number ret = bindings.CResult_SignedRawInvoiceNoneZ_clone(this.ptr);
-               Result_SignedRawInvoiceNoneZ ret_hu_conv = Result_SignedRawInvoiceNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_SpendableOutputDescriptorDecodeErrorZ.ts b/ts/structs/Result_SpendableOutputDescriptorDecodeErrorZ.ts
deleted file mode 100644 (file)
index 37e3359..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_SpendableOutputDescriptorDecodeErrorZ extends CommonBase {
-       private Result_SpendableOutputDescriptorDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_SpendableOutputDescriptorDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_SpendableOutputDescriptorDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_SpendableOutputDescriptorDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_SpendableOutputDescriptorDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_SpendableOutputDescriptorDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_SpendableOutputDescriptorDecodeErrorZ_OK extends Result_SpendableOutputDescriptorDecodeErrorZ {
-               public final SpendableOutputDescriptor res;
-               private Result_SpendableOutputDescriptorDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_SpendableOutputDescriptorDecodeErrorZ_get_ok(ptr);
-                       SpendableOutputDescriptor res_hu_conv = SpendableOutputDescriptor.constr_from_ptr(res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_SpendableOutputDescriptorDecodeErrorZ_Err extends Result_SpendableOutputDescriptorDecodeErrorZ {
-               public final DecodeError err;
-               private Result_SpendableOutputDescriptorDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_SpendableOutputDescriptorDecodeErrorZ_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 static Result_SpendableOutputDescriptorDecodeErrorZ constructor_ok(SpendableOutputDescriptor o) {
-               number ret = bindings.CResult_SpendableOutputDescriptorDecodeErrorZ_ok(o.ptr);
-               Result_SpendableOutputDescriptorDecodeErrorZ ret_hu_conv = Result_SpendableOutputDescriptorDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_SpendableOutputDescriptorDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_SpendableOutputDescriptorDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_SpendableOutputDescriptorDecodeErrorZ ret_hu_conv = Result_SpendableOutputDescriptorDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_SpendableOutputDescriptorDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_SpendableOutputDescriptorDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_SpendableOutputDescriptorDecodeErrorZ clone() {
-               number ret = bindings.CResult_SpendableOutputDescriptorDecodeErrorZ_clone(this.ptr);
-               Result_SpendableOutputDescriptorDecodeErrorZ ret_hu_conv = Result_SpendableOutputDescriptorDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_StaticPaymentOutputDescriptorDecodeErrorZ.ts b/ts/structs/Result_StaticPaymentOutputDescriptorDecodeErrorZ.ts
deleted file mode 100644 (file)
index 3899f62..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_StaticPaymentOutputDescriptorDecodeErrorZ extends CommonBase {
-       private Result_StaticPaymentOutputDescriptorDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_StaticPaymentOutputDescriptorDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_StaticPaymentOutputDescriptorDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_StaticPaymentOutputDescriptorDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_StaticPaymentOutputDescriptorDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_StaticPaymentOutputDescriptorDecodeErrorZ_OK extends Result_StaticPaymentOutputDescriptorDecodeErrorZ {
-               public final StaticPaymentOutputDescriptor res;
-               private Result_StaticPaymentOutputDescriptorDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: StaticPaymentOutputDescriptor = new StaticPaymentOutputDescriptor(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_StaticPaymentOutputDescriptorDecodeErrorZ_Err extends Result_StaticPaymentOutputDescriptorDecodeErrorZ {
-               public final DecodeError err;
-               private Result_StaticPaymentOutputDescriptorDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ_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 static Result_StaticPaymentOutputDescriptorDecodeErrorZ constructor_ok(StaticPaymentOutputDescriptor o) {
-               number ret = bindings.CResult_StaticPaymentOutputDescriptorDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_StaticPaymentOutputDescriptorDecodeErrorZ ret_hu_conv = Result_StaticPaymentOutputDescriptorDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_StaticPaymentOutputDescriptorDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_StaticPaymentOutputDescriptorDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_StaticPaymentOutputDescriptorDecodeErrorZ ret_hu_conv = Result_StaticPaymentOutputDescriptorDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_StaticPaymentOutputDescriptorDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_StaticPaymentOutputDescriptorDecodeErrorZ clone() {
-               number ret = bindings.CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone(this.ptr);
-               Result_StaticPaymentOutputDescriptorDecodeErrorZ ret_hu_conv = Result_StaticPaymentOutputDescriptorDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_StringErrorZ.ts b/ts/structs/Result_StringErrorZ.ts
deleted file mode 100644 (file)
index b482d25..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_StringErrorZ extends CommonBase {
-       private Result_StringErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_StringErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_StringErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_StringErrorZ_is_ok(ptr)) {
-                       return new Result_StringErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_StringErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_StringErrorZ_OK extends Result_StringErrorZ {
-               public final String res;
-               private Result_StringErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.res = bindings.LDKCResult_StringErrorZ_get_ok(ptr);
-               }
-       }
-
-       public static final class Result_StringErrorZ_Err extends Result_StringErrorZ {
-               public final Secp256k1Error err;
-               private Result_StringErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.err = bindings.LDKCResult_StringErrorZ_get_err(ptr);
-               }
-       }
-
-       public static Result_StringErrorZ constructor_ok(String o) {
-               number ret = bindings.CResult_StringErrorZ_ok(o);
-               Result_StringErrorZ ret_hu_conv = Result_StringErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_StringErrorZ constructor_err(Secp256k1Error e) {
-               number ret = bindings.CResult_StringErrorZ_err(e);
-               Result_StringErrorZ ret_hu_conv = Result_StringErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_StringErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/Result_TransactionNoneZ.ts b/ts/structs/Result_TransactionNoneZ.ts
deleted file mode 100644 (file)
index b1ccf6b..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_TransactionNoneZ extends CommonBase {
-       private Result_TransactionNoneZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_TransactionNoneZ_free(ptr); } super.finalize();
-       }
-
-       static Result_TransactionNoneZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_TransactionNoneZ_is_ok(ptr)) {
-                       return new Result_TransactionNoneZ_OK(null, ptr);
-               } else {
-                       return new Result_TransactionNoneZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_TransactionNoneZ_OK extends Result_TransactionNoneZ {
-               public final Uint8Array res;
-               private Result_TransactionNoneZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.res = bindings.LDKCResult_TransactionNoneZ_get_ok(ptr);
-               }
-       }
-
-       public static final class Result_TransactionNoneZ_Err extends Result_TransactionNoneZ {
-               private Result_TransactionNoneZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-               }
-       }
-
-       public static Result_TransactionNoneZ constructor_ok(Uint8Array o) {
-               number ret = bindings.CResult_TransactionNoneZ_ok(o);
-               Result_TransactionNoneZ ret_hu_conv = Result_TransactionNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_TransactionNoneZ constructor_err() {
-               number ret = bindings.CResult_TransactionNoneZ_err();
-               Result_TransactionNoneZ ret_hu_conv = Result_TransactionNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_TransactionNoneZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_TransactionNoneZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_TransactionNoneZ clone() {
-               number ret = bindings.CResult_TransactionNoneZ_clone(this.ptr);
-               Result_TransactionNoneZ ret_hu_conv = Result_TransactionNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_TrustedClosingTransactionNoneZ.ts b/ts/structs/Result_TrustedClosingTransactionNoneZ.ts
deleted file mode 100644 (file)
index 4698edf..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_TrustedClosingTransactionNoneZ extends CommonBase {
-       private Result_TrustedClosingTransactionNoneZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_TrustedClosingTransactionNoneZ_free(ptr); } super.finalize();
-       }
-
-       static Result_TrustedClosingTransactionNoneZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_TrustedClosingTransactionNoneZ_is_ok(ptr)) {
-                       return new Result_TrustedClosingTransactionNoneZ_OK(null, ptr);
-               } else {
-                       return new Result_TrustedClosingTransactionNoneZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_TrustedClosingTransactionNoneZ_OK extends Result_TrustedClosingTransactionNoneZ {
-               public final TrustedClosingTransaction res;
-               private Result_TrustedClosingTransactionNoneZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_TrustedClosingTransactionNoneZ_get_ok(ptr);
-                       const res_hu_conv: TrustedClosingTransaction = new TrustedClosingTransaction(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_TrustedClosingTransactionNoneZ_Err extends Result_TrustedClosingTransactionNoneZ {
-               private Result_TrustedClosingTransactionNoneZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-               }
-       }
-
-       public static Result_TrustedClosingTransactionNoneZ constructor_ok(TrustedClosingTransaction o) {
-               number ret = bindings.CResult_TrustedClosingTransactionNoneZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_TrustedClosingTransactionNoneZ ret_hu_conv = Result_TrustedClosingTransactionNoneZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(o);
-               // 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, o is reset to null and is now a dummy object.
-               o.ptr = 0;
-               return ret_hu_conv;
-       }
-
-       public static Result_TrustedClosingTransactionNoneZ constructor_err() {
-               number ret = bindings.CResult_TrustedClosingTransactionNoneZ_err();
-               Result_TrustedClosingTransactionNoneZ ret_hu_conv = Result_TrustedClosingTransactionNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_TrustedClosingTransactionNoneZ_is_ok(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/Result_TrustedCommitmentTransactionNoneZ.ts b/ts/structs/Result_TrustedCommitmentTransactionNoneZ.ts
deleted file mode 100644 (file)
index 406c6d7..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_TrustedCommitmentTransactionNoneZ extends CommonBase {
-       private Result_TrustedCommitmentTransactionNoneZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_TrustedCommitmentTransactionNoneZ_free(ptr); } super.finalize();
-       }
-
-       static Result_TrustedCommitmentTransactionNoneZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_TrustedCommitmentTransactionNoneZ_is_ok(ptr)) {
-                       return new Result_TrustedCommitmentTransactionNoneZ_OK(null, ptr);
-               } else {
-                       return new Result_TrustedCommitmentTransactionNoneZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_TrustedCommitmentTransactionNoneZ_OK extends Result_TrustedCommitmentTransactionNoneZ {
-               public final TrustedCommitmentTransaction res;
-               private Result_TrustedCommitmentTransactionNoneZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_TrustedCommitmentTransactionNoneZ_get_ok(ptr);
-                       const res_hu_conv: TrustedCommitmentTransaction = new TrustedCommitmentTransaction(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_TrustedCommitmentTransactionNoneZ_Err extends Result_TrustedCommitmentTransactionNoneZ {
-               private Result_TrustedCommitmentTransactionNoneZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-               }
-       }
-
-       public static Result_TrustedCommitmentTransactionNoneZ constructor_ok(TrustedCommitmentTransaction o) {
-               number ret = bindings.CResult_TrustedCommitmentTransactionNoneZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_TrustedCommitmentTransactionNoneZ ret_hu_conv = Result_TrustedCommitmentTransactionNoneZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(o);
-               // 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, o is reset to null and is now a dummy object.
-               o.ptr = 0;
-               return ret_hu_conv;
-       }
-
-       public static Result_TrustedCommitmentTransactionNoneZ constructor_err() {
-               number ret = bindings.CResult_TrustedCommitmentTransactionNoneZ_err();
-               Result_TrustedCommitmentTransactionNoneZ ret_hu_conv = Result_TrustedCommitmentTransactionNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_TrustedCommitmentTransactionNoneZ_is_ok(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/Result_TxCreationKeysDecodeErrorZ.ts b/ts/structs/Result_TxCreationKeysDecodeErrorZ.ts
deleted file mode 100644 (file)
index 674477c..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_TxCreationKeysDecodeErrorZ extends CommonBase {
-       private Result_TxCreationKeysDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_TxCreationKeysDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_TxCreationKeysDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_TxCreationKeysDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_TxCreationKeysDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_TxCreationKeysDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_TxCreationKeysDecodeErrorZ_OK extends Result_TxCreationKeysDecodeErrorZ {
-               public final TxCreationKeys res;
-               private Result_TxCreationKeysDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_TxCreationKeysDecodeErrorZ_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 static final class Result_TxCreationKeysDecodeErrorZ_Err extends Result_TxCreationKeysDecodeErrorZ {
-               public final DecodeError err;
-               private Result_TxCreationKeysDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_TxCreationKeysDecodeErrorZ_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 static Result_TxCreationKeysDecodeErrorZ constructor_ok(TxCreationKeys o) {
-               number ret = bindings.CResult_TxCreationKeysDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_TxCreationKeysDecodeErrorZ ret_hu_conv = Result_TxCreationKeysDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_TxCreationKeysDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_TxCreationKeysDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_TxCreationKeysDecodeErrorZ ret_hu_conv = Result_TxCreationKeysDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_TxCreationKeysDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_TxCreationKeysDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_TxCreationKeysDecodeErrorZ clone() {
-               number ret = bindings.CResult_TxCreationKeysDecodeErrorZ_clone(this.ptr);
-               Result_TxCreationKeysDecodeErrorZ ret_hu_conv = Result_TxCreationKeysDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_TxCreationKeysErrorZ.ts b/ts/structs/Result_TxCreationKeysErrorZ.ts
deleted file mode 100644 (file)
index 4966697..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_TxCreationKeysErrorZ extends CommonBase {
-       private Result_TxCreationKeysErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_TxCreationKeysErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_TxCreationKeysErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_TxCreationKeysErrorZ_is_ok(ptr)) {
-                       return new Result_TxCreationKeysErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_TxCreationKeysErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_TxCreationKeysErrorZ_OK extends Result_TxCreationKeysErrorZ {
-               public final TxCreationKeys res;
-               private Result_TxCreationKeysErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_TxCreationKeysErrorZ_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 static final class Result_TxCreationKeysErrorZ_Err extends Result_TxCreationKeysErrorZ {
-               public final Secp256k1Error err;
-               private Result_TxCreationKeysErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.err = bindings.LDKCResult_TxCreationKeysErrorZ_get_err(ptr);
-               }
-       }
-
-       public static Result_TxCreationKeysErrorZ constructor_ok(TxCreationKeys o) {
-               number ret = bindings.CResult_TxCreationKeysErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_TxCreationKeysErrorZ ret_hu_conv = Result_TxCreationKeysErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_TxCreationKeysErrorZ constructor_err(Secp256k1Error e) {
-               number ret = bindings.CResult_TxCreationKeysErrorZ_err(e);
-               Result_TxCreationKeysErrorZ ret_hu_conv = Result_TxCreationKeysErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_TxCreationKeysErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_TxCreationKeysErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_TxCreationKeysErrorZ clone() {
-               number ret = bindings.CResult_TxCreationKeysErrorZ_clone(this.ptr);
-               Result_TxCreationKeysErrorZ ret_hu_conv = Result_TxCreationKeysErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_TxOutAccessErrorZ.ts b/ts/structs/Result_TxOutAccessErrorZ.ts
deleted file mode 100644 (file)
index fe6a0a7..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_TxOutAccessErrorZ extends CommonBase {
-       private Result_TxOutAccessErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_TxOutAccessErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_TxOutAccessErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_TxOutAccessErrorZ_is_ok(ptr)) {
-                       return new Result_TxOutAccessErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_TxOutAccessErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_TxOutAccessErrorZ_OK extends Result_TxOutAccessErrorZ {
-               public final TxOut res;
-               private Result_TxOutAccessErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_TxOutAccessErrorZ_get_ok(ptr);
-                       TxOut res_conv = new TxOut(null, res);
-                       this.res = res_conv;
-               }
-       }
-
-       public static final class Result_TxOutAccessErrorZ_Err extends Result_TxOutAccessErrorZ {
-               public final AccessError err;
-               private Result_TxOutAccessErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.err = bindings.LDKCResult_TxOutAccessErrorZ_get_err(ptr);
-               }
-       }
-
-       public static Result_TxOutAccessErrorZ constructor_ok(TxOut o) {
-               number ret = bindings.CResult_TxOutAccessErrorZ_ok(o.ptr);
-               Result_TxOutAccessErrorZ ret_hu_conv = Result_TxOutAccessErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_TxOutAccessErrorZ constructor_err(AccessError e) {
-               number ret = bindings.CResult_TxOutAccessErrorZ_err(e);
-               Result_TxOutAccessErrorZ ret_hu_conv = Result_TxOutAccessErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_TxOutAccessErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_TxOutAccessErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_TxOutAccessErrorZ clone() {
-               number ret = bindings.CResult_TxOutAccessErrorZ_clone(this.ptr);
-               Result_TxOutAccessErrorZ ret_hu_conv = Result_TxOutAccessErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_UnsignedChannelAnnouncementDecodeErrorZ.ts b/ts/structs/Result_UnsignedChannelAnnouncementDecodeErrorZ.ts
deleted file mode 100644 (file)
index 55f53ad..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_UnsignedChannelAnnouncementDecodeErrorZ extends CommonBase {
-       private Result_UnsignedChannelAnnouncementDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_UnsignedChannelAnnouncementDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_UnsignedChannelAnnouncementDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_UnsignedChannelAnnouncementDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_UnsignedChannelAnnouncementDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_UnsignedChannelAnnouncementDecodeErrorZ_OK extends Result_UnsignedChannelAnnouncementDecodeErrorZ {
-               public final UnsignedChannelAnnouncement res;
-               private Result_UnsignedChannelAnnouncementDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: UnsignedChannelAnnouncement = new UnsignedChannelAnnouncement(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_UnsignedChannelAnnouncementDecodeErrorZ_Err extends Result_UnsignedChannelAnnouncementDecodeErrorZ {
-               public final DecodeError err;
-               private Result_UnsignedChannelAnnouncementDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ_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 static Result_UnsignedChannelAnnouncementDecodeErrorZ constructor_ok(UnsignedChannelAnnouncement o) {
-               number ret = bindings.CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_UnsignedChannelAnnouncementDecodeErrorZ ret_hu_conv = Result_UnsignedChannelAnnouncementDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_UnsignedChannelAnnouncementDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_UnsignedChannelAnnouncementDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_UnsignedChannelAnnouncementDecodeErrorZ ret_hu_conv = Result_UnsignedChannelAnnouncementDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_UnsignedChannelAnnouncementDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_UnsignedChannelAnnouncementDecodeErrorZ clone() {
-               number ret = bindings.CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone(this.ptr);
-               Result_UnsignedChannelAnnouncementDecodeErrorZ ret_hu_conv = Result_UnsignedChannelAnnouncementDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_UnsignedChannelUpdateDecodeErrorZ.ts b/ts/structs/Result_UnsignedChannelUpdateDecodeErrorZ.ts
deleted file mode 100644 (file)
index eeaf83d..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_UnsignedChannelUpdateDecodeErrorZ extends CommonBase {
-       private Result_UnsignedChannelUpdateDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_UnsignedChannelUpdateDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_UnsignedChannelUpdateDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_UnsignedChannelUpdateDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_UnsignedChannelUpdateDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_UnsignedChannelUpdateDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_UnsignedChannelUpdateDecodeErrorZ_OK extends Result_UnsignedChannelUpdateDecodeErrorZ {
-               public final UnsignedChannelUpdate res;
-               private Result_UnsignedChannelUpdateDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_UnsignedChannelUpdateDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: UnsignedChannelUpdate = new UnsignedChannelUpdate(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_UnsignedChannelUpdateDecodeErrorZ_Err extends Result_UnsignedChannelUpdateDecodeErrorZ {
-               public final DecodeError err;
-               private Result_UnsignedChannelUpdateDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_UnsignedChannelUpdateDecodeErrorZ_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 static Result_UnsignedChannelUpdateDecodeErrorZ constructor_ok(UnsignedChannelUpdate o) {
-               number ret = bindings.CResult_UnsignedChannelUpdateDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_UnsignedChannelUpdateDecodeErrorZ ret_hu_conv = Result_UnsignedChannelUpdateDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_UnsignedChannelUpdateDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_UnsignedChannelUpdateDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_UnsignedChannelUpdateDecodeErrorZ ret_hu_conv = Result_UnsignedChannelUpdateDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_UnsignedChannelUpdateDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_UnsignedChannelUpdateDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_UnsignedChannelUpdateDecodeErrorZ clone() {
-               number ret = bindings.CResult_UnsignedChannelUpdateDecodeErrorZ_clone(this.ptr);
-               Result_UnsignedChannelUpdateDecodeErrorZ ret_hu_conv = Result_UnsignedChannelUpdateDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_UnsignedNodeAnnouncementDecodeErrorZ.ts b/ts/structs/Result_UnsignedNodeAnnouncementDecodeErrorZ.ts
deleted file mode 100644 (file)
index d5e2c38..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_UnsignedNodeAnnouncementDecodeErrorZ extends CommonBase {
-       private Result_UnsignedNodeAnnouncementDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_UnsignedNodeAnnouncementDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_UnsignedNodeAnnouncementDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_UnsignedNodeAnnouncementDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_UnsignedNodeAnnouncementDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_UnsignedNodeAnnouncementDecodeErrorZ_OK extends Result_UnsignedNodeAnnouncementDecodeErrorZ {
-               public final UnsignedNodeAnnouncement res;
-               private Result_UnsignedNodeAnnouncementDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: UnsignedNodeAnnouncement = new UnsignedNodeAnnouncement(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_UnsignedNodeAnnouncementDecodeErrorZ_Err extends Result_UnsignedNodeAnnouncementDecodeErrorZ {
-               public final DecodeError err;
-               private Result_UnsignedNodeAnnouncementDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ_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 static Result_UnsignedNodeAnnouncementDecodeErrorZ constructor_ok(UnsignedNodeAnnouncement o) {
-               number ret = bindings.CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_UnsignedNodeAnnouncementDecodeErrorZ ret_hu_conv = Result_UnsignedNodeAnnouncementDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_UnsignedNodeAnnouncementDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_UnsignedNodeAnnouncementDecodeErrorZ ret_hu_conv = Result_UnsignedNodeAnnouncementDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_UnsignedNodeAnnouncementDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_UnsignedNodeAnnouncementDecodeErrorZ clone() {
-               number ret = bindings.CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone(this.ptr);
-               Result_UnsignedNodeAnnouncementDecodeErrorZ ret_hu_conv = Result_UnsignedNodeAnnouncementDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_UpdateAddHTLCDecodeErrorZ.ts b/ts/structs/Result_UpdateAddHTLCDecodeErrorZ.ts
deleted file mode 100644 (file)
index e0cd7e7..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_UpdateAddHTLCDecodeErrorZ extends CommonBase {
-       private Result_UpdateAddHTLCDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_UpdateAddHTLCDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_UpdateAddHTLCDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_UpdateAddHTLCDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_UpdateAddHTLCDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_UpdateAddHTLCDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_UpdateAddHTLCDecodeErrorZ_OK extends Result_UpdateAddHTLCDecodeErrorZ {
-               public final UpdateAddHTLC res;
-               private Result_UpdateAddHTLCDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_UpdateAddHTLCDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: UpdateAddHTLC = new UpdateAddHTLC(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_UpdateAddHTLCDecodeErrorZ_Err extends Result_UpdateAddHTLCDecodeErrorZ {
-               public final DecodeError err;
-               private Result_UpdateAddHTLCDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_UpdateAddHTLCDecodeErrorZ_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 static Result_UpdateAddHTLCDecodeErrorZ constructor_ok(UpdateAddHTLC o) {
-               number ret = bindings.CResult_UpdateAddHTLCDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_UpdateAddHTLCDecodeErrorZ ret_hu_conv = Result_UpdateAddHTLCDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_UpdateAddHTLCDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_UpdateAddHTLCDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_UpdateAddHTLCDecodeErrorZ ret_hu_conv = Result_UpdateAddHTLCDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_UpdateAddHTLCDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_UpdateAddHTLCDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_UpdateAddHTLCDecodeErrorZ clone() {
-               number ret = bindings.CResult_UpdateAddHTLCDecodeErrorZ_clone(this.ptr);
-               Result_UpdateAddHTLCDecodeErrorZ ret_hu_conv = Result_UpdateAddHTLCDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_UpdateFailHTLCDecodeErrorZ.ts b/ts/structs/Result_UpdateFailHTLCDecodeErrorZ.ts
deleted file mode 100644 (file)
index 20f471a..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_UpdateFailHTLCDecodeErrorZ extends CommonBase {
-       private Result_UpdateFailHTLCDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_UpdateFailHTLCDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_UpdateFailHTLCDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_UpdateFailHTLCDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_UpdateFailHTLCDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_UpdateFailHTLCDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_UpdateFailHTLCDecodeErrorZ_OK extends Result_UpdateFailHTLCDecodeErrorZ {
-               public final UpdateFailHTLC res;
-               private Result_UpdateFailHTLCDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_UpdateFailHTLCDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: UpdateFailHTLC = new UpdateFailHTLC(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_UpdateFailHTLCDecodeErrorZ_Err extends Result_UpdateFailHTLCDecodeErrorZ {
-               public final DecodeError err;
-               private Result_UpdateFailHTLCDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_UpdateFailHTLCDecodeErrorZ_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 static Result_UpdateFailHTLCDecodeErrorZ constructor_ok(UpdateFailHTLC o) {
-               number ret = bindings.CResult_UpdateFailHTLCDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_UpdateFailHTLCDecodeErrorZ ret_hu_conv = Result_UpdateFailHTLCDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_UpdateFailHTLCDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_UpdateFailHTLCDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_UpdateFailHTLCDecodeErrorZ ret_hu_conv = Result_UpdateFailHTLCDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_UpdateFailHTLCDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_UpdateFailHTLCDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_UpdateFailHTLCDecodeErrorZ clone() {
-               number ret = bindings.CResult_UpdateFailHTLCDecodeErrorZ_clone(this.ptr);
-               Result_UpdateFailHTLCDecodeErrorZ ret_hu_conv = Result_UpdateFailHTLCDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_UpdateFailMalformedHTLCDecodeErrorZ.ts b/ts/structs/Result_UpdateFailMalformedHTLCDecodeErrorZ.ts
deleted file mode 100644 (file)
index 4066e0b..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_UpdateFailMalformedHTLCDecodeErrorZ extends CommonBase {
-       private Result_UpdateFailMalformedHTLCDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_UpdateFailMalformedHTLCDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_UpdateFailMalformedHTLCDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_UpdateFailMalformedHTLCDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_UpdateFailMalformedHTLCDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_UpdateFailMalformedHTLCDecodeErrorZ_OK extends Result_UpdateFailMalformedHTLCDecodeErrorZ {
-               public final UpdateFailMalformedHTLC res;
-               private Result_UpdateFailMalformedHTLCDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: UpdateFailMalformedHTLC = new UpdateFailMalformedHTLC(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_UpdateFailMalformedHTLCDecodeErrorZ_Err extends Result_UpdateFailMalformedHTLCDecodeErrorZ {
-               public final DecodeError err;
-               private Result_UpdateFailMalformedHTLCDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ_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 static Result_UpdateFailMalformedHTLCDecodeErrorZ constructor_ok(UpdateFailMalformedHTLC o) {
-               number ret = bindings.CResult_UpdateFailMalformedHTLCDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_UpdateFailMalformedHTLCDecodeErrorZ ret_hu_conv = Result_UpdateFailMalformedHTLCDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_UpdateFailMalformedHTLCDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_UpdateFailMalformedHTLCDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_UpdateFailMalformedHTLCDecodeErrorZ ret_hu_conv = Result_UpdateFailMalformedHTLCDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_UpdateFailMalformedHTLCDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_UpdateFailMalformedHTLCDecodeErrorZ clone() {
-               number ret = bindings.CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone(this.ptr);
-               Result_UpdateFailMalformedHTLCDecodeErrorZ ret_hu_conv = Result_UpdateFailMalformedHTLCDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_UpdateFeeDecodeErrorZ.ts b/ts/structs/Result_UpdateFeeDecodeErrorZ.ts
deleted file mode 100644 (file)
index 09fbb33..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_UpdateFeeDecodeErrorZ extends CommonBase {
-       private Result_UpdateFeeDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_UpdateFeeDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_UpdateFeeDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_UpdateFeeDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_UpdateFeeDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_UpdateFeeDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_UpdateFeeDecodeErrorZ_OK extends Result_UpdateFeeDecodeErrorZ {
-               public final UpdateFee res;
-               private Result_UpdateFeeDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_UpdateFeeDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: UpdateFee = new UpdateFee(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_UpdateFeeDecodeErrorZ_Err extends Result_UpdateFeeDecodeErrorZ {
-               public final DecodeError err;
-               private Result_UpdateFeeDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_UpdateFeeDecodeErrorZ_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 static Result_UpdateFeeDecodeErrorZ constructor_ok(UpdateFee o) {
-               number ret = bindings.CResult_UpdateFeeDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_UpdateFeeDecodeErrorZ ret_hu_conv = Result_UpdateFeeDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_UpdateFeeDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_UpdateFeeDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_UpdateFeeDecodeErrorZ ret_hu_conv = Result_UpdateFeeDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_UpdateFeeDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_UpdateFeeDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_UpdateFeeDecodeErrorZ clone() {
-               number ret = bindings.CResult_UpdateFeeDecodeErrorZ_clone(this.ptr);
-               Result_UpdateFeeDecodeErrorZ ret_hu_conv = Result_UpdateFeeDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_UpdateFulfillHTLCDecodeErrorZ.ts b/ts/structs/Result_UpdateFulfillHTLCDecodeErrorZ.ts
deleted file mode 100644 (file)
index 7104ca8..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_UpdateFulfillHTLCDecodeErrorZ extends CommonBase {
-       private Result_UpdateFulfillHTLCDecodeErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_UpdateFulfillHTLCDecodeErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_UpdateFulfillHTLCDecodeErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_UpdateFulfillHTLCDecodeErrorZ_is_ok(ptr)) {
-                       return new Result_UpdateFulfillHTLCDecodeErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_UpdateFulfillHTLCDecodeErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_UpdateFulfillHTLCDecodeErrorZ_OK extends Result_UpdateFulfillHTLCDecodeErrorZ {
-               public final UpdateFulfillHTLC res;
-               private Result_UpdateFulfillHTLCDecodeErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number res = bindings.LDKCResult_UpdateFulfillHTLCDecodeErrorZ_get_ok(ptr);
-                       const res_hu_conv: UpdateFulfillHTLC = new UpdateFulfillHTLC(null, res);
-                       res_hu_conv.ptrs_to.add(this);
-                       this.res = res_hu_conv;
-               }
-       }
-
-       public static final class Result_UpdateFulfillHTLCDecodeErrorZ_Err extends Result_UpdateFulfillHTLCDecodeErrorZ {
-               public final DecodeError err;
-               private Result_UpdateFulfillHTLCDecodeErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_UpdateFulfillHTLCDecodeErrorZ_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 static Result_UpdateFulfillHTLCDecodeErrorZ constructor_ok(UpdateFulfillHTLC o) {
-               number ret = bindings.CResult_UpdateFulfillHTLCDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
-               Result_UpdateFulfillHTLCDecodeErrorZ ret_hu_conv = Result_UpdateFulfillHTLCDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_UpdateFulfillHTLCDecodeErrorZ constructor_err(DecodeError e) {
-               number ret = bindings.CResult_UpdateFulfillHTLCDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_UpdateFulfillHTLCDecodeErrorZ ret_hu_conv = Result_UpdateFulfillHTLCDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_UpdateFulfillHTLCDecodeErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_UpdateFulfillHTLCDecodeErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_UpdateFulfillHTLCDecodeErrorZ clone() {
-               number ret = bindings.CResult_UpdateFulfillHTLCDecodeErrorZ_clone(this.ptr);
-               Result_UpdateFulfillHTLCDecodeErrorZ ret_hu_conv = Result_UpdateFulfillHTLCDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result__u832APIErrorZ.ts b/ts/structs/Result__u832APIErrorZ.ts
deleted file mode 100644 (file)
index bd0a59b..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result__u832APIErrorZ extends CommonBase {
-       private Result__u832APIErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult__u832APIErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result__u832APIErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult__u832APIErrorZ_is_ok(ptr)) {
-                       return new Result__u832APIErrorZ_OK(null, ptr);
-               } else {
-                       return new Result__u832APIErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result__u832APIErrorZ_OK extends Result__u832APIErrorZ {
-               public final Uint8Array res;
-               private Result__u832APIErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.res = bindings.LDKCResult__u832APIErrorZ_get_ok(ptr);
-               }
-       }
-
-       public static final class Result__u832APIErrorZ_Err extends Result__u832APIErrorZ {
-               public final APIError err;
-               private Result__u832APIErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult__u832APIErrorZ_get_err(ptr);
-                       APIError err_hu_conv = APIError.constr_from_ptr(err);
-                       err_hu_conv.ptrs_to.add(this);
-                       this.err = err_hu_conv;
-               }
-       }
-
-       public static Result__u832APIErrorZ constructor_ok(Uint8Array o) {
-               number ret = bindings.CResult__u832APIErrorZ_ok(InternalUtils.check_arr_len(o, 32));
-               Result__u832APIErrorZ ret_hu_conv = Result__u832APIErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result__u832APIErrorZ constructor_err(APIError e) {
-               number ret = bindings.CResult__u832APIErrorZ_err(e.ptr);
-               Result__u832APIErrorZ ret_hu_conv = Result__u832APIErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult__u832APIErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult__u832APIErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result__u832APIErrorZ clone() {
-               number ret = bindings.CResult__u832APIErrorZ_clone(this.ptr);
-               Result__u832APIErrorZ ret_hu_conv = Result__u832APIErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_boolLightningErrorZ.ts b/ts/structs/Result_boolLightningErrorZ.ts
deleted file mode 100644 (file)
index 021bd87..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_boolLightningErrorZ extends CommonBase {
-       private Result_boolLightningErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_boolLightningErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_boolLightningErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_boolLightningErrorZ_is_ok(ptr)) {
-                       return new Result_boolLightningErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_boolLightningErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_boolLightningErrorZ_OK extends Result_boolLightningErrorZ {
-               public final boolean res;
-               private Result_boolLightningErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.res = bindings.LDKCResult_boolLightningErrorZ_get_ok(ptr);
-               }
-       }
-
-       public static final class Result_boolLightningErrorZ_Err extends Result_boolLightningErrorZ {
-               public final LightningError err;
-               private Result_boolLightningErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_boolLightningErrorZ_get_err(ptr);
-                       const err_hu_conv: LightningError = new LightningError(null, err);
-                       err_hu_conv.ptrs_to.add(this);
-                       this.err = err_hu_conv;
-               }
-       }
-
-       public static Result_boolLightningErrorZ constructor_ok(boolean o) {
-               number ret = bindings.CResult_boolLightningErrorZ_ok(o);
-               Result_boolLightningErrorZ ret_hu_conv = Result_boolLightningErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_boolLightningErrorZ constructor_err(LightningError e) {
-               number ret = bindings.CResult_boolLightningErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_boolLightningErrorZ ret_hu_conv = Result_boolLightningErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_boolLightningErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_boolLightningErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_boolLightningErrorZ clone() {
-               number ret = bindings.CResult_boolLightningErrorZ_clone(this.ptr);
-               Result_boolLightningErrorZ ret_hu_conv = Result_boolLightningErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Result_boolPeerHandleErrorZ.ts b/ts/structs/Result_boolPeerHandleErrorZ.ts
deleted file mode 100644 (file)
index 2d8e096..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class Result_boolPeerHandleErrorZ extends CommonBase {
-       private Result_boolPeerHandleErrorZ(Object _dummy, long ptr) { super(ptr); }
-       protected void finalize() throws Throwable {
-               if (ptr != 0) { bindings.CResult_boolPeerHandleErrorZ_free(ptr); } super.finalize();
-       }
-
-       static Result_boolPeerHandleErrorZ constr_from_ptr(long ptr) {
-               if (bindings.CResult_boolPeerHandleErrorZ_is_ok(ptr)) {
-                       return new Result_boolPeerHandleErrorZ_OK(null, ptr);
-               } else {
-                       return new Result_boolPeerHandleErrorZ_Err(null, ptr);
-               }
-       }
-       public static final class Result_boolPeerHandleErrorZ_OK extends Result_boolPeerHandleErrorZ {
-               public final boolean res;
-               private Result_boolPeerHandleErrorZ_OK(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       this.res = bindings.LDKCResult_boolPeerHandleErrorZ_get_ok(ptr);
-               }
-       }
-
-       public static final class Result_boolPeerHandleErrorZ_Err extends Result_boolPeerHandleErrorZ {
-               public final PeerHandleError err;
-               private Result_boolPeerHandleErrorZ_Err(Object _dummy, long ptr) {
-                       super(_dummy, ptr);
-                       number err = bindings.LDKCResult_boolPeerHandleErrorZ_get_err(ptr);
-                       const err_hu_conv: PeerHandleError = new PeerHandleError(null, err);
-                       err_hu_conv.ptrs_to.add(this);
-                       this.err = err_hu_conv;
-               }
-       }
-
-       public static Result_boolPeerHandleErrorZ constructor_ok(boolean o) {
-               number ret = bindings.CResult_boolPeerHandleErrorZ_ok(o);
-               Result_boolPeerHandleErrorZ ret_hu_conv = Result_boolPeerHandleErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_boolPeerHandleErrorZ constructor_err(PeerHandleError e) {
-               number ret = bindings.CResult_boolPeerHandleErrorZ_err(e == null ? 0 : e.ptr & ~1);
-               Result_boolPeerHandleErrorZ ret_hu_conv = Result_boolPeerHandleErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean is_ok() {
-               boolean ret = bindings.CResult_boolPeerHandleErrorZ_is_ok(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.CResult_boolPeerHandleErrorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Result_boolPeerHandleErrorZ clone() {
-               number ret = bindings.CResult_boolPeerHandleErrorZ_clone(this.ptr);
-               Result_boolPeerHandleErrorZ ret_hu_conv = Result_boolPeerHandleErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/RetryAttempts.ts b/ts/structs/RetryAttempts.ts
deleted file mode 100644 (file)
index d844d6e..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class RetryAttempts extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.RetryAttempts_free(this.ptr);
-                    }
-                }
-       public number get_a() {
-               number ret = bindings.RetryAttempts_get_a(this.ptr);
-               return ret;
-       }
-
-       public void set_a(number val) {
-               bindings.RetryAttempts_set_a(this.ptr, val);
-       }
-
-       public static RetryAttempts constructor_new(number a_arg) {
-               number ret = bindings.RetryAttempts_new(a_arg);
-               const ret_hu_conv: RetryAttempts = new RetryAttempts(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.RetryAttempts_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public RetryAttempts clone() {
-               number ret = bindings.RetryAttempts_clone(this.ptr);
-               const ret_hu_conv: RetryAttempts = new RetryAttempts(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public boolean eq(RetryAttempts b) {
-               boolean ret = bindings.RetryAttempts_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
-               this.ptrs_to.add(b);
-               return ret;
-       }
-
-       public number hash() {
-               number ret = bindings.RetryAttempts_hash(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/RevokeAndACK.ts b/ts/structs/RevokeAndACK.ts
deleted file mode 100644 (file)
index b472040..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class RevokeAndACK extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.RevokeAndACK_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_channel_id() {
-               Uint8Array ret = bindings.RevokeAndACK_get_channel_id(this.ptr);
-               return ret;
-       }
-
-       public void set_channel_id(Uint8Array val) {
-               bindings.RevokeAndACK_set_channel_id(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public Uint8Array get_per_commitment_secret() {
-               Uint8Array ret = bindings.RevokeAndACK_get_per_commitment_secret(this.ptr);
-               return ret;
-       }
-
-       public void set_per_commitment_secret(Uint8Array val) {
-               bindings.RevokeAndACK_set_per_commitment_secret(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public Uint8Array get_next_per_commitment_point() {
-               Uint8Array ret = bindings.RevokeAndACK_get_next_per_commitment_point(this.ptr);
-               return ret;
-       }
-
-       public void set_next_per_commitment_point(Uint8Array val) {
-               bindings.RevokeAndACK_set_next_per_commitment_point(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public static RevokeAndACK constructor_new(Uint8Array channel_id_arg, Uint8Array per_commitment_secret_arg, Uint8Array next_per_commitment_point_arg) {
-               number ret = bindings.RevokeAndACK_new(InternalUtils.check_arr_len(channel_id_arg, 32), InternalUtils.check_arr_len(per_commitment_secret_arg, 32), InternalUtils.check_arr_len(next_per_commitment_point_arg, 33));
-               const ret_hu_conv: RevokeAndACK = new RevokeAndACK(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.RevokeAndACK_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 Result_RevokeAndACKDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.RevokeAndACK_read(ser);
-               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
deleted file mode 100644 (file)
index 0335254..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class Route extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.Route_free(this.ptr);
-                    }
-                }
-       public RouteHop[][] get_paths() {
-               number[][] ret = bindings.Route_get_paths(this.ptr);
-               RouteHop[][] ret_conv_12_arr = new RouteHop[ret.length][];
-               for (int m = 0; m < ret.length; m++) {
-                       number[] ret_conv_12 = ret[m];
-                       RouteHop[] ret_conv_12_conv_10_arr = new RouteHop[ret_conv_12.length];
-                       for (int k = 0; k < ret_conv_12.length; k++) {
-                               number ret_conv_12_conv_10 = ret_conv_12[k];
-                               const ret_conv_12_conv_10_hu_conv: RouteHop = new RouteHop(null, ret_conv_12_conv_10);
-                               ret_conv_12_conv_10_hu_conv.ptrs_to.add(this);
-                               ret_conv_12_conv_10_arr[k] = ret_conv_12_conv_10_hu_conv;
-                       }
-                       ret_conv_12_arr[m] = ret_conv_12_conv_10_arr;
-               }
-               return ret_conv_12_arr;
-       }
-
-       public void set_paths(RouteHop[][] val) {
-               bindings.Route_set_paths(this.ptr, val != null ? Arrays.stream(val).map(val_conv_12 -> val_conv_12 != null ? Arrays.stream(val_conv_12).map(val_conv_12_conv_10 -> val_conv_12_conv_10 == null ? 0 : val_conv_12_conv_10.ptr & ~1).toArray(number[]::new) : null).toArray(number[][]::new) : null);
-       }
-
-       public Payee get_payee() {
-               number ret = bindings.Route_get_payee(this.ptr);
-               const ret_hu_conv: Payee = new Payee(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_payee(Payee val) {
-               bindings.Route_set_payee(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public static Route constructor_new(RouteHop[][] paths_arg, Payee payee_arg) {
-               number ret = bindings.Route_new(paths_arg != null ? Arrays.stream(paths_arg).map(paths_arg_conv_12 -> paths_arg_conv_12 != null ? Arrays.stream(paths_arg_conv_12).map(paths_arg_conv_12_conv_10 -> paths_arg_conv_12_conv_10 == null ? 0 : paths_arg_conv_12_conv_10.ptr & ~1).toArray(number[]::new) : null).toArray(number[][]::new) : null, payee_arg == null ? 0 : payee_arg.ptr & ~1);
-               const ret_hu_conv: Route = new Route(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.Route_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 number hash() {
-               number ret = bindings.Route_hash(this.ptr);
-               return ret;
-       }
-
-       public boolean eq(Route b) {
-               boolean ret = bindings.Route_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
-               this.ptrs_to.add(b);
-               return ret;
-       }
-
-       public number get_total_fees() {
-               number ret = bindings.Route_get_total_fees(this.ptr);
-               return ret;
-       }
-
-       public number get_total_amount() {
-               number ret = bindings.Route_get_total_amount(this.ptr);
-               return ret;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.Route_write(this.ptr);
-               return ret;
-       }
-
-       public static Result_RouteDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.Route_read(ser);
-               Result_RouteDecodeErrorZ ret_hu_conv = Result_RouteDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/RouteHint.ts b/ts/structs/RouteHint.ts
deleted file mode 100644 (file)
index 0560420..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class RouteHint extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.RouteHint_free(this.ptr);
-                    }
-                }
-       public RouteHintHop[] get_a() {
-               number[] ret = bindings.RouteHint_get_a(this.ptr);
-               RouteHintHop[] ret_conv_14_arr = new RouteHintHop[ret.length];
-               for (int o = 0; o < ret.length; o++) {
-                       number ret_conv_14 = ret[o];
-                       const ret_conv_14_hu_conv: RouteHintHop = new RouteHintHop(null, ret_conv_14);
-                       ret_conv_14_hu_conv.ptrs_to.add(this);
-                       ret_conv_14_arr[o] = ret_conv_14_hu_conv;
-               }
-               return ret_conv_14_arr;
-       }
-
-       public void set_a(RouteHintHop[] val) {
-               bindings.RouteHint_set_a(this.ptr, val != null ? Arrays.stream(val).map(val_conv_14 -> val_conv_14 == null ? 0 : val_conv_14.ptr & ~1).toArray(number[]::new) : null);
-       }
-
-       public static RouteHint constructor_new(RouteHintHop[] a_arg) {
-               number ret = bindings.RouteHint_new(a_arg != null ? Arrays.stream(a_arg).map(a_arg_conv_14 -> a_arg_conv_14 == null ? 0 : a_arg_conv_14.ptr & ~1).toArray(number[]::new) : null);
-               const ret_hu_conv: RouteHint = new RouteHint(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.RouteHint_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 number hash() {
-               number ret = bindings.RouteHint_hash(this.ptr);
-               return ret;
-       }
-
-       public boolean eq(RouteHint b) {
-               boolean ret = bindings.RouteHint_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
-               this.ptrs_to.add(b);
-               return ret;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.RouteHint_write(this.ptr);
-               return ret;
-       }
-
-       public static Result_RouteHintDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.RouteHint_read(ser);
-               Result_RouteHintDecodeErrorZ ret_hu_conv = Result_RouteHintDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/RouteHintHop.ts b/ts/structs/RouteHintHop.ts
deleted file mode 100644 (file)
index a211023..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class RouteHintHop extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.RouteHintHop_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_src_node_id() {
-               Uint8Array ret = bindings.RouteHintHop_get_src_node_id(this.ptr);
-               return ret;
-       }
-
-       public void set_src_node_id(Uint8Array val) {
-               bindings.RouteHintHop_set_src_node_id(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public number get_short_channel_id() {
-               number ret = bindings.RouteHintHop_get_short_channel_id(this.ptr);
-               return ret;
-       }
-
-       public void set_short_channel_id(number val) {
-               bindings.RouteHintHop_set_short_channel_id(this.ptr, val);
-       }
-
-       public RoutingFees get_fees() {
-               number ret = bindings.RouteHintHop_get_fees(this.ptr);
-               const ret_hu_conv: RoutingFees = new RoutingFees(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_fees(RoutingFees val) {
-               bindings.RouteHintHop_set_fees(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public number get_cltv_expiry_delta() {
-               number ret = bindings.RouteHintHop_get_cltv_expiry_delta(this.ptr);
-               return ret;
-       }
-
-       public void set_cltv_expiry_delta(number val) {
-               bindings.RouteHintHop_set_cltv_expiry_delta(this.ptr, val);
-       }
-
-       public Option_u64Z get_htlc_minimum_msat() {
-               number ret = bindings.RouteHintHop_get_htlc_minimum_msat(this.ptr);
-               Option_u64Z ret_hu_conv = Option_u64Z.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_htlc_minimum_msat(Option_u64Z val) {
-               bindings.RouteHintHop_set_htlc_minimum_msat(this.ptr, val.ptr);
-       }
-
-       public Option_u64Z get_htlc_maximum_msat() {
-               number ret = bindings.RouteHintHop_get_htlc_maximum_msat(this.ptr);
-               Option_u64Z ret_hu_conv = Option_u64Z.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_htlc_maximum_msat(Option_u64Z val) {
-               bindings.RouteHintHop_set_htlc_maximum_msat(this.ptr, val.ptr);
-       }
-
-       public static RouteHintHop constructor_new(Uint8Array src_node_id_arg, number short_channel_id_arg, RoutingFees fees_arg, number cltv_expiry_delta_arg, Option_u64Z htlc_minimum_msat_arg, Option_u64Z htlc_maximum_msat_arg) {
-               number ret = bindings.RouteHintHop_new(InternalUtils.check_arr_len(src_node_id_arg, 33), short_channel_id_arg, fees_arg == null ? 0 : fees_arg.ptr & ~1, cltv_expiry_delta_arg, htlc_minimum_msat_arg.ptr, htlc_maximum_msat_arg.ptr);
-               const ret_hu_conv: RouteHintHop = new RouteHintHop(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.RouteHintHop_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public RouteHintHop clone() {
-               number ret = bindings.RouteHintHop_clone(this.ptr);
-               const ret_hu_conv: RouteHintHop = new RouteHintHop(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public number hash() {
-               number ret = bindings.RouteHintHop_hash(this.ptr);
-               return ret;
-       }
-
-       public boolean eq(RouteHintHop b) {
-               boolean ret = bindings.RouteHintHop_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
-               this.ptrs_to.add(b);
-               return ret;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.RouteHintHop_write(this.ptr);
-               return ret;
-       }
-
-       public static Result_RouteHintHopDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.RouteHintHop_read(ser);
-               Result_RouteHintHopDecodeErrorZ ret_hu_conv = Result_RouteHintHopDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/RouteHop.ts b/ts/structs/RouteHop.ts
deleted file mode 100644 (file)
index af9e061..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class RouteHop extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.RouteHop_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_pubkey() {
-               Uint8Array ret = bindings.RouteHop_get_pubkey(this.ptr);
-               return ret;
-       }
-
-       public void set_pubkey(Uint8Array val) {
-               bindings.RouteHop_set_pubkey(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public NodeFeatures get_node_features() {
-               number ret = bindings.RouteHop_get_node_features(this.ptr);
-               const ret_hu_conv: NodeFeatures = new NodeFeatures(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_node_features(NodeFeatures val) {
-               bindings.RouteHop_set_node_features(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public number get_short_channel_id() {
-               number ret = bindings.RouteHop_get_short_channel_id(this.ptr);
-               return ret;
-       }
-
-       public void set_short_channel_id(number val) {
-               bindings.RouteHop_set_short_channel_id(this.ptr, val);
-       }
-
-       public ChannelFeatures get_channel_features() {
-               number ret = bindings.RouteHop_get_channel_features(this.ptr);
-               const ret_hu_conv: ChannelFeatures = new ChannelFeatures(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_channel_features(ChannelFeatures val) {
-               bindings.RouteHop_set_channel_features(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public number get_fee_msat() {
-               number ret = bindings.RouteHop_get_fee_msat(this.ptr);
-               return ret;
-       }
-
-       public void set_fee_msat(number val) {
-               bindings.RouteHop_set_fee_msat(this.ptr, val);
-       }
-
-       public number get_cltv_expiry_delta() {
-               number ret = bindings.RouteHop_get_cltv_expiry_delta(this.ptr);
-               return ret;
-       }
-
-       public void set_cltv_expiry_delta(number val) {
-               bindings.RouteHop_set_cltv_expiry_delta(this.ptr, val);
-       }
-
-       public static RouteHop constructor_new(Uint8Array pubkey_arg, NodeFeatures node_features_arg, number short_channel_id_arg, ChannelFeatures channel_features_arg, number fee_msat_arg, number cltv_expiry_delta_arg) {
-               number ret = bindings.RouteHop_new(InternalUtils.check_arr_len(pubkey_arg, 33), node_features_arg == null ? 0 : node_features_arg.ptr & ~1, short_channel_id_arg, channel_features_arg == null ? 0 : channel_features_arg.ptr & ~1, fee_msat_arg, cltv_expiry_delta_arg);
-               const ret_hu_conv: RouteHop = new RouteHop(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.RouteHop_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 number hash() {
-               number ret = bindings.RouteHop_hash(this.ptr);
-               return ret;
-       }
-
-       public boolean eq(RouteHop b) {
-               boolean ret = bindings.RouteHop_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
-               this.ptrs_to.add(b);
-               return ret;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.RouteHop_write(this.ptr);
-               return ret;
-       }
-
-       public static Result_RouteHopDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.RouteHop_read(ser);
-               Result_RouteHopDecodeErrorZ ret_hu_conv = Result_RouteHopDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/RouteParameters.ts b/ts/structs/RouteParameters.ts
deleted file mode 100644 (file)
index 304e319..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class RouteParameters extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.RouteParameters_free(this.ptr);
-                    }
-                }
-       public Payee get_payee() {
-               number ret = bindings.RouteParameters_get_payee(this.ptr);
-               const ret_hu_conv: Payee = new Payee(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_payee(Payee val) {
-               bindings.RouteParameters_set_payee(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public number get_final_value_msat() {
-               number ret = bindings.RouteParameters_get_final_value_msat(this.ptr);
-               return ret;
-       }
-
-       public void set_final_value_msat(number val) {
-               bindings.RouteParameters_set_final_value_msat(this.ptr, val);
-       }
-
-       public number get_final_cltv_expiry_delta() {
-               number ret = bindings.RouteParameters_get_final_cltv_expiry_delta(this.ptr);
-               return ret;
-       }
-
-       public void set_final_cltv_expiry_delta(number val) {
-               bindings.RouteParameters_set_final_cltv_expiry_delta(this.ptr, val);
-       }
-
-       public static RouteParameters constructor_new(Payee payee_arg, number final_value_msat_arg, number final_cltv_expiry_delta_arg) {
-               number ret = bindings.RouteParameters_new(payee_arg == null ? 0 : payee_arg.ptr & ~1, final_value_msat_arg, final_cltv_expiry_delta_arg);
-               const ret_hu_conv: RouteParameters = new RouteParameters(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.RouteParameters_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public RouteParameters clone() {
-               number ret = bindings.RouteParameters_clone(this.ptr);
-               const ret_hu_conv: RouteParameters = new RouteParameters(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.RouteParameters_write(this.ptr);
-               return ret;
-       }
-
-       public static Result_RouteParametersDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.RouteParameters_read(ser);
-               Result_RouteParametersDecodeErrorZ ret_hu_conv = Result_RouteParametersDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Router.ts b/ts/structs/Router.ts
deleted file mode 100644 (file)
index b6b848e..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export class Router extends CommonBase {
-
-                bindings_instance?: bindings.LDKRouter;
-
-                constructor(ptr?: number, arg?: bindings.LDKRouter) {
-                    if (Number.isFinite(ptr)) {
-                                       super(ptr);
-                                       this.bindings_instance = null;
-                                   } else {
-                                       // TODO: private constructor instantiation
-                                       super(bindings.LDKRouter_new(arg));
-                                       this.ptrs_to.push(arg);
-                                       
-                                   }
-                }
-
-                protected finalize() {
-                    if (this.ptr != 0) {
-                        bindings.Router_free(this.ptr);
-                    }
-                    super.finalize();
-                }
-
-                static new_impl(arg: RouterInterface): Router {
-                    const impl_holder: LDKRouterHolder = new LDKRouterHolder();
-                    let structImplementation = <bindings.LDKRouter>{
-                        // todo: in-line interface filling
-                        find_route (payer: Uint8Array, params: number, payment_hash: Uint8Array, first_hops: number[], scorer: number): number {
-                                                       const params_hu_conv: RouteParameters = new RouteParameters(null, params);
-                                                       ChannelDetails[] first_hops_conv_16_arr = new ChannelDetails[first_hops.length];
-                               for (int q = 0; q < first_hops.length; q++) {
-                                       number first_hops_conv_16 = first_hops[q];
-                                       const first_hops_conv_16_hu_conv: ChannelDetails = new ChannelDetails(null, first_hops_conv_16);
-                                       first_hops_conv_16_hu_conv.ptrs_to.add(this);
-                                       first_hops_conv_16_arr[q] = first_hops_conv_16_hu_conv;
-                               }
-                                                       Score ret_hu_conv = new Score(null, scorer);
-                               ret_hu_conv.ptrs_to.add(this);
-                                                       Result_RouteLightningErrorZ ret = arg.find_route(payer, params_hu_conv, payment_hash, first_hops_conv_16_arr, ret_hu_conv);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               
-                    };
-                    impl_holder.held = new Router (null, structImplementation);
-                }
-            }
-
-            export interface RouterInterface {
-                find_route(payer: Uint8Array, params: RouteParameters, payment_hash: Uint8Array, first_hops: ChannelDetails[], scorer: Score): Result_RouteLightningErrorZ;
-                               
-            }
-
-            class LDKRouterHolder {
-                held: Router;
-            }
-       public Result_RouteLightningErrorZ find_route(Uint8Array payer, RouteParameters params, Uint8Array payment_hash, ChannelDetails[] first_hops, Score scorer) {
-               number ret = bindings.Router_find_route(this.ptr, InternalUtils.check_arr_len(payer, 33), params == null ? 0 : params.ptr & ~1, InternalUtils.check_arr_len(payment_hash, 32), first_hops != null ? Arrays.stream(first_hops).map(first_hops_conv_16 -> first_hops_conv_16 == null ? 0 : first_hops_conv_16.ptr & ~1).toArray(number[]::new) : null, scorer == null ? 0 : scorer.ptr);
-               Result_RouteLightningErrorZ ret_hu_conv = Result_RouteLightningErrorZ.constr_from_ptr(ret);
-               this.ptrs_to.add(params);
-               for (ChannelDetails first_hops_conv_16: first_hops) { this.ptrs_to.add(first_hops_conv_16); };
-               this.ptrs_to.add(scorer);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/RoutingFees.ts b/ts/structs/RoutingFees.ts
deleted file mode 100644 (file)
index 494a0fb..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class RoutingFees extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.RoutingFees_free(this.ptr);
-                    }
-                }
-       public number get_base_msat() {
-               number ret = bindings.RoutingFees_get_base_msat(this.ptr);
-               return ret;
-       }
-
-       public void set_base_msat(number val) {
-               bindings.RoutingFees_set_base_msat(this.ptr, val);
-       }
-
-       public number get_proportional_millionths() {
-               number ret = bindings.RoutingFees_get_proportional_millionths(this.ptr);
-               return ret;
-       }
-
-       public void set_proportional_millionths(number val) {
-               bindings.RoutingFees_set_proportional_millionths(this.ptr, val);
-       }
-
-       public static RoutingFees constructor_new(number base_msat_arg, number proportional_millionths_arg) {
-               number ret = bindings.RoutingFees_new(base_msat_arg, proportional_millionths_arg);
-               const ret_hu_conv: RoutingFees = new RoutingFees(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public boolean eq(RoutingFees b) {
-               boolean ret = bindings.RoutingFees_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
-               this.ptrs_to.add(b);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.RoutingFees_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 hash() {
-               number ret = bindings.RoutingFees_hash(this.ptr);
-               return ret;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.RoutingFees_write(this.ptr);
-               return ret;
-       }
-
-       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);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/RoutingMessageHandler.ts b/ts/structs/RoutingMessageHandler.ts
deleted file mode 100644 (file)
index 263b67c..0000000
+++ /dev/null
@@ -1,203 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export class RoutingMessageHandler extends CommonBase {
-
-                bindings_instance?: bindings.LDKRoutingMessageHandler;
-
-                constructor(ptr?: number, arg?: bindings.LDKRoutingMessageHandler, messageSendEventsProvider?: bindings.LDKMessageSendEventsProvider) {
-                    if (Number.isFinite(ptr)) {
-                                       super(ptr);
-                                       this.bindings_instance = null;
-                                   } else {
-                                       // TODO: private constructor instantiation
-                                       super(bindings.LDKRoutingMessageHandler_new(arg, messageSendEventsProvider));
-                                       this.ptrs_to.push(arg);
-                                       this.ptrs_to.push(messageSendEventsProvider);
-
-                                   }
-                }
-
-                protected finalize() {
-                    if (this.ptr != 0) {
-                        bindings.RoutingMessageHandler_free(this.ptr);
-                    }
-                    super.finalize();
-                }
-
-                static new_impl(arg: RoutingMessageHandlerInterface, messageSendEventsProvider_impl: MessageSendEventsProvider.MessageSendEventsProviderInterface): RoutingMessageHandler {
-                    const impl_holder: LDKRoutingMessageHandlerHolder = new LDKRoutingMessageHandlerHolder();
-                    let structImplementation = <bindings.LDKRoutingMessageHandler>{
-                        // todo: in-line interface filling
-                        handle_node_announcement (msg: number): number {
-                                                       const msg_hu_conv: NodeAnnouncement = new NodeAnnouncement(null, msg);
-                                                       Result_boolLightningErrorZ ret = arg.handle_node_announcement(msg_hu_conv);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               handle_channel_announcement (msg: number): number {
-                                                       const msg_hu_conv: ChannelAnnouncement = new ChannelAnnouncement(null, msg);
-                                                       Result_boolLightningErrorZ ret = arg.handle_channel_announcement(msg_hu_conv);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               handle_channel_update (msg: number): number {
-                                                       const msg_hu_conv: ChannelUpdate = new ChannelUpdate(null, msg);
-                                                       Result_boolLightningErrorZ ret = arg.handle_channel_update(msg_hu_conv);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               get_next_channel_announcements (starting_point: number, batch_amount: number): number[] {
-                                                       ThreeTuple_ChannelAnnouncementChannelUpdateChannelUpdateZ[] ret = arg.get_next_channel_announcements(starting_point, batch_amount);
-                               result: number[] = ret != null ? Arrays.stream(ret).map(ret_conv_59 -> ret_conv_59 == null ? 0 : ret_conv_59.clone_ptr()).toArray(number[]::new) : null;
-                               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[] = ret != null ? Arrays.stream(ret).map(ret_conv_18 -> ret_conv_18 == null ? 0 : ret_conv_18.clone_ptr()).toArray(number[]::new) : null;
-                               return result;
-                                               },
-
-                                               sync_routing_table (their_node_id: Uint8Array, init: number): void {
-                                                       const init_hu_conv: Init = new Init(null, init);
-                                                       arg.sync_routing_table(their_node_id, init_hu_conv);
-                                               },
-
-                                               handle_reply_channel_range (their_node_id: Uint8Array, msg: number): number {
-                                                       const msg_hu_conv: ReplyChannelRange = new ReplyChannelRange(null, msg);
-                               msg_hu_conv.ptrs_to.add(this);
-                                                       Result_NoneLightningErrorZ ret = arg.handle_reply_channel_range(their_node_id, msg_hu_conv);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               handle_reply_short_channel_ids_end (their_node_id: Uint8Array, msg: number): number {
-                                                       const msg_hu_conv: ReplyShortChannelIdsEnd = new ReplyShortChannelIdsEnd(null, msg);
-                               msg_hu_conv.ptrs_to.add(this);
-                                                       Result_NoneLightningErrorZ ret = arg.handle_reply_short_channel_ids_end(their_node_id, msg_hu_conv);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               handle_query_channel_range (their_node_id: Uint8Array, msg: number): number {
-                                                       const msg_hu_conv: QueryChannelRange = new QueryChannelRange(null, msg);
-                               msg_hu_conv.ptrs_to.add(this);
-                                                       Result_NoneLightningErrorZ ret = arg.handle_query_channel_range(their_node_id, msg_hu_conv);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               handle_query_short_channel_ids (their_node_id: Uint8Array, msg: number): number {
-                                                       const msg_hu_conv: QueryShortChannelIds = new QueryShortChannelIds(null, msg);
-                               msg_hu_conv.ptrs_to.add(this);
-                                                       Result_NoneLightningErrorZ ret = arg.handle_query_short_channel_ids(their_node_id, msg_hu_conv);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               
-                    };
-                    impl_holder.held = new RoutingMessageHandler (null, structImplementation, MessageSendEventsProvider.new_impl(MessageSendEventsProvider_impl).bindings_instance);
-                }
-            }
-
-            export interface RoutingMessageHandlerInterface {
-                handle_node_announcement(msg: NodeAnnouncement): Result_boolLightningErrorZ;
-                               handle_channel_announcement(msg: ChannelAnnouncement): Result_boolLightningErrorZ;
-                               handle_channel_update(msg: ChannelUpdate): Result_boolLightningErrorZ;
-                               get_next_channel_announcements(starting_point: number, batch_amount: number): ThreeTuple_ChannelAnnouncementChannelUpdateChannelUpdateZ[];
-                               get_next_node_announcements(starting_point: Uint8Array, batch_amount: number): NodeAnnouncement[];
-                               sync_routing_table(their_node_id: Uint8Array, init: Init): void;
-                               handle_reply_channel_range(their_node_id: Uint8Array, msg: ReplyChannelRange): Result_NoneLightningErrorZ;
-                               handle_reply_short_channel_ids_end(their_node_id: Uint8Array, msg: ReplyShortChannelIdsEnd): Result_NoneLightningErrorZ;
-                               handle_query_channel_range(their_node_id: Uint8Array, msg: QueryChannelRange): Result_NoneLightningErrorZ;
-                               handle_query_short_channel_ids(their_node_id: Uint8Array, msg: QueryShortChannelIds): Result_NoneLightningErrorZ;
-                               
-            }
-
-            class LDKRoutingMessageHandlerHolder {
-                held: RoutingMessageHandler;
-            }
-       public Result_boolLightningErrorZ handle_node_announcement(NodeAnnouncement msg) {
-               number ret = bindings.RoutingMessageHandler_handle_node_announcement(this.ptr, msg == null ? 0 : msg.ptr & ~1);
-               Result_boolLightningErrorZ ret_hu_conv = Result_boolLightningErrorZ.constr_from_ptr(ret);
-               this.ptrs_to.add(msg);
-               return ret_hu_conv;
-       }
-
-       public Result_boolLightningErrorZ handle_channel_announcement(ChannelAnnouncement msg) {
-               number ret = bindings.RoutingMessageHandler_handle_channel_announcement(this.ptr, msg == null ? 0 : msg.ptr & ~1);
-               Result_boolLightningErrorZ ret_hu_conv = Result_boolLightningErrorZ.constr_from_ptr(ret);
-               this.ptrs_to.add(msg);
-               return ret_hu_conv;
-       }
-
-       public Result_boolLightningErrorZ handle_channel_update(ChannelUpdate msg) {
-               number ret = bindings.RoutingMessageHandler_handle_channel_update(this.ptr, msg == null ? 0 : msg.ptr & ~1);
-               Result_boolLightningErrorZ ret_hu_conv = Result_boolLightningErrorZ.constr_from_ptr(ret);
-               this.ptrs_to.add(msg);
-               return ret_hu_conv;
-       }
-
-       public ThreeTuple_ChannelAnnouncementChannelUpdateChannelUpdateZ[] get_next_channel_announcements(number starting_point, number batch_amount) {
-               number[] ret = bindings.RoutingMessageHandler_get_next_channel_announcements(this.ptr, starting_point, batch_amount);
-               ThreeTuple_ChannelAnnouncementChannelUpdateChannelUpdateZ[] ret_conv_59_arr = new ThreeTuple_ChannelAnnouncementChannelUpdateChannelUpdateZ[ret.length];
-               for (int h = 0; h < ret.length; h++) {
-                       number ret_conv_59 = ret[h];
-                       ThreeTuple_ChannelAnnouncementChannelUpdateChannelUpdateZ ret_conv_59_hu_conv = new ThreeTuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(null, ret_conv_59);
-                       ret_conv_59_hu_conv.ptrs_to.add(this);
-                       ret_conv_59_arr[h] = ret_conv_59_hu_conv;
-               }
-               return ret_conv_59_arr;
-       }
-
-       public NodeAnnouncement[] get_next_node_announcements(Uint8Array starting_point, number batch_amount) {
-               number[] ret = bindings.RoutingMessageHandler_get_next_node_announcements(this.ptr, InternalUtils.check_arr_len(starting_point, 33), batch_amount);
-               NodeAnnouncement[] ret_conv_18_arr = new NodeAnnouncement[ret.length];
-               for (int s = 0; s < ret.length; s++) {
-                       number ret_conv_18 = ret[s];
-                       const ret_conv_18_hu_conv: NodeAnnouncement = new NodeAnnouncement(null, ret_conv_18);
-                       ret_conv_18_hu_conv.ptrs_to.add(this);
-                       ret_conv_18_arr[s] = ret_conv_18_hu_conv;
-               }
-               return ret_conv_18_arr;
-       }
-
-       public void sync_routing_table(Uint8Array their_node_id, Init init) {
-               bindings.RoutingMessageHandler_sync_routing_table(this.ptr, InternalUtils.check_arr_len(their_node_id, 33), init == null ? 0 : init.ptr & ~1);
-               this.ptrs_to.add(init);
-       }
-
-       public Result_NoneLightningErrorZ handle_reply_channel_range(Uint8Array their_node_id, ReplyChannelRange msg) {
-               number ret = bindings.RoutingMessageHandler_handle_reply_channel_range(this.ptr, InternalUtils.check_arr_len(their_node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               Result_NoneLightningErrorZ ret_hu_conv = Result_NoneLightningErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public Result_NoneLightningErrorZ handle_reply_short_channel_ids_end(Uint8Array their_node_id, ReplyShortChannelIdsEnd msg) {
-               number ret = bindings.RoutingMessageHandler_handle_reply_short_channel_ids_end(this.ptr, InternalUtils.check_arr_len(their_node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               Result_NoneLightningErrorZ ret_hu_conv = Result_NoneLightningErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public Result_NoneLightningErrorZ handle_query_channel_range(Uint8Array their_node_id, QueryChannelRange msg) {
-               number ret = bindings.RoutingMessageHandler_handle_query_channel_range(this.ptr, InternalUtils.check_arr_len(their_node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               Result_NoneLightningErrorZ ret_hu_conv = Result_NoneLightningErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public Result_NoneLightningErrorZ handle_query_short_channel_ids(Uint8Array their_node_id, QueryShortChannelIds msg) {
-               number ret = bindings.RoutingMessageHandler_handle_query_short_channel_ids(this.ptr, InternalUtils.check_arr_len(their_node_id, 33), msg == null ? 0 : msg.ptr & ~1);
-               Result_NoneLightningErrorZ ret_hu_conv = Result_NoneLightningErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Score.ts b/ts/structs/Score.ts
deleted file mode 100644 (file)
index 6c73fe5..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export class Score extends CommonBase {
-
-                bindings_instance?: bindings.LDKScore;
-
-                constructor(ptr?: number, arg?: bindings.LDKScore) {
-                    if (Number.isFinite(ptr)) {
-                                       super(ptr);
-                                       this.bindings_instance = null;
-                                   } else {
-                                       // TODO: private constructor instantiation
-                                       super(bindings.LDKScore_new(arg));
-                                       this.ptrs_to.push(arg);
-                                       
-                                   }
-                }
-
-                protected finalize() {
-                    if (this.ptr != 0) {
-                        bindings.Score_free(this.ptr);
-                    }
-                    super.finalize();
-                }
-
-                static new_impl(arg: ScoreInterface): Score {
-                    const impl_holder: LDKScoreHolder = new LDKScoreHolder();
-                    let structImplementation = <bindings.LDKScore>{
-                        // todo: in-line interface filling
-                        channel_penalty_msat (short_channel_id: number, send_amt_msat: number, channel_capacity_msat: number, source: number, target: number): number {
-                                                       Option_u64Z channel_capacity_msat_hu_conv = Option_u64Z.constr_from_ptr(channel_capacity_msat);
-                               channel_capacity_msat_hu_conv.ptrs_to.add(this);
-                                                       const source_hu_conv: NodeId = new NodeId(null, source);
-                                                       const target_hu_conv: NodeId = new NodeId(null, target);
-                                                       number ret = arg.channel_penalty_msat(short_channel_id, send_amt_msat, channel_capacity_msat_hu_conv, source_hu_conv, target_hu_conv);
-                               return ret;
-                                               },
-
-                                               payment_path_failed (path: number[], short_channel_id: number): void {
-                                                       RouteHop[] path_conv_10_arr = new RouteHop[path.length];
-                               for (int k = 0; k < path.length; k++) {
-                                       number path_conv_10 = path[k];
-                                       const path_conv_10_hu_conv: RouteHop = new RouteHop(null, path_conv_10);
-                                       path_conv_10_hu_conv.ptrs_to.add(this);
-                                       path_conv_10_arr[k] = path_conv_10_hu_conv;
-                               }
-                                                       arg.payment_path_failed(path_conv_10_arr, short_channel_id);
-                                               },
-
-                                               payment_path_successful (path: number[]): void {
-                                                       RouteHop[] path_conv_10_arr = new RouteHop[path.length];
-                               for (int k = 0; k < path.length; k++) {
-                                       number path_conv_10 = path[k];
-                                       const path_conv_10_hu_conv: RouteHop = new RouteHop(null, path_conv_10);
-                                       path_conv_10_hu_conv.ptrs_to.add(this);
-                                       path_conv_10_arr[k] = path_conv_10_hu_conv;
-                               }
-                                                       arg.payment_path_successful(path_conv_10_arr);
-                                               },
-
-                                               write (): Uint8Array {
-                                                       Uint8Array ret = arg.write();
-                               return ret;
-                                               },
-
-                                               
-                    };
-                    impl_holder.held = new Score (null, structImplementation);
-                }
-            }
-
-            export interface ScoreInterface {
-                channel_penalty_msat(short_channel_id: number, send_amt_msat: number, channel_capacity_msat: Option_u64Z, source: NodeId, target: NodeId): number;
-                               payment_path_failed(path: RouteHop[], short_channel_id: number): void;
-                               payment_path_successful(path: RouteHop[]): void;
-                               write(): Uint8Array;
-                               
-            }
-
-            class LDKScoreHolder {
-                held: Score;
-            }
-       public number channel_penalty_msat(number short_channel_id, number send_amt_msat, Option_u64Z channel_capacity_msat, NodeId source, NodeId target) {
-               number ret = bindings.Score_channel_penalty_msat(this.ptr, short_channel_id, send_amt_msat, channel_capacity_msat.ptr, source == null ? 0 : source.ptr & ~1, target == null ? 0 : target.ptr & ~1);
-               this.ptrs_to.add(source);
-               this.ptrs_to.add(target);
-               return ret;
-       }
-
-       public void payment_path_failed(RouteHop[] path, number short_channel_id) {
-               bindings.Score_payment_path_failed(this.ptr, path != null ? Arrays.stream(path).map(path_conv_10 -> path_conv_10 == null ? 0 : path_conv_10.ptr & ~1).toArray(number[]::new) : null, short_channel_id);
-       }
-
-       public void payment_path_successful(RouteHop[] path) {
-               bindings.Score_payment_path_successful(this.ptr, path != null ? Arrays.stream(path).map(path_conv_10 -> path_conv_10 == null ? 0 : path_conv_10.ptr & ~1).toArray(number[]::new) : null);
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.Score_write(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/Scorer.ts b/ts/structs/Scorer.ts
deleted file mode 100644 (file)
index ac26dd3..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class Scorer extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.Scorer_free(this.ptr);
-                    }
-                }
-       public static Scorer constructor_new(number params_base_penalty_msat_arg, number params_failure_penalty_msat_arg, number params_overuse_penalty_start_1024th_arg, number params_overuse_penalty_msat_per_1024th_arg, number params_failure_penalty_half_life_arg) {
-               number ret = bindings.Scorer_new(bindings.ScoringParameters_new(params_base_penalty_msat_arg, params_failure_penalty_msat_arg, params_overuse_penalty_start_1024th_arg, params_overuse_penalty_msat_per_1024th_arg, params_failure_penalty_half_life_arg));
-               const ret_hu_conv: Scorer = new Scorer(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static Scorer constructor_default() {
-               number ret = bindings.Scorer_default();
-               const ret_hu_conv: Scorer = new Scorer(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public Score as_Score() {
-               number ret = bindings.Scorer_as_Score(this.ptr);
-               Score ret_hu_conv = new Score(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.Scorer_write(this.ptr);
-               return ret;
-       }
-
-       public static Result_ScorerDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.Scorer_read(ser);
-               Result_ScorerDecodeErrorZ ret_hu_conv = Result_ScorerDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/ScoringParameters.ts b/ts/structs/ScoringParameters.ts
deleted file mode 100644 (file)
index 18e17f3..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ScoringParameters extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ScoringParameters_free(this.ptr);
-                    }
-                }
-       public number get_base_penalty_msat() {
-               number ret = bindings.ScoringParameters_get_base_penalty_msat(this.ptr);
-               return ret;
-       }
-
-       public void set_base_penalty_msat(number val) {
-               bindings.ScoringParameters_set_base_penalty_msat(this.ptr, val);
-       }
-
-       public number get_failure_penalty_msat() {
-               number ret = bindings.ScoringParameters_get_failure_penalty_msat(this.ptr);
-               return ret;
-       }
-
-       public void set_failure_penalty_msat(number val) {
-               bindings.ScoringParameters_set_failure_penalty_msat(this.ptr, val);
-       }
-
-       public number get_overuse_penalty_start_1024th() {
-               number ret = bindings.ScoringParameters_get_overuse_penalty_start_1024th(this.ptr);
-               return ret;
-       }
-
-       public void set_overuse_penalty_start_1024th(number val) {
-               bindings.ScoringParameters_set_overuse_penalty_start_1024th(this.ptr, val);
-       }
-
-       public number get_overuse_penalty_msat_per_1024th() {
-               number ret = bindings.ScoringParameters_get_overuse_penalty_msat_per_1024th(this.ptr);
-               return ret;
-       }
-
-       public void set_overuse_penalty_msat_per_1024th(number val) {
-               bindings.ScoringParameters_set_overuse_penalty_msat_per_1024th(this.ptr, val);
-       }
-
-       public number get_failure_penalty_half_life() {
-               number ret = bindings.ScoringParameters_get_failure_penalty_half_life(this.ptr);
-               return ret;
-       }
-
-       public void set_failure_penalty_half_life(number val) {
-               bindings.ScoringParameters_set_failure_penalty_half_life(this.ptr, val);
-       }
-
-       public static ScoringParameters constructor_new(number base_penalty_msat_arg, number failure_penalty_msat_arg, number overuse_penalty_start_1024th_arg, number overuse_penalty_msat_per_1024th_arg, number failure_penalty_half_life_arg) {
-               number ret = bindings.ScoringParameters_new(base_penalty_msat_arg, failure_penalty_msat_arg, overuse_penalty_start_1024th_arg, overuse_penalty_msat_per_1024th_arg, failure_penalty_half_life_arg);
-               const ret_hu_conv: ScoringParameters = new ScoringParameters(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.ScoringParameters_write(this.ptr);
-               return ret;
-       }
-
-       public static Result_ScoringParametersDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.ScoringParameters_read(ser);
-               Result_ScoringParametersDecodeErrorZ ret_hu_conv = Result_ScoringParametersDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static ScoringParameters constructor_default() {
-               number ret = bindings.ScoringParameters_default();
-               const ret_hu_conv: ScoringParameters = new ScoringParameters(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/Sha256.ts b/ts/structs/Sha256.ts
deleted file mode 100644 (file)
index dd23a09..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class Sha256 extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.Sha256_free(this.ptr);
-                    }
-                }
-       public number clone_ptr() {
-               number ret = bindings.Sha256_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Sha256 clone() {
-               number ret = bindings.Sha256_clone(this.ptr);
-               const ret_hu_conv: Sha256 = new Sha256(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public number hash() {
-               number ret = bindings.Sha256_hash(this.ptr);
-               return ret;
-       }
-
-       public boolean eq(Sha256 b) {
-               boolean ret = bindings.Sha256_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
-               this.ptrs_to.add(b);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/Shutdown.ts b/ts/structs/Shutdown.ts
deleted file mode 100644 (file)
index dd73d5b..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class Shutdown extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.Shutdown_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_channel_id() {
-               Uint8Array ret = bindings.Shutdown_get_channel_id(this.ptr);
-               return ret;
-       }
-
-       public void set_channel_id(Uint8Array val) {
-               bindings.Shutdown_set_channel_id(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public Uint8Array get_scriptpubkey() {
-               Uint8Array ret = bindings.Shutdown_get_scriptpubkey(this.ptr);
-               return ret;
-       }
-
-       public void set_scriptpubkey(Uint8Array val) {
-               bindings.Shutdown_set_scriptpubkey(this.ptr, val);
-       }
-
-       public static Shutdown constructor_new(Uint8Array channel_id_arg, Uint8Array scriptpubkey_arg) {
-               number ret = bindings.Shutdown_new(InternalUtils.check_arr_len(channel_id_arg, 32), scriptpubkey_arg);
-               const ret_hu_conv: Shutdown = new Shutdown(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.Shutdown_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 Result_ShutdownDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.Shutdown_read(ser);
-               Result_ShutdownDecodeErrorZ ret_hu_conv = Result_ShutdownDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/ShutdownScript.ts b/ts/structs/ShutdownScript.ts
deleted file mode 100644 (file)
index e1da61d..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class ShutdownScript extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.ShutdownScript_free(this.ptr);
-                    }
-                }
-       public number clone_ptr() {
-               number ret = bindings.ShutdownScript_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public ShutdownScript clone() {
-               number ret = bindings.ShutdownScript_clone(this.ptr);
-               const ret_hu_conv: ShutdownScript = new ShutdownScript(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.ShutdownScript_write(this.ptr);
-               return ret;
-       }
-
-       public static Result_ShutdownScriptDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.ShutdownScript_read(ser);
-               Result_ShutdownScriptDecodeErrorZ ret_hu_conv = Result_ShutdownScriptDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static ShutdownScript constructor_new_p2wpkh(Uint8Array pubkey_hash) {
-               number ret = bindings.ShutdownScript_new_p2wpkh(InternalUtils.check_arr_len(pubkey_hash, 20));
-               const ret_hu_conv: ShutdownScript = new ShutdownScript(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static ShutdownScript constructor_new_p2wsh(Uint8Array script_hash) {
-               number ret = bindings.ShutdownScript_new_p2wsh(InternalUtils.check_arr_len(script_hash, 32));
-               const ret_hu_conv: ShutdownScript = new ShutdownScript(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static Result_ShutdownScriptInvalidShutdownScriptZ constructor_new_witness_program(number version, Uint8Array program) {
-               number ret = bindings.ShutdownScript_new_witness_program(version, program);
-               Result_ShutdownScriptInvalidShutdownScriptZ ret_hu_conv = Result_ShutdownScriptInvalidShutdownScriptZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array into_inner() {
-               Uint8Array ret = bindings.ShutdownScript_into_inner(this.ptr);
-               return ret;
-       }
-
-       public Uint8Array as_legacy_pubkey() {
-               Uint8Array ret = bindings.ShutdownScript_as_legacy_pubkey(this.ptr);
-               return ret;
-       }
-
-       public boolean is_compatible(InitFeatures features) {
-               boolean ret = bindings.ShutdownScript_is_compatible(this.ptr, features == null ? 0 : features.ptr & ~1);
-               this.ptrs_to.add(features);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/Sign.ts b/ts/structs/Sign.ts
deleted file mode 100644 (file)
index 1d99ab3..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export class Sign extends CommonBase {
-
-                bindings_instance?: bindings.LDKSign;
-
-                constructor(ptr?: number, arg?: bindings.LDKSign, baseSign?: bindings.LDKBaseSign, pubkeys?: ChannelPublicKeys) {
-                    if (Number.isFinite(ptr)) {
-                                       super(ptr);
-                                       this.bindings_instance = null;
-                                   } else {
-                                       // TODO: private constructor instantiation
-                                       super(bindings.LDKSign_new(arg, baseSign, pubkeys == null ? 0 : pubkeys.clone_ptr()));
-                                       this.ptrs_to.push(arg);
-                                       this.ptrs_to.push(baseSign);
-
-                                   }
-                }
-
-                protected finalize() {
-                    if (this.ptr != 0) {
-                        bindings.Sign_free(this.ptr);
-                    }
-                    super.finalize();
-                }
-
-                static new_impl(arg: SignInterface, baseSign_impl: BaseSign.BaseSignInterface, pubkeys: ChannelPublicKeys): Sign {
-                    const impl_holder: LDKSignHolder = new LDKSignHolder();
-                    let structImplementation = <bindings.LDKSign>{
-                        // todo: in-line interface filling
-                        write (): Uint8Array {
-                                                       Uint8Array ret = arg.write();
-                               return ret;
-                                               },
-
-                                               
-                    };
-                    impl_holder.held = new Sign (null, structImplementation, BaseSign.new_impl(BaseSign_impl, pubkeys).bindings_instance, pubkeys);
-                }
-            }
-
-            export interface SignInterface {
-                write(): Uint8Array;
-                               
-            }
-
-            class LDKSignHolder {
-                held: Sign;
-            }
-       public Uint8Array write() {
-               Uint8Array ret = bindings.Sign_write(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.Sign_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Sign clone() {
-               number ret = bindings.Sign_clone(this.ptr);
-               Sign ret_hu_conv = new Sign(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/SignOrCreationError.ts b/ts/structs/SignOrCreationError.ts
deleted file mode 100644 (file)
index d2e1e36..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-export default class SignOrCreationError extends CommonBase {
-       protected constructor(_dummy: object, ptr: number) { super(ptr); }
-       protected finalize() {
-               super.finalize();
-               if (this.ptr != 0) { bindings.SignOrCreationError_free(this.ptr); }
-       }
-       static constr_from_ptr(ptr: number): SignOrCreationError {
-               const raw_val: bindings.LDKSignOrCreationError = bindings.LDKSignOrCreationError_ref_from_ptr(ptr);
-               if (raw_val instanceof bindings.LDKSignOrCreationError.SignError) {
-                       return new SignError(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKSignOrCreationError.CreationError) {
-                       return new CreationError(this.ptr, raw_val);
-               }
-               throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
-       }
-
-}
-export class SignError extends SignOrCreationError {
-       private constructor(ptr: number, obj: bindings.LDKSignOrCreationError.SignError) {
-               super(null, ptr);
-       }
-}
-export class CreationError extends SignOrCreationError {
-       public creation_error: CreationError;
-       private constructor(ptr: number, obj: bindings.LDKSignOrCreationError.CreationError) {
-               super(null, ptr);
-               this.creation_error = obj.creation_error;
-       }
-}
-       public number clone_ptr() {
-               number ret = bindings.SignOrCreationError_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public SignOrCreationError clone() {
-               number ret = bindings.SignOrCreationError_clone(this.ptr);
-               SignOrCreationError ret_hu_conv = SignOrCreationError.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static SignOrCreationError constructor_sign_error() {
-               number ret = bindings.SignOrCreationError_sign_error();
-               SignOrCreationError ret_hu_conv = SignOrCreationError.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static SignOrCreationError constructor_creation_error(CreationError a) {
-               number ret = bindings.SignOrCreationError_creation_error(a);
-               SignOrCreationError ret_hu_conv = SignOrCreationError.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public boolean eq(SignOrCreationError b) {
-               boolean ret = bindings.SignOrCreationError_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
-               return ret;
-       }
-
-       public String to_str() {
-               String ret = bindings.SignOrCreationError_to_str(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/SignedRawInvoice.ts b/ts/structs/SignedRawInvoice.ts
deleted file mode 100644 (file)
index 22f2b59..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class SignedRawInvoice extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.SignedRawInvoice_free(this.ptr);
-                    }
-                }
-       public boolean eq(SignedRawInvoice b) {
-               boolean ret = bindings.SignedRawInvoice_eq(this.ptr, b == null ? 0 : b.ptr & ~1);
-               this.ptrs_to.add(b);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.SignedRawInvoice_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public SignedRawInvoice clone() {
-               number ret = bindings.SignedRawInvoice_clone(this.ptr);
-               const ret_hu_conv: SignedRawInvoice = new SignedRawInvoice(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public ThreeTuple_RawInvoice_u832InvoiceSignatureZ into_parts() {
-               number ret = bindings.SignedRawInvoice_into_parts(this.ptr);
-               ThreeTuple_RawInvoice_u832InvoiceSignatureZ ret_hu_conv = new ThreeTuple_RawInvoice_u832InvoiceSignatureZ(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public RawInvoice raw_invoice() {
-               number ret = bindings.SignedRawInvoice_raw_invoice(this.ptr);
-               const ret_hu_conv: RawInvoice = new RawInvoice(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array hash() {
-               Uint8Array ret = bindings.SignedRawInvoice_hash(this.ptr);
-               return ret;
-       }
-
-       public InvoiceSignature signature() {
-               number ret = bindings.SignedRawInvoice_signature(this.ptr);
-               const ret_hu_conv: InvoiceSignature = new InvoiceSignature(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Result_PayeePubKeyErrorZ recover_payee_pub_key() {
-               number ret = bindings.SignedRawInvoice_recover_payee_pub_key(this.ptr);
-               Result_PayeePubKeyErrorZ ret_hu_conv = Result_PayeePubKeyErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public boolean check_signature() {
-               boolean ret = bindings.SignedRawInvoice_check_signature(this.ptr);
-               return ret;
-       }
-
-       public static Result_SignedRawInvoiceNoneZ constructor_from_str(String s) {
-               number ret = bindings.SignedRawInvoice_from_str(s);
-               Result_SignedRawInvoiceNoneZ ret_hu_conv = Result_SignedRawInvoiceNoneZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public String to_str() {
-               String ret = bindings.SignedRawInvoice_to_str(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/SocketDescriptor.ts b/ts/structs/SocketDescriptor.ts
deleted file mode 100644 (file)
index d943925..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export class SocketDescriptor extends CommonBase {
-
-                bindings_instance?: bindings.LDKSocketDescriptor;
-
-                constructor(ptr?: number, arg?: bindings.LDKSocketDescriptor) {
-                    if (Number.isFinite(ptr)) {
-                                       super(ptr);
-                                       this.bindings_instance = null;
-                                   } else {
-                                       // TODO: private constructor instantiation
-                                       super(bindings.LDKSocketDescriptor_new(arg));
-                                       this.ptrs_to.push(arg);
-                                       
-                                   }
-                }
-
-                protected finalize() {
-                    if (this.ptr != 0) {
-                        bindings.SocketDescriptor_free(this.ptr);
-                    }
-                    super.finalize();
-                }
-
-                static new_impl(arg: SocketDescriptorInterface): SocketDescriptor {
-                    const impl_holder: LDKSocketDescriptorHolder = new LDKSocketDescriptorHolder();
-                    let structImplementation = <bindings.LDKSocketDescriptor>{
-                        // todo: in-line interface filling
-                        send_data (data: Uint8Array, resume_read: boolean): number {
-                                                       number ret = arg.send_data(data, resume_read);
-                               return ret;
-                                               },
-
-                                               disconnect_socket (): void {
-                                                       arg.disconnect_socket();
-                                               },
-
-                                               eq (other_arg: number): boolean {
-                                                       SocketDescriptor ret_hu_conv = new SocketDescriptor(null, other_arg);
-                               ret_hu_conv.ptrs_to.add(this);
-                                                       boolean ret = arg.eq(ret_hu_conv);
-                               return ret;
-                                               },
-
-                                               hash (): number {
-                                                       number ret = arg.hash();
-                               return ret;
-                                               },
-
-                                               
-                    };
-                    impl_holder.held = new SocketDescriptor (null, structImplementation);
-                }
-            }
-
-            export interface SocketDescriptorInterface {
-                send_data(data: Uint8Array, resume_read: boolean): number;
-                               disconnect_socket(): void;
-                               eq(other_arg: SocketDescriptor): boolean;
-                               hash(): number;
-                               
-            }
-
-            class LDKSocketDescriptorHolder {
-                held: SocketDescriptor;
-            }
-       public number send_data(Uint8Array data, boolean resume_read) {
-               number ret = bindings.SocketDescriptor_send_data(this.ptr, data, resume_read);
-               return ret;
-       }
-
-       public void disconnect_socket() {
-               bindings.SocketDescriptor_disconnect_socket(this.ptr);
-       }
-
-       public number hash() {
-               number ret = bindings.SocketDescriptor_hash(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.SocketDescriptor_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public SocketDescriptor clone() {
-               number ret = bindings.SocketDescriptor_clone(this.ptr);
-               SocketDescriptor ret_hu_conv = new SocketDescriptor(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/SpendableOutputDescriptor.ts b/ts/structs/SpendableOutputDescriptor.ts
deleted file mode 100644 (file)
index f0758a2..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-export default class SpendableOutputDescriptor extends CommonBase {
-       protected constructor(_dummy: object, ptr: number) { super(ptr); }
-       protected finalize() {
-               super.finalize();
-               if (this.ptr != 0) { bindings.SpendableOutputDescriptor_free(this.ptr); }
-       }
-       static constr_from_ptr(ptr: number): SpendableOutputDescriptor {
-               const raw_val: bindings.LDKSpendableOutputDescriptor = bindings.LDKSpendableOutputDescriptor_ref_from_ptr(ptr);
-               if (raw_val instanceof bindings.LDKSpendableOutputDescriptor.StaticOutput) {
-                       return new StaticOutput(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKSpendableOutputDescriptor.DelayedPaymentOutput) {
-                       return new DelayedPaymentOutput(this.ptr, raw_val);
-               }
-               if (raw_val instanceof bindings.LDKSpendableOutputDescriptor.StaticPaymentOutput) {
-                       return new StaticPaymentOutput(this.ptr, raw_val);
-               }
-               throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
-       }
-
-}
-export class StaticOutput extends SpendableOutputDescriptor {
-       public outpoint: OutPoint;
-       public output: TxOut;
-       private constructor(ptr: number, obj: bindings.LDKSpendableOutputDescriptor.StaticOutput) {
-               super(null, ptr);
-               const outpoint: number = obj.outpoint;
-               const outpoint_hu_conv: OutPoint = new OutPoint(null, outpoint);
-                       outpoint_hu_conv.ptrs_to.add(this);
-               this.outpoint = outpoint_hu_conv;
-               const output: number = obj.output;
-               TxOut output_conv = new TxOut(null, output);
-               this.output = output_conv;
-       }
-}
-export class DelayedPaymentOutput extends SpendableOutputDescriptor {
-       public delayed_payment_output: DelayedPaymentOutputDescriptor;
-       private constructor(ptr: number, obj: bindings.LDKSpendableOutputDescriptor.DelayedPaymentOutput) {
-               super(null, ptr);
-               const delayed_payment_output: number = obj.delayed_payment_output;
-               const delayed_payment_output_hu_conv: DelayedPaymentOutputDescriptor = new DelayedPaymentOutputDescriptor(null, delayed_payment_output);
-                       delayed_payment_output_hu_conv.ptrs_to.add(this);
-               this.delayed_payment_output = delayed_payment_output_hu_conv;
-       }
-}
-export class StaticPaymentOutput extends SpendableOutputDescriptor {
-       public static_payment_output: StaticPaymentOutputDescriptor;
-       private constructor(ptr: number, obj: bindings.LDKSpendableOutputDescriptor.StaticPaymentOutput) {
-               super(null, ptr);
-               const static_payment_output: number = obj.static_payment_output;
-               const static_payment_output_hu_conv: StaticPaymentOutputDescriptor = new StaticPaymentOutputDescriptor(null, static_payment_output);
-                       static_payment_output_hu_conv.ptrs_to.add(this);
-               this.static_payment_output = static_payment_output_hu_conv;
-       }
-}
-       public number clone_ptr() {
-               number ret = bindings.SpendableOutputDescriptor_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public SpendableOutputDescriptor clone() {
-               number ret = bindings.SpendableOutputDescriptor_clone(this.ptr);
-               SpendableOutputDescriptor ret_hu_conv = SpendableOutputDescriptor.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static SpendableOutputDescriptor constructor_static_output(OutPoint outpoint, TxOut output) {
-               number ret = bindings.SpendableOutputDescriptor_static_output(outpoint == null ? 0 : outpoint.ptr & ~1, output.ptr);
-               SpendableOutputDescriptor ret_hu_conv = SpendableOutputDescriptor.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static SpendableOutputDescriptor constructor_delayed_payment_output(DelayedPaymentOutputDescriptor a) {
-               number ret = bindings.SpendableOutputDescriptor_delayed_payment_output(a == null ? 0 : a.ptr & ~1);
-               SpendableOutputDescriptor ret_hu_conv = SpendableOutputDescriptor.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public static SpendableOutputDescriptor constructor_static_payment_output(StaticPaymentOutputDescriptor a) {
-               number ret = bindings.SpendableOutputDescriptor_static_payment_output(a == null ? 0 : a.ptr & ~1);
-               SpendableOutputDescriptor ret_hu_conv = SpendableOutputDescriptor.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.SpendableOutputDescriptor_write(this.ptr);
-               return ret;
-       }
-
-       public static Result_SpendableOutputDescriptorDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.SpendableOutputDescriptor_read(ser);
-               Result_SpendableOutputDescriptorDecodeErrorZ ret_hu_conv = Result_SpendableOutputDescriptorDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/StaticPaymentOutputDescriptor.ts b/ts/structs/StaticPaymentOutputDescriptor.ts
deleted file mode 100644 (file)
index 9af18ea..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class StaticPaymentOutputDescriptor extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.StaticPaymentOutputDescriptor_free(this.ptr);
-                    }
-                }
-       public OutPoint get_outpoint() {
-               number ret = bindings.StaticPaymentOutputDescriptor_get_outpoint(this.ptr);
-               const ret_hu_conv: OutPoint = new OutPoint(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_outpoint(OutPoint val) {
-               bindings.StaticPaymentOutputDescriptor_set_outpoint(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public void set_output(TxOut val) {
-               bindings.StaticPaymentOutputDescriptor_set_output(this.ptr, val.ptr);
-       }
-
-       public Uint8Array get_channel_keys_id() {
-               Uint8Array ret = bindings.StaticPaymentOutputDescriptor_get_channel_keys_id(this.ptr);
-               return ret;
-       }
-
-       public void set_channel_keys_id(Uint8Array val) {
-               bindings.StaticPaymentOutputDescriptor_set_channel_keys_id(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public number get_channel_value_satoshis() {
-               number ret = bindings.StaticPaymentOutputDescriptor_get_channel_value_satoshis(this.ptr);
-               return ret;
-       }
-
-       public void set_channel_value_satoshis(number val) {
-               bindings.StaticPaymentOutputDescriptor_set_channel_value_satoshis(this.ptr, val);
-       }
-
-       public static StaticPaymentOutputDescriptor constructor_new(OutPoint outpoint_arg, TxOut output_arg, Uint8Array channel_keys_id_arg, number channel_value_satoshis_arg) {
-               number ret = bindings.StaticPaymentOutputDescriptor_new(outpoint_arg == null ? 0 : outpoint_arg.ptr & ~1, output_arg.ptr, InternalUtils.check_arr_len(channel_keys_id_arg, 32), channel_value_satoshis_arg);
-               const ret_hu_conv: StaticPaymentOutputDescriptor = new StaticPaymentOutputDescriptor(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.StaticPaymentOutputDescriptor_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public StaticPaymentOutputDescriptor clone() {
-               number ret = bindings.StaticPaymentOutputDescriptor_clone(this.ptr);
-               const ret_hu_conv: StaticPaymentOutputDescriptor = new StaticPaymentOutputDescriptor(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.StaticPaymentOutputDescriptor_write(this.ptr);
-               return ret;
-       }
-
-       public static Result_StaticPaymentOutputDescriptorDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.StaticPaymentOutputDescriptor_read(ser);
-               Result_StaticPaymentOutputDescriptorDecodeErrorZ ret_hu_conv = Result_StaticPaymentOutputDescriptorDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/ThreeTuple_ChannelAnnouncementChannelUpdateChannelUpdateZ.ts b/ts/structs/ThreeTuple_ChannelAnnouncementChannelUpdateChannelUpdateZ.ts
deleted file mode 100644 (file)
index 625b583..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(this.ptr);
-                    }
-                }
-       public ChannelAnnouncement get_a() {
-               number ret = bindings.C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(this.ptr);
-               const ret_hu_conv: ChannelAnnouncement = new ChannelAnnouncement(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public ChannelUpdate get_b() {
-               number ret = bindings.C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(this.ptr);
-               const ret_hu_conv: ChannelUpdate = new ChannelUpdate(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public ChannelUpdate get_c() {
-               number ret = bindings.C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(this.ptr);
-               const ret_hu_conv: ChannelUpdate = new ChannelUpdate(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public ThreeTuple_ChannelAnnouncementChannelUpdateChannelUpdateZ clone() {
-               number ret = bindings.C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(this.ptr);
-               ThreeTuple_ChannelAnnouncementChannelUpdateChannelUpdateZ ret_hu_conv = new ThreeTuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static ThreeTuple_ChannelAnnouncementChannelUpdateChannelUpdateZ constructor_new(ChannelAnnouncement a, ChannelUpdate b, ChannelUpdate c) {
-               number ret = bindings.C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(a == null ? 0 : a.ptr & ~1, b == null ? 0 : b.ptr & ~1, c == null ? 0 : c.ptr & ~1);
-               ThreeTuple_ChannelAnnouncementChannelUpdateChannelUpdateZ ret_hu_conv = new ThreeTuple_ChannelAnnouncementChannelUpdateChannelUpdateZ(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/ThreeTuple_RawInvoice_u832InvoiceSignatureZ.ts b/ts/structs/ThreeTuple_RawInvoice_u832InvoiceSignatureZ.ts
deleted file mode 100644 (file)
index e1a1564..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class C3Tuple_RawInvoice_u832InvoiceSignatureZ extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.C3Tuple_RawInvoice_u832InvoiceSignatureZ_free(this.ptr);
-                    }
-                }
-       public RawInvoice get_a() {
-               number ret = bindings.C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_a(this.ptr);
-               const ret_hu_conv: RawInvoice = new RawInvoice(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public Uint8Array get_b() {
-               Uint8Array ret = bindings.C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_b(this.ptr);
-               return ret;
-       }
-
-       public InvoiceSignature get_c() {
-               number ret = bindings.C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_c(this.ptr);
-               const ret_hu_conv: InvoiceSignature = new InvoiceSignature(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public ThreeTuple_RawInvoice_u832InvoiceSignatureZ clone() {
-               number ret = bindings.C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone(this.ptr);
-               ThreeTuple_RawInvoice_u832InvoiceSignatureZ ret_hu_conv = new ThreeTuple_RawInvoice_u832InvoiceSignatureZ(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static ThreeTuple_RawInvoice_u832InvoiceSignatureZ constructor_new(RawInvoice a, Uint8Array b, InvoiceSignature c) {
-               number ret = bindings.C3Tuple_RawInvoice_u832InvoiceSignatureZ_new(a == null ? 0 : a.ptr & ~1, InternalUtils.check_arr_len(b, 32), c == null ? 0 : c.ptr & ~1);
-               ThreeTuple_RawInvoice_u832InvoiceSignatureZ ret_hu_conv = new ThreeTuple_RawInvoice_u832InvoiceSignatureZ(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/TrustedClosingTransaction.ts b/ts/structs/TrustedClosingTransaction.ts
deleted file mode 100644 (file)
index a9aa05d..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class TrustedClosingTransaction extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.TrustedClosingTransaction_free(this.ptr);
-                    }
-                }
-       public Uint8Array built_transaction() {
-               Uint8Array ret = bindings.TrustedClosingTransaction_built_transaction(this.ptr);
-               return ret;
-       }
-
-       public Uint8Array get_sighash_all(Uint8Array funding_redeemscript, number channel_value_satoshis) {
-               Uint8Array ret = bindings.TrustedClosingTransaction_get_sighash_all(this.ptr, funding_redeemscript, channel_value_satoshis);
-               return ret;
-       }
-
-       public Uint8Array sign(Uint8Array funding_key, Uint8Array funding_redeemscript, number channel_value_satoshis) {
-               Uint8Array ret = bindings.TrustedClosingTransaction_sign(this.ptr, InternalUtils.check_arr_len(funding_key, 32), funding_redeemscript, channel_value_satoshis);
-               return ret;
-       }
-
-}
diff --git a/ts/structs/TrustedCommitmentTransaction.ts b/ts/structs/TrustedCommitmentTransaction.ts
deleted file mode 100644 (file)
index cb0c2bf..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class TrustedCommitmentTransaction extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.TrustedCommitmentTransaction_free(this.ptr);
-                    }
-                }
-       public Uint8Array txid() {
-               Uint8Array ret = bindings.TrustedCommitmentTransaction_txid(this.ptr);
-               return ret;
-       }
-
-       public BuiltCommitmentTransaction built_transaction() {
-               number ret = bindings.TrustedCommitmentTransaction_built_transaction(this.ptr);
-               const ret_hu_conv: BuiltCommitmentTransaction = new BuiltCommitmentTransaction(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public TxCreationKeys keys() {
-               number ret = bindings.TrustedCommitmentTransaction_keys(this.ptr);
-               const ret_hu_conv: TxCreationKeys = new TxCreationKeys(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public boolean opt_anchors() {
-               boolean ret = bindings.TrustedCommitmentTransaction_opt_anchors(this.ptr);
-               return ret;
-       }
-
-       public Result_CVec_SignatureZNoneZ get_htlc_sigs(Uint8Array htlc_base_key, DirectedChannelTransactionParameters channel_parameters) {
-               number ret = bindings.TrustedCommitmentTransaction_get_htlc_sigs(this.ptr, InternalUtils.check_arr_len(htlc_base_key, 32), channel_parameters == null ? 0 : channel_parameters.ptr & ~1);
-               Result_CVec_SignatureZNoneZ ret_hu_conv = Result_CVec_SignatureZNoneZ.constr_from_ptr(ret);
-               this.ptrs_to.add(channel_parameters);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/TwoTuple_BlockHashChannelManagerZ.ts b/ts/structs/TwoTuple_BlockHashChannelManagerZ.ts
deleted file mode 100644 (file)
index d6c17cf..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class C2Tuple_BlockHashChannelManagerZ extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.C2Tuple_BlockHashChannelManagerZ_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_a() {
-               Uint8Array ret = bindings.C2Tuple_BlockHashChannelManagerZ_get_a(this.ptr);
-               return ret;
-       }
-
-       public ChannelManager get_b() {
-               number ret = bindings.C2Tuple_BlockHashChannelManagerZ_get_b(this.ptr);
-               const ret_hu_conv: ChannelManager = new ChannelManager(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static TwoTuple_BlockHashChannelManagerZ constructor_new(Uint8Array a, FeeEstimator b_fee_est, Watch b_chain_monitor, BroadcasterInterface b_tx_broadcaster, Logger b_logger, KeysInterface b_keys_manager, UserConfig b_config, ChainParameters b_params) {
-               number ret = bindings.C2Tuple_BlockHashChannelManagerZ_new(InternalUtils.check_arr_len(a, 32), bindings.ChannelManager_new(b_fee_est == null ? 0 : b_fee_est.ptr, b_chain_monitor == null ? 0 : b_chain_monitor.ptr, b_tx_broadcaster == null ? 0 : b_tx_broadcaster.ptr, b_logger == null ? 0 : b_logger.ptr, b_keys_manager == null ? 0 : b_keys_manager.ptr, b_config == null ? 0 : b_config.ptr & ~1, b_params == null ? 0 : b_params.ptr & ~1));
-               TwoTuple_BlockHashChannelManagerZ ret_hu_conv = new TwoTuple_BlockHashChannelManagerZ(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               ret_hu_conv.ptrs_to.add(b_fee_est);
-               ret_hu_conv.ptrs_to.add(b_chain_monitor);
-               ret_hu_conv.ptrs_to.add(b_tx_broadcaster);
-               ret_hu_conv.ptrs_to.add(b_logger);
-               ret_hu_conv.ptrs_to.add(b_keys_manager);
-               ;
-               ;
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/TwoTuple_BlockHashChannelMonitorZ.ts b/ts/structs/TwoTuple_BlockHashChannelMonitorZ.ts
deleted file mode 100644 (file)
index e2efd8a..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class C2Tuple_BlockHashChannelMonitorZ extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.C2Tuple_BlockHashChannelMonitorZ_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_a() {
-               Uint8Array ret = bindings.C2Tuple_BlockHashChannelMonitorZ_get_a(this.ptr);
-               return ret;
-       }
-
-       public ChannelMonitor get_b() {
-               number ret = bindings.C2Tuple_BlockHashChannelMonitorZ_get_b(this.ptr);
-               const ret_hu_conv: ChannelMonitor = new ChannelMonitor(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.C2Tuple_BlockHashChannelMonitorZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public TwoTuple_BlockHashChannelMonitorZ clone() {
-               number ret = bindings.C2Tuple_BlockHashChannelMonitorZ_clone(this.ptr);
-               TwoTuple_BlockHashChannelMonitorZ ret_hu_conv = new TwoTuple_BlockHashChannelMonitorZ(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static TwoTuple_BlockHashChannelMonitorZ constructor_new(Uint8Array a, ChannelMonitor b) {
-               number ret = bindings.C2Tuple_BlockHashChannelMonitorZ_new(InternalUtils.check_arr_len(a, 32), b == null ? 0 : b.ptr & ~1);
-               TwoTuple_BlockHashChannelMonitorZ ret_hu_conv = new TwoTuple_BlockHashChannelMonitorZ(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/TwoTuple_OutPointScriptZ.ts b/ts/structs/TwoTuple_OutPointScriptZ.ts
deleted file mode 100644 (file)
index 0a9dd35..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class C2Tuple_OutPointScriptZ extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.C2Tuple_OutPointScriptZ_free(this.ptr);
-                    }
-                }
-       public OutPoint get_a() {
-               number ret = bindings.C2Tuple_OutPointScriptZ_get_a(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_b() {
-               Uint8Array ret = bindings.C2Tuple_OutPointScriptZ_get_b(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.C2Tuple_OutPointScriptZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public TwoTuple_OutPointScriptZ clone() {
-               number ret = bindings.C2Tuple_OutPointScriptZ_clone(this.ptr);
-               TwoTuple_OutPointScriptZ ret_hu_conv = new TwoTuple_OutPointScriptZ(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static TwoTuple_OutPointScriptZ constructor_new(OutPoint a, Uint8Array b) {
-               number ret = bindings.C2Tuple_OutPointScriptZ_new(a == null ? 0 : a.ptr & ~1, b);
-               TwoTuple_OutPointScriptZ ret_hu_conv = new TwoTuple_OutPointScriptZ(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/TwoTuple_PaymentHashPaymentIdZ.ts b/ts/structs/TwoTuple_PaymentHashPaymentIdZ.ts
deleted file mode 100644 (file)
index 645ca60..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class C2Tuple_PaymentHashPaymentIdZ extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.C2Tuple_PaymentHashPaymentIdZ_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_a() {
-               Uint8Array ret = bindings.C2Tuple_PaymentHashPaymentIdZ_get_a(this.ptr);
-               return ret;
-       }
-
-       public Uint8Array get_b() {
-               Uint8Array ret = bindings.C2Tuple_PaymentHashPaymentIdZ_get_b(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.C2Tuple_PaymentHashPaymentIdZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public TwoTuple_PaymentHashPaymentIdZ clone() {
-               number ret = bindings.C2Tuple_PaymentHashPaymentIdZ_clone(this.ptr);
-               TwoTuple_PaymentHashPaymentIdZ ret_hu_conv = new TwoTuple_PaymentHashPaymentIdZ(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static TwoTuple_PaymentHashPaymentIdZ constructor_new(Uint8Array a, Uint8Array b) {
-               number ret = bindings.C2Tuple_PaymentHashPaymentIdZ_new(InternalUtils.check_arr_len(a, 32), InternalUtils.check_arr_len(b, 32));
-               TwoTuple_PaymentHashPaymentIdZ ret_hu_conv = new TwoTuple_PaymentHashPaymentIdZ(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/TwoTuple_PaymentHashPaymentSecretZ.ts b/ts/structs/TwoTuple_PaymentHashPaymentSecretZ.ts
deleted file mode 100644 (file)
index d040120..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class C2Tuple_PaymentHashPaymentSecretZ extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.C2Tuple_PaymentHashPaymentSecretZ_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_a() {
-               Uint8Array ret = bindings.C2Tuple_PaymentHashPaymentSecretZ_get_a(this.ptr);
-               return ret;
-       }
-
-       public Uint8Array get_b() {
-               Uint8Array ret = bindings.C2Tuple_PaymentHashPaymentSecretZ_get_b(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.C2Tuple_PaymentHashPaymentSecretZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public TwoTuple_PaymentHashPaymentSecretZ clone() {
-               number ret = bindings.C2Tuple_PaymentHashPaymentSecretZ_clone(this.ptr);
-               TwoTuple_PaymentHashPaymentSecretZ ret_hu_conv = new TwoTuple_PaymentHashPaymentSecretZ(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static TwoTuple_PaymentHashPaymentSecretZ constructor_new(Uint8Array a, Uint8Array b) {
-               number ret = bindings.C2Tuple_PaymentHashPaymentSecretZ_new(InternalUtils.check_arr_len(a, 32), InternalUtils.check_arr_len(b, 32));
-               TwoTuple_PaymentHashPaymentSecretZ ret_hu_conv = new TwoTuple_PaymentHashPaymentSecretZ(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/TwoTuple_PublicKeyTypeZ.ts b/ts/structs/TwoTuple_PublicKeyTypeZ.ts
deleted file mode 100644 (file)
index c7c1267..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class C2Tuple_PublicKeyTypeZ extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.C2Tuple_PublicKeyTypeZ_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_a() {
-               Uint8Array ret = bindings.C2Tuple_PublicKeyTypeZ_get_a(this.ptr);
-               return ret;
-       }
-
-       public Type get_b() {
-               number ret = bindings.C2Tuple_PublicKeyTypeZ_get_b(this.ptr);
-               Type ret_hu_conv = new Type(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.C2Tuple_PublicKeyTypeZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public TwoTuple_PublicKeyTypeZ clone() {
-               number ret = bindings.C2Tuple_PublicKeyTypeZ_clone(this.ptr);
-               TwoTuple_PublicKeyTypeZ ret_hu_conv = new TwoTuple_PublicKeyTypeZ(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static TwoTuple_PublicKeyTypeZ constructor_new(Uint8Array a, Type b) {
-               number ret = bindings.C2Tuple_PublicKeyTypeZ_new(InternalUtils.check_arr_len(a, 33), b == null ? 0 : b.ptr);
-               TwoTuple_PublicKeyTypeZ ret_hu_conv = new TwoTuple_PublicKeyTypeZ(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               ret_hu_conv.ptrs_to.add(b);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/TwoTuple_SignatureCVec_SignatureZZ.ts b/ts/structs/TwoTuple_SignatureCVec_SignatureZZ.ts
deleted file mode 100644 (file)
index ff23dea..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class C2Tuple_SignatureCVec_SignatureZZ extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.C2Tuple_SignatureCVec_SignatureZZ_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_a() {
-               Uint8Array ret = bindings.C2Tuple_SignatureCVec_SignatureZZ_get_a(this.ptr);
-               return ret;
-       }
-
-       public Uint8Array[] get_b() {
-               Uint8Array[] ret = bindings.C2Tuple_SignatureCVec_SignatureZZ_get_b(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.C2Tuple_SignatureCVec_SignatureZZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public TwoTuple_SignatureCVec_SignatureZZ clone() {
-               number ret = bindings.C2Tuple_SignatureCVec_SignatureZZ_clone(this.ptr);
-               TwoTuple_SignatureCVec_SignatureZZ ret_hu_conv = new TwoTuple_SignatureCVec_SignatureZZ(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static TwoTuple_SignatureCVec_SignatureZZ constructor_new(Uint8Array a, Uint8Array[] b) {
-               number ret = bindings.C2Tuple_SignatureCVec_SignatureZZ_new(InternalUtils.check_arr_len(a, 64), b != null ? Arrays.stream(b).map(b_conv_12 -> InternalUtils.check_arr_len(b_conv_12, 64)).toArray(Uint8Array[]::new) : null);
-               TwoTuple_SignatureCVec_SignatureZZ ret_hu_conv = new TwoTuple_SignatureCVec_SignatureZZ(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/TwoTuple_TxidCVec_C2Tuple_u32ScriptZZZ.ts b/ts/structs/TwoTuple_TxidCVec_C2Tuple_u32ScriptZZZ.ts
deleted file mode 100644 (file)
index 28911f4..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_a() {
-               Uint8Array ret = bindings.C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_a(this.ptr);
-               return ret;
-       }
-
-       public TwoTuple_u32ScriptZ[] get_b() {
-               number[] ret = bindings.C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_b(this.ptr);
-               TwoTuple_u32ScriptZ[] ret_conv_21_arr = new TwoTuple_u32ScriptZ[ret.length];
-               for (int v = 0; v < ret.length; v++) {
-                       number ret_conv_21 = ret[v];
-                       TwoTuple_u32ScriptZ ret_conv_21_hu_conv = new TwoTuple_u32ScriptZ(null, ret_conv_21);
-                       ret_conv_21_hu_conv.ptrs_to.add(this);
-                       ret_conv_21_arr[v] = ret_conv_21_hu_conv;
-               }
-               return ret_conv_21_arr;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public TwoTuple_TxidCVec_C2Tuple_u32ScriptZZZ clone() {
-               number ret = bindings.C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone(this.ptr);
-               TwoTuple_TxidCVec_C2Tuple_u32ScriptZZZ ret_hu_conv = new TwoTuple_TxidCVec_C2Tuple_u32ScriptZZZ(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static TwoTuple_TxidCVec_C2Tuple_u32ScriptZZZ constructor_new(Uint8Array a, TwoTuple_u32ScriptZ[] b) {
-               number ret = bindings.C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_new(InternalUtils.check_arr_len(a, 32), b != null ? Arrays.stream(b).map(b_conv_21 -> b_conv_21 != null ? b_conv_21.ptr : 0).toArray(number[]::new) : null);
-               TwoTuple_TxidCVec_C2Tuple_u32ScriptZZZ ret_hu_conv = new TwoTuple_TxidCVec_C2Tuple_u32ScriptZZZ(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ.ts b/ts/structs/TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ.ts
deleted file mode 100644 (file)
index a18ddfe..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_a() {
-               Uint8Array ret = bindings.C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_a(this.ptr);
-               return ret;
-       }
-
-       public TwoTuple_u32TxOutZ[] get_b() {
-               number[] ret = bindings.C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_b(this.ptr);
-               TwoTuple_u32TxOutZ[] ret_conv_20_arr = new TwoTuple_u32TxOutZ[ret.length];
-               for (int u = 0; u < ret.length; u++) {
-                       number ret_conv_20 = ret[u];
-                       TwoTuple_u32TxOutZ ret_conv_20_hu_conv = new TwoTuple_u32TxOutZ(null, ret_conv_20);
-                       ret_conv_20_hu_conv.ptrs_to.add(this);
-                       ret_conv_20_arr[u] = ret_conv_20_hu_conv;
-               }
-               return ret_conv_20_arr;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ clone() {
-               number ret = bindings.C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone(this.ptr);
-               TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ ret_hu_conv = new TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ constructor_new(Uint8Array a, TwoTuple_u32TxOutZ[] b) {
-               number ret = bindings.C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new(InternalUtils.check_arr_len(a, 32), b != null ? Arrays.stream(b).map(b_conv_20 -> b_conv_20 != null ? b_conv_20.ptr : 0).toArray(number[]::new) : null);
-               TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ ret_hu_conv = new TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/TwoTuple_u32ScriptZ.ts b/ts/structs/TwoTuple_u32ScriptZ.ts
deleted file mode 100644 (file)
index 3f10e6b..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class C2Tuple_u32ScriptZ extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.C2Tuple_u32ScriptZ_free(this.ptr);
-                    }
-                }
-       public number get_a() {
-               number ret = bindings.C2Tuple_u32ScriptZ_get_a(this.ptr);
-               return ret;
-       }
-
-       public Uint8Array get_b() {
-               Uint8Array ret = bindings.C2Tuple_u32ScriptZ_get_b(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.C2Tuple_u32ScriptZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public TwoTuple_u32ScriptZ clone() {
-               number ret = bindings.C2Tuple_u32ScriptZ_clone(this.ptr);
-               TwoTuple_u32ScriptZ ret_hu_conv = new TwoTuple_u32ScriptZ(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static TwoTuple_u32ScriptZ constructor_new(number a, Uint8Array b) {
-               number ret = bindings.C2Tuple_u32ScriptZ_new(a, b);
-               TwoTuple_u32ScriptZ ret_hu_conv = new TwoTuple_u32ScriptZ(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/TwoTuple_u32TxOutZ.ts b/ts/structs/TwoTuple_u32TxOutZ.ts
deleted file mode 100644 (file)
index 5792777..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class C2Tuple_u32TxOutZ extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.C2Tuple_u32TxOutZ_free(this.ptr);
-                    }
-                }
-       public number get_a() {
-               number ret = bindings.C2Tuple_u32TxOutZ_get_a(this.ptr);
-               return ret;
-       }
-
-       public TxOut get_b() {
-               number ret = bindings.C2Tuple_u32TxOutZ_get_b(this.ptr);
-               TxOut ret_conv = new TxOut(null, ret);
-               return ret_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.C2Tuple_u32TxOutZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public TwoTuple_u32TxOutZ clone() {
-               number ret = bindings.C2Tuple_u32TxOutZ_clone(this.ptr);
-               TwoTuple_u32TxOutZ ret_hu_conv = new TwoTuple_u32TxOutZ(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static TwoTuple_u32TxOutZ constructor_new(number a, TxOut b) {
-               number ret = bindings.C2Tuple_u32TxOutZ_new(a, b.ptr);
-               TwoTuple_u32TxOutZ ret_hu_conv = new TwoTuple_u32TxOutZ(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/TwoTuple_usizeTransactionZ.ts b/ts/structs/TwoTuple_usizeTransactionZ.ts
deleted file mode 100644 (file)
index c150b0a..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class C2Tuple_usizeTransactionZ extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.C2Tuple_usizeTransactionZ_free(this.ptr);
-                    }
-                }
-       public number get_a() {
-               number ret = bindings.C2Tuple_usizeTransactionZ_get_a(this.ptr);
-               return ret;
-       }
-
-       public Uint8Array get_b() {
-               Uint8Array ret = bindings.C2Tuple_usizeTransactionZ_get_b(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.C2Tuple_usizeTransactionZ_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public TwoTuple_usizeTransactionZ clone() {
-               number ret = bindings.C2Tuple_usizeTransactionZ_clone(this.ptr);
-               TwoTuple_usizeTransactionZ ret_hu_conv = new TwoTuple_usizeTransactionZ(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public static TwoTuple_usizeTransactionZ constructor_new(number a, Uint8Array b) {
-               number ret = bindings.C2Tuple_usizeTransactionZ_new(a, b);
-               TwoTuple_usizeTransactionZ ret_hu_conv = new TwoTuple_usizeTransactionZ(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/TxCreationKeys.ts b/ts/structs/TxCreationKeys.ts
deleted file mode 100644 (file)
index 7cdad7a..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class TxCreationKeys extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.TxCreationKeys_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_per_commitment_point() {
-               Uint8Array ret = bindings.TxCreationKeys_get_per_commitment_point(this.ptr);
-               return ret;
-       }
-
-       public void set_per_commitment_point(Uint8Array val) {
-               bindings.TxCreationKeys_set_per_commitment_point(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public Uint8Array get_revocation_key() {
-               Uint8Array ret = bindings.TxCreationKeys_get_revocation_key(this.ptr);
-               return ret;
-       }
-
-       public void set_revocation_key(Uint8Array val) {
-               bindings.TxCreationKeys_set_revocation_key(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public Uint8Array get_broadcaster_htlc_key() {
-               Uint8Array ret = bindings.TxCreationKeys_get_broadcaster_htlc_key(this.ptr);
-               return ret;
-       }
-
-       public void set_broadcaster_htlc_key(Uint8Array val) {
-               bindings.TxCreationKeys_set_broadcaster_htlc_key(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public Uint8Array get_countersignatory_htlc_key() {
-               Uint8Array ret = bindings.TxCreationKeys_get_countersignatory_htlc_key(this.ptr);
-               return ret;
-       }
-
-       public void set_countersignatory_htlc_key(Uint8Array val) {
-               bindings.TxCreationKeys_set_countersignatory_htlc_key(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public Uint8Array get_broadcaster_delayed_payment_key() {
-               Uint8Array ret = bindings.TxCreationKeys_get_broadcaster_delayed_payment_key(this.ptr);
-               return ret;
-       }
-
-       public void set_broadcaster_delayed_payment_key(Uint8Array val) {
-               bindings.TxCreationKeys_set_broadcaster_delayed_payment_key(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public static TxCreationKeys constructor_new(Uint8Array per_commitment_point_arg, Uint8Array revocation_key_arg, Uint8Array broadcaster_htlc_key_arg, Uint8Array countersignatory_htlc_key_arg, Uint8Array broadcaster_delayed_payment_key_arg) {
-               number ret = bindings.TxCreationKeys_new(InternalUtils.check_arr_len(per_commitment_point_arg, 33), InternalUtils.check_arr_len(revocation_key_arg, 33), InternalUtils.check_arr_len(broadcaster_htlc_key_arg, 33), InternalUtils.check_arr_len(countersignatory_htlc_key_arg, 33), InternalUtils.check_arr_len(broadcaster_delayed_payment_key_arg, 33));
-               const ret_hu_conv: TxCreationKeys = new TxCreationKeys(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.TxCreationKeys_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 Result_TxCreationKeysDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.TxCreationKeys_read(ser);
-               Result_TxCreationKeysDecodeErrorZ ret_hu_conv = Result_TxCreationKeysDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       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(InternalUtils.check_arr_len(per_commitment_point, 33), InternalUtils.check_arr_len(broadcaster_delayed_payment_base, 33), InternalUtils.check_arr_len(broadcaster_htlc_base, 33), InternalUtils.check_arr_len(countersignatory_revocation_base, 33), InternalUtils.check_arr_len(countersignatory_htlc_base, 33));
-               Result_TxCreationKeysErrorZ ret_hu_conv = Result_TxCreationKeysErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       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(InternalUtils.check_arr_len(per_commitment_point, 33), broadcaster_keys == null ? 0 : broadcaster_keys.ptr & ~1, countersignatory_keys == null ? 0 : countersignatory_keys.ptr & ~1);
-               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/TxOut.ts b/ts/structs/TxOut.ts
deleted file mode 100644 (file)
index 09969ad..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-public class TxOut extends CommonBase{
-       /** The script_pubkey in this output */
-       public final byte[] script_pubkey;
-       /** The value, in satoshis, of this output */
-       public final long value;
-
-       TxOut(java.lang.Object _dummy, long ptr) {
-               super(ptr);
-               this.script_pubkey = bindings.TxOut_get_script_pubkey(ptr);
-               this.value = bindings.TxOut_get_value(ptr);
-       }
-       public TxOut(long value, byte[] script_pubkey) {
-               super(bindings.TxOut_new(script_pubkey, value));
-               this.script_pubkey = bindings.TxOut_get_script_pubkey(ptr);
-               this.value = bindings.TxOut_get_value(ptr);
-       }
-
-       @Override @SuppressWarnings("deprecation")
-       protected void finalize() throws Throwable {
-               super.finalize();
-               if (ptr != 0) { bindings.TxOut_free(ptr); }
-       }
-
-}
\ No newline at end of file
diff --git a/ts/structs/Type.ts b/ts/structs/Type.ts
deleted file mode 100644 (file)
index fda6128..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export class Type extends CommonBase {
-
-                bindings_instance?: bindings.LDKType;
-
-                constructor(ptr?: number, arg?: bindings.LDKType) {
-                    if (Number.isFinite(ptr)) {
-                                       super(ptr);
-                                       this.bindings_instance = null;
-                                   } else {
-                                       // TODO: private constructor instantiation
-                                       super(bindings.LDKType_new(arg));
-                                       this.ptrs_to.push(arg);
-                                       
-                                   }
-                }
-
-                protected finalize() {
-                    if (this.ptr != 0) {
-                        bindings.Type_free(this.ptr);
-                    }
-                    super.finalize();
-                }
-
-                static new_impl(arg: TypeInterface): Type {
-                    const impl_holder: LDKTypeHolder = new LDKTypeHolder();
-                    let structImplementation = <bindings.LDKType>{
-                        // todo: in-line interface filling
-                        type_id (): number {
-                                                       number ret = arg.type_id();
-                               return ret;
-                                               },
-
-                                               debug_str (): String {
-                                                       String ret = arg.debug_str();
-                               return ret;
-                                               },
-
-                                               write (): Uint8Array {
-                                                       Uint8Array ret = arg.write();
-                               return ret;
-                                               },
-
-                                               
-                    };
-                    impl_holder.held = new Type (null, structImplementation);
-                }
-            }
-
-            export interface TypeInterface {
-                type_id(): number;
-                               debug_str(): String;
-                               write(): Uint8Array;
-                               
-            }
-
-            class LDKTypeHolder {
-                held: Type;
-            }
-       public number type_id() {
-               number ret = bindings.Type_type_id(this.ptr);
-               return ret;
-       }
-
-       public String debug_str() {
-               String ret = bindings.Type_debug_str(this.ptr);
-               return ret;
-       }
-
-       public Uint8Array write() {
-               Uint8Array ret = bindings.Type_write(this.ptr);
-               return ret;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.Type_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public Type clone() {
-               number ret = bindings.Type_clone(this.ptr);
-               Type ret_hu_conv = new Type(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/UnsignedChannelAnnouncement.ts b/ts/structs/UnsignedChannelAnnouncement.ts
deleted file mode 100644 (file)
index 0898195..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class UnsignedChannelAnnouncement extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.UnsignedChannelAnnouncement_free(this.ptr);
-                    }
-                }
-       public ChannelFeatures get_features() {
-               number ret = bindings.UnsignedChannelAnnouncement_get_features(this.ptr);
-               const ret_hu_conv: ChannelFeatures = new ChannelFeatures(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_features(ChannelFeatures val) {
-               bindings.UnsignedChannelAnnouncement_set_features(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public Uint8Array get_chain_hash() {
-               Uint8Array ret = bindings.UnsignedChannelAnnouncement_get_chain_hash(this.ptr);
-               return ret;
-       }
-
-       public void set_chain_hash(Uint8Array val) {
-               bindings.UnsignedChannelAnnouncement_set_chain_hash(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public number get_short_channel_id() {
-               number ret = bindings.UnsignedChannelAnnouncement_get_short_channel_id(this.ptr);
-               return ret;
-       }
-
-       public void set_short_channel_id(number val) {
-               bindings.UnsignedChannelAnnouncement_set_short_channel_id(this.ptr, val);
-       }
-
-       public Uint8Array get_node_id_1() {
-               Uint8Array ret = bindings.UnsignedChannelAnnouncement_get_node_id_1(this.ptr);
-               return ret;
-       }
-
-       public void set_node_id_1(Uint8Array val) {
-               bindings.UnsignedChannelAnnouncement_set_node_id_1(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public Uint8Array get_node_id_2() {
-               Uint8Array ret = bindings.UnsignedChannelAnnouncement_get_node_id_2(this.ptr);
-               return ret;
-       }
-
-       public void set_node_id_2(Uint8Array val) {
-               bindings.UnsignedChannelAnnouncement_set_node_id_2(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public Uint8Array get_bitcoin_key_1() {
-               Uint8Array ret = bindings.UnsignedChannelAnnouncement_get_bitcoin_key_1(this.ptr);
-               return ret;
-       }
-
-       public void set_bitcoin_key_1(Uint8Array val) {
-               bindings.UnsignedChannelAnnouncement_set_bitcoin_key_1(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public Uint8Array get_bitcoin_key_2() {
-               Uint8Array ret = bindings.UnsignedChannelAnnouncement_get_bitcoin_key_2(this.ptr);
-               return ret;
-       }
-
-       public void set_bitcoin_key_2(Uint8Array val) {
-               bindings.UnsignedChannelAnnouncement_set_bitcoin_key_2(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.UnsignedChannelAnnouncement_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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;
-       }
-
-       public static Result_UnsignedChannelAnnouncementDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.UnsignedChannelAnnouncement_read(ser);
-               Result_UnsignedChannelAnnouncementDecodeErrorZ ret_hu_conv = Result_UnsignedChannelAnnouncementDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/UnsignedChannelUpdate.ts b/ts/structs/UnsignedChannelUpdate.ts
deleted file mode 100644 (file)
index c509f73..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class UnsignedChannelUpdate extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.UnsignedChannelUpdate_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_chain_hash() {
-               Uint8Array ret = bindings.UnsignedChannelUpdate_get_chain_hash(this.ptr);
-               return ret;
-       }
-
-       public void set_chain_hash(Uint8Array val) {
-               bindings.UnsignedChannelUpdate_set_chain_hash(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public number get_short_channel_id() {
-               number ret = bindings.UnsignedChannelUpdate_get_short_channel_id(this.ptr);
-               return ret;
-       }
-
-       public void set_short_channel_id(number val) {
-               bindings.UnsignedChannelUpdate_set_short_channel_id(this.ptr, val);
-       }
-
-       public number get_timestamp() {
-               number ret = bindings.UnsignedChannelUpdate_get_timestamp(this.ptr);
-               return ret;
-       }
-
-       public void set_timestamp(number val) {
-               bindings.UnsignedChannelUpdate_set_timestamp(this.ptr, val);
-       }
-
-       public number get_flags() {
-               number ret = bindings.UnsignedChannelUpdate_get_flags(this.ptr);
-               return ret;
-       }
-
-       public void set_flags(number val) {
-               bindings.UnsignedChannelUpdate_set_flags(this.ptr, val);
-       }
-
-       public number get_cltv_expiry_delta() {
-               number ret = bindings.UnsignedChannelUpdate_get_cltv_expiry_delta(this.ptr);
-               return ret;
-       }
-
-       public void set_cltv_expiry_delta(number val) {
-               bindings.UnsignedChannelUpdate_set_cltv_expiry_delta(this.ptr, val);
-       }
-
-       public number get_htlc_minimum_msat() {
-               number ret = bindings.UnsignedChannelUpdate_get_htlc_minimum_msat(this.ptr);
-               return ret;
-       }
-
-       public void set_htlc_minimum_msat(number val) {
-               bindings.UnsignedChannelUpdate_set_htlc_minimum_msat(this.ptr, val);
-       }
-
-       public number get_fee_base_msat() {
-               number ret = bindings.UnsignedChannelUpdate_get_fee_base_msat(this.ptr);
-               return ret;
-       }
-
-       public void set_fee_base_msat(number val) {
-               bindings.UnsignedChannelUpdate_set_fee_base_msat(this.ptr, val);
-       }
-
-       public number get_fee_proportional_millionths() {
-               number ret = bindings.UnsignedChannelUpdate_get_fee_proportional_millionths(this.ptr);
-               return ret;
-       }
-
-       public void set_fee_proportional_millionths(number val) {
-               bindings.UnsignedChannelUpdate_set_fee_proportional_millionths(this.ptr, val);
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.UnsignedChannelUpdate_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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;
-       }
-
-       public static Result_UnsignedChannelUpdateDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.UnsignedChannelUpdate_read(ser);
-               Result_UnsignedChannelUpdateDecodeErrorZ ret_hu_conv = Result_UnsignedChannelUpdateDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/UnsignedNodeAnnouncement.ts b/ts/structs/UnsignedNodeAnnouncement.ts
deleted file mode 100644 (file)
index dce9672..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class UnsignedNodeAnnouncement extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.UnsignedNodeAnnouncement_free(this.ptr);
-                    }
-                }
-       public NodeFeatures get_features() {
-               number ret = bindings.UnsignedNodeAnnouncement_get_features(this.ptr);
-               const ret_hu_conv: NodeFeatures = new NodeFeatures(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_features(NodeFeatures val) {
-               bindings.UnsignedNodeAnnouncement_set_features(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public number get_timestamp() {
-               number ret = bindings.UnsignedNodeAnnouncement_get_timestamp(this.ptr);
-               return ret;
-       }
-
-       public void set_timestamp(number val) {
-               bindings.UnsignedNodeAnnouncement_set_timestamp(this.ptr, val);
-       }
-
-       public Uint8Array get_node_id() {
-               Uint8Array ret = bindings.UnsignedNodeAnnouncement_get_node_id(this.ptr);
-               return ret;
-       }
-
-       public void set_node_id(Uint8Array val) {
-               bindings.UnsignedNodeAnnouncement_set_node_id(this.ptr, InternalUtils.check_arr_len(val, 33));
-       }
-
-       public Uint8Array get_rgb() {
-               Uint8Array ret = bindings.UnsignedNodeAnnouncement_get_rgb(this.ptr);
-               return ret;
-       }
-
-       public void set_rgb(Uint8Array val) {
-               bindings.UnsignedNodeAnnouncement_set_rgb(this.ptr, InternalUtils.check_arr_len(val, 3));
-       }
-
-       public Uint8Array get_alias() {
-               Uint8Array ret = bindings.UnsignedNodeAnnouncement_get_alias(this.ptr);
-               return ret;
-       }
-
-       public void set_alias(Uint8Array val) {
-               bindings.UnsignedNodeAnnouncement_set_alias(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public void set_addresses(NetAddress[] val) {
-               bindings.UnsignedNodeAnnouncement_set_addresses(this.ptr, val != null ? Arrays.stream(val).map(val_conv_12 -> val_conv_12.ptr).toArray(number[]::new) : null);
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.UnsignedNodeAnnouncement_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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;
-       }
-
-       public static Result_UnsignedNodeAnnouncementDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.UnsignedNodeAnnouncement_read(ser);
-               Result_UnsignedNodeAnnouncementDecodeErrorZ ret_hu_conv = Result_UnsignedNodeAnnouncementDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/UpdateAddHTLC.ts b/ts/structs/UpdateAddHTLC.ts
deleted file mode 100644 (file)
index 5622a5d..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class UpdateAddHTLC extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.UpdateAddHTLC_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_channel_id() {
-               Uint8Array ret = bindings.UpdateAddHTLC_get_channel_id(this.ptr);
-               return ret;
-       }
-
-       public void set_channel_id(Uint8Array val) {
-               bindings.UpdateAddHTLC_set_channel_id(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public number get_htlc_id() {
-               number ret = bindings.UpdateAddHTLC_get_htlc_id(this.ptr);
-               return ret;
-       }
-
-       public void set_htlc_id(number val) {
-               bindings.UpdateAddHTLC_set_htlc_id(this.ptr, val);
-       }
-
-       public number get_amount_msat() {
-               number ret = bindings.UpdateAddHTLC_get_amount_msat(this.ptr);
-               return ret;
-       }
-
-       public void set_amount_msat(number val) {
-               bindings.UpdateAddHTLC_set_amount_msat(this.ptr, val);
-       }
-
-       public Uint8Array get_payment_hash() {
-               Uint8Array ret = bindings.UpdateAddHTLC_get_payment_hash(this.ptr);
-               return ret;
-       }
-
-       public void set_payment_hash(Uint8Array val) {
-               bindings.UpdateAddHTLC_set_payment_hash(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public number get_cltv_expiry() {
-               number ret = bindings.UpdateAddHTLC_get_cltv_expiry(this.ptr);
-               return ret;
-       }
-
-       public void set_cltv_expiry(number val) {
-               bindings.UpdateAddHTLC_set_cltv_expiry(this.ptr, val);
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.UpdateAddHTLC_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 Result_UpdateAddHTLCDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.UpdateAddHTLC_read(ser);
-               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
deleted file mode 100644 (file)
index afe36ae..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class UpdateFailHTLC extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.UpdateFailHTLC_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_channel_id() {
-               Uint8Array ret = bindings.UpdateFailHTLC_get_channel_id(this.ptr);
-               return ret;
-       }
-
-       public void set_channel_id(Uint8Array val) {
-               bindings.UpdateFailHTLC_set_channel_id(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public number get_htlc_id() {
-               number ret = bindings.UpdateFailHTLC_get_htlc_id(this.ptr);
-               return ret;
-       }
-
-       public void set_htlc_id(number val) {
-               bindings.UpdateFailHTLC_set_htlc_id(this.ptr, val);
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.UpdateFailHTLC_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 Result_UpdateFailHTLCDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.UpdateFailHTLC_read(ser);
-               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
deleted file mode 100644 (file)
index 3b894fb..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class UpdateFailMalformedHTLC extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.UpdateFailMalformedHTLC_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_channel_id() {
-               Uint8Array ret = bindings.UpdateFailMalformedHTLC_get_channel_id(this.ptr);
-               return ret;
-       }
-
-       public void set_channel_id(Uint8Array val) {
-               bindings.UpdateFailMalformedHTLC_set_channel_id(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public number get_htlc_id() {
-               number ret = bindings.UpdateFailMalformedHTLC_get_htlc_id(this.ptr);
-               return ret;
-       }
-
-       public void set_htlc_id(number val) {
-               bindings.UpdateFailMalformedHTLC_set_htlc_id(this.ptr, val);
-       }
-
-       public number get_failure_code() {
-               number ret = bindings.UpdateFailMalformedHTLC_get_failure_code(this.ptr);
-               return ret;
-       }
-
-       public void set_failure_code(number val) {
-               bindings.UpdateFailMalformedHTLC_set_failure_code(this.ptr, val);
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.UpdateFailMalformedHTLC_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 Result_UpdateFailMalformedHTLCDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.UpdateFailMalformedHTLC_read(ser);
-               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
deleted file mode 100644 (file)
index a86e590..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class UpdateFee extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.UpdateFee_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_channel_id() {
-               Uint8Array ret = bindings.UpdateFee_get_channel_id(this.ptr);
-               return ret;
-       }
-
-       public void set_channel_id(Uint8Array val) {
-               bindings.UpdateFee_set_channel_id(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public number get_feerate_per_kw() {
-               number ret = bindings.UpdateFee_get_feerate_per_kw(this.ptr);
-               return ret;
-       }
-
-       public void set_feerate_per_kw(number val) {
-               bindings.UpdateFee_set_feerate_per_kw(this.ptr, val);
-       }
-
-       public static UpdateFee constructor_new(Uint8Array channel_id_arg, number feerate_per_kw_arg) {
-               number ret = bindings.UpdateFee_new(InternalUtils.check_arr_len(channel_id_arg, 32), feerate_per_kw_arg);
-               const ret_hu_conv: UpdateFee = new UpdateFee(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.UpdateFee_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 Result_UpdateFeeDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.UpdateFee_read(ser);
-               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
deleted file mode 100644 (file)
index 5bd5d0b..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class UpdateFulfillHTLC extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.UpdateFulfillHTLC_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_channel_id() {
-               Uint8Array ret = bindings.UpdateFulfillHTLC_get_channel_id(this.ptr);
-               return ret;
-       }
-
-       public void set_channel_id(Uint8Array val) {
-               bindings.UpdateFulfillHTLC_set_channel_id(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public number get_htlc_id() {
-               number ret = bindings.UpdateFulfillHTLC_get_htlc_id(this.ptr);
-               return ret;
-       }
-
-       public void set_htlc_id(number val) {
-               bindings.UpdateFulfillHTLC_set_htlc_id(this.ptr, val);
-       }
-
-       public Uint8Array get_payment_preimage() {
-               Uint8Array ret = bindings.UpdateFulfillHTLC_get_payment_preimage(this.ptr);
-               return ret;
-       }
-
-       public void set_payment_preimage(Uint8Array val) {
-               bindings.UpdateFulfillHTLC_set_payment_preimage(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public static UpdateFulfillHTLC constructor_new(Uint8Array channel_id_arg, number htlc_id_arg, Uint8Array payment_preimage_arg) {
-               number ret = bindings.UpdateFulfillHTLC_new(InternalUtils.check_arr_len(channel_id_arg, 32), htlc_id_arg, InternalUtils.check_arr_len(payment_preimage_arg, 32));
-               const ret_hu_conv: UpdateFulfillHTLC = new UpdateFulfillHTLC(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.UpdateFulfillHTLC_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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 Result_UpdateFulfillHTLCDecodeErrorZ constructor_read(Uint8Array ser) {
-               number ret = bindings.UpdateFulfillHTLC_read(ser);
-               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
deleted file mode 100644 (file)
index 0674234..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class UserConfig extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.UserConfig_free(this.ptr);
-                    }
-                }
-       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);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_own_channel_config(ChannelHandshakeConfig val) {
-               bindings.UserConfig_set_own_channel_config(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public ChannelHandshakeLimits get_peer_channel_config_limits() {
-               number ret = bindings.UserConfig_get_peer_channel_config_limits(this.ptr);
-               const ret_hu_conv: ChannelHandshakeLimits = new ChannelHandshakeLimits(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_peer_channel_config_limits(ChannelHandshakeLimits val) {
-               bindings.UserConfig_set_peer_channel_config_limits(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public ChannelConfig get_channel_options() {
-               number ret = bindings.UserConfig_get_channel_options(this.ptr);
-               const ret_hu_conv: ChannelConfig = new ChannelConfig(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_channel_options(ChannelConfig val) {
-               bindings.UserConfig_set_channel_options(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public boolean get_accept_forwards_to_priv_channels() {
-               boolean ret = bindings.UserConfig_get_accept_forwards_to_priv_channels(this.ptr);
-               return ret;
-       }
-
-       public void set_accept_forwards_to_priv_channels(boolean val) {
-               bindings.UserConfig_set_accept_forwards_to_priv_channels(this.ptr, val);
-       }
-
-       public boolean get_accept_inbound_channels() {
-               boolean ret = bindings.UserConfig_get_accept_inbound_channels(this.ptr);
-               return ret;
-       }
-
-       public void set_accept_inbound_channels(boolean val) {
-               bindings.UserConfig_set_accept_inbound_channels(this.ptr, val);
-       }
-
-       public static UserConfig constructor_new(ChannelHandshakeConfig own_channel_config_arg, ChannelHandshakeLimits peer_channel_config_limits_arg, ChannelConfig channel_options_arg, boolean accept_forwards_to_priv_channels_arg, boolean accept_inbound_channels_arg) {
-               number ret = bindings.UserConfig_new(own_channel_config_arg == null ? 0 : own_channel_config_arg.ptr & ~1, peer_channel_config_limits_arg == null ? 0 : peer_channel_config_limits_arg.ptr & ~1, channel_options_arg == null ? 0 : channel_options_arg.ptr & ~1, accept_forwards_to_priv_channels_arg, accept_inbound_channels_arg);
-               const ret_hu_conv: UserConfig = new UserConfig(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.UserConfig_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       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);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-}
diff --git a/ts/structs/UtilMethods.ts b/ts/structs/UtilMethods.ts
deleted file mode 100644 (file)
index 5dced38..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-       public static COption_NoneZ constructor_COption_NoneZ_some() {
-               COption_NoneZ ret = bindings.COption_NoneZ_some();
-               return ret;
-       }
-
-       public static COption_NoneZ constructor_COption_NoneZ_none() {
-               COption_NoneZ ret = bindings.COption_NoneZ_none();
-               return ret;
-       }
-
-       public static Result_COption_ClosureReasonZDecodeErrorZ constructor_ClosureReason_read(Uint8Array ser) {
-               number ret = bindings.ClosureReason_read(ser);
-               Result_COption_ClosureReasonZDecodeErrorZ ret_hu_conv = Result_COption_ClosureReasonZDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_COption_EventZDecodeErrorZ constructor_Event_read(Uint8Array ser) {
-               number ret = bindings.Event_read(ser);
-               Result_COption_EventZDecodeErrorZ ret_hu_conv = Result_COption_EventZDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_StringErrorZ constructor_sign(Uint8Array msg, Uint8Array sk) {
-               number ret = bindings.sign(msg, InternalUtils.check_arr_len(sk, 32));
-               Result_StringErrorZ ret_hu_conv = Result_StringErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_PublicKeyErrorZ constructor_recover_pk(Uint8Array msg, String sig) {
-               number ret = bindings.recover_pk(msg, sig);
-               Result_PublicKeyErrorZ ret_hu_conv = Result_PublicKeyErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static boolean constructor_verify(Uint8Array msg, String sig, Uint8Array pk) {
-               boolean ret = bindings.verify(msg, sig, InternalUtils.check_arr_len(pk, 33));
-               return ret;
-       }
-
-       public static Result_COption_MonitorEventZDecodeErrorZ constructor_MonitorEvent_read(Uint8Array ser) {
-               number ret = bindings.MonitorEvent_read(ser);
-               Result_COption_MonitorEventZDecodeErrorZ ret_hu_conv = Result_COption_MonitorEventZDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ constructor_C2Tuple_BlockHashChannelMonitorZ_read(Uint8Array ser, KeysInterface arg) {
-               number ret = bindings.C2Tuple_BlockHashChannelMonitorZ_read(ser, arg == null ? 0 : arg.ptr);
-               Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ ret_hu_conv = Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(arg);
-               return ret_hu_conv;
-       }
-
-       public static Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ constructor_C2Tuple_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, arg_channel_monitors != null ? Arrays.stream(arg_channel_monitors).map(arg_channel_monitors_conv_16 -> arg_channel_monitors_conv_16 == null ? 0 : arg_channel_monitors_conv_16.ptr & ~1).toArray(number[]::new) : null));
-               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);
-               ret_hu_conv.ptrs_to.add(arg_chain_monitor);
-               ret_hu_conv.ptrs_to.add(arg_tx_broadcaster);
-               ret_hu_conv.ptrs_to.add(arg_logger);
-               ;
-               for (ChannelMonitor arg_channel_monitors_conv_16: arg_channel_monitors) { ret_hu_conv.ptrs_to.add(arg_channel_monitors_conv_16); };
-               return ret_hu_conv;
-       }
-
-       public static number constructor_htlc_success_tx_weight(boolean opt_anchors) {
-               number ret = bindings.htlc_success_tx_weight(opt_anchors);
-               return ret;
-       }
-
-       public static number constructor_htlc_timeout_tx_weight(boolean opt_anchors) {
-               number ret = bindings.htlc_timeout_tx_weight(opt_anchors);
-               return ret;
-       }
-
-       public static Uint8Array constructor_build_commitment_secret(Uint8Array commitment_seed, number idx) {
-               Uint8Array ret = bindings.build_commitment_secret(InternalUtils.check_arr_len(commitment_seed, 32), idx);
-               return ret;
-       }
-
-       public static Uint8Array constructor_build_closing_transaction(number to_holder_value_sat, number to_counterparty_value_sat, Uint8Array to_holder_script, Uint8Array to_counterparty_script, OutPoint funding_outpoint) {
-               Uint8Array ret = bindings.build_closing_transaction(to_holder_value_sat, to_counterparty_value_sat, to_holder_script, to_counterparty_script, funding_outpoint == null ? 0 : funding_outpoint.ptr & ~1);
-               return ret;
-       }
-
-       public static Result_SecretKeyErrorZ constructor_derive_private_key(Uint8Array per_commitment_point, Uint8Array base_secret) {
-               number ret = bindings.derive_private_key(InternalUtils.check_arr_len(per_commitment_point, 33), InternalUtils.check_arr_len(base_secret, 32));
-               Result_SecretKeyErrorZ ret_hu_conv = Result_SecretKeyErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_PublicKeyErrorZ constructor_derive_public_key(Uint8Array per_commitment_point, Uint8Array base_point) {
-               number ret = bindings.derive_public_key(InternalUtils.check_arr_len(per_commitment_point, 33), InternalUtils.check_arr_len(base_point, 33));
-               Result_PublicKeyErrorZ ret_hu_conv = Result_PublicKeyErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_SecretKeyErrorZ constructor_derive_private_revocation_key(Uint8Array per_commitment_secret, Uint8Array countersignatory_revocation_base_secret) {
-               number ret = bindings.derive_private_revocation_key(InternalUtils.check_arr_len(per_commitment_secret, 32), InternalUtils.check_arr_len(countersignatory_revocation_base_secret, 32));
-               Result_SecretKeyErrorZ ret_hu_conv = Result_SecretKeyErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_PublicKeyErrorZ constructor_derive_public_revocation_key(Uint8Array per_commitment_point, Uint8Array countersignatory_revocation_base_point) {
-               number ret = bindings.derive_public_revocation_key(InternalUtils.check_arr_len(per_commitment_point, 33), InternalUtils.check_arr_len(countersignatory_revocation_base_point, 33));
-               Result_PublicKeyErrorZ ret_hu_conv = Result_PublicKeyErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Uint8Array constructor_get_revokeable_redeemscript(Uint8Array revocation_key, number contest_delay, Uint8Array broadcaster_delayed_payment_key) {
-               Uint8Array ret = bindings.get_revokeable_redeemscript(InternalUtils.check_arr_len(revocation_key, 33), contest_delay, InternalUtils.check_arr_len(broadcaster_delayed_payment_key, 33));
-               return ret;
-       }
-
-       public static Uint8Array constructor_get_htlc_redeemscript(HTLCOutputInCommitment htlc, boolean opt_anchors, TxCreationKeys keys) {
-               Uint8Array ret = bindings.get_htlc_redeemscript(htlc == null ? 0 : htlc.ptr & ~1, opt_anchors, keys == null ? 0 : keys.ptr & ~1);
-               // this.ptrs_to.add(htlc);
-               // this.ptrs_to.add(keys);
-               return ret;
-       }
-
-       public static Uint8Array constructor_make_funding_redeemscript(Uint8Array broadcaster, Uint8Array countersignatory) {
-               Uint8Array ret = bindings.make_funding_redeemscript(InternalUtils.check_arr_len(broadcaster, 33), InternalUtils.check_arr_len(countersignatory, 33));
-               return ret;
-       }
-
-       public static Uint8Array constructor_build_htlc_transaction(Uint8Array commitment_txid, number feerate_per_kw, number contest_delay, HTLCOutputInCommitment htlc, boolean opt_anchors, Uint8Array broadcaster_delayed_payment_key, Uint8Array revocation_key) {
-               Uint8Array ret = bindings.build_htlc_transaction(InternalUtils.check_arr_len(commitment_txid, 32), feerate_per_kw, contest_delay, htlc == null ? 0 : htlc.ptr & ~1, opt_anchors, InternalUtils.check_arr_len(broadcaster_delayed_payment_key, 33), InternalUtils.check_arr_len(revocation_key, 33));
-               // this.ptrs_to.add(htlc);
-               return ret;
-       }
-
-       public static Uint8Array constructor_get_anchor_redeemscript(Uint8Array funding_pubkey) {
-               Uint8Array ret = bindings.get_anchor_redeemscript(InternalUtils.check_arr_len(funding_pubkey, 33));
-               return ret;
-       }
-
-       public static number constructor_get_commitment_transaction_number_obscure_factor(Uint8Array broadcaster_payment_basepoint, Uint8Array countersignatory_payment_basepoint, boolean outbound_from_broadcaster) {
-               number ret = bindings.get_commitment_transaction_number_obscure_factor(InternalUtils.check_arr_len(broadcaster_payment_basepoint, 33), InternalUtils.check_arr_len(countersignatory_payment_basepoint, 33), outbound_from_broadcaster);
-               return ret;
-       }
-
-       public static Result_COption_NetworkUpdateZDecodeErrorZ constructor_NetworkUpdate_read(Uint8Array ser) {
-               number ret = bindings.NetworkUpdate_read(ser);
-               Result_COption_NetworkUpdateZDecodeErrorZ ret_hu_conv = Result_COption_NetworkUpdateZDecodeErrorZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public static Result_RouteLightningErrorZ constructor_find_route(Uint8Array our_node_pubkey, RouteParameters params, NetworkGraph network, ChannelDetails[] first_hops, Logger logger, Score scorer) {
-               number ret = bindings.find_route(InternalUtils.check_arr_len(our_node_pubkey, 33), params == null ? 0 : params.ptr & ~1, network == null ? 0 : network.ptr & ~1, first_hops != null ? Arrays.stream(first_hops).map(first_hops_conv_16 -> first_hops_conv_16 == null ? 0 : first_hops_conv_16.ptr & ~1).toArray(number[]::new) : null, logger == null ? 0 : logger.ptr, scorer == null ? 0 : scorer.ptr);
-               Result_RouteLightningErrorZ ret_hu_conv = Result_RouteLightningErrorZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(params);
-               ret_hu_conv.ptrs_to.add(network);
-               for (ChannelDetails first_hops_conv_16: first_hops) { ret_hu_conv.ptrs_to.add(first_hops_conv_16); };
-               ret_hu_conv.ptrs_to.add(logger);
-               ret_hu_conv.ptrs_to.add(scorer);
-               return ret_hu_conv;
-       }
-
-       public static Result_NoneErrorZ constructor_FilesystemPersister_persist_manager(String data_dir, ChannelManager manager) {
-               number ret = bindings.FilesystemPersister_persist_manager(data_dir, manager == null ? 0 : manager.ptr & ~1);
-               Result_NoneErrorZ ret_hu_conv = Result_NoneErrorZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(manager);
-               return ret_hu_conv;
-       }
-
-       public static Result_InvoiceSignOrCreationErrorZ constructor_create_invoice_from_channelmanager(ChannelManager channelmanager, KeysInterface keys_manager, Currency network, Option_u64Z amt_msat, String description) {
-               number ret = bindings.create_invoice_from_channelmanager(channelmanager == null ? 0 : channelmanager.ptr & ~1, keys_manager == null ? 0 : keys_manager.ptr, network, amt_msat.ptr, description);
-               Result_InvoiceSignOrCreationErrorZ ret_hu_conv = Result_InvoiceSignOrCreationErrorZ.constr_from_ptr(ret);
-               ret_hu_conv.ptrs_to.add(channelmanager);
-               ret_hu_conv.ptrs_to.add(keys_manager);
-               return ret_hu_conv;
-       }
-
diff --git a/ts/structs/Watch.ts b/ts/structs/Watch.ts
deleted file mode 100644 (file)
index 300d856..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export class Watch extends CommonBase {
-
-                bindings_instance?: bindings.LDKWatch;
-
-                constructor(ptr?: number, arg?: bindings.LDKWatch) {
-                    if (Number.isFinite(ptr)) {
-                                       super(ptr);
-                                       this.bindings_instance = null;
-                                   } else {
-                                       // TODO: private constructor instantiation
-                                       super(bindings.LDKWatch_new(arg));
-                                       this.ptrs_to.push(arg);
-                                       
-                                   }
-                }
-
-                protected finalize() {
-                    if (this.ptr != 0) {
-                        bindings.Watch_free(this.ptr);
-                    }
-                    super.finalize();
-                }
-
-                static new_impl(arg: WatchInterface): Watch {
-                    const impl_holder: LDKWatchHolder = new LDKWatchHolder();
-                    let structImplementation = <bindings.LDKWatch>{
-                        // todo: in-line interface filling
-                        watch_channel (funding_txo: number, monitor: number): number {
-                                                       const funding_txo_hu_conv: OutPoint = new OutPoint(null, funding_txo);
-                               funding_txo_hu_conv.ptrs_to.add(this);
-                                                       const monitor_hu_conv: ChannelMonitor = new ChannelMonitor(null, monitor);
-                               monitor_hu_conv.ptrs_to.add(this);
-                                                       Result_NoneChannelMonitorUpdateErrZ ret = arg.watch_channel(funding_txo_hu_conv, monitor_hu_conv);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               update_channel (funding_txo: number, update: number): number {
-                                                       const funding_txo_hu_conv: OutPoint = new OutPoint(null, funding_txo);
-                               funding_txo_hu_conv.ptrs_to.add(this);
-                                                       const update_hu_conv: ChannelMonitorUpdate = new ChannelMonitorUpdate(null, update);
-                               update_hu_conv.ptrs_to.add(this);
-                                                       Result_NoneChannelMonitorUpdateErrZ ret = arg.update_channel(funding_txo_hu_conv, update_hu_conv);
-                               result: number = ret == null ? 0 : ret.clone_ptr();
-                               return result;
-                                               },
-
-                                               release_pending_monitor_events (): number[] {
-                                                       MonitorEvent[] ret = arg.release_pending_monitor_events();
-                               result: number[] = ret != null ? Arrays.stream(ret).map(ret_conv_14 -> ret_conv_14 == null ? 0 : ret_conv_14.clone_ptr()).toArray(number[]::new) : null;
-                               return result;
-                                               },
-
-                                               
-                    };
-                    impl_holder.held = new Watch (null, structImplementation);
-                }
-            }
-
-            export interface WatchInterface {
-                watch_channel(funding_txo: OutPoint, monitor: ChannelMonitor): Result_NoneChannelMonitorUpdateErrZ;
-                               update_channel(funding_txo: OutPoint, update: ChannelMonitorUpdate): Result_NoneChannelMonitorUpdateErrZ;
-                               release_pending_monitor_events(): MonitorEvent[];
-                               
-            }
-
-            class LDKWatchHolder {
-                held: Watch;
-            }
-       public Result_NoneChannelMonitorUpdateErrZ watch_channel(OutPoint funding_txo, ChannelMonitor monitor) {
-               number ret = bindings.Watch_watch_channel(this.ptr, funding_txo == null ? 0 : funding_txo.ptr & ~1, monitor == null ? 0 : monitor.ptr & ~1);
-               Result_NoneChannelMonitorUpdateErrZ ret_hu_conv = Result_NoneChannelMonitorUpdateErrZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public Result_NoneChannelMonitorUpdateErrZ update_channel(OutPoint funding_txo, ChannelMonitorUpdate update) {
-               number ret = bindings.Watch_update_channel(this.ptr, funding_txo == null ? 0 : funding_txo.ptr & ~1, update == null ? 0 : update.ptr & ~1);
-               Result_NoneChannelMonitorUpdateErrZ ret_hu_conv = Result_NoneChannelMonitorUpdateErrZ.constr_from_ptr(ret);
-               return ret_hu_conv;
-       }
-
-       public MonitorEvent[] release_pending_monitor_events() {
-               number[] ret = bindings.Watch_release_pending_monitor_events(this.ptr);
-               MonitorEvent[] ret_conv_14_arr = new MonitorEvent[ret.length];
-               for (int o = 0; o < ret.length; o++) {
-                       number ret_conv_14 = ret[o];
-                       MonitorEvent ret_conv_14_hu_conv = MonitorEvent.constr_from_ptr(ret_conv_14);
-                       ret_conv_14_hu_conv.ptrs_to.add(this);
-                       ret_conv_14_arr[o] = ret_conv_14_hu_conv;
-               }
-               return ret_conv_14_arr;
-       }
-
-}
diff --git a/ts/structs/WatchedOutput.ts b/ts/structs/WatchedOutput.ts
deleted file mode 100644 (file)
index 8b3364c..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-
-            
-import CommonBase from './CommonBase';
-import * as bindings from '../bindings' // TODO: figure out location
-
-
-
-            export default class WatchedOutput extends CommonBase {
-                constructor(_dummy: object, ptr: number) {
-                    super(ptr);
-                }
-
-                
-                protected finalize() {
-                    super.finalize();
-
-                    if (this.ptr != 0) {
-                        bindings.WatchedOutput_free(this.ptr);
-                    }
-                }
-       public Uint8Array get_block_hash() {
-               Uint8Array ret = bindings.WatchedOutput_get_block_hash(this.ptr);
-               return ret;
-       }
-
-       public void set_block_hash(Uint8Array val) {
-               bindings.WatchedOutput_set_block_hash(this.ptr, InternalUtils.check_arr_len(val, 32));
-       }
-
-       public OutPoint get_outpoint() {
-               number ret = bindings.WatchedOutput_get_outpoint(this.ptr);
-               const ret_hu_conv: OutPoint = new OutPoint(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public void set_outpoint(OutPoint val) {
-               bindings.WatchedOutput_set_outpoint(this.ptr, val == null ? 0 : val.ptr & ~1);
-       }
-
-       public Uint8Array get_script_pubkey() {
-               Uint8Array ret = bindings.WatchedOutput_get_script_pubkey(this.ptr);
-               return ret;
-       }
-
-       public void set_script_pubkey(Uint8Array val) {
-               bindings.WatchedOutput_set_script_pubkey(this.ptr, val);
-       }
-
-       public static WatchedOutput constructor_new(Uint8Array block_hash_arg, OutPoint outpoint_arg, Uint8Array script_pubkey_arg) {
-               number ret = bindings.WatchedOutput_new(InternalUtils.check_arr_len(block_hash_arg, 32), outpoint_arg == null ? 0 : outpoint_arg.ptr & ~1, script_pubkey_arg);
-               const ret_hu_conv: WatchedOutput = new WatchedOutput(null, ret);
-               ret_hu_conv.ptrs_to.add(ret_hu_conv);
-               return ret_hu_conv;
-       }
-
-       public number clone_ptr() {
-               number ret = bindings.WatchedOutput_clone_ptr(this.ptr);
-               return ret;
-       }
-
-       public WatchedOutput clone() {
-               number ret = bindings.WatchedOutput_clone(this.ptr);
-               const ret_hu_conv: WatchedOutput = new WatchedOutput(null, ret);
-               ret_hu_conv.ptrs_to.add(this);
-               return ret_hu_conv;
-       }
-
-       public number hash() {
-               number ret = bindings.WatchedOutput_hash(this.ptr);
-               return ret;
-       }
-
-}
diff --git a/ts/version.mts b/ts/version.mts
new file mode 100644 (file)
index 0000000..e69de29